【发布时间】:2019-10-13 03:40:25
【问题描述】:
我有一个具有关系 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)
但是,运行查询需要一些时间,我最终停止了查询。有什么想法吗?
【问题讨论】:
标签: neo4j cypher neo4jrestclient