[OK]を、のは、最初の例のグラフを作成してみましょう:
gremlin> v1 = graph.addVertex('name', 'v1')
==>v[0]
gremlin> v2 = graph.addVertex('name', 'v2')
==>v[2]
gremlin> v3 = graph.addVertex('name', 'v3')
==>v[4]
gremlin> v4 = graph.addVertex('name', 'v4')
==>v[6]
gremlin> v1.addEdge('knows', v2, 'property1', 10)
==>e[8][0-knows->2]
gremlin> v1.addEdge('knows', v2, 'property1', 20)
==>e[9][0-knows->2]
gremlin> v2.addEdge('knows', v3, 'property1', 10)
==>e[10][2-knows->4]
gremlin> v2.addEdge('knows', v4, 'property1', 50)
==>e[11][2-knows->6]
今、私たちは二つのエッジは、プロパティが10と20 v2は1の2つの発信エッジを持つ値をV1からV2に行く簡単なグラフを持っていますedgeはプロパティ値が10です。これはクエリが通過するエッジであり、結果の頂点はv3です。そうする
一つの方法は、match()
-stepである:
g.V(v1).outE().match(
__.as('e1').values('property1').as('p1'),
__.as('e1').inV().as('v2'),
__.as('v2').outE().as('e2'),
__.as('e2').values('property1').as('p2').
where('p1', eq('p2'))).
select('e2').inV().values('name')
==>v3
GremlinBinでフル例:http://gremlinbin.com/bin/view/5809c1fc0626b