背景:到目前为止,我一直在使用conditional types及其NEO4J,我希望转移到Cypher Query以支持多个图形数据库。
在Apache TinkerPop我找到我的朋友,我会写这个查询。
MATCH (you {name:"You"})-[:FRIEND]->(yourFriends)
RETURN you, yourFriends
现在我正在寻找一种类似于我的代码中已编码的查询语言,以便与Gremlin一起使用
从我看来,Gremlin有一个像“ gv(12).outE('knows')。inV ”的脚本,但这与SQL语法不相似,这就是我我正在寻找。
注意:我不是在寻找SQL连接,我只是在寻找 SQL LIKE脚本
答案 0 :(得分:3)
对您的问题的简短回答是,对于启用Tinkerpop的数据库,您需要在Gremlin中编写查询,目前还没有类似SQL的语言。
Gremlin在很多方面与SQL和Cypher不同,但重要的是Gremlin是一种声明性语言,而SQL / Cypher是命令式语言。在Gremlin中,您可以定义遍历图形的方式,在SQL / Cypher中定义所需内容,引擎可以为您优化遍历。
例如,您在上面的Cypher查询将以Gremlin编写为:
g.V().has('name', 'You')
.as('you').out('friend')
.as('yourFriends')
.select ('you', 'yourFriends')
目前,您需要将您的Cypher查询转换为Gremlin,以对抗任意数量的TP数据库,包括JanusGraph,CosmosDB,DSE Graph,AWS Neptune ....所有当前提供商都可以在此处找到:Tinkerpop Providers
Daniel Kuppitz撰写了一篇文章,教你如何从繁琐的SQL查询迁移到编写gremlin,并在此处提供:SQL2Gremlin