Graph 图模型的约束

Graph 图模型的约束,graph,neo4j,graph-databases,gremlin,Graph,Neo4j,Graph Databases,Gremlin,我有四条可能的链条,它们可以由6个不同的链节组成: G0 -> G1 -> G2 E0 -> E1 -> E2 G0 -> E1 -> G2 E0 -> G1 -> G2 现在,我想用一个图形模型来表示这四条链,该模型如下图所示: 如果我使用一个图形查询语言来询问,例如给我所有的路径,其中G0作为第一个顶点,E2作为最后一个顶点,我会得到一个路径G0->E1->E2,它不是四个有效的路径或链 所以我的问题是,是否有可能表达这样的约束,使

我有四条可能的链条,它们可以由6个不同的链节组成:

 G0 -> G1 -> G2
 E0 -> E1 -> E2
 G0 -> E1 -> G2
 E0 -> G1 -> G2
现在,我想用一个图形模型来表示这四条链,该模型如下图所示:

如果我使用一个图形查询语言来询问,例如给我所有的路径,其中G0作为第一个顶点,E2作为最后一个顶点,我会得到一个路径G0->E1->E2,它不是四个有效的路径或链


所以我的问题是,是否有可能表达这样的约束,使我只收到“有效”路径?

在最简单的解决方案通常是最好的座右铭中,我会这样做

1) 对于每个链,创建一个节点来表示该链

2) 创建从该节点到链中每个节点的关系,并在该关系上添加索引属性。(您可以对第一个和最后一个元素使用第一个/结束关系,或者将其添加为属性以简化密码)

3) 改为在“链”节点上运行密码


任何其他方法都会使密码过于复杂,或有可能损坏原始数据,使其无法使用。这是最简单和最灵活的设置。

在最简单的解决方案通常是最好的座右铭中,我会这样做

1) 对于每个链,创建一个节点来表示该链

2) 创建从该节点到链中每个节点的关系,并在该关系上添加索引属性。(您可以对第一个和最后一个元素使用第一个/结束关系,或者将其添加为属性以简化密码)

3) 改为在“链”节点上运行密码


任何其他方法都会使密码过于复杂,或有可能损坏原始数据,使其无法使用。这是最简单、最灵活的设置。

我不明白你为什么说路径
G0->E1->E2
无效。根据您的定义,它应该是唯一有效的路径。此查询应返回所需的结果:

g.V(G0).               /* G0 as first vertex */
  repeat(out()).
    until(__.is(E2)).  /* E2 as last vertex  */
  path()               /* all paths          */

我不明白你为什么说路径
G0->E1->E2
无效。根据您的定义,它应该是唯一有效的路径。此查询应返回所需的结果:

g.V(G0).               /* G0 as first vertex */
  repeat(out()).
    until(__.is(E2)).  /* E2 as last vertex  */
  path()               /* all paths          */