当前位置: 首页 > 知识库问答 >
问题:

通过边缘标签过滤Gremlin遍历

甘骞尧
2023-03-14

我试图使用Gremlin从一个起始节点向外遍历到连接X度内的所有连接节点。连接的方向无关紧要,所以我使用了both()函数。我还希望能够防止遍历与特定标签相交。这是一个示例图。

gremlin> g.addV().property(id,1).as('1').
......1>   addV().property(id,2).as('2').
......2>   addV().property(id,3).as('3').
......3>   addV().property(id,4).as('4').
......4>   addV().property(id,5).as('5').
......5>   addV().property(id,6).as('6').
......6>   addV().property(id,7).as('7').
......7>   addE('edge1').from('1').to('2').
......8>   addE('edge2').from('1').to('3').
......9>   addE('edge2').from('2').to('4').
.....10>   addE('edge3').from('3').to('5').
.....11>   addE('edge3').from('4').to('6').
.....12>   addE('edge4').from('7').to('6').iterate()

到目前为止,我进行的遍历如下所示:

gremlin> g.V(1).
......1>   repeat(both().filter(not(inE('edge3')))).
......2>   times(4).
......3>   emit().
......4>   simplePath().
......5>   dedup()

然而,这并不是我所寻找的。我想要一些实际上可以防止遍历者在必须跨越指定边缘时触及顶点的东西。我当前的实现过滤具有传入边缘的顶点,但在某些情况下,如果遍历者跨越不同的边缘到达那里,我可能仍然希望该顶点出现在结果中。

这有意义吗?简而言之,我试图专门过滤边缘,而不是顶点与其边缘的关系。

共有1个答案

燕禄
2023-03-14

我想我已经按照你说的做了,难道你不能在遍历这些边的时候使用()和过滤这些边吗

gremlin> g.V(1).
......1>   repeat(bothE().not(hasLabel('edge3')).otherV()).
......2>     times(4).
......3>     emit().
......4>   simplePath().
......5>   dedup()
==>v[2]
==>v[3]
==>v[4]
 类似资料:
  • 我有图表(见下图)。我使用A中的gremlin,需要沿着边缘“impacts”和“Similato”循环所有树。 所以我需要这样的东西: 此查询的问题是,关系“相似”有时可能是边缘外,有时可能是边缘内(见图),这取决于应用程序当前存储数据的方式。我不能简单地使用“两者”(g. v(A. id).都('影响','相似')...)来检索边,因为另一方面,我只需要“影响”关系的边缘。也有可能,某些顶点缺

  • 我有一个具有两个顶点的简单图,ID为“a”和“b”。 我已将标签为“foo”的边从“a”分配给“b” 小妖精 == == 小妖精 == 我的问题是:如何沿同一条边向后移动?例如,如果一个查询遍历到一个出站顶点,那么该查询如何穿越同一条边返回到入站顶点? 我的查询如下: g、 E('04b4b9fd-2f20-751d-5673-5aa9d7ce0285').outV()。作为('outV')…[要

  • 测试类和方法可以打标签。这些标签以后可以用来过滤测试发现和执行。 标签的语法规则 标签不能为null或空白。 裁剪标签不能包含空格(whitespace)。 裁剪标签不得包含ISO控制字符。 裁剪标签不得包含以下任何保留字符。 ,, (, ), &, |, ! 在上面的上下文中,“裁剪”意思是前后的空白字符已被删除。 import org.junit.jupiter.api.Tag; import

  • 问题内容: 由于我是elasticsearch的新手,因此我无法识别 ngram令牌过滤器 和 edge ngram令牌过滤器 之间的 区别 。 两者在处理令牌方面有何不同? 问题答案: 我认为文档对此非常清楚: 该标记器与nGram非常相似,但仅保留从标记开头开始的n-gram。 标记器的最佳示例再次来自文档: 使用此标记生成器定义: 简而言之: 令牌生成器将根据令牌的配置来创建令牌。在这个例子

  • 我有一个图,其中顶点有几个出站边类型,每个边类型都有属性。我想从每个顶点获得出站边的计数,但将计数限制为具有特定标签和属性值的边。 到目前为止,我有: 这给了我一个具有正确标签和属性的每个源vertext和每个传出边的列表。我想做的是将其减少到每个源顶点的单个条目和出站边的数量。但是,我似乎无法让与结合使用。我得到的最接近的是: 这使我可以按源顶点计数,但包括带有该标签的所有边,而不管它们具有什么