如果两个边都存在,如何获得给定顶点的两个给定类型(即标签)的所有边?

时间:2012-12-10 18:47:07

标签: graph-databases gremlin

对于给定的顶点,只有当该顶点存在两种边缘类型时,我们如何获得两种不同类型(即标签)的所有外边界?

例如,

g = TinkerGraphFactory.createTinkerGraph(); 

我想知道所有创建某些软件而知道某人的人。显然,我不能用

g.V.out('created', 'knows')

因为,这会给所有创建某些东西的人知道某人。

1 个答案:

答案 0 :(得分:2)

我没有打算以这种方式解决这个问题,但使用and()步骤似乎在这里运作良好:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V.and(_().both("knows"),_().both("created"))
==>v[1]
==>v[4]

要获得符合AND标准的顶点的边/路径,您可以执行以下操作:

gremlin> g.V.and(_().both("knows"),_().both("created")).bothE("created","knows").dedup
==>e[9][1-created->3]
==>e[7][1-knows->2]
==>e[8][1-knows->4]
==>e[10][4-created->5]
==>e[11][4-created->3]

由于Gremlin的第一部分获得了具有“已知”和“已创建”边缘的顶点,因此您可以安全地抓住两个返回顶点的边并返回唯一的边。