GQL 一致性
最后更新:2025 年 9 月 2 日
Neo4j 版本: 2025.08
GQL 是 ISO 发布的用于图数据库的全新国际标准查询语言。
GQL 采用了 Cypher® 的大部分查询构建语义,例如遵循 MATCH/RETURN 格式。因此,Cypher 现在支持大多数强制性 GQL 功能以及相当一部分可选功能(由 ISO/IEC 39075:2024(en) - 信息技术 - 数据库语言 - GQL 标准 定义)。因此,用户在 Cypher 和 GQL 中编写查询时,预期只需面对极小的差异。例如,以下查询在两种语言中均有效:
MATCH (a:Actor)-[:ACTED_IN]->(m:Movie)
WHERE a.name = 'Tom Hanks'
RETURN m.title
Cypher 支持大部分强制性 GQL 功能。有关完整列表,请参阅 支持的强制性 GQL 功能。然而,目前仍有少数强制性 GQL 功能尚未在 Cypher 中实现,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 INTEGER或INT)[2], 以及STRING(VARCHAR)。Cypher 还支持以下可选的 GQL 属性类型:
DATE,DURATION,LIST<INNER_TYPE NOT NULL>(ARRAY<INNER_TYPE NOT NULL>,INNER_TYPE LIST或INNER_TYPE ARRAY)[3],LOCAL DATETIME(TIMESTAMP WITHOUT TIME ZONE),LOCAL TIME(TIME WITHOUT TIME ZONE),POINT,ZONED DATETIME(TIME WITH TIME ZONE) 以及ZONED TIME(TIMESTAMP WITH TIME ZONE)。有关更多信息,请参阅 值与类型 → 属性类型。