1

次の構成を使用して、頂点ごとのサブグラフマッチングを実行しようとしています。

a = g.v(1) 
p = g.v(5) 

a.filter{it.map() == p.map()}.out.sideEffect{p = p.out}.loop(3){it.object != null}

マップの比較は驚くほどうまく機能しますが、副作用の部分はp-vertexを適切に変更していないようです。これらのGremlinステップを実行した後に印刷するとp、パイプラインのように見えます。しかし、より明示的p = g.v(p.out.id)で、p = g.v(p.outE.inV.id)数値的なi++副作用でさえ、値をまったく変更しないようです。

私はこれをNeo4jグレムリンシェルとGroovyの両方で試しました。

4

1 に答える 1

2

他の何かを期待しているときにパイプラインを取得した場合は、 next() を試して、それが目的のものになるかどうかを確認してください。sideEffect クロージャで next() を実行すると、x が変化することに注意してください。

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> x = g.v(1)
==>v[1]
gremlin> g.V.out.sideEffect{x = x.out.next()}   
==>v[2]
gremlin> x
==>v[2]
于 2013-02-04T12:14:30.680 に答える