有没有办法将遍历与具体图解耦,并将其应用于多个图



我想要一个遍历步骤的抽象描述,我可以自由地将其应用于多个图,但遍历实例似乎是有状态的,并且不可重用。

我在找这样的东西:

GraphTraversal findMarko = __.has("name", "marko"); //Does Marko exist?
GraphTraversalSource g1 = ...;
GraphTraversalSource g2 = ...;
g1.V().where(findMarko).hasNext(); //Does Marko exist in g1?
g2.V().where(findMarko).hasNext(); //Does Marko exist in g2?

但这导致:

java.lang.IllegalStateException:遍历策略已完成,不能再对进行调制

这在某种程度上可行吗?这有道理吗?

我需要它的原因是,我正在以完全相同的方式处理成千上万的小图。我将抽象规则从一些DSL转换为Gremlin,并希望跳过为每个图重做这一步骤。拥有一个可重用(或可克隆(的遍历实例可以解决这个问题。

我要查找的方法称为match。它提供了一种以声明方式查询图的方法。它采用匿名遍历(有用的关键字!这是Gremlin的名字,我称之为遍历步骤的抽象描述(,并从给定点开始寻找匹配:

GraphTraversal findMarko = __.has("name", "marko"); //Does Marko exist?
GraphTraversalSource g1 = ...;
GraphTraversalSource g2 = ...;
g1.V().match(findMarko).hasNext(); //Does Marko exist in g1?
g2.V().match(findMarko).hasNext(); //Does Marko exist in g2?

最新更新