Graph 小精灵关系建议

Graph 小精灵关系建议,graph,gremlin,tinkerpop3,Graph,Gremlin,Tinkerpop3,我试图在一个图表中找出缺失的关系,并提供将用户添加到组中的建议,因为他的同龄人在同一个组中。 例子: IT经理dave拥有与集团有关系的成员。我想查找共享同一组织或经理但不在该组中的所有vertex 脚本示例: g.addV('person').property('name','dave').as('d'). addV('person').property('name','rick').as('r'). addV('person').property('name','mavis').as(

我试图在一个图表中找出缺失的关系,并提供将用户添加到组中的建议,因为他的同龄人在同一个组中。 例子: IT经理dave拥有与集团有关系的成员。我想查找共享同一组织或经理但不在该组中的所有vertex

脚本示例:

 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()

正确的方法是什么?

如果要识别缺失的关系,可以执行以下操作:

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())
*我假设每个小组只有一个经理


示例:

谢谢,我们可以用一种简单的方式来做吗:g.V().has('person','name','dave')。outE('manages')。not(where(out('isIn')。where(g.V().has('group','name','it'))由于我在项目方面没有经验,只有当您已经知道所有组的名称和经理,并且您将同时查询一个组时,这才有效。我的解决方案将在一个组中为您提供所有组和不匹配项query@user965992您还需要将
outE
切换到
out
g.V().has('person','name','dave')).out('manages').not(其中(out('isIn')。其中(V().has('group','name','IT')))
您将如何接近推荐引擎?修复缺失的关系或识别类似关系ones@user965992如果我理解您的要求…取决于此数据的敏感程度。如果不太敏感,我将修复丢失的关系,而无需首先确定它们以获取“调试详细信息”在我看来没有意义——对于那些熟悉图形和小精灵的人来说,这个问题相当简单。