GQL 合规性

最后更新:2024 年 10 月 24 日
Neo4j 版本: 5.25

GQL 是用于图数据库的新的 ISO 国际标准查询语言。

GQL 采用了 Cypher® 的大部分查询构建语义,例如遵循 MATCH/RETURN 格式。因此,Cypher 现在支持大多数强制性 GQL 功能及其大部分可选功能(由 ISO/IEC 39075:2024(en) - 信息技术 - 数据库语言 - GQL 标准定义)。因此,用户在 Cypher 和 GQL 中编写查询时,预计只会遇到极小的差异。例如,以下查询在这两种语言中均有效

Cypher 与 GQL
MATCH (a:Actor)-[:ACTED_IN]->(m:Movie)
WHERE a.name = 'Tom Hanks'
RETURN m.title

Cypher 支持大部分强制性 GQL 功能。完整列表请参见 支持的强制性 GQL 功能。然而,目前 Cypher 中尚有少数强制性 GQL 功能尚未实现,Neo4j 正在积极努力将其实现。这些功能列于页面 当前不支持的强制性 GQL 功能

Neo4j 还在努力增加对可选 GQL 功能的支持。这些功能列于页面 支持的可选 GQL 功能

Cypher 中尚未实现的一些可选 GQL 功能已经有了类似的 Cypher 等价物。这些功能列于页面 可选 GQL 功能和类似的 Cypher 功能

此外,Cypher 还包含一些不属于 GQL 的附加功能,目前 GQL 中没有对应的替代方案。这些功能列于页面 附加 Cypher 功能

关于最低 GQL 合规性的说明

遵循 GQL 标准第 24.2 小节《最低合规性》,Cypher 对以下强制性 GQL 功能的支持被明确声明

  • 具有开放图类型的图(功能 GG01)。

  • Cypher 使用的 Unicode 标准版本取决于正在运行的 JVM 版本。Neo4j 5 增加了对 JavaSE 17 和 Unicode 标准版本 13 的支持。Neo4j 5.14 增加了对 JavaSE 21 和 Unicode 标准版本 15 的支持。更多信息,请参见 解析 → 在 Cypher 中使用 Unicode

  • Cypher 支持以下强制性 GQL 属性类型:BOOLEAN (BOOL)、FLOAT [1]INTEGER (SIGNED INTEGERINT)[2]STRING (VARCHAR)。

    Cypher 还支持以下可选 GQL 属性类型:DATEDURATIONLIST<INNER_TYPE NOT NULL> (ARRAY<INNER_TYPE NOT NULL>INNER_TYPE LISTINNER_TYPE ARRAY)[3]LOCAL DATETIME (TIMESTAMP WITHOUT TIME ZONE)、LOCAL TIME (TIME WITHOUT TIME ZONE)、POINTZONED DATETIME (TIME WITH TIME ZONE) 和 ZONED TIME (TIMESTAMP WITH TIME ZONE)。更多信息,请参见 值与类型 → 属性类型


1. Cypher 中的 FLOAT 类型始终表示一个 64 位双精度浮点数。
2. Cypher 中的 INTEGER 类型始终表示一个 64 位 INTEGER
3. INNER_TYPE 不能是 LIST 类型。
© . All rights reserved.