Gremlin Tinkerpop returns 一个对象路径,你如何访问各个顶点

Gremlin Tinkerpop returns an object Path, how do you access the individual vertices

我看到这个问题已经被问过几次了,但我找不到适合我的答案。

我在 Java 应用程序中使用它,我想 return 一个包含顶点或仅包含顶点 iD 的字符串的 ArrayList。我必须使用 Path() 步骤,因为我需要以正确的顺序 returned 顶点,但是我得到的只是一个包含 2 个对象的列表,源顶点似乎是一个对象,整个路径是一个对象,我不能操作或使用数据?

我的遍历是:

List<Object> routeList;

routeList = g.V(sourceID).shortestPath().with(ShortestPath.edges, Direction.OUT)
                .with(ShortestPath.distance, "weight").with(ShortestPath.target, hasId(targetId))
                .with(ShortestPath.includeEdges, false).path().unfold().toList();

列表的输出是:

v[L00-041]
path[v[L00-041], v[L00-042], ...etc.... v[L00-043], v[L00-031]]

我真的需要return以可用格式设置路径。我确定有人以前担任过这个职位并且可以帮助我。谢谢

一般来说,对于 path() 查询,Gremlin 会 return 一个 Path 对象给你,你可以遍历它。这是来自 Gremlin 控制台的示例。

gremlin> p = g.V(1).out().limit(1).path().next()
==>v[1]
==>v[135]
gremlin> p.class
==>class org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath
gremlin> p[1]
==>v[135]
gremlin> p[0]
==>v[1]       
gremlin> p.size()
==>2
gremlin> for (e in p) {println(e)}
v[1]
v[135]    

相关的Java文档在这里:

https://tinkerpop.apache.org/javadocs/current/full/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.html

https://tinkerpop.apache.org/javadocs/current/full/org/apache/tinkerpop/gremlin/process/traversal/Path.html

使用 Java 你可以做这样的事情。

List<Path> p = g.V("1").out().limit(1).path().toList();
p.get(0).forEach(e -> System.out.println(e));

但是,在使用 shortestPath() 步骤时,returned 结果是一个 ReferencePath,其中包含起始顶点和走过的路径。您可以按如下方式从控制台访问它,也可以从 Java 执行与上面的示例类似的操作。与 Path 一样,ReferencePath 是可迭代的。

gremlin> routeList.class
==>class org.apache.tinkerpop.gremlin.structure.util.reference.ReferencePath
gremlin> routeList[0].class
==>class org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex
gremlin> routeList[1].class
==>class org.apache.tinkerpop.gremlin.structure.util.reference.ReferencePath
gremlin> for (v in routeList[1]) {println v}
v[3]
v[8]
v[44]

这是 JavaReferencePath 的文档 https://tinkerpop.apache.org/javadocs/current/full/org/apache/tinkerpop/gremlin/structure/util/reference/ReferencePath.html