我有父顶点(P)连接到子顶点(C1,C2,C3,.. Cn)(通过出边标签“dep”),其中Cn可以非常大。这些子顶点(C1,C2,...)可能会或可能不会通过输出边缘标签“frnds”连接到其他顶点。 Gremlin有没有办法找出(P)中没有任何标签为“frnds”的外向边的所有Child顶点?泰坦图:找到没有出边的顶点
问候, 库马尔
我有父顶点(P)连接到子顶点(C1,C2,C3,.. Cn)(通过出边标签“dep”),其中Cn可以非常大。这些子顶点(C1,C2,...)可能会或可能不会通过输出边缘标签“frnds”连接到其他顶点。 Gremlin有没有办法找出(P)中没有任何标签为“frnds”的外向边的所有Child顶点?泰坦图:找到没有出边的顶点
问候, 库马尔
玩具图:
g = new TinkerGraph()
p = g.addVertex('p')
c1 = g.addVertex('c1')
c2 = g.addVertex('c2')
c3 = g.addVertex('c3')
o1 = g.addVertex('o1')
o2 = g.addVertex('o2')
g.addEdge(p, c1, 'dep')
g.addEdge(p, c2, 'dep')
g.addEdge(p, c3, 'dep')
g.addEdge(c1, o1, 'frnds')
g.addEdge(c1, o2, 'frnds')
g.addEdge(c2, o2, 'frnds')
一种查询描述的解决方案(可能不是最聪明的):
r = []; g.v('p').out('dep').store(r).outE('frnds').outV.sideEffect{r.remove(it)}
输出:
r
==>v[c3]
更新: 位一个较短的版本,可能还多一点效率。
g.v('p').out('dep').filter{!it.outE('frnds').hasNext()}
==>v[c3]
GV( 'P')出( '出发'){过滤it.outE( 'frnds我')hasNext(!。 )}。范围(0,100)查询在您选择范围时工作得更快。它将得到100个顶点,没有出边
非常感谢您的快速响应。有用! –
边缘“边缘”具有特定的属性键[如名称,地图比例(0到1之间的某个十进制数字表示接近度)],并且边缘根据地图比例值进行排序。所以c1的第一个边缘总是会有最高的分数。是否可以增强此查询“gv('p').out('dep')。filter {!it.outE('frnds')。hasNext()}”进一步返回所有具有第一个边的子顶点最高地图比率)在一个特定的范围内,如0.5至0.7? –