GQL是专为图数据库设计的标准查询语言,于2024年4月由ISO/IEC正式发布:
嬴图现已支持GQL大部分功能。本文为您介绍GQL在嬴图的一致性。
必需功能一致性
根据GQL标准子条款,嬴图为数据模型和GQL必需功能提供以下支持:
数据模型
嬴图提供以下一致性支持:
- 图类型支持:采用封闭图类型的图[1](功能GG02),支持以下功能:
- 显式元素类型名称(功能GG02)
- 可选的元素类型键标签集
- Unicode标准:Unicode标准版本13
- 属性值类型支持:必需属性值类型如
string
、bool
、int
、float
,以及其他可选类型
[1]具有限定图类型的图称为封闭图。封闭图中的点和边必须符合限定图类型中指定的点、边类型。
必需功能
与可选功能不同,必需功能没有功能ID和功能名称。本文使用各功能在GQL标准中的对应子条款编号和标题对其进行引用:
子条款 |
标题 |
支持 |
备注 |
---|---|---|---|
7 | Session management | 否 | SESSION SET , SESSION RESET , SESSION CLOSE |
8 | Transaction management | 否 | START TRANSACTION , ROLLBACK , COMMIT |
11 | Object expressions | 否 | CURRENT_GRAPH |
14.4 | <match statement> | 是 | MATCH , OPTIONAL MATCH |
14.9 | <order by and page statement> | 是 | ORDER BY |
14.10 | <primitive result statement> | 是 | |
14.11 | <return statement> | 是 | RETURN |
14.12 | <select statement> | 否 | SELECT |
16.1 | <at schema clause> | 否 | |
16.3 | <graph pattern binding table> | 是 | |
16.4 | <graph pattern> | 是 | |
16.5 | <insert graph pattern> | 是 | |
16.7 | <path pattern expression> | 是 | |
16.8 | <label expression> | 是 | |
16.9 | <path variable reference> | 是 | |
16.10 | <element variable reference> | 是 | |
16.13 | <where clause> | 是 | WHERE |
16.14 | <yield clause> | 是 | YIELD |
16.16 | <order by clause> | 是 | ORDER BY |
16.17 | <sort specification list> | 是 | ASC , DESC |
19.3 | <comparison predicate> | 是 | = , <> , < , > , <= , >= |
19.4 | <exists predicate> | 是 | EXIST |
19.5 | <null predicate> | 是 | IS NULL , IS NOT NULL |
19.7 | <normalized predicate> | 是 | IS NORMALIZED , IS NOT NORMALIZED |
20.2 | <value expression primary> | 是 | |
20.3 | <value specification> | 是 | 嬴图不支持SESSION_USER |
20.7 | <case expression> | 是 | CASE , NULLIF , COALESCE |
20.9 | <aggregate function> | 是 | avg() , count() , max() , min() , sum() |
20.11 | <property reference> | 是 | 图元素属性引用 |
20.20 | <boolean value expression> | 是 | AND , OR , NOT |
20.21 | <numeric value expression> | 是 | + , - , * , / |
20.22 | <numeric value function> | 是 | char_length() , character_length() |
20.23 | <string value expression> | 是 | 字符串连接运算符|| |
20.24 | <character string function> | 是 | left() , right() , upper() , lower() , normalize() |
20.25 | <byte string function> | 否 | left() , right() |
20.29 | <duration value function> | 否 | duration() |
21.1 | Names and variables | 是 | |
21.2 | <literal> | 是 |
可选功能一致性
引用标准定义的可选GQL功能时,可使用其功能ID(以字母G开头,后跟3个字符)和功能名称。
G
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
1 | G002 | Different-edges match mode | 是 | DIFFERENT EDGES ,默认匹配模式 |
2 | G003 | Explicit REPEATABLE ELEMENTS keyword | 是 | REPEATABLE ELEMENTS |
3 | G004 | Path variables | 是 | |
4 | G005 | Path search prefix in a path pattern | 是 | 另请参看功能G007,G014到G020 |
5 | G006 | Graph pattern KEEP clause: path mode prefix | 否 | |
6 | G007 | Graph pattern KEEP clause: path search prefix | 否 | |
7 | G010 | Explicit WALK keyword | 否 | |
8 | G011 | Advanced path modes: TRAIL | 是 | TRAIL ,默认路径模式 |
9 | G012 | Advanced path modes: SIMPLE | 否 | |
10 | G013 | Advanced path modes: ACYCLIC | 否 | |
11 | G014 | Explicit PATH/PATHS keywords | 否 | |
12 | G015 | All path search: explicit ALL keyword | 是 | ALL |
13 | G016 | Any path search | 是 | ANY , ANY k |
14 | G017 | All shortest path search | 是 | ALL SHORTEST |
15 | G018 | Any shortest path search | 是 | ANY SHORTEST |
16 | G019 | Counted shortest path search | 是 | SHORTEST k |
17 | G020 | Counted shortest group search | 是 | SHORTEST k GROUP |
18 | G030 | Path multiset alternation | 否 | |
19 | G031 | Path multiset alternation: variable length path operands | 否 | |
20 | G032 | Path pattern union | 否 | |
21 | G033 | Path pattern union: variable length path operands | 否 | |
22 | G035 | Quantified paths | 是 | |
23 | G036 | Quantified edges | 是 | |
24 | G037 | Questioned paths | 否 | |
25 | G038 | Parenthesized path pattern expression | 是 | 另请参看功能G048到G051 |
26 | G039 | Simplified path pattern expression: full defaulting | 否 | 另请参看功能G080到G082 |
27 | G041 | Non-local element pattern predicates | 是 | |
28 | G043 | Complete full edge patterns | 是 | 嬴图数据库中的边是有向边 |
29 | G044 | Basic abbreviated edge patterns | 是 | 嬴图数据库中的边是有向边 |
30 | G045 | Complete abbreviated edge patterns | 是 | 嬴图数据库中的边是有向边 |
31 | G046 | Relaxed topological consistency: adjacent vertex patterns | 是 | 目前仅支持带量词路径模式 |
32 | G047 | Relaxed topological consistency: concise edge patterns | 是 | |
33 | G048 | Parenthesized path pattern: subpath variable declaration | 否 | |
34 | G049 | Parenthesized path pattern: path mode prefix | 否 | |
35 | G050 | Parenthesized path pattern: WHERE clause | 否 | |
36 | G051 | Parenthesized path pattern: non-local predicates | 否 | |
37 | G060 | Bounded graph pattern quantifiers | 是 | {m,n} , {m} , {,n} |
38 | G061 | Unbounded graph pattern quantifiers | 是 | {m,} , * , + |
39 | G074 | Label expression: wildcard label | 否 | 嬴图不支持空标签集 |
40 | G080 | Simplified path pattern expression: basic defaulting | 否 | |
41 | G081 | Simplified path pattern expression: full overrides | 否 | |
42 | G082 | Simplified path pattern expression: basic overrides | 否 | |
43 | G100 | ELEMENT_ID function | 是 | 返回图元素的_uuid 值 |
44 | G110 | IS DIRECTED predicate | 否 | |
45 | G111 | IS LABELED predicate | 否 | |
46 | G112 | IS SOURCE and IS DESTINATION predicate | 是 | |
47 | G113 | ALL_DIFFERENT predicate | 是 | |
48 | G114 | SAME predicate | 是 | |
49 | G115 | PROPERTY_EXISTS predicate | 是 |
GA
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
50 | GA01 | IEEE 754 floating point operations | 是 | |
51 | GA03 | Explicit ordering of nulls | 是 | NULLS FIRST , NULLS LAST |
52 | GA04 | Universal comparison | 是 | |
53 | GA05 | Cast specification | 是 | |
54 | GA06 | Value type predicate | 否 | |
55 | GA07 | Ordering by discarded binding variables | 是 | |
56 | GA08 | GQL-status objects with diagnostic records | 否 | |
57 | GA09 | Comparison of paths | 是 |
GB
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
58 | GB01 | Long identifiers | 是 | |
59 | GB02 | Double minus sign comments | 是 | -- |
60 | GB03 | Double solidus comments | 是 | // |
GC
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
61 | GC01 | Graph schema management | 否 | |
62 | GC02 | Graph schema management: IF [ NOT ] EXISTS | 否 | |
63 | GC03 | Graph type: IF [ NOT ] EXISTS | 否 | |
64 | GC04 | Graph management | 是 | CREATE GRAPH , DROP GRAPH |
65 | GC05 | Graph management: IF [ NOT ] EXISTS | 否 |
GD
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
66 | GD01 | Updatable graphs | 是 | INSERT ,SET 和DELETE 。暂不支持REMOVE ,但可以使用SET 实现其功能 |
67 | GD02 | Graph label set changes | 否 | 图元素的标签不可修改 |
68 | GD03 | DELETE statement: subquery support | 否 | |
69 | GD04 | DELETE statement: simple expression support | 否 |
GE
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
70 | GE01 | Graph reference value expressions | 否 | |
71 | GE02 | Binding table reference value expressions | 否 | |
72 | GE03 | Let-binding of variables in expressions | 是 | |
73 | GE04 | Graph parameters | 否 | |
74 | GE05 | Binding table parameters | 否 | |
75 | GE06 | Path value construction | 是 | || |
76 | GE07 | Boolean XOR | 是 | XOR |
77 | GE08 | Reference parameters | 否 | |
78 | GE09 | Horizontal aggregation | 否 |
GF
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
79 | GF01 | Enhanced numeric functions | 是 | abs() , mod() , floor() , ceil() , squrt |
80 | GF02 | Trigonometric functions | 是 | sin() , cos() , tan() , cot() , sinh() , cosh() , tanh() , asin() , acos() , atan() , degrees() , radians() |
81 | GF03 | Logarithmic functions | 是 | log() , log10() , ln() , exp (), power() . |
82 | GF04 | Enhanced path functions | 是 | elements() , path_length() |
83 | GF05 | Multi-character TRIM function | 是 | btrim() , ltrim() , rtrim() |
84 | GF06 | Explicit TRIM function | 是 | trim() |
85 | GF07 | Byte string TRIM function | 否 | |
86 | GF10 | Advanced aggregate functions: general set functions | 是 | collect_list() , stddev_pop() , stddev_samp() |
87 | GF11 | Advanced aggregate functions: binary set functions | 是 | percentile_cont() , percentile_disc() |
88 | GF12 | CARDINALITY function | 是 | cardinality() |
89 | GF13 | SIZE function | 是 | size() |
90 | GF20 | Aggregate functions in sort keys | 否 |
GG
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
91 | GG01 | Graph with an open graph type | 是 | |
92 | GG02 | Graph with a closed graph type | 是 | |
93 | GG03 | Graph type inline specification | 是 | |
94 | GG04 | Graph type like a graph | 否 | |
95 | GG05 | Graph from a graph source | 否 | |
96 | GG20 | Explicit element type names | 是 | |
97 | GG21 | Explicit element type key label sets | 否 | |
98 | GG22 | Element type key label set inference | 否 | |
99 | GG23 | Optional element type key label sets | 是 | 元素类型的关键标签集为:<element type name> |
100 | GG24 | Relaxed structural consistency | 是 | |
101 | GG25 | Relaxed key label set uniqueness for edge types | 否 | |
102 | GG26 | Relaxed property value type consistency | 是 |
GH
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
103 | GH01 | External object references | 否 | |
104 | GH02 | Undirected edge patterns | 否 |
GL
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
105 | GL01 | Hexadecimal literals | 否 | 例如,OxFF (255) |
106 | GL02 | Octal literals | 否 | 例如,0o17 (15) |
107 | GL03 | Binary literals | 否 | 例如,0b10000000 (128) |
108 | GL04 | Exact number in common notation without suffix | 是 | 不支持.3 这样的小数 |
109 | GL05 | Exact number in common notation or as decimal integer with suffix | 是 | 例如,12.3M (12) |
110 | GL06 | Exact number in scientific notation with suffix | 是 | 例如,1.23E3 (1230) |
111 | GL07 | Approximate number in common notation or as decimal integer with suffix | 否 | 例如,3.14F (3.14 为float 类型值),1D (1 为double 类型值) |
112 | GL08 | Approximate number in scientific notation with suffix | 否 | 例如,1.23e3F (1230 为float 类型值) |
113 | GL09 | Optional float number suffix | 否 | F |
114 | GL10 | Optional double number suffix | 否 | D |
115 | GL11 | Opt-out character escaping | 否 | |
116 | GL12 | SQL datetime and interval formats | 是 | 仅支持SQL的datatime格式 |
GP
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
117 | GP01 | Inline procedure | 是 | CALL 子查询 |
118 | GP02 | Inline procedure with implicit nested variable scope | 是 | |
119 | GP03 | Inline procedure with explicit nested variable scope | 是 | |
120 | GP04 | Named procedure calls | 是 | CALL 过程 |
121 | GP05 | Procedure-local value variable definitions | 否 | |
122 | GP06 | Procedure-local value variable definitions: value variables based on simple expressions | 否 | |
123 | GP07 | Procedure-local value variable definitions: value variable based on subqueries | 否 | |
124 | GP08 | Procedure-local binding table variable definitions | 否 | |
125 | GP09 | Procedure-local binding table variable definitions: binding table variables based on simple expressions or references | 否 | |
126 | GP10 | Procedure-local binding table variable definitions: binding table variables based on subqueries | 否 | |
127 | GP11 | Procedure-local graph variable definitions | 否 | |
128 | GP12 | Procedure-local graph variable definitions: graph variables based on simple expressions or references | 否 | |
129 | GP13 | Procedure-local graph variable definitions: graph variables based on subqueries | 否 | |
130 | GP14 | Binding tables as procedure arguments | 否 | |
131 | GP15 | Graphs as procedure arguments | 否 | |
132 | GP16 | AT schema clause | 否 | |
133 | GP17 | Binding variable definition block | 否 | |
134 | GP18 | Catalog and data statement mixing | 是 |
GQ
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
135 | GQ01 | USE graph clause | 否 | |
136 | GQ02 | Composite query: OTHERWISE | 是 | OTHERWISE |
137 | GQ03 | Composite query: UNION | 是 | UNION |
138 | GQ04 | Composite query: EXCEPT DISTINCT | 是 | EXCEPT DISTINCT |
139 | GQ05 | Composite query: EXCEPT ALL | 是 | EXCEPT ALL |
140 | GQ06 | Composite query: INTERSECT DISTINCT | 是 | INTERSECT DISTINCT |
141 | GQ07 | Composite query: INTERSECT ALL | 是 | INTERSECT ALL |
142 | GQ08 | FILTER statement | 是 | FILTER |
143 | GQ09 | LET statement | 是 | LET |
144 | GQ10 | FOR statement: list value support | 是 | |
145 | GQ11 | FOR statement: WITH ORDINALITY | 是 | WITH ORDINALITY |
146 | GQ12 | ORDER BY and page statement: OFFSET clause | 是 | SKIP |
147 | GQ13 | ORDER BY and page statement: LIMIT clause | 是 | LIMIT |
148 | GQ14 | Complex expressions in sort keys | 否 | |
149 | GQ15 | GROUP BY clause | 是 | GROUP BY |
150 | GQ16 | Pre-projection aliases in sort keys | 是 | |
151 | GQ17 | Element-wise group variable operations | 是 | |
152 | GQ18 | Scalar subqueries | 否 | |
153 | GQ19 | Graph pattern YIELD clause | 是 | YIELD |
154 | GQ20 | Advanced linear composition with NEXT | 是 | NEXT |
155 | GQ21 | OPTIONAL: Multiple MATCH statements | 是 | |
156 | GQ22 | EXISTS predicate: multiple MATCH statements | 是 | |
157 | GQ23 | FOR statement: binding table support | 是 | |
158 | GQ24 | FOR statement: WITH OFFSET | 是 | WITH OFFSET |
GS
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
159 | GS01 | SESSION SET command: session-local graph parameters | 否 | |
160 | GS02 | SESSION SET command: session-local binding table parameters | 否 | |
161 | GS03 | SESSION SET command: session-local value parameters | 否 | |
162 | GS04 | SESSION RESET command: reset all characteristics | 否 | |
163 | GS05 | SESSION RESET command: reset session schema | 否 | |
164 | GS06 | SESSION RESET command: reset session graph | 否 | |
165 | GS07 | SESSION RESET command: reset time zone displacement | 否 | |
166 | GS08 | SESSION RESET command: reset all session parameters | 否 | |
167 | GS10 | SESSION SET command: session-local binding table parameters based on subqueries | 否 | |
168 | GS11 | SESSION SET command: session-local value parameters based on subqueries | 否 | |
169 | GS12 | SESSION SET command: session-local graph parameters based on simple expressions or references | 否 | |
170 | GS13 | SESSION SET command: session-local binding table parameters based on simple expressions or references | 否 | |
171 | GS14 | SESSION SET command: session-local value parameters based on simple expressions | 否 | |
172 | GS15 | SESSION SET command: set time zone displacement | 否 | |
173 | GS16 | SESSION RESET command: reset individual session parameters | 否 |
GT
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
174 | GT01 | Explicit transaction commands | 否 | |
175 | GT02 | Specified transaction characteristics | 否 | |
176 | GT03 | Use of multiple graphs in a transaction | 否 |
GV
功能ID |
功能名称 |
支持 |
备注 | |
---|---|---|---|---|
177 | GV01 | 8 bit unsigned integer numbers | 否 | |
178 | GV02 | 8 bit signed integer numbers | 否 | |
179 | GV03 | 16 bit unsigned integer numbers | 否 | |
180 | GV04 | 16 bit signed integer numbers | 否 | |
181 | GV05 | Small unsigned integer numbers | 否 | |
182 | GV06 | 32 bit unsigned integer numbers | 是 | uint32 |
183 | GV07 | 32 bit signed integer numbers | 是 | int32 |
184 | GV08 | Regular unsigned integer numbers | 否 | |
185 | GV09 | Specified integer number precision | 否 | |
186 | GV10 | Big unsigned integer numbers | 否 | |
187 | GV11 | 64 bit unsigned integer numbers | Yes | uint64 |
188 | GV12 | 64 bit signed integer numbers | Yes | uint64 |
189 | GV13 | 128 bit unsigned integer numbers | 否 | |
190 | GV14 | 128 bit signed integer numbers | 否 | |
191 | GV15 | 256 bit unsigned integer numbers | 否 | |
192 | GV16 | 256 bit signed integer numbers | 否 | |
193 | GV17 | Decimal numbers | 是 | decimal |
194 | GV18 | Small signed integer numbers | 否 | |
195 | GV19 | Big signed integer numbers | 否 | |
196 | GV20 | 16 bit floating point numbers | 否 | |
197 | GV21 | 32 bit floating point numbers | 是 | float |
198 | GV22 | Specified floating point number precision | 否 | |
199 | GV23 | Floating point type name synonyms | 是 | double |
200 | GV24 | 64 bit floating point numbers | 是 | double |
201 | GV25 | 128 bit floating point numbers | 否 | |
202 | GV26 | 256 bit floating point numbers | 否 | |
203 | GV30 | Specified character string minimum length | 否 | |
204 | GV31 | Specified character string maximum length | 是 | string |
205 | GV32 | Specified character string fixed length | 否 | |
206 | GV35 | Byte string types | 否 | |
207 | GV36 | Specified byte string minimum length | 否 | |
208 | GV37 | Specified byte string maximum length | 否 | |
209 | GV38 | Specified byte string fixed length | 否 | |
210 | GV39 | Temporal types: date, local datetime and local time support | 是 | timestamp |
211 | GV40 | Temporal types: zoned datetime and zoned time support | 是 | datetime |
212 | GV41 | Temporal types: duration support | 否 | |
213 | GV45 | Record types | 是 | 至少包含功能GV46和GV47中的一项 |
214 | GV46 | Closed record types | 是 | RECORD |
215 | GV47 | Open record types | 否 | |
216 | GV48 | Nested record types | 是 | RECORD |
217 | GV50 | List value types | 是 | LIST |
218 | GV55 | Path value types | 是 | PATH |
219 | GV60 | Graph reference value types | 否 | |
220 | GV61 | Binding table reference value types | 否 | |
221 | GV65 | Dynamic union types | 是 | 至少包含功能GV66和GV67中的一项 |
222 | GV66 | Open dynamic union types | 是 | LIST |
223 | GV67 | Closed dynamic union types | 否 | |
224 | GV68 | Dynamic property value types | 否 | |
225 | GV70 | Immaterial value types | 是 | |
226 | GV71 | Immaterial value types: null type support | 是 | null |
227 | GV72 | Immaterial value types: empty type support | 是 | null |
228 | GV90 | Explicit value type nullability | 否 |