UltipaDocs
Try Playground
  • Introduction
  • GQL vs Other Languages
    • Overview
    • Node and Edge Patterns
    • Path Patterns
    • Quantified Paths
    • Shortest Paths
    • Graph Patterns
    • Overview
    • Closed Graph
    • Open Graph
    • Graph Sharding and Storage
    • Constraints
    • Unique Identifiers
    • INSERT
    • INSERT OVERWRITE
    • UPSERT
    • SET
    • REMOVE
    • DELETE
    • Query Composition
    • Result Table and Visualization
    • MATCH
    • OPTIONAL MATCH
    • FILTER
    • LET
    • FOR
    • ORDER BY
    • LIMIT
    • SKIP
    • CALL
    • RETURN
    • Composite Query
    • NEXT
    • All Functions
    • Scalar Functions
    • Path Functions
    • Aggregate Functions
    • Mathematical Functions
    • Trigonometric Functions
    • String Functions
    • List Functions
    • Datetime Functions
    • Spatial Functions
    • Type Conversion Functions
    • Table Functions
    • AI & Vector Functions
    • Database Functions
  • Operators
  • Predicates
  • Expressions
    • Index
    • Full-text Index
    • Vector Index
  • Transactions
  • Triggers
  • Query Management
    • Variables
    • Values and Types
    • Comments
    • Reserved Words
    • Syntactic Notation
  • GQL Conformance
  1. Docs
  2. /
  3. ISO GQL

GQL Conformance

GQL is the standardized query language for graph databases, published by ISO/IEC in April 2024 as:

  • ISO/IEC 39075:2024 - Information technology — Database languages — GQL

Ultipa now supports most GQL features. This page claims the GQL conformance.

Conformance to Required Features

Following the GQL standard subclause 24.2, Ultipa’s support of the data model and mandatory GQL features is declared as follows.

Data Model

Ultipa claims conformance to:

  • Graph Type Support: Graph with an open graph type or a closed graph type [1] (Feature GG02) that supports the following features and more:
    • Explicit element type names (Feature GG20)
    • Optional element type key label sets (Feature GG23)
  • Unicode Compliance: Version 13 of The Unicode Standard.
  • Property Value Type Support: Mandatory property value types string, bool, int, float and other optional ones.

[1] A graph that has a constraining graph type is said to be closed. A closed graph cannot contain nodes and edges that are of node types and edge types that are not specified in the graph’s constraining graph type.

Mandatory Features

Mandatory features are not assigned Feature IDs and Feature Names, unlike the optional features. Therefore, we reference them by their corresponding subclause numbers and titles as specified in the GQL standard:

Subclause
Title
Support
Note
7Session managementNoSESSION SET, SESSION RESET, SESSION CLOSE
8Transaction managementNoSTART TRANSACTION, ROLLBACK, COMMIT
11Object expressionsYesCURRENT_GRAPH
14.4<match statement>YesMATCH, OPTIONAL MATCH
14.9<order by and page statement>YesORDER BY
14.10<primitive result statement>Yes
14.11<return statement>YesRETURN
14.12<select statement>NoSELECT
16.1<at schema clause>No
16.3<graph pattern binding table>Yes
16.4<graph pattern>Yes
16.5<insert graph pattern>Yes
16.7<path pattern expression>Yes
16.8<label expression>Yes
16.9<path variable reference>Yes
16.10<element variable reference>Yes
16.13<where clause>YesWHERE
16.14<yield clause>YesYIELD
16.16<order by clause>YesORDER BY
16.17<sort specification list>YesASC, DESC
19.3<comparison predicate>Yes=, <>, <, >, <=, >=
19.4<exists predicate>YesEXIST
19.5<null predicate>YesIS NULL, IS NOT NULL
19.7<normalized predicate>YesIS NORMALIZED, IS NOT NORMALIZED
20.2<value expression primary>Yes
20.3<value specification>YesUltipa does not support SESSION_USER
20.7<case expression>YesCASE, NULLIF, COALESCE
20.9<aggregate function>Yesavg(), count(), max(), min(), sum()
20.11<property reference>YesProperty reference of a graph element.
20.20<boolean value expression>YesAND, OR, NOT
20.21<numeric value expression>Yes+, -, *, /
20.22<numeric value function>Yeschar_length(), character_length()
20.23<string value expression>YesString concatenation operator ||
20.24<character string function>Yesleft(), right(), upper(), lower(), normalize()
20.25<byte string function>Noleft(), right()
20.29<duration value function>Yesduration()
21.1Names and variablesYes
21.2<literal>Yes

Conformance to Optional Features

Standard-defined optional GQL features are referenced by a Feature ID that comprises a letter “G” and three digits, and a Feature Name.

G

Feature ID
Feature Name
Support
Note
1G002Different-edges match modeYesDIFFERENT EDGES, the default match mode.
2G003Explicit REPEATABLE ELEMENTS keywordNoREPEATABLE ELEMENTS
3G004Path variablesYes
4G005Path search prefix in a path patternYesAlso see Features G007, G014 to G020.
5G006Graph pattern KEEP clause: path mode prefixNo
6G007Graph pattern KEEP clause: path search prefixNo
7G010Explicit WALK keywordNo
8G011Advanced path modes: TRAILYesTRAIL, the default path mode.
9G012Advanced path modes: SIMPLENo
10G013Advanced path modes: ACYCLICNo
11G014Explicit PATH/PATHS keywordsNo
12G015All path search: explicit ALL keywordYesALL
13G016Any path searchYesANY, ANY k
14G017All shortest path searchYesALL SHORTEST
15G018Any shortest path searchYesANY SHORTEST
16G019Counted shortest path searchYesSHORTEST k
17G020Counted shortest group searchYesSHORTEST k GROUP
18G030Path multiset alternationNo
19G031Path multiset alternation: variable length path operandsNo
20G032Path pattern unionNo
21G033Path pattern union: variable length path operandsNo
22G035Quantified pathsYes
23G036Quantified edgesYes
24G037Questioned pathsNo
25G038Parenthesized path pattern expressionYesAlso see Features G048 to G051.
26G039Simplified path pattern expression: full defaultingNoAlso see Features G080 to G082.
27G041Non-local element pattern predicatesYes
28G043Complete full edge patternsYesEdges in Ultipa are directed.
29G044Basic abbreviated edge patternsYesEdges in Ultipa are directed.
30G045Complete abbreviated edge patternsYesEdges in Ultipa are directed.
31G046Relaxed topological consistency: adjacent vertex patternsYesCurrently only supports quantified path patterns.
32G047Relaxed topological consistency: concise edge patternsYes
33G048Parenthesized path pattern: subpath variable declarationNo
34G049Parenthesized path pattern: path mode prefixNo
35G050Parenthesized path pattern: WHERE clauseNo
36G051Parenthesized path pattern: non-local predicatesNo
37G060Bounded graph pattern quantifiersYes{m,n}, {m}, {,n}
38G061Unbounded graph pattern quantifiersYes{m,}, *, +
39G074Label expression: wildcard labelNoUltipa does not support empty label set.
40G080Simplified path pattern expression: basic defaultingNo
41G081Simplified path pattern expression: full overridesNo
42G082Simplified path pattern expression: basic overridesNo
43G100ELEMENT_ID functionYesReturns the _uuid values of the graph elements.
44G110IS DIRECTED predicateYes
45G111IS LABELED predicateYes
46G112IS SOURCE and IS DESTINATION predicateYes
47G113ALL_DIFFERENT predicateYes
48G114SAME predicateYes
49G115PROPERTY_EXISTS predicateYes

GA

Feature ID
Feature Name
Support
Note
50GA01IEEE 754 floating point operationsYes
51GA03Explicit ordering of nullsYesNULLS FIRST, NULLS LAST
52GA04Universal comparisonYes
53GA05Cast specificationYes
54GA06Value type predicateNo
55GA07Ordering by discarded binding variablesYes
56GA08GQL-status objects with diagnostic recordsNo
57GA09Comparison of pathsYes

GB

Feature ID
Feature Name
Support
Note
58GB01Long identifiersYes
59GB02Double minus sign commentsYes--
60GB03Double solidus commentsYes//

GC

Feature ID
Feature Name
Support
Note
61GC01Graph schema managementNo
62GC02Graph schema management: IF [ NOT ] EXISTSNo
63GC03Graph type: IF [ NOT ] EXISTSYes
64GC04Graph managementYesCREATE GRAPH, DROP GRAPH
65GC05Graph management: IF [ NOT ] EXISTSYes

GD

Feature ID
Feature Name
Support
Note
66GD01Updatable graphsYesINSERT, SET, and DELETE. REMOVE is not yet supported while its functionality can be achieved with SET.
67GD02Graph label set changesNoThe label of a graph element cannot be modified.
68GD03DELETE statement: subquery supportNo
69GD04DELETE statement: simple expression supportNo

GE

Feature ID
Feature Name
Support
Note
70GE01Graph reference value expressionsNo
71GE02Binding table reference value expressionsNo
72GE03Let-binding of variables in expressionsYes
73GE04Graph parametersNo
74GE05Binding table parametersNo
75GE06Path value constructionYes||
76GE07Boolean XORYesXOR
77GE08Reference parametersNo
78GE09Horizontal aggregationNo

GF

Feature ID
Feature Name
Support
Note
79GF01Enhanced numeric functionsYesabs(), mod(), floor(), ceil(), squrt
80GF02Trigonometric functionsYessin(), cos(), tan(), cot(), sinh(), cosh(), tanh(), asin(), acos(), atan(), degrees(), radians()
81GF03Logarithmic functionsYeslog(), log10(), ln(), exp(), power().
82GF04Enhanced path functionsYeselements(), path_length()
83GF05Multi-character TRIM functionYesbtrim(), ltrim(), rtrim()
84GF06Explicit TRIM functionYestrim()
85GF07Byte string TRIM functionNo
86GF10Advanced aggregate functions: general set functionsYescollect_list(), stddev_pop(), stddev_samp()
87GF11Advanced aggregate functions: binary set functionsYespercentile_cont(), percentile_disc()
88GF12CARDINALITY functionYescardinality()
89GF13SIZE functionYessize()
90GF20Aggregate functions in sort keysYes

GG

Feature ID
Feature Name
Support
Note
91GG01Graph with an open graph typeYes
92GG02Graph with a closed graph typeYes
93GG03Graph type inline specificationYes
94GG04Graph type like a graphYes
95GG05Graph from a graph sourceNo
96GG20Explicit element type namesYes
97GG21Explicit element type key label setsNo
98GG22Element type key label set inferenceNo
99GG23Optional element type key label setsYesThe key label set of an element type is :<element type name>.
100GG24Relaxed structural consistencyYes
101GG25Relaxed key label set uniqueness for edge typesNo
102GG26Relaxed property value type consistencyYes

GH

Feature ID
Feature Name
Support
Note
103GH01External object referencesNo
104GH02Undirected edge patternsNo

GL

Feature ID
Feature Name
Support
Note
105GL01Hexadecimal literalsNoE.g., OxFF (255).
106GL02Octal literalsNoE.g., 0o17 (15).
107GL03Binary literalsNoE.g., 0b10000000 (128).
108GL04Exact number in common notation without suffixYesA decimal like .3 is not supported.
109GL05Exact number in common notation or as decimal integer with suffixYesE.g., 12.3M (12).
110GL06Exact number in scientific notation with suffixYesE.g., 1.23E3 (1230).
111GL07Approximate number in common notation or as decimal integer with suffixNoE.g., 3.14F (3.14 as a float), 1D (1 as a double value).
112GL08Approximate number in scientific notation with suffixNoE.g., 1.23e3F (1230 as a float value).
113GL09Optional float number suffixNoF
114GL10Optional double number suffixNoD
115GL11Opt-out character escapingNo
116GL12SQL datetime and interval formatsYesOnly SQL datetime formats are supported.

GP

Feature ID
Feature Name
Support
Note
117GP01Inline procedureYesCALL Subqueries
118GP02Inline procedure with implicit nested variable scopeYes
119GP03Inline procedure with explicit nested variable scopeYes
120GP04Named procedure callsYesCALL Procedures
121GP05Procedure-local value variable definitionsNo
122GP06Procedure-local value variable definitions: value variables based on simple expressionsNo
123GP07Procedure-local value variable definitions: value variable based on subqueriesNo
124GP08Procedure-local binding table variable definitionsNo
125GP09Procedure-local binding table variable definitions: binding table variables based on simple expressions or referencesNo
126GP10Procedure-local binding table variable definitions: binding table variables based on subqueriesNo
127GP11Procedure-local graph variable definitionsNo
128GP12Procedure-local graph variable definitions: graph variables based on simple expressions or referencesNo
129GP13Procedure-local graph variable definitions: graph variables based on subqueriesNo
130GP14Binding tables as procedure argumentsNo
131GP15Graphs as procedure argumentsNo
132GP16AT schema clauseNo
133GP17Binding variable definition blockNo
134GP18Catalog and data statement mixingYes

GQ

Feature ID
Feature Name
Support
Note
135GQ01USE graph clauseNo
136GQ02Composite query: OTHERWISEYesOTHERWISE
137GQ03Composite query: UNIONYesUNION
138GQ04Composite query: EXCEPT DISTINCTYesEXCEPT DISTINCT
139GQ05Composite query: EXCEPT ALLYesEXCEPT ALL
140GQ06Composite query: INTERSECT DISTINCTYesINTERSECT DISTINCT
141GQ07Composite query: INTERSECT ALLYesINTERSECT ALL
142GQ08FILTER statementYesFILTER
143GQ09LET statementYesLET
144GQ10FOR statement: list value supportYes
145GQ11FOR statement: WITH ORDINALITYYesWITH ORDINALITY
146GQ12ORDER BY and page statement: OFFSET clauseYesSKIP
147GQ13ORDER BY and page statement: LIMIT clauseYesLIMIT
148GQ14Complex expressions in sort keysYes
149GQ15GROUP BY clauseYesGROUP BY
150GQ16Pre-projection aliases in sort keysYes
151GQ17Element-wise group variable operationsYes
152GQ18Scalar subqueriesYes
153GQ19Graph pattern YIELD clauseYesYIELD
154GQ20Advanced linear composition with NEXTYesNEXT
155GQ21OPTIONAL: Multiple MATCH statementsYes
156GQ22EXISTS predicate: multiple MATCH statementsYes
157GQ23FOR statement: binding table supportYes
158GQ24FOR statement: WITH OFFSETYesWITH OFFSET

GS

Feature ID
Feature Name
Support
Note
159GS01SESSION SET command: session-local graph parametersNo
160GS02SESSION SET command: session-local binding table parametersNo
161GS03SESSION SET command: session-local value parametersNo
162GS04SESSION RESET command: reset all characteristicsNo
163GS05SESSION RESET command: reset session schemaNo
164GS06SESSION RESET command: reset session graphNo
165GS07SESSION RESET command: reset time zone displacementNo
166GS08SESSION RESET command: reset all session parametersNo
167GS10SESSION SET command: session-local binding table parameters based on subqueriesNo
168GS11SESSION SET command: session-local value parameters based on subqueriesNo
169GS12SESSION SET command: session-local graph parameters based on simple expressions or referencesNo
170GS13SESSION SET command: session-local binding table parameters based on simple expressions or referencesNo
171GS14SESSION SET command: session-local value parameters based on simple expressionsNo
172GS15SESSION SET command: set time zone displacementNo
173GS16SESSION RESET command: reset individual session parametersNo

GT

Feature ID
Feature Name
Support
Note
174GT01Explicit transaction commandsNo
175GT02Specified transaction characteristicsNo
176GT03Use of multiple graphs in a transactionNo

GV

Feature ID
Feature Name
Support
Note
177GV018 bit unsigned integer numbersNo
178GV028 bit signed integer numbersNo
179GV0316 bit unsigned integer numbersNo
180GV0416 bit signed integer numbersNo
181GV05Small unsigned integer numbersNo
182GV0632 bit unsigned integer numbersYesUINT32
183GV0732 bit signed integer numbersYesINT32
184GV08Regular unsigned integer numbersYesUINT
185GV09Specified integer number precisionNo
186GV10Big unsigned integer numbersNo
187GV1164 bit unsigned integer numbersYesUINT64
188GV1264 bit signed integer numbersYesINT64
189GV13128 bit unsigned integer numbersNo
190GV14128 bit signed integer numbersNo
191GV15256 bit unsigned integer numbersNo
192GV16256 bit signed integer numbersNo
193GV17Decimal numbersYesDECIMAL
194GV18Small signed integer numbersNo
195GV19Big signed integer numbersNo
196GV2016 bit floating point numbersNo
197GV2132 bit floating point numbersYesFLOAT
198GV22Specified floating point number precisionNo
199GV23Floating point type name synonymsYesDOUBLE
200GV2464 bit floating point numbersYesDOUBLE
201GV25128 bit floating point numbersNo
202GV26256 bit floating point numbersNo
203GV30Specified character string minimum lengthNo
204GV31Specified character string maximum lengthYesSTRING
205GV32Specified character string fixed lengthNo
206GV35Byte string typesNo
207GV36Specified byte string minimum lengthNo
208GV37Specified byte string maximum lengthNo
209GV38Specified byte string fixed lengthNo
210GV39Temporal types: date, local datetime and local time supportYes
211GV40Temporal types: zoned datetime and zoned time supportYes
212GV41Temporal types: duration supportYes
213GV45Record typesYesContains at least one of Feature GV46 and Feature GV47.
214GV46Closed record typesYesRECORD
215GV47Open record typesNo
216GV48Nested record typesYesRECORD
217GV50List value typesYesLIST
218GV55Path value typesYesPATH
219GV60Graph reference value typesNo
220GV61Binding table reference value typesNo
221GV65Dynamic union typesYesContains at least one of Feature GV66 and Feature GV67.
222GV66Open dynamic union typesYes
223GV67Closed dynamic union typesNo
224GV68Dynamic property value typesNo
225GV70Immaterial value typesYes
226GV71Immaterial value types: null type supportYesNULL
227GV72Immaterial value types: empty type supportYesNULL
228GV90Explicit value type nullabilityNo