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 | 是 | UINT64 |
| 188 | GV12 | 64 bit signed integer numbers | 是 | INT64 |
| 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 | 是 | |
| 211 | GV40 | Temporal types: zoned datetime and zoned time support | 是 | |
| 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 | 是 | |
| 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 | 否 |