Janusgraph Gremlin查询

时间:2018-09-09 20:15:57

标签: gremlin janusgraph

是相对较新的图形。

在sql下寻求建立gremlin查询等效项4的帮助。

从表1a,表b中选择a.x1,a.x2,b.y1,b.y2,其中a.x1 = b.y1和a.x2 = b.y2。

将表格视为顶点,将x1 x2 y1 y2视为属性。

在janusgraph中,这些顶点没有边,并且属性标签也不同。在获取的结果之前,需要检查顶点是否没有边。

1 个答案:

答案 0 :(得分:1)

如果没有边,那么这不是一个可怕的“图形”查询,因此看起来可能有些笨拙。我认为您将必须使用某种形式的中遍历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遍历的一种更好的选择。