Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用Gremlin/Tinkerpop 3的fluent api以文本形式而不是步骤列表形式打印查询之后,有什么方法吗?_Gremlin - Fatal编程技术网

在使用Gremlin/Tinkerpop 3的fluent api以文本形式而不是步骤列表形式打印查询之后,有什么方法吗?

在使用Gremlin/Tinkerpop 3的fluent api以文本形式而不是步骤列表形式打印查询之后,有什么方法吗?,gremlin,Gremlin,现在我知道,如果我打印图形遍历,它将显示数组中的步骤。我很好奇,不知何故,是否可以将原始的Gremlin查询打印为字符串 谢谢大家! 对于每个Gremlin语言变体,都有一个Translator.ScriptTranslator实现,它接受Gremlin字节码并将其写入字符串。对于gremlin groovy,您将使用GroovyTranslator,如下所示: gremlin> GroovyTranslator ==>class org.apache.tinkerpop.greml

现在我知道,如果我打印图形遍历,它将显示数组中的步骤。我很好奇,不知何故,是否可以将原始的Gremlin查询打印为字符串


谢谢大家!

对于每个Gremlin语言变体,都有一个Translator.ScriptTranslator实现,它接受Gremlin字节码并将其写入字符串。对于gremlin groovy,您将使用GroovyTranslator,如下所示:

gremlin> GroovyTranslator
==>class org.apache.tinkerpop.gremlin.groovy.jsr223.GroovyTranslator
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> bytecode = g.V().out('knows').in('created').getBytecode()
==>[[], [V(), out(knows), in(created)]]
gremlin> GroovyTranslator.of('g').translate(bytecode)
==>g.V().out("knows").in("created")

嗨,斯蒂芬!为什么遍历中没有任何getByteCode?是因为它是Tinkerpop的旧版本,还是因为它是版本3的旧功能?我将3.2.3与Java一起使用,我看到GraphTraversal源返回的GraphTraversal没有getByteCode,而DefaultGraphTraversal有getByteCode。。有没有一种方法可以在Java中使用DefaultGraphTraversal;我仍然在打印输出中得到步骤,而不是实际的Gremlin查询。。甚至对Java实际有效的是:org.apache.tinkerpop.gremlin.groovy.jsr223.GroovyTranslator.ofg.toString.translatedFaultGraphTraversalTraversal.getByteCode只是澄清一下——getByteCode在Traversal.Admin上,所以它有点隐藏。因此,如果没有Traversal.Admin实例,则必须执行类似于g.V.asAdmin.getByteCode的操作。