【发布时间】:2021-02-02 01:39:22
【问题描述】:
在尝试编写仅在从顶点 Vo 到顶点 Vi 不存在边时才匹配的遍历(其中 Vi 的 ID 可能无法提前知道,因此必须通过遍历指定 Vi) .
我有这个初始遍历:
<A> GraphTraversal<A, Edge> addEdge(
GraphTraversal<A, Vertex> traversalToVo,
String viSelectKey
) {
return traversalToVo.coalesce(
__.outE("Manages").and(
__.inV().as("inV").where("inV", P.neq(viSelectKey))
// more conditions
),
__addE("Manages").to(select(viSelectKey))
);
}
我的问题是我不知道如何使Vi 在嵌套匿名遍历中可用;我想到的一切都会导致错误
Neither the sideEffects, map, nor path has a Vi-key: WherePredicateStep(inV,neq(Vi))
我已经调试了对getScopeValue 的调用,事实上,当我到达那里时,从未定义过Vi。
我尝试填充 Vi 的方法包括:
// define "Vi" in the upstream part of the query
gts.addV(...).as("Vi").V(Vo).coalesce(...)
// modeled after "Long Traversals" recipe; variable not defined afterward
gt.V(Vo).sideEffect(viTraversal.asAdmin().clone().as("Vi")).coalesce(...)
// produces a Map, and I can't apply unfold() downstream inside predicate
gt.sideEffect(viTraversal.asAdmin().clone().group("Vi"))
据我所知,这是一些将嵌套匿名遍历与范围值分离的范围规则的结果;如何弥合差距,以便可以从内部合并和何处引用遍历上游部分中定义的as-variable?
【问题讨论】:
-
@aran 它没有考虑这个链以我需要捕获然后操作的传入固定遍历开始的基本要求。
标签: java gremlin tinkerpop3