2013-01-03 28 views
0

我正在使用允许自行循环的网络(即,某些边缘的头部和尾部都具有相同的顶点)。假设,该图表具有g 3分顶点(adambill,和cid),和reports型的3个边([adam-reports->bill][bill-reports->cid],和[adam-reports->adam]),最后被在这个例子中的唯一自反边缘。如何使用GremlinPipeline获取自循环的路径?

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> 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()); 

回答

1

如果你只是想找到自我循环的边缘,这样做:

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

给你品尝TinkerGraph以上,输出为:

gremlin> g.E.filter{it.inV == it.outV} 
==>e[2][adam-reports->adam]