使用TinkerPop 3 Java API:
我的图看起来像这样:
james {risk: 'n'} --> chris {risk: 'n'} --> raj {risk: 'n'} --> joanne {risk: 'y'}
The edge label is 'travelledWith' and a property called 'pnrLocator'
现在,我想从詹姆士遍历到风险设置为“ y”的顶点。一路上,我想收集顶点和边的属性。
这是我所拥有的,仅适用于顶点属性。如何添加“ by”并也收集“ pnrLocator”?
GraphTraversal<Vertex, ?> values =
g.traversal()
.V()
.has("personId", "james")
.repeat(out("travelledWith"))
.until(has("risk", "y"))
.limit(100)
.path()
.by("personId");
values.forEachRemaining(v -> System.out.println(v));
答案 0 :(得分:0)
在path()
步骤中,将使用“现代” TinkerPop玩具图,按照给定的步骤输出Gremlin遍历的所有元素:
gremlin> g.V().repeat(out()).emit().path().by("name")
==>[marko,lop]
==>[marko,vadas]
==>[marko,josh]
==>[marko,josh,ripple]
==>[marko,josh,lop]
==>[josh,ripple]
==>[josh,lop]
==>[peter,lop]
我遍历了out()
并返回了顶点,因此这是我在路径输出中看到的唯一输出。如果我稍微改变遍历以明确遍历边缘(即out()
到outE().inV()
),那么我可以这样做:
gremlin> g.V().repeat(outE().inV()).emit().path().by("name").by('weight')
==>[marko,0.4,lop]
==>[marko,0.5,vadas]
==>[marko,1.0,josh]
==>[marko,1.0,josh,1.0,ripple]
==>[marko,1.0,josh,0.4,lop]
==>[josh,1.0,ripple]
==>[josh,0.4,lop]
==>[peter,0.2,lop]