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