gpt4 book ai didi

scala - 如何收集 TinkerPop3 中的可选分支?

转载 作者:行者123 更新时间:2023-12-05 02:21:01 25 4
gpt4 key购买 nike

我有一个看起来像这样的图表: graph

使用 gremlin-scala ,我正在尝试从 A 遍历并收集这些元组:

(A, Some(A1)), (B, None), (C, Some(A2))

所以本质上,我想重复地从边缘取出 α 并选择性地分支到 β,收集这些边缘。我猜如果没有 β 边,我需要注入(inject)一个空的“步骤”,但我还不知道该怎么做。

现在 jump 被神秘地移除了(TP 3.1+),我也对如何在遍历 β 后倒带感到困惑

到目前为止,我有类似的东西:

graph.V("A").untilWithTraverser(t => t.get.outE(α).notExists()
).repeat(_.out(α).as(foo).out(β).as(bar)).select((foo,bar)).toList

但是如果“主干”上的任何节点缺少 β 出边

,这不会倒回到主要遍历并且失败

最佳答案

我无法提供 gremlin-scala 解决方案,但您可以轻松转换以下 Groovy 示例:

g.V("A").until(__.not(outE("alpha"))).
repeat(out("alpha")).path().by(union(identity(), out("beta")).fold())

这将返回:

[[A, A1], [B], [C, A2]]

IMO 这已经足够了。但是,如果您需要一组一致的 2 个条目,您可以这样做:

g.V("A").until(__.not(outE("alpha"))).repeat(out("alpha")).
path().by(union(identity(), coalesce(out("beta"), constant("N/A"))).fold())

...然后将返回:

[[A, A1], [B, N/A], [C, A2]]

完成 session :

http://gremlinbin.com/bin/view/57133bdc8ee00

关于scala - 如何收集 TinkerPop3 中的可选分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36656279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com