【发布时间】:2015-11-08 17:09:41
【问题描述】:
我对 Neo4j 完全陌生。我正在测试图形数据库,我有以下简单的图形测试结构:different labeled nodes with properties, which are connected。
所有节点都有一个属性,称为访问。它是一个字符串元素列表,例如:
{access: ['http', 'www']}
我正在寻找一种解决方案,在该解决方案中,我从连接的起始节点获取所有节点(无论哪种类型或方向),以及它们在节点访问属性上存在交叉点的关系。我将从给定节点开始,并将访问属性与下一个连接的节点进行比较。然后,获取第二个节点的属性并将此访问属性与连接到它们的节点进行比较。等等。目标应该是所有节点及其连接,其中存在访问属性的交叉点。例如,在图的具体结构上,我们从节点 ENC 2009 开始,应该遍历所有连接的节点,直到到达一个在访问属性上没有交集的节点。对于此示例,应达到以下目标:traversed graph
我尝试了以下密码查询,但在作为起始节点的每个节点上都无法正常工作。
MATCH (n:CONFERENCE_SERIE) WHERE n.full_name =~ 'mex.*'
MATCH p = n-[*]-m WHERE FILTER(x IN n.access WHERE x IN m.access)
RETURN p
是否有解决方案,使用 java 遍历框架或使用 cypher,以达到目标并获取此类图的路径?
提前感谢您的帮助。
【问题讨论】:
-
您是否正在寻找一条路径,其中 所有 节点至少有一个共同的
access属性?或者您是否在每个单独的步骤中寻找交叉点,即第一个和最后一个节点不需要交叉点?交叉口的大小重要吗? -
我正在寻找每一步的交叉点。例如,特定的会议系列可以访问会议实例和提交的论文,但不能访问撰写论文的作者或期刊。路口的大小无关紧要。访问列表中至少匹配一个元素意味着该节点具有访问权限并且可以添加到路径中。
标签: graph properties neo4j cypher traversal