1

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

例如,

g = TinkerGraphFactory.createTinkerGraph(); 

我想认识所有创建了一些软件并且认识某人的人。显然,我不能使用

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

因为,这会给所有创造过东西或认识某人的人。

4

1 回答 1

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 的第一部分获得了具有“已知”和“已创建”边的顶点,因此您可以安全地抓取两个返回顶点的边并返回唯一的边。

于 2012-12-11T12:08:52.537 回答