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}