Jer*_*ver 5 graph vertices edges gremlin
我一直在研究Gremlin图语言,它看起来非常强大。但是,在研究如何根据需求进行评估时,我遇到了一个我似乎无法完成的案例。
假设已启动Gremlin,并使用其示例数据库:
gremlin> g = TinkerGraphFactory.createTinkerGraph()
...
gremlin> g.V.out('knows')
==>v[2]
==>v[4]
Run Code Online (Sandbox Code Playgroud)
因此,这显示了具有“已知”边缘的顶点。
但是,我想找到不具有“已知”边缘的顶点。就像是:
gremlin> g.V.outNot('knows')
==>v[3]
==>v[5]
==>v[6]
Run Code Online (Sandbox Code Playgroud)
如何找到这些顶点?
(编辑以使输出正确)
我用几种方式解释这个问题,但是也许这就是您所追求的。一种方法是:
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V.outE.hasNot('label','knows')
==>e[9][1-created->3]
==>e[12][6-created->3]
==>e[10][4-created->5]
==>e[11][4-created->3]
gremlin> g.V.outE.hasNot('label','knows').inV
==>v[3]
==>v[3]
==>v[5]
==>v[3]
Run Code Online (Sandbox Code Playgroud)
请注意,标签和ID均被识别为属性:
gremlin> g.V.has('id',"1")
==>v[1]
gremlin> g.E.map("label","id")
==>{id=10, label=created}
==>{id=7, label=knows}
==>{id=9, label=created}
==>{id=8, label=knows}
==>{id=11, label=created}
==>{id=12, label=created}
Run Code Online (Sandbox Code Playgroud)
考虑此问题的另一种方法是找到没有“知道”边的顶点列表:
gremlin> g.V.filter{!it.bothE('knows').hasNext()}
==>v[3]
==>v[6]
==>v[5]
Run Code Online (Sandbox Code Playgroud)