ll_sparql_parser/syntax_kind/generated.rs
1use logos::Logos;
2
3#[allow(non_camel_case_types)]
4#[derive(Logos, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
5#[repr(u16)]
6pub enum SyntaxKind {
7 Eof = 0,
8 Error,
9 #[regex(r#"[ \t\n\r\f]+"#)]
10 WHITESPACE,
11 #[regex(r#"#\.*\n"#)]
12 Comment,
13 #[token("BASE", ignore(case))]
14 BASE,
15 #[regex(r#"<[^<>\"{}|^`\\\u{00}-\u{20}]*>"#)]
16 IRIREF,
17 #[token("PREFIX", ignore(case))]
18 PREFIX,
19 #[regex("[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}]([A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_.-]*[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_-])?:")]
20 PNAME_NS,
21 #[token("SELECT", ignore(case))]
22 SELECT,
23 #[token("DISTINCT", ignore(case))]
24 DISTINCT,
25 #[token("REDUCED", ignore(case))]
26 REDUCED,
27 #[token("(")]
28 LParen,
29 #[token("AS", ignore(case))]
30 AS,
31 #[token(")")]
32 RParen,
33 #[token("*")]
34 Star,
35 #[token("CONSTRUCT", ignore(case))]
36 CONSTRUCT,
37 #[token("WHERE", ignore(case))]
38 WHERE,
39 #[token("{")]
40 LCurly,
41 #[token("}")]
42 RCurly,
43 #[token("DESCRIBE", ignore(case))]
44 DESCRIBE,
45 #[token("ASK", ignore(case))]
46 ASK,
47 #[token("FROM", ignore(case))]
48 FROM,
49 #[token("NAMED", ignore(case))]
50 NAMED,
51 #[token("GROUP", ignore(case))]
52 GROUP,
53 #[token("BY", ignore(case))]
54 BY,
55 #[token("HAVING", ignore(case))]
56 HAVING,
57 #[token("ORDER", ignore(case))]
58 ORDER,
59 #[token("ASC", ignore(case))]
60 ASC,
61 #[token("DESC", ignore(case))]
62 DESC,
63 #[token("LIMIT", ignore(case))]
64 LIMIT,
65 #[token("OFFSET", ignore(case))]
66 OFFSET,
67 #[token("VALUES", ignore(case))]
68 VALUES,
69 #[token(";")]
70 Semicolon,
71 #[token("LOAD", ignore(case))]
72 LOAD,
73 #[token("SILENT", ignore(case))]
74 SILENT,
75 #[token("INTO", ignore(case))]
76 INTO,
77 #[token("CLEAR", ignore(case))]
78 CLEAR,
79 #[token("DROP", ignore(case))]
80 DROP,
81 #[token("CREATE", ignore(case))]
82 CREATE,
83 #[token("ADD", ignore(case))]
84 ADD,
85 #[token("TO", ignore(case))]
86 TO,
87 #[token("MOVE", ignore(case))]
88 MOVE,
89 #[token("COPY", ignore(case))]
90 COPY,
91 #[token("INSERT", ignore(case))]
92 INSERT,
93 #[token("DATA", ignore(case))]
94 DATA,
95 INSERT_DATA,
96 #[regex(r"(?i)DELETE\s+DATA")]
97 DELETE_DATA,
98 #[token(r"(?i)DELETE\s+WHERE")]
99 DELETE_WHERE,
100 #[token("DELETE", ignore(case))]
101 DELETE,
102 #[token("WITH", ignore(case))]
103 WITH,
104 #[token("USING", ignore(case))]
105 USING,
106 #[token("DEFAULT", ignore(case))]
107 DEFAULT,
108 #[token("GRAPH", ignore(case))]
109 GRAPH,
110 #[token("ALL", ignore(case))]
111 ALL,
112 #[token(".")]
113 Dot,
114 #[token("OPTIONAL", ignore(case))]
115 OPTIONAL,
116 #[token("SERVICE", ignore(case))]
117 SERVICE,
118 #[token("BIND", ignore(case))]
119 BIND,
120 #[token("NIL", ignore(case))]
121 NIL,
122 #[token("UNDEF", ignore(case))]
123 UNDEF,
124 #[token("MINUS", ignore(case))]
125 MINUS,
126 #[token("UNION", ignore(case))]
127 UNION,
128 #[token("FILTER", ignore(case))]
129 FILTER,
130 #[token(",")]
131 Comma,
132 #[token(" a ")]
133 a,
134 #[token("|")]
135 Pipe,
136 #[token("/")]
137 Slash,
138 #[token("^")]
139 Zirkumflex,
140 #[token("?")]
141 QuestionMark,
142 #[token("+")]
143 Plus,
144 #[token("!")]
145 ExclamationMark,
146 #[token("[")]
147 LBrack,
148 #[token("]")]
149 RBrack,
150 // (?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9])(?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9]|\u{00B7}|[\u{0300}-\u{036F}]|[\u{203F}-\u{2040}])*
151 #[regex(
152 r"\?(?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9])(?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9]|\u{00B7}|[\u{0300}-\u{036F}]|[\u{203F}-\u{2040}])*"
153 )]
154 VAR1,
155 #[regex(
156 r"\$(?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9])(?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9]|\u{00B7}|[\u{0300}-\u{036F}]|[\u{203F}-\u{2040}])*"
157 )]
158 VAR2,
159 #[token("||")]
160 DoublePipe,
161 #[token("&&")]
162 DoubleAnd,
163 #[token("=")]
164 Equals,
165 #[token("!=")]
166 ExclamationMarkEquals,
167 #[token("<")]
168 Less,
169 #[token(">")]
170 More,
171 #[token("<=")]
172 LessEquals,
173 #[token(">=")]
174 MoreEquals,
175 #[token("IN", ignore(case))]
176 IN,
177 #[token("NOT", ignore(case))]
178 NOT,
179 #[token("-")]
180 Minus,
181 #[token("STR")]
182 STR,
183 #[token("LANG")]
184 LANG,
185 #[token("LANGMATCHES")]
186 LANGMATCHES,
187 #[token("DATATYPE")]
188 DATATYPE,
189 #[token("BOUND")]
190 BOUND,
191 #[token("IRI")]
192 IRI,
193 #[token("URI")]
194 URI,
195 #[token("BNODE")]
196 BNODE,
197 #[token("RAND")]
198 RAND,
199 #[token("ABS")]
200 ABS,
201 #[token("CEIL")]
202 CEIL,
203 #[token("FLOOR")]
204 FLOOR,
205 #[token("ROUND")]
206 ROUND,
207 #[token("CONCAT")]
208 CONCAT,
209 #[token("STRLEN")]
210 STRLEN,
211 #[token("UCASE")]
212 UCASE,
213 #[token("LCASE")]
214 LCASE,
215 #[token("ENCODE_FOR_URI")]
216 ENCODE_FOR_URI,
217 #[token("CONTAINS")]
218 CONTAINS,
219 #[token("STRSTARTS")]
220 STRSTARTS,
221 #[token("STRENDS")]
222 STRENDS,
223 #[token("STRBEFORE")]
224 STRBEFORE,
225 #[token("STRAFTER")]
226 STRAFTER,
227 #[token("YEAR")]
228 YEAR,
229 #[token("MONTH")]
230 MONTH,
231 #[token("DAY")]
232 DAY,
233 #[token("HOURS")]
234 HOURS,
235 #[token("MINUTES")]
236 MINUTES,
237 #[token("SECONDS")]
238 SECONDS,
239 #[token("TIMEZONE")]
240 TIMEZONE,
241 #[token("TZ")]
242 TZ,
243 #[token("NOW")]
244 NOW,
245 #[token("UUID")]
246 UUID,
247 #[token("STRUUID")]
248 STRUUID,
249 #[token("MD5")]
250 MD5,
251 #[token("SHA1")]
252 SHA1,
253 #[token("SHA256")]
254 SHA256,
255 #[token("SHA384")]
256 SHA384,
257 #[token("SHA512")]
258 SHA512,
259 #[token("COALESCE")]
260 COALESCE,
261 #[token("IF")]
262 IF,
263 #[token("STRLANG")]
264 STRLANG,
265 #[token("STRDT")]
266 STRDT,
267 #[token("sameTerm")]
268 sameTerm,
269 #[token("isIRI")]
270 isIRI,
271 #[token("isURI")]
272 isURI,
273 #[token("isBLANK")]
274 isBLANK,
275 #[token("isLITERAL")]
276 isLITERAL,
277 #[token("isNUMERIC")]
278 isNUMERIC,
279 #[token("REGEX")]
280 REGEX,
281 #[token("SUBSTR")]
282 SUBSTR,
283 #[token("REPLACE")]
284 REPLACE,
285 #[token("EXISTS")]
286 EXISTS,
287 #[token("COUNT")]
288 COUNT,
289 #[token("SUM")]
290 SUM,
291 #[token("MIN")]
292 MIN,
293 #[token("MAX")]
294 MAX,
295 #[token("AVG")]
296 AVG,
297 #[token("SAMPLE")]
298 SAMPLE,
299 #[token("GROUP_CONCAT")]
300 GROUP_CONCAT,
301 #[token("SEPARATOR")]
302 SEPARATOR,
303 #[regex("@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*")]
304 LANGTAG,
305 #[token("DoubleZirkumflex")]
306 DoubleZirkumflex,
307 #[regex(r"\d+")]
308 INTEGER,
309 #[regex(r"\d*\.\d+")]
310 DECIMAL,
311 #[regex(r"(?:\d+\.\d*(?:[eE][+-]?\d+))|(?:\.\d+([eE][+-]?\d+))|(?:\d+([eE][+-]?\d+))")]
312 DOUBLE,
313 #[regex(r"\+\d+")]
314 INTEGER_POSITIVE,
315 #[regex(r"\+\d*\.\d+")]
316 DECIMAL_POSITIVE,
317 #[regex(r"\+(?:\d+\.\d*(?:[eE][+-]?\d+))|\+(?:\.\d+([eE][+-]?\d+))|\+(?:\d+([eE][+-]?\d+))")]
318 DOUBLE_POSITIVE,
319 #[regex(r"-\d+")]
320 INTEGER_NEGATIVE,
321 #[regex(r"-\d*\.\d+")]
322 DECIMAL_NEGATIVE,
323 #[regex(r"-(?:\d+\.\d*(?:[eE][+-]?\d+))|-(?:\.\d+([eE][+-]?\d+))|-(?:\d+([eE][+-]?\d+))")]
324 DOUBLE_NEGATIVE,
325 #[token("true")]
326 True,
327 #[token("false")]
328 False,
329 #[regex("'[^\u{27}\u{5C}\u{A}\u{D}]*'")]
330 STRING_LITERAL1,
331 #[regex(r#""([^"\\\x00-\x1F]|\\(["\\bnfrt/]|u[a-fA-F0-9]{4}))*""#)]
332 STRING_LITERAL2,
333 // TODO: add regex
334 #[token("STRING_LITERAL_LONG1")]
335 STRING_LITERAL_LONG1,
336 // TODO: add regex
337 #[token("STRING_LITERAL_LONG2")]
338 STRING_LITERAL_LONG2,
339 #[regex(r"[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}](?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_.-]*[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_-])?:(?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}_0-9:]|%[0-9A-Fa-f])(?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_:\.-]|%[0-9A-Fa-f])*(?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_:-]|%[0-9A-Fa-f])?")]
340 PNAME_LN,
341 // TODO: provide regex https://www.w3.org/TR/sparql11-query/#rBLANK_NODE_LABEL
342 #[token("BLANK_NODE_LABEL")]
343 BLANK_NODE_LABEL,
344 // FIXME: here we want tu use \[\s*\]
345 // but this is causing issues with LBrack.
346 // There is no known fix.
347 // Here is the issue, currently open (14.04.2025)
348 // https://github.com/maciejhirsz/logos/issues/315
349 #[regex(r"\[\]|\[ \]|\[ \]")]
350 ANON,
351
352 // Composite nodes
353 /// QueryUnit => Query
354 QueryUnit,
355 /// Query => Prologue (SelectQuery | ConstructQuery | DescribeQuery | AskQuery) ValuesClause
356 Query,
357 /// Prologue => (BaseDecl | PrefixDecl)*
358 Prologue,
359 /// SelectQuery => SelectClause DatasetClause* WhereClause SolutionModifier
360 SelectQuery,
361 /// ConstructQuery => 'CONSTRUCT' (ConstructTemplate DatasetClause* WhereClause SolutionModifier | DatasetClause* 'WHERE' '{' TriplesTemplate? '}' SolutionModifier)
362 ConstructQuery,
363 /// DescribeQuery => 'DESCRIBE' (VarOrIri VarOrIri* | '*') DatasetClause* WhereClause? SolutionModifier
364 DescribeQuery,
365 /// AskQuery => 'ASK' DatasetClause* WhereClause SolutionModifier
366 AskQuery,
367 /// ValuesClause => ('VALUES' DataBlock)?
368 ValuesClause,
369 /// UpdateUnit => Update
370 UpdateUnit,
371 /// Update => Prologue (UpdateOne (';' Update)?)?
372 Update,
373 /// BaseDecl => 'BASE' 'IRIREF'
374 BaseDecl,
375 /// PrefixDecl => 'PREFIX' 'PNAME_NS' 'IRIREF'
376 PrefixDecl,
377 /// SelectClause => 'SELECT' ('DISTINCT' | 'REDUCED')? ((Var | '(' Expression 'AS' Var ')') (Var | '(' Expression 'AS' Var ')')* | '*')
378 SelectClause,
379 /// DatasetClause => 'FROM' (DefaultGraphClause | NamedGraphClause)
380 DatasetClause,
381 /// WhereClause => 'WHERE'? GroupGraphPattern
382 WhereClause,
383 /// SolutionModifier => GroupClause? HavingClause? OrderClause? LimitOffsetClauses?
384 SolutionModifier,
385 /// SubSelect => SelectClause WhereClause SolutionModifier ValuesClause
386 SubSelect,
387 /// Var => 'VAR1' | 'VAR2'
388 Var,
389 /// Expression => ConditionalOrExpression
390 Expression,
391 /// ConstructTemplate => '{' ConstructTriples? '}'
392 ConstructTemplate,
393 /// TriplesTemplate => TriplesSameSubject ('.' TriplesTemplate?)?
394 TriplesTemplate,
395 /// VarOrIri => Var | iri
396 VarOrIri,
397 /// DefaultGraphClause => SourceSelector
398 DefaultGraphClause,
399 /// NamedGraphClause => 'NAMED' SourceSelector
400 NamedGraphClause,
401 /// SourceSelector => iri
402 SourceSelector,
403 /// iri => 'IRIREF' | PrefixedName
404 iri,
405 /// GroupGraphPattern => '{' (SubSelect | GroupGraphPatternSub) '}'
406 GroupGraphPattern,
407 /// GroupClause => 'GROUP' 'BY' GroupCondition GroupCondition*
408 GroupClause,
409 /// HavingClause => 'HAVING' HavingCondition HavingCondition*
410 HavingClause,
411 /// OrderClause => 'ORDER' 'BY' OrderCondition OrderCondition*
412 OrderClause,
413 /// LimitOffsetClauses => LimitClause OffsetClause? | OffsetClause LimitClause?
414 LimitOffsetClauses,
415 /// GroupCondition => BuiltInCall | FunctionCall | '(' Expression ('AS' Var)? ')' | Var
416 GroupCondition,
417 /// BuiltInCall => Aggregate | 'STR' '(' Expression ')' | 'LANG' '(' Expression ')' | 'LANGMATCHES' '(' Expression ',' Expression ')' | 'DATATYPE' '(' Expression ')' | 'BOUND' '(' Var ')' | 'IRI' '(' Expression ')' | 'URI' '(' Expression ')' | 'BNODE' ('(' Expression ')' | 'NIL') | 'RAND' 'NIL' | 'ABS' '(' Expression ')' | 'CEIL' '(' Expression ')' | 'FLOOR' '(' Expression ')' | 'ROUND' '(' Expression ')' | 'CONCAT' ExpressionList | SubstringExpression | 'STRLEN' '(' Expression ')' | StrReplaceExpression | 'UCASE' '(' Expression ')' | 'LCASE' '(' Expression ')' | 'ENCODE_FOR_URI' '(' Expression ')' | 'CONTAINS' '(' Expression ',' Expression ')' | 'STRSTARTS' '(' Expression ',' Expression ')' | 'STRENDS' '(' Expression ',' Expression ')' | 'STRBEFORE' '(' Expression ',' Expression ')' | 'STRAFTER' '(' Expression ',' Expression ')' | 'YEAR' '(' Expression ')' | 'MONTH' '(' Expression ')' | 'DAY' '(' Expression ')' | 'HOURS' '(' Expression ')' | 'MINUTES' '(' Expression ')' | 'SECONDS' '(' Expression ')' | 'TIMEZONE' '(' Expression ')' | 'TZ' '(' Expression ')' | 'NOW' 'NIL' | 'UUID' 'NIL' | 'STRUUID' 'NIL' | 'MD5' '(' Expression ')' | 'SHA1' '(' Expression ')' | 'SHA256' '(' Expression ')' | 'SHA384' '(' Expression ')' | 'SHA512' '(' Expression ')' | 'COALESCE' ExpressionList | 'IF' '(' Expression ',' Expression ',' Expression ')' | 'STRLANG' '(' Expression ',' Expression ')' | 'STRDT' '(' Expression ',' Expression ')' | 'sameTerm' '(' Expression ',' Expression ')' | 'isIRI' '(' Expression ')' | 'isURI' '(' Expression ')' | 'isBLANK' '(' Expression ')' | 'isLITERAL' '(' Expression ')' | 'isNUMERIC' '(' Expression ')' | RegexExpression | ExistsFunc | NotExistsFunc
418 BuiltInCall,
419 /// FunctionCall => iri ArgList
420 FunctionCall,
421 /// HavingCondition => Constraint
422 HavingCondition,
423 /// Constraint => BrackettedExpression | BuiltInCall | FunctionCall
424 Constraint,
425 /// OrderCondition => ('ASC' | 'DESC') BrackettedExpression | Constraint | Var
426 OrderCondition,
427 /// BrackettedExpression => '(' Expression ')'
428 BrackettedExpression,
429 /// LimitClause => 'LIMIT' 'INTEGER'
430 LimitClause,
431 /// OffsetClause => 'OFFSET' 'INTEGER'
432 OffsetClause,
433 /// DataBlock => InlineDataOneVar | InlineDataFull
434 DataBlock,
435 /// UpdateOne => Load | Clear | Drop | Add | Move | Copy | Create | InsertData | DeleteData | DeleteWhere | Modify
436 UpdateOne,
437 /// Load => 'LOAD' 'SILENT'? iri ('INTO' GraphRef)?
438 Load,
439 /// Clear => 'CLEAR' 'SILENT'? GraphRefAll
440 Clear,
441 /// Drop => 'DROP' 'SILENT'? GraphRefAll
442 Drop,
443 /// Add => 'ADD' 'SILENT'? GraphOrDefault 'TO' GraphOrDefault
444 Add,
445 /// Move => 'MOVE' 'SILENT'? GraphOrDefault 'TO' GraphOrDefault
446 Move,
447 /// Copy => 'COPY' 'SILENT'? GraphOrDefault 'TO' GraphOrDefault
448 Copy,
449 /// Create => 'CREATE' 'SILENT'? GraphRef
450 Create,
451 /// InsertData => 'INSERT_DATA' QuadData
452 InsertData,
453 /// DeleteData => 'DELETE_DATA' QuadData
454 DeleteData,
455 /// DeleteWhere => 'DELETE_WHERE' QuadPattern
456 DeleteWhere,
457 /// Modify => ('WITH' iri)? (DeleteClause InsertClause? | InsertClause) UsingClause* 'WHERE' GroupGraphPattern
458 Modify,
459 /// GraphRef => 'GRAPH' iri
460 GraphRef,
461 /// GraphRefAll => GraphRef | 'DEFAULT' | 'NAMED' | 'ALL'
462 GraphRefAll,
463 /// GraphOrDefault => 'DEFAULT' | 'GRAPH'? iri
464 GraphOrDefault,
465 /// QuadData => '{' Quads '}'
466 QuadData,
467 /// QuadPattern => '{' Quads '}'
468 QuadPattern,
469 /// DeleteClause => 'DELETE' QuadPattern
470 DeleteClause,
471 /// InsertClause => 'INSERT' QuadPattern
472 InsertClause,
473 /// UsingClause => 'USING' (iri | 'NAMED' iri)
474 UsingClause,
475 /// Quads => TriplesTemplate? (QuadsNotTriples '.'? TriplesTemplate?)*
476 Quads,
477 /// QuadsNotTriples => 'GRAPH' VarOrIri '{' TriplesTemplate? '}'
478 QuadsNotTriples,
479 /// TriplesSameSubject => VarOrTerm PropertyListNotEmpty | TriplesNode PropertyList
480 TriplesSameSubject,
481 /// GroupGraphPatternSub => TriplesBlock? (GraphPatternNotTriples '.'? TriplesBlock?)*
482 GroupGraphPatternSub,
483 /// TriplesBlock => TriplesSameSubjectPath ('.' TriplesBlock?)?
484 TriplesBlock,
485 /// GraphPatternNotTriples => GroupOrUnionGraphPattern | OptionalGraphPattern | MinusGraphPattern | GraphGraphPattern | ServiceGraphPattern | Filter | Bind | InlineData
486 GraphPatternNotTriples,
487 /// TriplesSameSubjectPath => VarOrTerm PropertyListPathNotEmpty | TriplesNodePath PropertyListPath
488 TriplesSameSubjectPath,
489 /// GroupOrUnionGraphPattern => GroupGraphPattern ('UNION' GroupGraphPattern)*
490 GroupOrUnionGraphPattern,
491 /// OptionalGraphPattern => 'OPTIONAL' GroupGraphPattern
492 OptionalGraphPattern,
493 /// MinusGraphPattern => 'MINUS' GroupGraphPattern
494 MinusGraphPattern,
495 /// GraphGraphPattern => 'GRAPH' VarOrIri GroupGraphPattern
496 GraphGraphPattern,
497 /// ServiceGraphPattern => 'SERVICE' 'SILENT'? VarOrIri GroupGraphPattern
498 ServiceGraphPattern,
499 /// Filter => 'FILTER' Constraint
500 Filter,
501 /// Bind => 'BIND' '(' Expression 'AS' Var ')'
502 Bind,
503 /// InlineData => 'VALUES' DataBlock
504 InlineData,
505 /// InlineDataOneVar => Var '{' DataBlockValue* '}'
506 InlineDataOneVar,
507 /// InlineDataFull => ('NIL' | '(' Var* ')') '{' ('(' DataBlockValue* ')' | 'NIL')* '}'
508 InlineDataFull,
509 /// DataBlockValue => iri | RDFLiteral | NumericLiteral | BooleanLiteral | 'UNDEF'
510 DataBlockValue,
511 /// RDFLiteral => String ('LANGTAG' | '^^' iri)?
512 RDFLiteral,
513 /// NumericLiteral => NumericLiteralUnsigned | NumericLiteralPositive | NumericLiteralNegative
514 NumericLiteral,
515 /// BooleanLiteral => 'true' | 'false'
516 BooleanLiteral,
517 /// ArgList => 'NIL' | '(' 'DISTINCT'? Expression (',' Expression)* ')'
518 ArgList,
519 /// ExpressionList => 'NIL' | '(' Expression (',' Expression)* ')'
520 ExpressionList,
521 /// ConstructTriples => TriplesSameSubject ('.' ConstructTriples?)?
522 ConstructTriples,
523 /// VarOrTerm => Var | GraphTerm
524 VarOrTerm,
525 /// PropertyListNotEmpty => Verb ObjectList (';' (Verb ObjectList)?)*
526 PropertyListNotEmpty,
527 /// TriplesNode => Collection | BlankNodePropertyList
528 TriplesNode,
529 /// PropertyList => PropertyListNotEmpty?
530 PropertyList,
531 /// Verb => VarOrIri | 'a'
532 Verb,
533 /// ObjectList => Object (',' Object)*
534 ObjectList,
535 /// Object => GraphNode
536 Object,
537 /// GraphNode => VarOrTerm | TriplesNode
538 GraphNode,
539 /// PropertyListPathNotEmpty => (VerbPath | VerbSimple) ObjectListPath (';' ((VerbPath | VerbSimple) ObjectList)?)*
540 PropertyListPathNotEmpty,
541 /// TriplesNodePath => CollectionPath | BlankNodePropertyListPath
542 TriplesNodePath,
543 /// PropertyListPath => PropertyListPathNotEmpty?
544 PropertyListPath,
545 /// VerbPath => Path
546 VerbPath,
547 /// VerbSimple => Var
548 VerbSimple,
549 /// ObjectListPath => ObjectPath (',' ObjectPath)*
550 ObjectListPath,
551 /// Path => PathAlternative
552 Path,
553 /// ObjectPath => GraphNodePath
554 ObjectPath,
555 /// GraphNodePath => VarOrTerm | TriplesNodePath
556 GraphNodePath,
557 /// PathAlternative => PathSequence ('|' PathSequence)*
558 PathAlternative,
559 /// PathSequence => PathEltOrInverse ('/' PathEltOrInverse)*
560 PathSequence,
561 /// PathEltOrInverse => PathElt | '^' PathElt
562 PathEltOrInverse,
563 /// PathElt => PathPrimary PathMod?
564 PathElt,
565 /// PathPrimary => iri | 'a' | '!' PathNegatedPropertySet | '(' Path ')'
566 PathPrimary,
567 /// PathMod => '?' | '*' | '+'
568 PathMod,
569 /// PathNegatedPropertySet => PathOneInPropertySet | '(' (PathOneInPropertySet ('|' PathOneInPropertySet)*)? ')'
570 PathNegatedPropertySet,
571 /// PathOneInPropertySet => iri | 'a' | '^' (iri | 'a')
572 PathOneInPropertySet,
573 /// Integer => 'INTEGER'
574 Integer,
575 /// Collection => '(' GraphNode GraphNode* ')'
576 Collection,
577 /// BlankNodePropertyList => '[' PropertyListNotEmpty ']'
578 BlankNodePropertyList,
579 /// CollectionPath => '(' GraphNodePath GraphNodePath* ')'
580 CollectionPath,
581 /// BlankNodePropertyListPath => '[' PropertyListPathNotEmpty ']'
582 BlankNodePropertyListPath,
583 /// GraphTerm => iri | RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | 'NIL'
584 GraphTerm,
585 /// BlankNode => 'BLANK_NODE_LABEL' | 'ANON'
586 BlankNode,
587 /// ConditionalOrExpression => ConditionalAndExpression ('||' ConditionalAndExpression)*
588 ConditionalOrExpression,
589 /// ConditionalAndExpression => ValueLogical ('&&' ValueLogical)*
590 ConditionalAndExpression,
591 /// ValueLogical => RelationalExpression
592 ValueLogical,
593 /// RelationalExpression => NumericExpression ('=' NumericExpression | '!=' NumericExpression | '<' NumericExpression | '>' NumericExpression | '<=' NumericExpression | '>=' NumericExpression | 'IN' ExpressionList | 'NOT' 'IN' ExpressionList)?
594 RelationalExpression,
595 /// NumericExpression => AdditiveExpression
596 NumericExpression,
597 /// AdditiveExpression => MultiplicativeExpression ('+' MultiplicativeExpression | '-' MultiplicativeExpression | (NumericLiteralPositive | NumericLiteralNegative) ('*' UnaryExpression | '/' UnaryExpression)*)*
598 AdditiveExpression,
599 /// MultiplicativeExpression => UnaryExpression ('*' UnaryExpression | '/' UnaryExpression)*
600 MultiplicativeExpression,
601 /// NumericLiteralPositive => 'INTEGER_POSITIVE' | 'DECIMAL_POSITIVE' | 'DOUBLE_POSITIVE'
602 NumericLiteralPositive,
603 /// NumericLiteralNegative => 'INTEGER_NEGATIVE' | 'DECIMAL_NEGATIVE' | 'DOUBLE_NEGATIVE'
604 NumericLiteralNegative,
605 /// UnaryExpression => '!' PrimaryExpression | '+' PrimaryExpression | '-' PrimaryExpression | PrimaryExpression
606 UnaryExpression,
607 /// PrimaryExpression => BrackettedExpression | BuiltInCall | iriOrFunction | RDFLiteral | NumericLiteral | BooleanLiteral | Var
608 PrimaryExpression,
609 /// iriOrFunction => iri ArgList?
610 iriOrFunction,
611 /// Aggregate => 'COUNT' '(' 'DISTINCT'? ('*' | Expression) ')' | 'SUM' '(' 'DISTINCT'? Expression ')' | 'MIN' '(' 'DISTINCT'? Expression ')' | 'MAX' '(' 'DISTINCT'? Expression ')' | 'AVG' '(' 'DISTINCT'? Expression ')' | 'SAMPLE' '(' 'DISTINCT'? Expression ')' | 'GROUP_CONCAT' '(' 'DISTINCT'? Expression (';' 'SEPARATOR' '=' String)? ')'
612 Aggregate,
613 /// SubstringExpression => 'SUBSTR' '(' Expression ',' Expression (',' Expression)? ')'
614 SubstringExpression,
615 /// StrReplaceExpression => 'REPLACE' '(' Expression ',' Expression ',' Expression (',' Expression)? ')'
616 StrReplaceExpression,
617 /// RegexExpression => 'REGEX' '(' Expression ',' Expression (',' Expression)? ')'
618 RegexExpression,
619 /// ExistsFunc => 'EXISTS' GroupGraphPattern
620 ExistsFunc,
621 /// NotExistsFunc => 'NOT' 'EXISTS' GroupGraphPattern
622 NotExistsFunc,
623 /// String => 'STRING_LITERAL1' | 'STRING_LITERAL2' | 'STRING_LITERAL_LONG1' | 'STRING_LITERAL_LONG2'
624 String,
625 /// NumericLiteralUnsigned => 'INTEGER' | 'DECIMAL' | 'DOUBLE'
626 NumericLiteralUnsigned,
627 /// PrefixedName => 'PNAME_LN' | 'PNAME_NS'
628 PrefixedName,
629}