Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.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字节码?_Gremlin_Tinkerpop3 - Fatal编程技术网

Gremlin 如何生成TinkerPOP字节码?

Gremlin 如何生成TinkerPOP字节码?,gremlin,tinkerpop3,Gremlin,Tinkerpop3,我想知道是否有人能给我一些建议(这是从哪里开始的),关于如何实现从查询语言到TinkerPop图遍历的转换。假设语义直观地转化为TinkerPop遍历的子集。换句话说,我要问的是: 在哪里可以找到TinkerPOP虚拟机的set指令集 TinkerPOP虚拟机字节码是什么样子的 是否有任何文档API可以帮助实现这一点 文档中说,生成字节码很容易,但没有详细了解字节码及其形状等 我希望有人能提供帮助:当前文档中的图形语言提供程序部分是空的在JVM上,您可以使用asAdmin().getByteco

我想知道是否有人能给我一些建议(这是从哪里开始的),关于如何实现从查询语言到TinkerPop图遍历的转换。假设语义直观地转化为TinkerPop遍历的子集。换句话说,我要问的是:

  • 在哪里可以找到TinkerPOP虚拟机的set指令集
  • TinkerPOP虚拟机字节码是什么样子的
  • 是否有任何文档API可以帮助实现这一点 文档中说,生成字节码很容易,但没有详细了解字节码及其形状等


    我希望有人能提供帮助:当前文档中的图形语言提供程序部分是空的

    在JVM上,您可以使用
    asAdmin().getBytecode()
    从任何遍历中获得
    字节码
    对象,如下所示:

    gremlin> g.V().hasLabel('person').out().in().tree().asAdmin().getBytecode()
    ==>[[], [V(), hasLabel(person), out(), in(), tree()]]
    
    转换为GraphSON格式,
    字节码
    格式如下所示(来自的示例):

    此时,完整的指令集基本上绑定到JVM,只是加上相关的表达式/令牌(例如
    p
    T
    ,等等)。我们首先将Gremlin定义为一个规范,而不是像今天这样将它绑定到JVM,但这需要一些时间才能完成

    请注意,您所谈论的是Gremlin编译器的开发。当我在
    sparql-gremlin
    中写这篇文章时,已经有一个即将发布的示例-可以找到发布前文档。此模块采用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]
    
    它并不十分复杂——也许你可以从中获得灵感。如果你有更多的问题,请考虑问他们。如果能看到更多的Gremlin编译器可用,那就太好了。目前还有其他的(SQL和Cypher),但我相信SPARQL编译器是目前唯一基于字节码的编译器

    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]