【发布时间】:2015-05-27 14:32:34
【问题描述】:
我想知道如何在 Gremlin 3.x GraphTraversal 中应用类型过滤器。例如,让我们以Graph of the Gods 为例。
在这里,我们可以做到以下几点:
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 的新手,可能还有很多事情我还不知道。
【问题讨论】:
-
您使用的是什么版本的 Titan/TP3?
-
我使用的是 Titan 0.9.0-M1,以及随附的 gremlin 3.x 版本。
-
那是一个非常旧的 TP3 版本(准确地说是 M6)。针对
titan09分支和TP3 M9 工作,我不认为铸造问题是一个问题。有可能在泛型中进行了某些更改以解决该问题。 -
好的,那太好了。但是,我认为我无法说服我的团队针对分支进行开发。您是否偶然知道下一个 Titan 快照版本(0.9.0-M1 之后)何时发布?
-
TP3 M9 现已进行发布投票。预计将在下周左右发布。我不认为 Titan 会发布真正的 0.9 GA ......当 TP3 进入 GA 时它会直接到 1.0。我想你至少还要再看几个星期。如果您认为 Titan 0.9 M2 与 TP3 M9 对您有帮助,您可能需要在 aurelius graphs 邮件列表上提出此类请求。
标签: java graph-databases gremlin tinkerpop3