GQL conformance

Last updated: 26 April 2024
Neo4j version: 5.19

GQL is the new ISO International Standard query language for graph databases.

GQL has adopted much of Cypher®’s query construction semantics, such as adhering to the MATCH/RETURN format. Consequently, Cypher now accommodates most mandatory GQL features and a substantial portion of its optional ones (defined by the ISO/IEC 39075:2024(en) - Information technology - Database languages - GQL Standard). Users should, therefore, only expect minimal differences between crafting queries in Cypher and GQL. For example, the following query is valid in both languages:

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

Neo4j is working towards full GQL conformance (meaning full support of its mandatory features). There are, however, currently some mandatory GQL features not implemented in Cypher. These are listed in the page Currently unsupported mandatory GQL features.

Neo4j is also working towards increasing its support of optional GQL features. These are listed in the page Supported optional GQL features.

Additionally, some optional GQL features not yet implemented in Cypher already have analogous Cypher equivalents. For example, Cypher and GQL support a function to return the local time. In Cypher, this is called localtime(); in GQL, it is called LOCAL_TIME(). These features are listed in the page Optional GQL features and analogous Cypher.

Note on minimum GQL conformance

Following the GQL Standard subclause 24.2, Minimum conformance, Cypher’s support of the following mandatory GQL features is explicitly declared:

  • Graph with an open graph type (Feature GG01).

  • The Unicode Standard version used by Cypher depends on the running JVM version. Neo4j 5 added support for JavaSE 17 and version 13 of The Unicode Standard. Neo4j 5.14 added support for JavaSE 21 and version 15 of the Unicode Standard. For more information, see Parsing → Using Unicode in Cypher.

  • Cypher supports the following mandatory GQL property types: BOOLEAN (BOOL), FLOAT [1], INTEGER (SIGNED INTEGER, or INT)[2], and STRING (VARCHAR).

    Cypher also supports: DATE, DURATION, LIST<INNER_TYPE NOT NULL> (ARRAY<INNER_TYPE NOT NULL>, INNER_TYPE LIST, or INNER_TYPE ARRAY)[3], LOCAL DATETIME (TIMESTAMP WITHOUT TIMEZONE), LOCAL TIME (TIME WITHOUT TIME ZONE), POINT, ZONED DATETIME (TIME WITH TIMEZONE), and ZONED TIME (TIMESTAMP WITH TIMEZONE). For more information, see Values and types → property types.


1. The FLOAT type in Cypher always represents a 64-bit double-precision floating point number.
2. The INTEGER type in Cypher always represents a 64-bit INTEGER.
3. The INNER_TYPE cannot be a LIST type.