【问题标题】:Type-Filter Step in Gremlin 3?Gremlin 3 中的类型过滤步骤?
【发布时间】: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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多