Neo4j Cypher:子句/函数的命名系统是什么?

Neo4j Cypher:子句/函数的命名系统是什么?,neo4j,cypher,Neo4j,Cypher,我正在学习cypher并查看以下简单教程示例: MATCH (p:Person)-[:ACTED_IN]->() WHERE toLower(p.name) STARTS WITH 'michael' RETURN p.name 我很难在WHERE子句中找到语法和命名约定背后的系统(我对查询语言非常陌生,如果这很明显,我很抱歉)。我可以阅读WHERE子句,但我认为它是字符串的两种转换——一种是从字符串到(小写)字符串,另一种是从字符串到布尔值。我希望该条款看起来像 WHERE LOWER

我正在学习cypher并查看以下简单教程示例:

MATCH (p:Person)-[:ACTED_IN]->()
WHERE toLower(p.name) STARTS WITH 'michael'
RETURN p.name
我很难在WHERE子句中找到语法和命名约定背后的系统(我对查询语言非常陌生,如果这很明显,我很抱歉)。我可以阅读WHERE子句,但我认为它是字符串的两种转换——一种是从字符串到(小写)字符串,另一种是从字符串到布尔值。我希望该条款看起来像

WHERE LOWER p.name STARTS WITH 'michael'


(或类似的东西)。有人能解释一下这背后的逻辑吗?对我来说,它似乎奇怪地不一致,所以我想理解,而不仅仅是试图记住使用哪种语法。

开头是一个运算符,在
WHERE
子句中受支持,而
toLower
是一个函数。运算符返回布尔值,但函数可以返回任何值。Cypher是一种声明性语言,我认为支持
开始是为了尽可能保持Cypher的声明性。但我同意技术上你可以选择任何语法。总的来说,对于
WHERE
子句中的布尔条件,如果您可以使用运算符轻松地支持它,那么与函数相比,它将更具声明性

WHERE startsWith(toLower(p.name), 'michael')