从原点发现一个类型的所有顶点

Discover all vertices of a type from origin

我正在使用图形数据库为权限系统建模。 这是一个示例场景:

一个用户 u1 拥有直接权限,并且也在一个组 g1 中,该组 g1 具有权限并扩展了另一个组。

一个用户也是manage一个系统s1并且可以将与s1相关的权限授予其他用户。

基本上我需要做的就是获得我的 u1 的所有权限。 我怀疑这是一个简单的查询,但我在使用 gremlin 时遇到了困难。

我尝试了 repeat()s、out()s、emit()s、path()s 等的组合,但找不到我需要的。我已经尝试过 returns 要么节点多于需要(比如权限路径中的组节点,或者与系统相关的权限)要么节点少(比如未达到 G2

所以总结一下我需要的是:

gremlin> g.V('u1').__misteriousQueryThatShouldntBeThatHard()
==> v[p1]
==> v[p2]
==> v[p3]
==> v[p4]

感谢任何帮助。

如果 Kfir 对上一个问题的回答的唯一问题是将路径限制为某些边缘标签,您可以尝试:

g.V('u1')
    .repeat(out('is-in', 'extends', 'has-permission').simplePath())
    .until(hasLabel('Permission'))