Neo4j 5 のスタイルガイドを読む
2024-05-02
諸事情で綺麗な Cypher クエリを記述する必要に駆られ、コーディング規約的なものを探していたところ、Neo4j 5 のスタイルガイドを見つけたのでじっくり読んでみた。
推奨
- monospaced なフォントを使用
- ラベルやリレーション型について言及する際はコロン(
:
)を付与- (例)
:Label
、:REL_TYPE
- (例)
- 関数について言及する際は lower camel case と括弧を使用
- (例)
toString()
- (例)
- Cypher クエリをファイルに保存する場合は、
.cypher
の拡張子で保存 - 左から右へのアローになるようにパターンを記述
インデントと改行
- 新たな構文(
MATCH
,CREATE
など)を使用する際は改行 ON CREATE
、ON MATCH
を使用する際は、改行に加えて半角スペースを 2 つを付与MERGE (n {name: 'abc'}) ON CREATE SET n.count += 1
ON CREATE
、ON MATCH
が両方存在する場合は、ON CREATE
が先- サブクエリを使用する際は、左波括弧の後に改行し、半角スペースを 2 つを付与
- 簡略化されたサブクエリを使用する際は改行不要
表記
- 予約語は大文字
- 値としての
null
は小文字- 条件式で使用される
IS NOT NULL
のNULL
は値としてのnull
ではない扱いらしく、大文字にすべきらしい。
- 条件式で使用される
- 真理値(
true | false
)は小文字 - 関数、プロパティ、変数、パラメータは小文字から始まる camel case
スペース
プロパティ
- 左波括弧と key の間のスペースは不要
- key とコロンの間のスペースは不要
- コロンと value の間は半角スペース 1 つ
- value とカンマの間のスペースは不要
- カンマと key の間は半角スペース 1 つ
- 右波括弧と value の間のスペースは不要
ノード
- ラベルや型とプロパティの間には半角スペース 1 つ
- 演算子の両端には半角スペース 1 つ
- コロンとラベルや型の間のスペースは不要
- リスト内のカンマの後は半角スペース 1 つ
その他
- パターンにはスペースは不要
- 関数使用時の括弧内の両端のスペースは不要
- 簡略化されたサブクエリを使用する場合は、半角スペースを 1 つ
その他
- パターンを改行する場合は、アローの後に改行し、ノードを次の行頭に
MATCH (a)-->(b)-->(c)--> (d)-->(e) RETURN a, b, c, d, e
- 使用しない変数は使わず、匿名ノード、匿名リレーションを使用
MATCH (a)-->()-->()--> (d)-->(e) RETURN a, d, e
- 冗長性を削減するために、パターンはなるべくつなげる
↓MATCH (a:Person)-[:ACTED_IN]->(m:Movie), (m)<--(b:Person) RETURN a, m, b
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)<--(b:Person) RETURN a, m, b
- 名前付きノードの後に匿名ノードを記述
- アンカーノードは
MATCH
句の最初に記述 - STRING を表現するにはシングルクォーテーションを使用
- ただし、表現したい文字列にシングルクォーテーションを含む場合は、ダブルクォーテーションを使用
- セミコロンをクエリの最後につけない
後書き
1 行あたり何文字程度とか目安があるのかなと気になってたけど、調べた限りでは特に制限や推奨文字数はなかった。
他のクエリ言語と同じく、大体 80-100 文字ぐらいと考えておけば良いのかな。