【发布时间】:2021-11-24 02:37:23
【问题描述】:
我正在尝试通过遍历特定边的标签来返回从特定顶点开始的顶点和边 我正在寻找的结果是顶点,被遍历的边 + 叶节点的所有边
[示例图] https://i.stack.imgur.com/5yQTW.png
预期结果:
ap1 包含 p1
ap2 包含 p1
p1 使用
f1 包含 ap1
f2 包含 f1
f3 包含 f2
f3 用途
f4 包含 ap2
f5 包含 f4
f6 包含 f5
f6 使用
生成图表的脚本
g.addV('project').property('name','p1').as('p1').addV('api').property('name','ap1').as('ap1').addV('api').property('name','ap2').as('ap2').addV('field').property('name','f1').as('f1').addV('field').property('name','f2').as('f2').addV('field').property('name','f3').as('f3').addV('field').property('name','f4').as('f4').addV('field').property('name','f5').as('f5') addV('field').property('name','f6').as('f6').addV('table').property('name','t1').as('t1').addV('column').property('name','c1').as('c1').addV('schema').property('name','s1').as('s1').addE('contained').from('f3').to('f2').addE('contained').from('f2').to('f1').addE('contained').from('f1').to('ap1').addE('contained').from('ap1').to('p1').addE('contained').from('f6').to('f5').addE('contained').from('f5').to('f4').addE('contained').from('f4').to('ap2').addE('contained').from('ap2').to('p1').addE('uses').from('f3').to('t1').addE('uses').from('f6').to('c1').addE('uses').from('p1').to('s1')
似乎我遇到了循环问题(orientdb 堆栈溢出) 使用以下查询时:
g.V().
has("name", "p1").
repeat(
bothE().
or(hasLabel("contained"), hasLabel("uses")).
dedup().
bothV().
bothE()).
times(1).
emit().
path().
unfold().
dedup().
aggregate('r').
sideEffect(cap('r').unfold().hasLabel("api").aggregate('c0')).
sideEffect(
cap('c0').
unfold().
repeat(inE("contained").dedup().outV()).
until(inE("contained").count().is(0)).
emit().
path().
unfold().
dedup().
aggregate('c0')).
cap('c0').
unfold().
aggregate('r').
cap('r').
unfold().
dedup().
limit(1000)
【问题讨论】:
-
您能否使用构建示例图的 addV 和 addE 步骤添加 gremlin 查询?
-
我正要对示例图发表同样的评论。虽然图片很有用,但如果提供了示例图表,它可以帮助人们为您提供经过测试的答案。如果您需要一些
addV和addE步骤用于创建小图的示例,请参阅此问题的答案stackoverflow.com/questions/68930863/… -
@HadoopMarc 当然。已添加