Cypher查询以查找具有共享属性的节点,并公式化为输入和输出

时间:2019-02-25 23:41:00

标签: neo4j cypher

我已经寻找一种查询数据的方法,以便构建一个表格以使其可视化。数据是SysML模型的导入。数据的一般结构是这样的:

(node1:Type1)<-[:Reference]-(node2:Type1)-[:Property]->(node3:Type1)<-[:Property]-(node4:Type1)-[:Reference]->(node5:Type1)

节点 2和4 代表进程,它们之间交换数据。交换的数据由节点3 表示。节点 1和5 代表执行这些过程的工具。我理想的情况是要有一个带有列的表

 node1.name | node2.name | node3.name | node4.name | node5.name

允许我查看流程的输入/输出以及执行这些流程的工具,从而有效地评估了界面。但是,我正在使用的查询在表的行中导致重复,因为它读取的是“从前到后”以及“从后到前”。是否有一种方法可以分隔路径的每个“步骤”,并为每个步骤创建一列(也许按关系方向)?在某些情况下,执行这些过程的“工具” (node 1 or 5)不只一个,因此每个行(多对一,一对一,一对多,多对多)是理想的。最后,在某些情况下,进程(nodes 2 and 4)可能不仅具有单个关系。我希望能够显示所有过程界面。

非常感谢您的帮助。预先感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:0)

要解决镜像结果问题,在节点ID上使用不等式谓词有助于确保单个结果:WHERE id(node1) < id(node5)

关于显示所有可能的路径,这就是Cypher的工作,因此您应该看到符合模式的所有可能的路径。