针对Titan db的嵌套遍历gremlin查询

Ali*_*i n 0 graph-databases gremlin titan tinkerpop3

我想知道如何有一个以嵌套格式返回结果的gremlin查询.假设有如下属性图:

USERPAGE一些特性,如顶点AGEUSER顶点;

FOLLOW边缘USERPAGE;

我正在寻找一个单一的高效查询,它为所有年龄大于20岁的用户提供所有跟随的用户.我可以使用来自应用程序端的简单循环来执行该操作,并且每次迭代使用简单的遍历查询.不幸的是,这样的解决方案对我来说效率不高,因为它会产生大量查询,并且在这种情况下网络延迟可能很大.

Dan*_*itz 5

不确定您对"高效"的定义是什么,但请记住,这是典型的OLAP用例,您不应期望快速的OLTP实时响应.

也就是说,查询应该像下面这样简单:

g.V().has("USER", "AGE", gt(20)).as("user").
  map(out("FOLLOW").fold()).as("pages").
  select("user", "pages")
Run Code Online (Sandbox Code Playgroud)

使用现代样本图的一个小例子:

gremlin> g = TinkerFactory.createModern().traversal().withComputer()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], graphcomputer]
gremlin> g.V().has("person", "age", gt(30)).as("user").
           map(out("created").fold()).as("projects").
           select("user","projects")
==>[user:v[6], projects:[v[3]]]
==>[user:v[4], projects:[v[5], v[3]]]
Run Code Online (Sandbox Code Playgroud)