The Gremlin Recipes

Gremlin 学习笔记目录

Traversal Recipes 遍历

Between Vertices 顶点之间

  • g.V(1).bothE():顶点的所有边
  • g.V(1).bothE().where(otherV().hasId(2)):在其他顶点上寻找匹配的顶点
  • otherV():以确保其在关注的顶点上匹配
  • g.V(1).outE().where(inV().has(id, within(2,3)))
  • g.V(1).out().where(__.in().hasId(6)):V(1) 指向的 顶点中,由 V(6) 指向的顶点
  • ids = [2,4,6].toArray():数组输出

Centrality 中心性

  • g.V().group().by().by(bothE().count()):计算每个顶点上的所有边,包括传入和传出的边缘
  • g.V().group().by().by(inE().count()):计算每个顶点传入的边
  • g.V().group().by().by(outE().count()):计算每个顶点传出的边
  • g.V().project(“v”,“degree”).by().by(bothE().count()):产生一个 Map 输出
  • g.V().project(“v”,“degree”).by().by(bothE().count()).order().by(“degree”, desc).limit(4)

Betweeness Centrality 介数中心性

⚠️ 警告:由于between中心性算法需要图中任何一对顶点之间的最短路径,因此其实际应用非常有限。建议仅在小子图上使用此算法(像只有808个顶点和8049个边的Grateful Dead图这样的图已经需要大量的计算资源来确定所有顶点对之间的最短路径)。

Closeness Centrality 接近中心性

接近中心性需要考量每个结点到其它结点的最短路的平均长度。也就是说,对于一个结点而言,它距离其它结点越近,那么它的中心度越高。一般来说,那种需要让尽可能多的人使用的设施,它的接近中心度一般是比较高的。

⚠️ 警告:由于紧密度中心度算法要求图中任意一对顶点之间的路径最短,因此其实际应用非常有限。建议仅在小子图上使用此算法(像只有808个顶点和8049个边的Grateful Dead图这样的图已经需要大量的计算资源来确定所有顶点对之间的最短路径)。

Eigenvector Centrality

PageRank Centrality

Collections

  • unfold():展开数据

Connected Components 连接组件

Small graph traversals 小图遍历

1
2
3
g.withComputer().V().connectedComponent().
             group().by(ConnectedComponent.component).
             select(values).unfold()

Cycle Detection 循环检测

Looping

comments powered by Disqus