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}