Neo4jには、Cypherと呼ばれる独自のクエリ言語があります。 Cypherは、SQL(Structured Query Language)と同様の構文を使用します。
例
Cypherステートメントの例を次に示します。
MATCH (p:Person { name:"Homer Flinstone" }) RETURN p
このCypherステートメントは、nameプロパティが「HomerFlinstone」である「Person」ノードを返します。
これがリレーショナルデータベースをクエリするSQLの場合、次のようになります。
SELECT * FROM Person WHERE name = "Homer Flinstone";
ただし、Neo4jはリレーショナルデータベースモデルのようにデータをテーブルに保存しないことを忘れないでください。それはすべてノードと関係にあります。したがって、上記のCypherクエリは、ノード、それらのラベル、およびそれらのプロパティをクエリしています。一方、SQLの例は、テーブル、行、および列のクエリです。
SQLはrelationalで使用するように設計されています データベース管理システム(DBMS)。 Neo4jは、リレーショナルモデルを使用せず、SQLを使用しないという点で、NoSQLDBMSです。
Cypherは、ノードとノードの相互関係に関するすべてのNeo4jデータモデルを操作するために特別に設計されました。
ASCIIアート構文
サイファーはASCIIアートを使用してパターンを表現します。これは、最初に言語を学ぶときに覚えておくと便利なことです。何かを書く方法を忘れた場合は、グラフがどのように見えるかを視覚化するだけで、役立つはずです。
(a)-[:KNOWS]->(b)
覚えておくべき主なこと:
- ノードは、円のように見える括弧で表されます。このように:
(node)
- 関係は矢印で表されます。このように:
->
- 関係に関する情報を角かっこで囲むことができます。このように:
[:KNOWS]
データの定義
Cypherを使用する際に覚えておくべきその他のポイントは次のとおりです。
- 通常、ノードにはラベルがあります。例としては、「Person」、「User」、「Actor」、「Employee」、「Customer」などがあります。
- 通常、ノードにはプロパティがあります。プロパティは、ノードに関する追加情報を提供します。例としては、「名前」、「年齢」、「生まれた」などがあります。
- 関係にもプロパティを含めることができます。
- 通常、関係にはタイプがあります(これは基本的にノードのラベルのようなものです)。例としては、「KNOWS」、「LIKES」、「WORKS_FOR」、「PURCHASED」などがあります。
したがって、上記の例をもう一度見てください:
MATCH (p:Person { name:"Homer Flinstone" }) RETURN p
それを見ることができます:
- ノードは括弧で囲まれています
()
。 人
ノードのラベルです。名前コード> ノードのプロパティです。