0

私は、自己ループを可能にするネットワークを使用しています (つまり、一部のエッジは頭と尾の両方と同じ頂点を持っています)。グラフgに 3 つの頂点 ( adambill、およびcid) とタイプの 3 つのエッジreports( [adam-reports->bill][bill-reports->cid]、および[adam-reports->adam]) があり、この例では最後のエッジが唯一の再帰エッジであるとします。

gremlin> g = new TinkerGraph();
gremlin> adam = g.addVertex('adam');
gremlin> bill = g.addVertex('bill');
gremlin> cid = g.addVertex('cid');
gremlin> g.addEdge(adam, bill, 'reports');
gremlin> g.addEdge(bill, cid, 'reports');
gremlin> g.addEdge(adam, adam, 'reports'); 

gremlin では、自己ループを簡単に取得できます。したがって、次のようになります。

gremlin> g.V.sideEffect{v=it}.outE('reports').inV.filter{it==v}.path
gremlin> [v[adam], e[2][adam-reports->adam], v[adam]]

ただし、Javaで同じことをしようとしていますが、GremlinPipeline成功していません。上記を行うために有効なGremlinePipelineを構築するにはどうすればよいですか?

GremlinPipeline pp = new GremlinPipeline();
// Add various pies to pp to get a valid pipeline
pp.setStarts(g.getVertices()); 
4

1 に答える 1

1

自己ループ エッジのみを見つけたい場合は、次のようにします。

g.E.filter{it.inV == it.outV}

上記の TinkerGraph のサンプルを指定すると、出力は次のようになります。

gremlin> g.E.filter{it.inV == it.outV}
==>e[2][adam-reports->adam]
于 2013-01-03T17:31:03.750 に答える