本节内容源自Cypher官方手册V4.4版,笔者对其进行学习、翻译、记录。
命名规则
-
字母字符:
- 名称应以字母字符开头。
- 包括“非英文”字符,例如å, ä,ö等ü。
-
数字:
- 名称不应以数字开头。
- 举例来说,1first不允许,而first1允许。
-
符号:
- 名称不应包含符号,下划线除外,如 my_variable ,或 $ 作为表示参数的第一个字符,如 $myParam 。
-
长度:
- 可以很长,最多为65535( 2^16 - 1) 或65534字符,具体取决于 Neo4j 的版本。
-
区分大小写:
- 名称区分大小写,因此, :PERSON,:Person 和 :person 是三个不同的标签,n 和 N 是两个不同的变量。
-
空白字符:
- 前导和尾随空白字符将被自动删除。例如,MATCH ( a ) RETURN a等价于MATCH (a) RETURN a。
非字母字符,包括数字、符号和空格字符,可以在名称中使用,但必须使用反引号进行转义。例如:
^n
、1first
、$$n
和my variable has spaces
。数据库名称是一个例外,可能包含点而不需要转义。例如:命名数据库foo.bar.baz是完全有效的。
范围和命名空间规则
-
节点标签、关系类型和属性名称可以重用名称。
- 以下查询(带有a的标签、类型和属性名称)是有效的:CREATE (a:a {a: 'a'})-[r:a]->(b:a {a: 'a'}).
-
节点和关系的变量不得在同一查询范围内重复使用名称。
- 以下查询无效,因为节点和关系都具有名称a: CREATE (a)-[a]->(b)。
建议
以下是推荐的命名约定:
-
节点标签
- 驼峰式,以大写字符开头,:VehicleOwner 而不是 :vehicle_owner等
-
关系类型
- 大写,使用下划线分隔单词,:OWNS_VEHICLE而不是 :ownsVehicle 等