我正在使用一个允许自循环的网络(即,某些边与头部和尾部具有相同的顶点)。假设该图g
有 3 个顶点(adam
、bill
和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]]
但是,我试图GremlinPipeline
在 Java 中做同样的事情,但没有成功。如何构建有效的 GremlinePipeline 来执行上述操作?
GremlinPipeline pp = new GremlinPipeline();
// Add various pies to pp to get a valid pipeline
pp.setStarts(g.getVertices());