Gremlin:计算连接忽略在相反方向上具有平行边的边
Gremlin: Count connections ignoring edges with a parallel edge in the opposing direction
我目前正在处理一个指示顶点之间连接的图形。顶点可以在两个方向上连接。我想知道有多少顶点相互连接,无论连接的方向如何,或者连接是否存在于两个方向。
因此,例如,在下面勾画的图中,连接的顶点总数为 3(而简单的边数会告诉我们有 4
由于边缘的方向性,这与 Tinkerpop 食谱提供的重复边缘检测所解决的问题不同。是否有 Gremlin 查询可以帮助计算此计数?
我在下面包含了一些示例数据:
vertex1 = graph.addVertex(“example","vertex1")
vertex2 = graph.addVertex("example","vertex2")
vertex3 = graph.addVertex("example","vertex3")
vertex4 = graph.addVertex("example","vertex4")
vertex1.addEdge("Connected_to",vertex2)
vertex2.addEdge("Connected_to",vertex1)
vertex2.addEdge("Connected_to",vertex3)
vertex3.addEdge("Connected_to",vertex4)
我是 Gremlin 语言的新手,我在创建计算顶点之间连接数的查询时遇到问题。在我掌握图形查询的复杂性时,如果能得到你们的帮助,那就太好了!
你可以dedup()
通过两个顶点的id。只要确保两个顶点的顺序一致(例如按它们的 id 排序),这样边缘方向就没有影响。
gremlin> g.E()
==>e[8][0-Connected_to->2]
==>e[9][2-Connected_to->0]
==>e[10][2-Connected_to->4]
==>e[11][4-Connected_to->6]
gremlin> g.E().dedup().by(bothV().order().by(id).fold())
==>e[8][0-Connected_to->2]
==>e[10][2-Connected_to->4]
==>e[11][4-Connected_to->6]
gremlin> g.E().dedup().by(bothV().order().by(id).fold()).count()
==>3
我目前正在处理一个指示顶点之间连接的图形。顶点可以在两个方向上连接。我想知道有多少顶点相互连接,无论连接的方向如何,或者连接是否存在于两个方向。
因此,例如,在下面勾画的图中,连接的顶点总数为 3(而简单的边数会告诉我们有 4
由于边缘的方向性,这与 Tinkerpop 食谱提供的重复边缘检测所解决的问题不同。是否有 Gremlin 查询可以帮助计算此计数?
我在下面包含了一些示例数据:
vertex1 = graph.addVertex(“example","vertex1")
vertex2 = graph.addVertex("example","vertex2")
vertex3 = graph.addVertex("example","vertex3")
vertex4 = graph.addVertex("example","vertex4")
vertex1.addEdge("Connected_to",vertex2)
vertex2.addEdge("Connected_to",vertex1)
vertex2.addEdge("Connected_to",vertex3)
vertex3.addEdge("Connected_to",vertex4)
我是 Gremlin 语言的新手,我在创建计算顶点之间连接数的查询时遇到问题。在我掌握图形查询的复杂性时,如果能得到你们的帮助,那就太好了!
你可以dedup()
通过两个顶点的id。只要确保两个顶点的顺序一致(例如按它们的 id 排序),这样边缘方向就没有影响。
gremlin> g.E()
==>e[8][0-Connected_to->2]
==>e[9][2-Connected_to->0]
==>e[10][2-Connected_to->4]
==>e[11][4-Connected_to->6]
gremlin> g.E().dedup().by(bothV().order().by(id).fold())
==>e[8][0-Connected_to->2]
==>e[10][2-Connected_to->4]
==>e[11][4-Connected_to->6]
gremlin> g.E().dedup().by(bothV().order().by(id).fold()).count()
==>3