java - 分配给变量时,我可以以某种方式重用 Gremlin GraphTraversals 代码吗?

标签 java gremlin

我有看起来像那样的 GraphTraversals(attrGroup:

GraphTraversal<Vertex,Edge> attrGroupTraversal = some code generates it; 
List<Vertex> attributeVs = attrGroupTraversal.inV().out(EdgeLabels.ContainsAttribute).toList();
List<Vertex> sourceVs = attrGroupTraversal.inV().out(EdgeLabels.ContainsSource).toList();
List<Vertex> targetVs = attrGroupTraversal.out(EdgeLabels.ContainsTarget).toList();

有没有办法重用 attrGroupTraversal,这样我就不需要重新运行最初创建它的代码?

我得到:

java.lang.IllegalStateException: The traversal strategies are complete and the traversal can no longer be modulated

at org.apache.tinkerpop.gremlin.process.traversal.Traversal$Exceptions.traversalIsLocked(Traversal.java:245) at org.apache.tinkerpop.gremlin.process.traversal.util.DefaultTraversal.addStep(DefaultTraversal.java:274) at org.apache.tinkerpop.gremlin.process.traversal.Traversal$Admin.addStep(Traversal.java:301) at org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal$Admin.addStep(GraphTraversal.java:170) at org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal.inV(GraphTraversal.java:384)

最佳答案

我建议你 .clone() 你原来的遍历。 以下应该有效:

GraphTraversal<Vertex,Edge> attrGroupTraversal = some code generates it; 
List<Vertex> attributeVs = attrGroupTraversal.clone().inV().out(EdgeLabels.ContainsAttribute).toList();
List<Vertex> sourceVs = attrGroupTraversal.clone().inV().out(EdgeLabels.ContainsSource).toList();
List<Vertex> targetVs = attrGroupTraversal.clone().out(EdgeLabels.ContainsTarget).toList();

另请参阅:Traversal component reuse来自 TinkerPop 文档食谱。

关于java - 分配给变量时,我可以以某种方式重用 Gremlin GraphTraversals 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528217/

相关文章:

java - 是否可以在 HttpServer.createContext 的处理程序方法中获取完整的 http 请求?

java - Hibernate with H2 不存储数据

java - 从线程修改全局 ArrayList

elasticsearch - 在 Elasticsearch 查询中获取路径下的嵌套对象不是嵌套类型

groovy - Gremlin 存储 GremlinGroovyPipeline 并对其调用 .count() 时

schema - 如何删除 Titan DB 中的属性?

javascript - 如何在版本 ^3 上使用 gremlin 启动与 Cosmos DB 图形数据库的新连接

titan - 如何在同一个 gremlin 查询中检索计数和范围

java - double 计算 float 错误

java - 暂停恢复线程: Java