在JVM上,您可以获得
Bytecode
对象的任何遍历
asAdmin().getBytecode()
详情如下:
gremlin> g.V().hasLabel('person').out().in().tree().asAdmin().getBytecode()
==>[[], [V(), hasLabel(person), out(), in(), tree()]]
已转换为GraphSON格式
字节码
格式如下所示(示例来自
IO documentation
):
{
"@type" : "g:Bytecode",
"@value" : {
"step" : [ [ "V" ], [ "hasLabel", "person" ], [ "out" ], [ "in" ], [ "tree" ] ]
}
}
此时,完整的指令集基本上绑定到JVM,只是
list of Gremlin steps
加上相关的表达式/标记(例如。
P
,
T
等)。我们是
currently working
sparql-gremlin
-可以找到预发布文档
here
. 此模块采用SPARQL查询语言并将其转换为Gremlin
字节码
.
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal(SparqlTraversalSource) //1\
==>sparqltraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.sparql("""SELECT ?name ?age
WHERE { ?person v:name ?name . ?person v:age ?age }
ORDER BY ASC(?age)""") //2\
==>[name:vadas,age:27]
==>[name:marko,age:29]
==>[name:josh,age:32]
==>[name:peter,age:35]
The code
它并不十分复杂——也许你可以从中获得灵感。如果您还有其他问题,请考虑询问。
gremlin-users mailing list
. 如果能看到更多的Gremlin编译器可用,那就太好了。目前还有其他的(SQL和Cypher),但我相信SPARQL编译器是目前唯一基于字节码的编译器。