Gremlin 根据仅具有入边或出边的顶点识别种群子集

Gremlin identifying subsets of populations based on vertices that only have in or out edges

我有一个 gremlin 图,其中包含具有特征的用户。图的边缘从用户出去并进入特征。没有到用户的传入边,也没有从特征传出的边。每个用户顶点都有许多到特征顶点的出边。

我想找到连接到 feature_afeature_b 顶点的女性用户子集。我正在使用 gremlinpython 并且我知道我可以使用下面的代码在 python 中进行某种集合交集。 gremlin 有没有办法实现这个?

q = '''g.V('feature_a').
        inv().has('gender','Female')'''

res1 = client.submit(q).all().result()

q2 = '''g.V('feature_b').
        inv().has('gender','Female')'''

res2 = client.submit(q2).all().result()


vs_in_common = set(res2).intersection(set(res1)))

尝试:

 g.V().hasLabel('User').has('gender', 'Female').and(
         __.out().hasId('feature_a'),
         __.out().hasId('feature_b')
         )

您似乎在寻找 and() 步骤以便在 gremlin 中进行交集。

Michael 发布的内容有效,但它是对图表中所有用户的全面扫描(除非 gender 已编入索引,但这迟早会导致其他问题)。你应该做类似下面的事情:

g.V().hasId('feature_a').
  in().has('gender', 'Female').
  filter(out().hasId('feature_b'))

此外,如果可能,请在 inout 步骤中提供边缘标签。