Запрос на пересечение для tinkerpop3 gremlin

Я использую DSE-5.0.5 и DSE-studio и хочу написать запрос в gremlin внутри графа ноутбука. Есть ли запрос на пересечение, который мог бы дать мне общие элементы между двумя наборами, возвращенными через обход в tinkerpop3.

Я написал этот запрос:

gV (). has ('имя', 'Человек1'). outE ('ПРИНАДЛЕЖИТ'). inV (). inE ('ИМЕЕТ'). outV (). as ('x'). inE ('ИМЕЕТ') .outV (). as ('y'). inE ('HAS'). outV (). has ('name', 'App1'). select ('x'). inE ('HAS'). outV ( ) .hasLabel ('Org'). as ('p'). repeat (out ()). until (outE (). hasLabel ('IS')). as ('a1'). select ('y') .inE ('HAS'). outV (). hasLabel ('Class'). repeat (inE ('IS'). dedup (). otherV ()). до (inE (). hasLabel ('HAS')) .as ('a2'). select ('а1', 'а2')

Итак, я хочу пересечение множеств a1 и a2. Или есть эффективный способ написать это, который мог бы дать мне это?


person Varun Tahin    schedule 20.01.2017    source источник


Ответы (1)


Было бы полезно иметь образец графика, но я думаю, что это должно сработать:

g.V().has("name","Person1").
  out("BELONGS").in("HAS").dedup().as("x").
  in("HAS").filter(__.in("HAS").has("name","App1")).store("y").
  select("x").dedup().in("HAS").hasLabel("Org").
  repeat(out()).until(outE().hasLabel("IS")).store("a").cap("y").
  unfold().in("HAS").hasLabel("Class").
  repeat(inE("IS").dedup().otherV()).until(inE("HAS")).
  where(within("a"))
person Daniel Kuppitz    schedule 20.01.2017