【问题标题】:Constraints for graph models图模型的约束
【发布时间】:2018-05-10 13:19:35
【问题描述】:
我有四个可能的链,可以由 6 个不同的链节组成:
G0 -> G1 -> G2
E0 -> E1 -> E2
G0 -> E1 -> G2
E0 -> G1 -> G2
现在我想用一个图模型来表达这四个链,如下图所示:
如果我使用图形查询语言来询问,例如给我所有以 G0 作为第一个顶点和 E2 作为最后一个顶点的路径,我会得到一个路径 G0 -> E1 -> E2 这不是有效的路径或链出四个...
所以我的问题是是否有可能表达这样的约束,以便我只收到“有效”路径?
【问题讨论】:
标签:
graph
neo4j
graph-databases
gremlin
【解决方案1】:
我不明白你为什么说路径G0 -> E1 -> E2 无效。根据您的定义,它应该是唯一有效的路径。此查询应返回所需的结果:
g.V(G0). /* G0 as first vertex */
repeat(out()).
until(__.is(E2)). /* E2 as last vertex */
path() /* all paths */
【解决方案2】:
在最简单的解决方案通常是最好的座右铭中,我会这样做。
1) 为每个链创建一个节点来表示该链。
2) 创建从该节点到链中每个节点的关系,并在关系上添加索引属性。 (您可以对第一个和最后一个元素使用首尾关系,或者将其添加为属性以便于 Cyphers)
3) 改为在您的“链”节点上运行 Cyphers。
这样做的任何其他方式都会使 Cypher 过于复杂,或者有可能将您的原始数据损坏到可以使用大麦的程度。这是最简单、最灵活的设置。