Neo4j:可变长度关系

时间:2018-01-07 06:48:21

标签: neo4j cypher

标签:功能的节点在功能节点之间存在称为 parent_of 的关系。

因此,某些功能是子功能,有些功能是父功能。一个功能的子功能可能是其他功能的父功能。

必需的Cypher :Cypher将输入作为功能号码。并将输出返回为:它的父功能和连接到该父功能的功能以及连接到这些功能的子功能和父功能(这一直持续到叶节点)。

以下是该关系的屏幕截图:

Structure

Example graph

1 个答案:

答案 0 :(得分:0)

我认为来自APOC Procedures的路径扩展程序可能对此有所帮助。

如果您只需要连接的节点,请使用apoc.path.subgraphNodes()。如果您想要路径,请使用apoc.path.spanningTree()

至于以捕获节点之间的关系信息的格式输出数据,您可以输出关系(以及每个关系的开始和结束节点),这将涉及输出数据的一些重复,或者也许您可以使用APOC过程将路径集合转换为嵌套的JSON树?

一个例子:

MATCH (f:Feature{feature_no:$startNo})
CALL apoc.path.spanningTree(f, {relationshipFilter:'parent_of', labelFilter:'>Feature'}) YIELD path
WITH collect(path) as paths
CALL apoc.convert.toTree(paths) YIELD value
RETURN value