Gremlinはグラフデータベースを操作するためのプログラミング言語で、Apache TinkerPopの一部として開発されています。
以下に、Gremlinでよく使う基本的なコマンドとその説明をまとめました。
ノードとエッジの操作
ノードの追加
g.addV('label').property('key', 'value')
ラベルとプロパティを指定して新しいノード(頂点)を追加します。
ノードの検索
g.V().hasLabel('label')
g.V(vertexId)
g.V().has('key', 'value')
それぞれ、指定したラベル、ID、プロパティを持つノードを検索します。
プロパティの追加
g.V(vertexId).property('key', 'value')
ノードに新しいプロパティを追加します。
ノードの削除
g.V(vertexId).drop()
指定したノードを削除します。
エッジの追加
g.V(sourceId).addE('label').to(g.V(targetId)).property('key', 'value')
エッジ(辺)を追加します。ソースノードとターゲットノード、ラベルとプロパティを指定できます。
トラバーサル(探索)
隣接ノードの探索
g.V(vertexId).out('label')
g.V(vertexId).in('label')
g.V(vertexId).both('label')
それぞれ、指定したラベルのエッジを通じて接続された隣接ノードを探索します。
パスとサブグラフの表示
g.V(vertexId).out('label').path()
g.V(vertexId).repeat(out()).times(2)
ノードから出ているエッジを通じて探索したパスを表示したり、指定したノードから2ステップ先までの隣接ノードを探索します。
複雑なクエリの例
プロパティ値の取得
g.V().has('key', 'value').out('label').values('anotherKey')
特定のプロパティを持つノードから出ているエッジをたどり、その隣接ノードの別のプロパティの値を取得します。
2つのノードの選択
g.V().has('key', 'value').as('a').out('label').as('b').select('a', 'b')
特定のプロパティを持つノード(エイリアスa)から出ているエッジをたどって隣接ノード(エイリアスb)を見つけ、その2つのノードを一緒に選択します。
特定のプロパティを持つノードまでのパス表示
g.V().has('key', 'value').until(has('anotherKey', 'anotherValue')).repeat(out()).path()
指定したプロパティを持つノードからエッジを辿り続け、別の指定したプロパティを持つノードが見つかったところで探索を終了し、そのパスを表示します。