Graph 用小精灵重复

Graph 用小精灵重复,graph,gremlin,janusgraph,Graph,Gremlin,Janusgraph,与gremlin相关的两个查询如下: 要在重复条件检查期间满足条件时停止遍历 我希望查询在repeat语句期间遇到的节点的stop等于1时停止返回更多值。但是查询不会停止并返回所有记录。 所需输出: =>{label_='A',stop=0} =>{label_='B',stop=0} =>{label_='C',stop=1} 查询以以下格式返回遍历值,并考虑它们之间是否存在边。将图形视为A->E1->B->E2->C。输出必须如下 A、 B、C、E1、E2分别表示属性,其

与gremlin相关的两个查询如下:

  • 要在重复条件检查期间满足条件时停止遍历
  • 我希望查询在repeat语句期间遇到的节点的stop等于1时停止返回更多值。但是查询不会停止并返回所有记录。 所需输出:

    =>{label_='A',stop=0}
    =>{label_='B',stop=0}
    =>{label_='C',stop=1}
    
  • 查询以以下格式返回遍历值,并考虑它们之间是否存在边。将图形视为A->E1->B->E2->C。输出必须如下

  • A、 B、C、E1、E2分别表示属性,其中是第一部分的起始节点,似乎是在入边而不是出边上进行遍历,这是故意的吗?如果是这样,则更换重复至
    输入中的
    out()

    g.V().has(label, 'A').emit().
      repeat(out()).until(has('stop', 1)).
      project('label', 'stop').
        by(label).
        by(values('stop'))
    
    例如:

    对于第二部分,我仍然不确定您的意思是什么,如果您只想获得所有边的进出,您可以使用
    elementMap

    g.E().elementMap()
    
    例如:

    如果不受支持,您可以这样做:

    g.E().local(union(
          outV(),
          identity(),
          inV()
        ).label().fold())
    

    示例:

    您能提供一个图表示例吗?您可以在gremlify.com中创建一个或添加一个生成某些数据的gremlin脚本。例如,addV().property('label_','a').property('stop',0)。addV().property('label_','B')。property('label_','C')。property('stop',1)类似于第一部分a到B和B到C之间的边,我需要返回边属性,但没有提到,因为这将是复杂的。边缘是否导致问题,直到无法解决为止?对于第二部分,所需的格式是node->edge->node。i、 e A->E1->B,这将从A开始,并使用repeat.Wear继续,直到边缘存在为止。对于第一种方法,解决方案仍然无效。重复条件如下:重复(inE().outV())@Phoenix在第一个示例中,如果从A方向开始,方向为out。您需要运行
    outE().inV()
    g.E().elementMap()
    
    g.E().local(union(
          outV(),
          identity(),
          inV()
        ).label().fold())