1

我目前正在使用一个表示顶点之间连接的图表。顶点可以在两个方向上连接。我有兴趣知道有多少顶点相互连接,无论连接的方向如何,或者是否存在两个方向的连接。

因此,例如,在下面绘制的图中,连接顶点的总数为 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 语言的新手,我无法创建一个计算顶点之间连接数的查询。在我掌握 Graph 查询的复杂性时,能从你们那里得到一些帮助会很棒!

4

1 回答 1

2

您可以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
于 2017-09-28T20:23:13.020 回答