# Neo4j Neo4jは*プロパティグラフ*(labeled property graph)モデルを実装するグラフデータベースであり、各頂点(vertex)が一意識別子・ラベル・入出辺の集合・プロパティ(key-value)を持ち、各辺も同様に一意識別子・始点(tail)・終点(head)・ラベル・プロパティを持つ。クエリ言語*Cypher*はもともとNeo4j向けに作られ、後にopenCypherとしてオープン標準化された。Cypherという名は映画『マトリックス』の登場人物に由来し、暗号(cipher)とは無関係である。(Source: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 3 Data Models and Query Languages]] "The Cypher Query Language") Cypherの`MATCH`句は`(person) -[:BORN_IN]-> ()`のような矢印記法でグラフ中のパターンを照合し、`-[:WITHIN*0..]->`のような記法で「0回以上辺を辿る」可変長パス探索を正規表現の`*`演算子のように簡潔に表現できる。同じクエリをSQLの再帰共通テーブル式(`WITH RECURSIVE`)で書くと行数が桁違いに増える例が本章で示されている(4行のCypherが31行のSQLに相当)。Cypherは現在Neo4jに加えMemgraph・KùzuDB・Amazon Neptune・Apache AGE(PostgreSQL上のストレージ)などでもサポートされ、Cypherを土台にした国際標準GQL(Graph Query Language, ISO, 2024年発行)にも影響を与えている。(Source: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 3 Data Models and Query Languages]] "Graph Queries in SQL") ## 関連 - ソース: [[@2026__OReilly__Designing Data-Intensive Applications 2E - Chapter 3 Data Models and Query Languages]] - 概念: [[グラフデータモデル]]