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