Janusgraph Gremlin 查询
Janusgraph Gremlin query
我对图表比较陌生。
寻求帮助以构建 gremlin 查询等价于下面的 4 sql。
Select a.x1,a.x2,b.y1,b.y2 来自 table1 a, table b 其中 a.x1=b.y1 和 a .x2=b.y2.
将 table 视为顶点,将 x1 x2 y1 y2 视为属性。
在 janusgraph 中,这些顶点没有边,属性 标签也不同。在得到结果之前,需要检查顶点是否没有边。
如果没有边,那么这不是一个非常糟糕的 "graphy" 查询,所以这可能看起来有点笨拙。我认为您将不得不使用某种形式的中间遍历 V()
。我在这里用一点数据进行了演示:
gremlin> g.addV('a').property('x1',1).property('x2',2).
......1> addV('b').property('y1',1).property('y2',2).
......2> addV('b').property('y1',2).property('y2',3).iterate()
gremlin> g.V().hasLabel('a').as('a').
......1> V().hasLabel('b').as('b').
......2> where('a', eq('b')).
......3> by('x1').
......4> by('y1').
......5> where('a', eq('b')).
......6> by('x2').
......7> by('y2').
......8> select('a','b').
......9> by(valueMap(true))
==>[a:[label:a,id:0,x1:[1],x2:[2]],b:[label:b,id:3,y1:[1],y2:[2]]]
我不确定是否有更好的方法来做到这一点。根据您的数据集有多大,这可能是一个非常昂贵的遍历,并且可能更适合使用 Gremlin Spark 的 OLAP 遍历形式。
我对图表比较陌生。
寻求帮助以构建 gremlin 查询等价于下面的 4 sql。
Select a.x1,a.x2,b.y1,b.y2 来自 table1 a, table b 其中 a.x1=b.y1 和 a .x2=b.y2.
将 table 视为顶点,将 x1 x2 y1 y2 视为属性。
在 janusgraph 中,这些顶点没有边,属性 标签也不同。在得到结果之前,需要检查顶点是否没有边。
如果没有边,那么这不是一个非常糟糕的 "graphy" 查询,所以这可能看起来有点笨拙。我认为您将不得不使用某种形式的中间遍历 V()
。我在这里用一点数据进行了演示:
gremlin> g.addV('a').property('x1',1).property('x2',2).
......1> addV('b').property('y1',1).property('y2',2).
......2> addV('b').property('y1',2).property('y2',3).iterate()
gremlin> g.V().hasLabel('a').as('a').
......1> V().hasLabel('b').as('b').
......2> where('a', eq('b')).
......3> by('x1').
......4> by('y1').
......5> where('a', eq('b')).
......6> by('x2').
......7> by('y2').
......8> select('a','b').
......9> by(valueMap(true))
==>[a:[label:a,id:0,x1:[1],x2:[2]],b:[label:b,id:3,y1:[1],y2:[2]]]
我不确定是否有更好的方法来做到这一点。根据您的数据集有多大,这可能是一个非常昂贵的遍历,并且可能更适合使用 Gremlin Spark 的 OLAP 遍历形式。