对于给定的顶点,只有当该顶点存在两种边缘类型时,我们如何获得两种不同类型(即标签)的所有外边界?
例如,
g = TinkerGraphFactory.createTinkerGraph();
我想知道所有创建某些软件而知道某人的人。显然,我不能用
g.V.out('created', 'knows')
因为,这会给所有创建某些东西的人知道某人。
答案 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的第一部分获得了具有“已知”和“已创建”边缘的顶点,因此您可以安全地抓住两个返回顶点的边并返回唯一的边。