【问题标题】:Nested transform in Gremlin (Titan)Gremlin (Titan) 中的嵌套变换
【发布时间】:2014-10-18 16:36:08
【问题描述】:

我有一个带有两个顶点的图,其键名为“类型”。

为什么如下:

g.V("type", "language").transform { language_1 ->
  1+1;
}

返回:

==>2
==>2

以及以下内容:

g.V("type", "language").transform { language_1 ->
  g.V("type", "language").transform { language_2 ->
    1+1;
  }
}

返回:

==>[GremlinStartPipe, GraphQueryPipe(has,vertex), IdentityPipe, TransformFunctionPipe]
==>[GremlinStartPipe, GraphQueryPipe(has,vertex), IdentityPipe, TransformFunctionPipe]

?

【问题讨论】:

    标签: java groovy gremlin titan


    【解决方案1】:

    您在第二个示例中看到的是管道的字符串表示形式。您的两个示例查询都返回管道,但是当 Gremlin 控制台看到返回的管道时,它会自动从中读取所有数据并显示它。如果您希望像在第二个查询中那样在更大的查询中使用从嵌套管道返回的数据,则必须显式读取数据。试试这个:

    g.V("type", "language").transform { language_1 ->
      g.V("type", "language").transform { language_2 ->
        1+1;
      }.next()
    }
    

    【讨论】:

    • 感谢您的回答@PaulJackson。我试着照你说的做,但等了几分钟后它失败了:Could not process individual retrieval call
    • 这是一个有趣的查询,它的编写方式。第一个说“去寻找类型语言的顶点,并为每个顶点返回 1+1。”第二个说“对于每种语言,为每种语言返回一个由 2 组成的管道”。 (所以对于三种语言,你会得到一个 3x3 嵌套的 2 集。)确保基本查询 g.V("type", "language") 工作正常。然后在任一右花括号或两者之后尝试使用 .next() 或 .next()._() 。所有组合都会为我返回一些东西,但我使用的是我自己的控制台。
    • 感谢@Paul_Jackson。你给我指明了好的方向。我只是将它用于一个非常具体的案例,但我从未使用 Java 编程。你对g.V("type", "language") 工作不好是对的。但是,要真正迭代四次 (2x2),而不是 .next(),必须使用 .iterate()。最好的问候。
    猜你喜欢
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2013-10-01
    • 2012-10-29
    • 2017-02-06
    • 1970-01-01
    相关资源
    最近更新 更多