本文へスキップ
BecomeCoder

Neo4jコース · 第1章 グラフデータベースとは · レッスン2

プロパティグラフモデル ― ノード・ラベル・リレーションシップ・プロパティ

ローカル実施

導入

Neo4jが採用しているグラフの表現方法を プロパティグラフモデル と呼びます。ノードとリレーションシップという2つの要素に加えて、「ラベル」と「プロパティ」という2つの付加情報を組み合わせることで、現実世界のデータを柔軟かつ正確に表現します。

説明

プロパティグラフモデルは、次の4つの要素からできています。

要素意味
ノード(Node)データの実体(点)人物・映画・会社
ラベル(Label)ノードの種類を表す分類名:Person:Movie
リレーションシップ(Relationship)ノード同士のつながり(線・必ず向きを持つ):KNOWS:ACTED_IN
プロパティ(Property)ノードやリレーションシップが持つ属性(key: value)name: 'Alice'since: 2020

図で表すと、次のようになります。

graph LR
    A["(:Person)<br/>name: 'Alice'<br/>born: 1990"] -- "KNOWS<br/>since: 2020" --> B["(:Person)<br/>name: 'Bob'<br/>born: 1988"]

ここでのポイントは、プロパティはノードだけでなくリレーションシップにも付けられることです。「いつから知り合いか(since)」のような、関係そのものにまつわる情報を関係の側に持たせられるのは、グラフデータベースならではの表現力です(第7章で詳しく扱います)。

Neo4jでは、命名の慣習として次のルールがよく使われます。

  • ラベルPascalCase(先頭大文字の単語をつなげる)… :Person:Movie
  • リレーションシップの種類UPPER_SNAKE_CASE(大文字とアンダースコア)… :KNOWS:ACTED_IN
  • プロパティ名camelCase(先頭小文字)… namereleaseYear

この慣習に沿って書くと、Cypherのクエリが「ノードは丸括弧・関係は角括弧で大文字」と見た目でひと目で区別できるようになります。