我有一个具有NEXT关系的节点图,具有 2 个属性序列(s)和位置(p)。例如:
N1-[NEXT{s:1, p:2}]-> N2-[NEXT{s:1, p:3}]-> N3-[NEXT{s:1, p:4}]-> N4
一个节点 N 可能有多个具有不同属性值的传出Next关系。
给定节点名称列表,例如 [N2,N3,N4] 表示顺序路径,我想检查图形是否包含节点以及节点是否按顺序与关系Next连接。
例如,如果列表包含 [N2,N3,N4],则检查节点 N2,N3 和 N3,N4 之间是否存在关系Next 。
另外,我想确保节点是同一序列的一部分,因此属性s对于每个关系Next都是相同的。为了确保订单保持不变,我需要验证属性p是否是增量的。也就是说,N2 -> N3 之间的关系中p的值为3,N3->N4 之间的 p 值为 (3+1) = 4 ,以此类推。
我尝试使用 APOC 使用 python(库:neo4jrestclient)从初始节点 N 检索可能的路径,然后使用以下查询手动处理路径以检查序列是否存在:
q = "MATCH (n:Node) WHERE n.name = 'N' CALL apoc.path.expandConfig(n {relationshipFilter:'NEXT>', maxLevel:4}) YIELD path RETURN path"
结果 = db.query(q,data_contents=True)
但是,运行查询需要一些时间,我最终停止了查询。有任何想法吗?