繁体   English   中英

在neo4j中创建多个节点之间的多重关系

[英]Create multiple relationship between multiple nodes in neo4j

我有一个带有标题的 CSV 文件,例如

Relationshiptype         source                     target
Causative_of             Absorb_heat                Apply_heat
Inheritance              Absorb_heat                Transition
ReFraming_Mapping        Transition                 Transitionstate

我必须在这个源和目标之间创建关系,这个源和目标之间的关系将是“relationshiptype”。

我试过:

LOAD CSV WITH HEADERS FROM "file:///output.csv" AS line
CREATE (sub:Source {name:line.source})
CREATE (sup:Target {name:line.target})
CREATE (sub)-[:Causative_of]->(sup)
CREATE (sub)-[: Inheritance]->(sup)
CREATE (sub)-[: ReFraming_Mapping]->(sup)

RETURN sub,sup;

但这不起作用。 它随机创建源和目标之间的关系。

我找不到任何方法来创建这种多重关系。 有没有办法做到这一点? 请帮忙。

有几个问题:

1)因为节点可以重复,所以你应该使用MERGE而不是CREATE来添加新节点:

MERGE (sub:Source {name:line.source})

2)由于一个节点既可以是源也可以是目标,所以使用不同的标签是不合适的。 使用一个,例如Item

MERGE (sub:Item {name:line.source})

3) 在查询中,您一次创建三种类型的关系,尽管您需要使用输入数据中的关系类型。 问题是目前您无法从neo4 cyper的变量设置关系类型。 而且也没有条件分支。 因此,您可以在FOREACH [ http://markhneedham.com/blog/2014/06/17/neo4j-load-csv-handling-conditionals/ ] 中使用以下技巧:

LOAD CSV WITH HEADERS FROM "file:///output.csv" AS line
MERGE (sub:Item {name:line.source})
MERGE (sup:Item {name:line.target})
FOREACH(ift in CASE WHEN line.Relationshiptype="Causative_of" THEN [1] ELSE [] END |
  CREATE (sub)-[:Causative_of]->(sup)
)
FOREACH(ift in CASE WHEN line.Relationshiptype="Inheritance" THEN [1] ELSE [] END |
  CREATE (sub)-[:Inheritance]->(sup)
)
FOREACH(ift in CASE WHEN line.Relationshiptype="ReFraming_Mapping" THEN [1] ELSE [] END |
  CREATE (sub)-[:ReFraming_Mapping]->(sup)
)
RETURN sub, sup

4)这不是很好和高效,所以你可以使用APOC库[ https://stackoverflow.com/a/40225888/4989460 ]中的create.relationship函数:

LOAD CSV WITH HEADERS FROM "file:///output.csv" AS line
MERGE (sub:Item {name:line.source})
MERGE (sup:Item {name:line.target})
WITH sub, sup, line
CALL apoc.create.relationship(sub, line.Relationshiptype, NULL, sup) YIELD rel
RETURN sub, rel, sup

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM