Gremlin中序列语句的语法是什么?

托马斯·杜比森

内小鬼语言(Groovy的孩子),我是通过行为和用途混淆了一点;&&

例如,在GremlinClient REPL(在此处运行Titan 1.0)中,我可能希望一次添加几个节点:

gremlin> graph = TitanFactory.open("../conf/gremlin-server/titan-cassandra-server.properties")
==>standardtitangraph[cassandra:[localhost]]
gremlin> g = graph.traversal(standard())
==>graphtraversalsource[standardtitangraph[cassandra:[localhost]], standard]
gremlin> g.V().count()
==>0
gremlin> g.addV(label, 'Subject', 'ident', '1') ; g.addV(label, 'Subject', 'ident', '2')
==>v[4304]
gremlin> g.V().count()
==>1

好的,所以;没有用。怎么&&它没有我想要的语义,但是我可以解决它:

gremlin> g.V().count()
==>0
gremlin> g.addV(label, 'Subject', 'ident', '1') && g.addV(label, 'Subject', 'ident', '2')
==>true
gremlin> g.V().count()
==>2

好吧...没关系。现在,我还需要能够将变量绑定为命令序列的一部分。奇怪的是,分号在这里起作用:

gremlin> g.V().count()
==>0
gremlin> g.E().count()
==>0
gremlin> g.addV(label, 'Subject', 'ident', '1') && g.addV(label, 'Subject', 'ident', '2')
==>true
gremlin> node3 = graph.addVertex(label, 'Subject', 'ident', '3') ; g.V().has('ident', '1').next().addEdge('dc:isPartOf', node3) ; node3.addEdge('dc:isPartOf', g.V().has('ident','2').next())
==>e[35z-6d4-2l91-9n4][8248-dc:isPartOf->12496]
gremlin> g.V().count()
==>3
gremlin> g.E().count()
==>2

现在,这就是窍门。如何在一行中同时执行这两项操作(实际上是一个Websocket请求)?我似乎甚至无法node3 = ...通过复制上面的行来;获得适当的功能。

杰布姆索

除非您专门谈论Gremlin语言变体否则Gremlin是纯Groovy,因为Gremlin是DSL而非语言本身。从技术上讲,任何有效的Groovy都是有效的Gremlin。

关于您提供的示例,我相信您需要通过遍历遍历.iterate().next()这将起作用,因为您仅添加了一个元素)。

g.addV(label, 'Subject', 'ident', '1').iterate() ; g.addV(label, 'Subject', 'ident', '2')

Gremlin控制台仅自动迭代最后一个遍历,因此.iterate()不需要为第二条语句提供明确的内容。这严格等于:

g.addV(label, 'Subject', 'ident', '1').iterate() ; g.addV(label, 'Subject', 'ident', '2').iterate()

如果要通过WebSocket执行多个操作,则只需发送多行脚本即可。以下应该工作:

node3 = graph.addVertex(label, 'Subject', 'ident', '3')
g.V().has('ident', '1').next().addEdge('dc:isPartOf', node3)
node3.addEdge('dc:isPartOf', g.V().has('ident','2').next())

请注意,使用TinkerPop的最新版本(我记得v3.1 +),您可以链接.addV()步骤并在同一遍历中添加多个顶点。

g.addV(label, 'Subject', 'ident', '1').addV(label, 'Subject', 'ident', '2')

由于最新的稳定版本(v1.0.0)使用TinkerPop v3.0.1,因此Titan中尚未提供此功能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

YQL结果中SELECT语句的正确语法是什么?

来自分类Dev

python中+ =语句的语法结构是什么?

来自分类Dev

嵌套条件语句的语法是什么?

来自分类Dev

if语句最可移植的语法是什么?

来自分类Dev

SQLITE 的 SELECT IN 语句的语法是什么?

来自分类Dev

FOR 循环中 IF 语句的正确语法是什么?

来自分类Dev

语法Haskell中的@是什么?

来自分类Dev

bash中的@(... | ... | ...)语法是什么?

来自分类Dev

语法Haskell中的@是什么?

来自分类Dev

在CASE语句内的子查询中返回匹配项的语法是什么?

来自分类Dev

D中的“是”语句是什么?

来自分类Dev

c中将语句组合为参数的语法是什么

来自分类Dev

此SQL SELECT语句的正确语法是什么

来自分类Dev

在 Python 的 if 语句中分组条件的正确语法是什么?

来自分类Dev

余烬中的{{#each as}}语法是什么?

来自分类Dev

ruby clases中的语法是什么?

来自分类Dev

该行中的语法错误是什么

来自分类Dev

::在Ruby语法中是什么意思?

来自分类Dev

bash中if [[-n variable]]语法是什么

来自分类Dev

if语法中的','是什么意思?

来自分类Dev

组件<{},{},状态>。React中的语法是什么?

来自分类Dev

Matlab中“ i ++”的语法是什么

来自分类Dev

Lombok中的语法@@()是什么意思?

来自分类Dev

在Julia中语法“ |>”的作用是什么?

来自分类Dev

sklearn内核语法中的常量是什么?

来自分类Dev

if语法中的','是什么意思?

来自分类Dev

Java中的多个接口-语法是什么?

来自分类Dev

Swift中多维数组的语法是什么?

来自分类Dev

so文件中INPUT的语法是什么