Graph 如何为给定的遍历gremlin查询在所有访问的节点/边上应用静态has步骤

Graph 如何为给定的遍历gremlin查询在所有访问的节点/边上应用静态has步骤,graph,gremlin,janusgraph,gremlin-server,Graph,Gremlin,Janusgraph,Gremlin Server,我们将用户权限标记为每个节点和边上的属性(集合基数)。想知道对于给定的遍历gremlin查询,在所有访问的节点/边上应用has步骤的最佳方法是什么 就像一个非常简单的travarsal查询: //从伦敦希思罗机场(LHR)飞往美国机场的航班 g.V().has('code','LHR').out('route').has('country','US').values('code') 添加(“权限”、“TeM1”)/代码>使用上面的查询遍历所有访问的顶点和边。 有两种方法可以考虑。 写一篇 发展

我们将用户权限标记为每个节点和边上的属性(集合基数)。想知道对于给定的遍历gremlin查询,在所有访问的节点/边上应用has步骤的最佳方法是什么

就像一个非常简单的travarsal查询: //从伦敦希思罗机场(LHR)飞往美国机场的航班

g.V().has('code','LHR').out('route').has('country','US').values('code')

添加<代码>(“权限”、“TeM1”)/代码>使用上面的查询遍历所有访问的顶点和边。

有两种方法可以考虑。

  • 写一篇
  • 发展
  • 对于
    transversalstrategy
    您将开发一个类似于
    子图策略
    分区策略
    的策略,该策略将获取用户对构建的权限,然后在
    out()
    /
    in()
    各种步骤之后自动注入必要的
    has()
    步骤。这里的缺点是,您的
    TraversalStrategy
    必须用JVM语言编写,如果使用Gremlin,则必须在服务器上安装服务器。如果您打算从客户端以任何方式配置此
    TraversalStrategy
    ,则需要构建自定义序列化程序来实现这一点

    对于DSL,您将为
    out()
    /
    in()
    类步骤创建新的导航步骤,它们将插入导航步骤和
    has()
    步骤的适当组合。DSL方法很好,因为您可以用任何编程语言编写它,它也可以工作,但它不允许服务器端配置,并且您必须始终确保客户端在查询图形时使用DSL

    我们将用户权限标记为每个节点和边上的属性(集合基数)


    最后,我想你说的“集合基数”是指。边不允许这样做,因此您只能在顶点上标记这样的属性。

    谢谢Stephen,即计划使用CustomUserPermissionStrategy。注意:目前我们通过HttpChannelizer为用户提供运行gremlin查询的功能,因此我们应该在empty-sample.groovy-like-global中使用新的CustomUserPermissionStrategy,您必须编写一些自定义代码才能实现这一点。我认为,您需要根据自己的需要查看并修改它。然后,您可以使用自定义处理程序构建自己的
    通道化器
    来构建自己的管道,并将其插入到Gremlin Server中:好的。再次感谢。看来我需要更深入地了解整个工作流程。我还可以参考任何doc ref,说明如何将这些自定义类插入到一起。注:我们使用janusgraph。顺便提一下你介意在即时通讯器上聊天吗?恐怕在这方面没有太多文档,因为它是API(和netty的)的一种相当高级的用法。如果您还有其他问题,gremlin用户邮件列表可能是一种更好的聊天方式……比IM好一点,因为我们的讨论可能会帮助其他用户。事实上,如果你在那里搜索一下,你可能会发现过去的讨论提供了一些指导。