2

我想知道如何在 Gremlin 3.x 中应用类型过滤器GraphTraversal。例如,让我们以众神图为例。

在这里,我们可以执行以下操作:

Set<Element> set = graph.V().has("name", "jupiter").toSet()

...并得到一个Set<Element>. 我想要的是一个Iterable<Vertex>替代(或 的子类Iterable)。从遍历声明中,结果只能由顶点组成,因为.V()运算符。由于 Java 类型系统,它被不必要地概括为Element. 有没有办法输入过滤器?我想做的是沿着这些方向做的事情......

Set<Vertex> vertices = graph.V().has("name", "jupiter").cast(Vertex.class).toSet();

...但没有cast操作员。最终,我想要这样做的原因是因为我需要在 foreach 循环中迭代生成的顶点,并且必须将循环变量向下转换为循环中的第一条语句很烦人。

我对替代方案持开放态度,我对 Gremlin 3 还是新手,可能还有很多事情我还不知道。

4

1 回答 1

1

针对 Tinkerpop3 M6/titan0.9 M1,以下应该有效:

Set<Vertex> vertices = graph.V().<Vertex>has("name", "jupiter").toSet();

大多数 M6 类型的问题都可以通过类似的方式解决(参数化通过预期类型生成元素的方法)。

于 2015-06-02T16:21:52.333 回答