我想问题是addE(<traversal>)
..的用法?至少这是在纯 TinkerPop 3.2 环境中失败的原因。由于在 TP 3.2 中无法动态设置边缘标签,因此您必须知道所有可能的边缘标签,从用户顶点进出,并分别处理每一个。
基于链接答案的原始遍历:
g.V(4).as('source').
addV().
property(label, select('source').label()).as('clone').
sideEffect( // copy vertex properties
select('source').properties().as('p').
select('clone').
property(select('p').key(), select('p').value())).
sideEffect( // copy knows out-edges
select('source').outE('knows').as('e').
select('clone').
addE('knows').as('eclone').
to(select('e').inV()).
select('e').properties().as('p'). // copy knows out-edge properties
select('eclone').
property(select('p').key(), select('p').value())).
sideEffect( // copy knows out-edges
select('source').outE('knows').as('e').
select('clone').
addE('knows').as('eclone').
to(select('e').inV()).
select('e').properties().as('p'). // copy knows out-edge properties
select('eclone').
property(select('p').key(), select('p').value())).
sideEffect( // copy created out-edges
select('source').outE('created').as('e').
select('clone').
addE('created').as('eclone').
to(select('e').inV()).
select('e').properties().as('p'). // copy created out-edge properties
select('eclone').
property(select('p').key(), select('p').value())).
sideEffect( // copy knows in-edges
select('source').inE('knows').as('e').
select('clone').
addE('knows').as('eclone').
from(select('e').outV()).
select('e').properties().as('p'). // copy knows in-edge properties
select('eclone').
property(select('p').key(), select('p').value()))
因此,您基本上只需sideEffect
为每个边缘标签(每个方向)添加一步。