Gremlin - Concepts

2019年06月25日

*
本文概念性的介绍较多,且较晦涩,但由于后面的内容对本文的内容涉及较多,请勿跳过。

图计算(graph computing)包括两大部分:Structure (graph) 和Process (traversal)。下文如无特殊说明,structure和process均只限定于图计算领域。


Vertex、Edge和property共同定义了图的数据模型,也就是structure。

  • Vertex:我们真实生活中的对象或实体(entities)
  • Label:实体或对象的类型,例如人、软件等等
  • Edge:孤立的实体在图数据领域没有太大的意义,因为图存在的主要意义是研究个体之间的关系。Edges代表实体之间的关系。一个Edge从一个Vertex指向另一个Vertex。
  • Property:可以被关联到各个Vertex和Edge。它是key-value pair。
Process是指structure被分析所使用的方法。Traversal是process的典型的形式,而traverser是执行traversal的具体的steps。
对象在traversal中传递的过程中被封装在Traverser<T>内。Traverser使得steps保持无状态化。所有关于traversal的metadata都由traverser进行维护。

我们这里所说的traversal起始于TraversalSource。TraversalSource可以为GraphTraversalSource生成traversals。GraphTraversalSource提供了连接graph instance的方法(按照通用惯例,以"g"表示),以及两种traversal方法用来生成traversal:
  • GraphTraversalSource.V(Object…​ ids): 生成一个以Vertices为起点的traversal。
  • GraphTraversalSource.E(Object…​ ids): 生成一个以Edges为起点的traversal。
V()和E()方法的返回值的数据类型GraphTraversal。此外,GraphTraversal还维护了大量的方法,这些方法返回的也是GraphTraversal。每个GraphTraversal方法称作一个traversal step 。每个step使用以下5种基本方式对上一个step的结果进行操作:
  1. map
  2. flatMap
  3. filter
  4. sideEffect
  5. branch
以g.V(marko).out('knows').values('name').path()为例,其中,V()决定了traversal的起点;out('knows')、values('name')、path()都是GraphTraversal方法也是step。Out step (vertex steps的一种)使用flatMap方式,values step和path step都是使用map方式。

记住这5种step,后面的文章会对它们详细介绍。

*

Category: GraphDB Tags: public

Upvote


Downvote