2012-11-20 10 views
8

私はneo4jの命名規則について不思議です。neo4j命名規則とは何ですか?

例では、大文字と小文字の関係名が使用されています。

left-[r:KNOWS]->right 

これは規約ですか? neo4jは関係名に大文字と小文字を区別しますか?インデックス名とプロパティ名には他の命名規則がありますか?

答えて

6

これが規約です。個人的には、小文字の関係タイプを使用します。はい、大文字と小文字が区別されます。アンダースコア付き。

通常、人々はインデックス名にもアンダースコアを使用しますが、通常は小文字で、大文字と小文字が区別されます。

また、覚えておいてください:作成中に方向を指定しないと、デフォルトは< --rightとなります。私には直感的ではありませんが、今は常に方向を指定しています。プロパティの場合

、私はほとんどの人がJSON形式の規則を使用すると思う:http://google-styleguide.googlecode.com/svn/trunk/jsoncstyleguide.xml#Key_Names_in_JSON_Maps

私はまた、プロパティのアンダースコアを見てきましたので、私はそれがどちらかの道を行くと思います。ただ一貫してください!

+0

あなたがスペースをしたい場合、次のことができます。あなたはバックティックで関係タイプを囲む必要があります。構文では、スペース名を持つオブジェクト名に対してMySQLでよく使われます。 – ADTC

0

)(LOWER使用して大文字または小文字にすべてを持参する方が簡単でしたUPPER()文字列関数

の1-さんは、私はプロパティ名=「名前のノードを持っているとしましょう「小文字で、それを見つけるためにあなたが正確な文字列againt一致する必要が

Query: 
CYPHER 2.0 
START n=node(*) 
WHERE n.name= "name" 
RETURN id(n) 

id(n) 
5 

Query took 3 ms and returned 1 rows. 

は、そうでない場合、あなたはそれを見つけることができません。

Query: 
CYPHER 2.0 
START n=node(*) 
WHERE n.name= "Name" 
RETURN id(n) 


Query took 4 ms and returned no rows. 

しかし、我々はLOWER文字列関数を()を使用して、それを一致させることができます。

START n=node(*) 
WHERE LOWER(n.name)= "name" 
RETURN id(n) 

id(n) 
8 

Query took 5 ms and returned 1 rows. 
:照合するために、 "名前":任意の文字列の場合の例で入力されたノードのプロパティで

CYPHER 2.0 
START n=node(*) 
WHERE n.name= LOWER("Name") 
RETURN id(n) 

id(n) 
5 

Query took 4 ms and returned 1 rows. 

2 -

2

はい、リレーションシップ名の規則はALL_UPPERCASEにすることです。 Neo4jのすべての名前は大文字と小文字を区別します(ラベル、関係、プロパティなど)

これは規約であり、要件ではありません。 プロジェクトで最も重要な部分は一貫性です。 コーディングスタイルを使用して、全体に固執してください!

のNeo4jの命名規則:

  • ラベル:UpperCamelCase(別称、PascalCase)
  • 関係:CAPITALIZED_WITH_UNDERSCORE
  • プロパティキー名:lowerCamelCaseまたはsnake_case

サイファー例:また

CREATE (:Person {name:"Anne"})-[:MANAGES {start_date:20121112}]->(:WorkGroup {name:"Dev"}); 

CREATE (:Person {name:"Anne"})-[:MANAGES {startDate:20121112}]->(:WorkGroup {name:"Dev"}); 

参考文献:

関連する問題