UltipaDocs
Products
Solutions
Resources
Company
Start Free Trial
UltipaDocs
Start Free Trial
  • Introduction
  • GQL vs Other Languages
    • Overview
    • Node and Edge Patterns
    • Path Patterns
    • Quantified Paths
    • Questioned Paths
    • Shortest Paths
    • Graph Patterns
    • Overview
    • Open Graph
    • Closed Graph
    • Constraints
    • Unique Identifiers
    • INSERT
    • INSERT OVERWRITE
    • 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
    • Element Functions
    • Path Functions
    • Aggregate Functions
    • Mathematical Functions
    • Trigonometric Functions
    • String Functions
    • List Functions
    • Datetime Functions
    • Spatial Functions
    • Null Functions
    • Utility Functions
    • Type Conversion Functions
    • Table Functions
    • AI & Vector Functions
    • Database Functions
  • Operators
  • Predicates
    • CASE
    • LET Value Expression
    • Value Query Expression
    • List Comprehension
    • Index
    • Full-text Index
    • Vector Index
  • Transactions
  • Triggers
  • Query Management
  • Backup and Restore
    • 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 nearly all GQL features. This page claims the GQL conformance and Ultipa extensions.

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.

Minimum Conformance

Per subclause 24.2, Ultipa claims:

  1. Graph Type Support: Conformance to both Feature GG01 (open graph type) and Feature GG02 (closed graph type).
  2. Unicode Compliance: Version 13 of The Unicode Standard.
  3. Property Value Type Support: STRING/VARCHAR, BOOLEAN/BOOL, INTEGER/INT, FLOAT, and additional optional types.

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:

SubclauseTitleSupportNote
7Session managementNoSESSION SET, SESSION RESET, SESSION CLOSE
8Transaction managementYesSTART 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>YesEXISTS
19.5<null predicate>YesIS NULL, IS NOT NULL
19.7<normalized predicate>NoIS 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.

Feature IDFeature NameSupport
1G002Different-edges match modeYes
2G003Explicit REPEATABLE ELEMENTS keywordYes
3G004Path variablesYes
4G005Path search prefix in a path patternYes
5G006Graph pattern KEEP clause: path mode prefixNo
6G007Graph pattern KEEP clause: path search prefixNo
7G010Explicit WALK keywordYes
8G011Advanced path modes: TRAILYes
9G012Advanced path modes: SIMPLEYes
10G013Advanced path modes: ACYCLICYes
11G014Explicit PATH/PATHS keywordsYes
12G015All path search: explicit ALL keywordYes
13G016Any path searchYes
14G017All shortest path searchYes
15G018Any shortest path searchYes
16G019Counted shortest path searchYes
17G020Counted shortest group searchYes
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 pathsYes
25G038Parenthesized path pattern expressionYes
26G039Simplified path pattern expression: full defaultingNo
27G041Non-local element pattern predicatesYes
28G043Complete full edge patternsYes
29G044Basic abbreviated edge patternsYes
30G045Complete abbreviated edge patternsYes
31G046Relaxed topological consistency: adjacent vertex patternsYes
32G047Relaxed topological consistency: concise edge patternsYes
33G048Parenthesized path pattern: subpath variable declarationYes
34G049Parenthesized path pattern: path mode prefixYes
35G050Parenthesized path pattern: WHERE clauseYes
36G051Parenthesized path pattern: non-local predicatesYes
37G060Bounded graph pattern quantifiersYes
38G061Unbounded graph pattern quantifiersYes
39G074Label expression: wildcard labelYes
40G080Simplified path pattern expression: basic defaultingNo
41G081Simplified path pattern expression: full overridesNo
42G082Simplified path pattern expression: basic overridesNo
43G100ELEMENT_ID functionYes
44G110IS DIRECTED predicateYes
45G111IS LABELED predicateYes
46G112IS SOURCE and IS DESTINATION predicateYes
47G113ALL_DIFFERENT predicateYes
48G114SAME predicateYes
49G115PROPERTY_EXISTS predicateYes
50GA01IEEE 754 floating point operationsYes
51GA03Explicit ordering of nullsYes
52GA04Universal comparisonYes
53GA05Cast specificationYes
54GA06Value type predicateYes
55GA07Ordering by discarded binding variablesYes
56GA08GQL-status objects with diagnostic recordsNo
57GA09Comparison of pathsYes
58GB01Long identifiersYes
59GB02Double minus sign commentsYes
60GB03Double solidus commentsYes
61GC01Graph schema managementNo
62GC02Graph schema management: IF [ NOT ] EXISTSNo
63GC03Graph type: IF [ NOT ] EXISTSYes
64GC04Graph managementYes
65GC05Graph management: IF [ NOT ] EXISTSYes
66GD01Updatable graphsYes
67GD02Graph label set changesYes
68GD03DELETE statement: subquery supportNo
69GD04DELETE statement: simple expression supportNo
70GE01Graph reference value expressionsNo
71GE02Binding table reference value expressionsNo
72GE03Let-binding of variables in expressionsYes
73GE04Graph parametersNo
74GE05Binding table parametersNo
75GE06Path value constructionYes
76GE07Boolean XORYes
77GE08Reference parametersNo
78GE09Horizontal aggregationNo
79GF01Enhanced numeric functionsYes
80GF02Trigonometric functionsYes
81GF03Logarithmic functionsYes
82GF04Enhanced path functionsYes
83GF05Multi-character TRIM functionYes
84GF06Explicit TRIM functionYes
85GF07Byte string TRIM functionNo
86GF10Advanced aggregate functions: general set functionsYes
87GF11Advanced aggregate functions: binary set functionsYes
88GF12CARDINALITY functionYes
89GF13SIZE functionYes
90GF20Aggregate functions in sort keysYes
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 setsYes
98GG22Element type key label set inferenceNo
99GG23Optional element type key label setsYes
100GG24Relaxed structural consistencyYes
101GG25Relaxed key label set uniqueness for edge typesNo
102GG26Relaxed property value type consistencyYes
103GH01External object referencesNo
104GH02Undirected edge patternsNo
105GL01Hexadecimal literalsNo
106GL02Octal literalsNo
107GL03Binary literalsNo
108GL04Exact number in common notation without suffixYes
109GL05Exact number in common notation or as decimal integer with suffixYes
110GL06Exact number in scientific notation with suffixYes
111GL07Approximate number in common notation or as decimal integer with suffixNo
112GL08Approximate number in scientific notation with suffixNo
113GL09Optional float number suffixNo
114GL10Optional double number suffixNo
115GL11Opt-out character escapingNo
116GL12SQL datetime and interval formatsYes
117GP01Inline procedureYes
118GP02Inline procedure with implicit nested variable scopeYes
119GP03Inline procedure with explicit nested variable scopeYes
120GP04Named procedure callsYes
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
135GQ01USE graph clauseYes
136GQ02Composite query: OTHERWISEYes
137GQ03Composite query: UNIONYes
138GQ04Composite query: EXCEPT DISTINCTYes
139GQ05Composite query: EXCEPT ALLYes
140GQ06Composite query: INTERSECT DISTINCTYes
141GQ07Composite query: INTERSECT ALLYes
142GQ08FILTER statementYes
143GQ09LET statementYes
144GQ10FOR statement: list value supportYes
145GQ11FOR statement: WITH ORDINALITYYes
146GQ12ORDER BY and page statement: OFFSET clauseYes
147GQ13ORDER BY and page statement: LIMIT clauseYes
148GQ14Complex expressions in sort keysYes
149GQ15GROUP BY clauseYes
150GQ16Pre-projection aliases in sort keysYes
151GQ17Element-wise group variable operationsYes
152GQ18Scalar subqueriesYes
153GQ19Graph pattern YIELD clauseYes
154GQ20Advanced linear composition with NEXTYes
155GQ21OPTIONAL: Multiple MATCH statementsYes
156GQ22EXISTS predicate: multiple MATCH statementsYes
157GQ23FOR statement: binding table supportYes
158GQ24FOR statement: WITH OFFSETYes
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
174GT01Explicit transaction commandsYes
175GT02Specified transaction characteristicsYes
176GT03Use of multiple graphs in a transactionNo
177GV018 bit unsigned integer numbersYes
178GV028 bit signed integer numbersYes
179GV0316 bit unsigned integer numbersYes
180GV0416 bit signed integer numbersYes
181GV05Small unsigned integer numbersNo
182GV0632 bit unsigned integer numbersYes
183GV0732 bit signed integer numbersYes
184GV08Regular unsigned integer numbersYes
185GV09Specified integer number precisionNo
186GV10Big unsigned integer numbersNo
187GV1164 bit unsigned integer numbersYes
188GV1264 bit signed integer numbersYes
189GV13128 bit unsigned integer numbersNo
190GV14128 bit signed integer numbersNo
191GV15256 bit unsigned integer numbersNo
192GV16256 bit signed integer numbersNo
193GV17Decimal numbersYes
194GV18Small signed integer numbersYes
195GV19Big signed integer numbersYes
196GV2016 bit floating point numbersNo
197GV2132 bit floating point numbersYes
198GV22Specified floating point number precisionNo
199GV23Floating point type name synonymsYes
200GV2464 bit floating point numbersYes
201GV25128 bit floating point numbersNo
202GV26256 bit floating point numbersNo
203GV30Specified character string minimum lengthNo
204GV31Specified character string maximum lengthYes
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 typesYes
214GV46Closed record typesYes
215GV47Open record typesNo
216GV48Nested record typesYes
217GV50List value typesYes
218GV55Path value typesYes
219GV60Graph reference value typesNo
220GV61Binding table reference value typesNo
221GV65Dynamic union typesYes
222GV66Open dynamic union typesYes
223GV67Closed dynamic union typesNo
224GV68Dynamic property value typesNo
225GV70Immaterial value typesYes
226GV71Immaterial value types: null type supportYes
227GV72Immaterial value types: empty type supportYes
228GV90Explicit value type nullabilityYes

Ultipa Extensions

Beyond the GQL standard, Ultipa provides additional features:

FeatureDescription
ConstraintsNOT NULL and UNIQUE constraints on node and edge properties
Backup and restoreBACKUP GRAPH, BACKUP DATABASE, RESTORE, VERIFY BACKUP, incremental backups
TriggersBEFORE INSERT and BEFORE UPDATE triggers with callable body expressions
Full-text indexFull-text indexing with BM25 scoring, CJK support, and query operators (AND, OR, NOT, phrase, proximity, wildcard)
Vector indexHNSW-based vector index with cosine, euclidean, and dot product metrics
AI functionsai.embed(), ai.cosine(), ai.distance(), ai.gql(), ai.read(), provider configuration
Stored proceduresCREATE PROCEDURE, CALL, with algorithm and query types
Graph projectionsNamed in-memory subgraph projections
RBACRole-based access control with GRANT, REVOKE, users and roles
Query managementSHOW QUERIES, KILL QUERY, EXPLAIN / EXPLAIN ANALYZE / EXPLAIN OPTIMIZER
TransactionsSTART TRANSACTION, COMMIT, ROLLBACK, SAVEPOINT, READ ONLY mode
OntologyOWL-based ontology support with class hierarchies, domain/range constraints
FederationCross-database query federation via SERVICE endpoints