【发布时间】:2020-07-12 11:42:45
【问题描述】:
我有一个大型 Janusgraph 数据库,我想创建一个以一种节点类型为中心的子图,包括特定类型的传入和传出节点。
在 Cypher 中,查询如下所示:
MATCH (a:Journal)N-[:PublishedIn]-(b:Paper{paperTitle:'My Paper Title'})<-[:AuthorOf]-(c:Author)
RETURN a,b,c
这是我在 Gremlin 中尝试过的:
sg = g.V().outE('PublishedIn').subgraph('j_p_a').has('Paper','paperTitle', 'My Paper Title')
.inE('AuthorOf').subgraph('j_p_a')
.cap('j_p_a').next()
但是我得到一个语法错误。 'AuthorOf' 和 'PublishedIn' 不是唯一以 'Paper' 节点结尾的边类型。
谁能告诉我如何在 Gremlin 中正确执行这个查询?
【问题讨论】:
-
outE步骤将产生边缘,has步骤将检查这些边缘的属性,之后您应该使用inV而不是inE。如果没有您的数据模型,很难确切知道您需要什么,但可能您需要inV().outE()或类似的东西,因为您需要遵循边-顶点-边的模式。inV可能需要在查看 Cypher 查询之前进行。 -
我将添加一个我认为反映您的 Cypher 查询的答案。如果没有数据模型,我无法轻松测试。
标签: cypher gremlin graph-databases janusgraph