支持的可选 GQL 特性

本页面列出了 Cypher® 完全或部分兼容的可选 GQL 特性。

可选的 GQL 特性被分配了特性 ID 代码。这些代码按以下表格中的顺序排列特性。

GQL 特性 ID 描述 文档 注释

G002

不同边匹配模式 (Different-edges match mode)

此特性的语义是默认的 Cypher 语义。

G003

显式 REPEATABLE ELEMENTS 关键字

G004

路径变量

G016

任意路径搜索

ANY

G017

所有最短路径搜索

G018

任意最短路径搜索

ANY

G019

带计数的最短路径搜索

G020

带计数的最短路径组搜索

G035

量化路径

G036

量化边

G050

括号路径模式:WHERE 子句

G051

括号路径模式:非局部谓词

G060

有界图模式量词

G061

无界图模式量词

G074

标签表达式:通配符标签

G115

属性存在谓词

GQL 允许测试一个值是否存在且不为 null。在 Cypher 中,相同的语义通过 IS NOT NULL 谓词来表达:对于节点和关系,缺失的属性会被计算为 null,因此当属性存在且不为 null 时,n.prop IS NOT NULL 为真。自 Neo4j 2026.03 起,相同的语义也可以通过 PROPERTY_EXISTS(variable, propertyName) 谓词(例如 WHERE PROPERTY_EXISTS(n, name))来表达。

GA06

值类型谓词

GA07

按丢弃的绑定变量排序

GB01

长标识符

GD01

可更新图

  • 特性 GD01 意味着符合 GQL 特性 GT01“显式事务命令”,该特性规定兼容语言应包含以下事务控制命令:START TRANSACTIONROLLBACKCOMMIT。Cypher 中不存在这些命令。然而,Neo4j 通过驱动程序事务 API 提供事务管理。Cypher Shell 也提供特定的命令来管理事务。

  • 特性 GD01 意味着符合 GQL 的 <set-statement>(子条款 13.3)。GQL 的 SET 没有顺序依赖关系,因为所有右侧操作都在任何赋值发生之前完成。然而,在 Cypher 的 SET 中,行的顺序可能会影响结果,因为执行期间所做的更改可能取决于赋值的顺序。在 Neo4j 中保证行顺序的唯一方法是使用 ORDER BY

GF01

增强数值函数

GQL 支持 CEILING() 作为 CEIL() 函数的同义词。Cypher 支持 ceil() 并提供了 GQL 命名别名 ceiling()

GF02

三角函数

GF03

对数函数

  • Cypher 使用 log() 函数代替 GQL 的 LN() 函数。在 GQL 中,自然对数函数在输入为零或负数时必须引发异常。在 Cypher 中,ln(0) 返回 -Infinityln(负数) 返回 NaN

  • Cypher 使用 幂运算符 (^) 代替 GQL 的 POWER() 函数。

GF05

多字符修剪函数

GF06

显式 TRIM 函数

在 GQL 中,TRIM() 仅移除空格字符。在 Cypher 中,trim() 移除任何空白字符。

GG01

具有开放图类型的图

GP01

内联过程

GP03

具有显式嵌套变量作用域的内联过程

GP04

命名过程调用

GQ01

USE 图子句

USE

Cypher 的 USE 子句支持静态图引用(例如 USE myComposite.myGraph)和动态图引用(例如 USE graph.byName(<expression>))。然而,Cypher 不支持 GQL 的完整图引用语法。例如,GQL 的图引用值 CURRENT_GRAPHCURRENT_PROPERTY_GRAPH 不能在 Cypher 中使用。

GQ03

复合查询:UNION

GQ08

FILTER 语句

GQ09

LET 语句

LET

GQ13

ORDER BY 和分页语句:LIMIT

Cypher 要求使用 WITH 子句,而 GQL 不需要。

GQ20

带 NEXT 的高级线性组合

GQL 标准为其 NEXT 语句包含一个 YIELD 子句,Cypher 未实现此功能。

GV39

时间类型:支持日期、本地日期时间和本地时间

请注意以下例外情况

  • GQL 定义了一个 Cypher 中没有的无参版本的 date() 函数:CURRENT_DATE

  • GQL 支持 local_time() 作为 localtime() 函数的同义词。Cypher 支持 localtime() 并提供了 GQL 命名别名 local_time()。

  • GQL 支持 local_datetime() 作为 localdatetime() 函数的同义词。Cypher 支持 localdatetime() 并提供了 GQL 命名别名 local_datetime()。

在 GQL 中,无效的时间字段名称集会引发数据异常 (22G05);Cypher 使用严重性相当的错误 (22007/22N12)。Cypher 还允许一个可选的 pattern 参数。GQL 关键字 LOCAL_TIMESTAMP 没有作为保留关键字引入 Cypher 中。

GV40

时间类型:支持带时区的日期时间和带时区的时间

请注意以下例外情况

  • GQL 的 ZONED_TIME() 函数等同于 Cypher 的 time() 函数。

在 GQL 中,无效的时间(或时区)字段名称集会引发数据异常 (22G05);Cypher 使用严重性相当的错误 (22007/22N12)。Cypher 还允许一个可选的 pattern 参数。GQL 关键字 CURRENT_TIME 没有作为保留关键字引入 Cypher 中。

  • GQL 的 ZONED_DATETIME() 函数等同于 Cypher 的 datetime() 函数。

在 GQL 中,无效的日期时间(或时区)字段名称集会引发数据异常 (22G05);Cypher 使用严重性相当的错误 (22007/22N12)。Cypher 还允许一个可选的 pattern 参数。GQL 关键字 CURRENT_TIMESTAMP 没有作为保留关键字引入 Cypher 中。

GV50

列表值类型

GV55

路径值类型

GV66

开放动态联合类型

GV67

封闭动态联合类型

GV70

非物质值类型:支持 null 类型 (null)

GV71

非物质值类型:支持空类型 (NOTHING)

Cypher 和 GQL 有时会对函数进行不同的命名,因此,一些 Cypher 函数为其 GQL 对应函数提供了相同(或非常相似)的功能。欲了解更多信息,请参阅页面 可选 GQL 特性与相似的 Cypher