Рекомендации Гремлин - PullRequest
       24

Рекомендации Гремлин

4 голосов
/ 22 апреля 2020

Я пытаюсь определить отсутствующие отношения на графике и дать рекомендации по добавлению пользователя в группу, поскольку его коллеги находятся в одной группе. Пример: Менеджер Dave of IT имеет членов, имеющих отношение к группе. Я хотел бы найти все вершины, которые совместно используют одну организацию или менеджера, но не находятся в этой группе.

пример сценария:

 g.addV('person').property('name','dave').as('d').
 addV('person').property('name','rick').as('r').
 addV('person').property('name','mavis').as('m').
 addV('person').property('name','larry').as('l').
 addE('manages').from('d').to('r').
 addE('manages').from('d').to('m').
 addE('manages').from('d').to('l').
 addV('group').property('name','IT').as('IT').
 addE('isIn').from('d').to('IT').
 addE('isIn').from('r').to('IT').iterate()

Как правильно сделать это?

1 Ответ

3 голосов
/ 22 апреля 2020

Если вы хотите определить отсутствующие отношения, вы можете сделать что-то вроде этого:

g.V().hasLabel('group').as('group').
  in('isIn').where(outE('manages')).
  project('group name', 'manager', 'not in group').
    by(select('group').
      values('name')).by('name').
    by(out('manages').not(where(out('isIn').
          where(eq('group')))).
      values('name').fold())

* Я предположил, что в каждой группе ровно один менеджер.

пример: https://gremlify.com/7i

...