@traqula/parser-sparql-1-1 0.0.1-alpha.176

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright © 2024–now Jitse De Smet
4
+ Comunica Association and Ghent University – imec, Belgium
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in
14
+ all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
+ THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,87 @@
1
+ <p align="center">
2
+ <img alt="Traqula logo" width="70%" style="border-radius: 20px" src="/assets/white-on-red/logo-white-on-red-lettered-social.png">
3
+ </p>
4
+
5
+ <p align="center">
6
+ <strong>A query language transpiler framework for JavaScript</strong>
7
+ </p>
8
+
9
+ **WARNING:** V2 will come shortly and will have lots of breaking changes.
10
+
11
+ # Traqula parser engine for SPARQL 1.1
12
+
13
+ Traqula Sparql 1.1 is a [SPARQL 1.1](https://www.w3.org/TR/sparql11-query/#grammar) query parser for TypeScript.
14
+
15
+ ## Installation
16
+
17
+ ```bash
18
+ npm install @traqula/parser-sparql-1-1
19
+ ```
20
+
21
+ or
22
+
23
+ ```bash
24
+ yarn add @traqula/parser-sparql-1-1
25
+ ```
26
+
27
+ ## Import
28
+
29
+ Either through ESM import:
30
+
31
+ ```javascript
32
+ import {Parser} from 'engines/parser-sparql-1-1';
33
+ ```
34
+
35
+ _or_ CJS require:
36
+
37
+ ```javascript
38
+ const Parser = require('engines/parser-sparql-1-1').Parser;
39
+ ```
40
+
41
+ ## Usage
42
+
43
+ This package contains a `Parser` that is able to parse SPARQL 1.1 queries:
44
+
45
+ ```typescript
46
+ const parser = new Parser();
47
+ const abstractSyntaxTree = parser.parse('SELECT * { ?s ?p ?o }');
48
+ ```
49
+
50
+ The package also contains multiple parserBuilders.
51
+ These builders can be used either to consume to a parser,
52
+ or to usage as a starting point for your own grammar.
53
+
54
+ ### Consuming parserBuilder to parser
55
+
56
+ At the core of Traqula, parser are constructed of multiple parser rules that have been consumed by the builder.
57
+ This consumption returns a parser that can parse strings starting from any grammar rule.
58
+
59
+ The `sparql11ParserBuilder` for example contains both the rules `queryOrUpdate` and `path` (among many others).
60
+ The consumption of `sparql11ParserBuilder` will thus return an object that has function `queryOrUpdate` and `path`.
61
+ Calling those function with a string will cause that string to be parsed using the appropriate rule as a starting rule.
62
+
63
+ ```typescript
64
+ const parser: {
65
+ queryOrUpdate: (input: string) => SparqlQuery;
66
+ path: (input: string) => PropertyPath | IriTerm;
67
+ } = sparql11ParserBuilder.consumeToParser({
68
+ tokenVocabulary: l.sparql11Tokens.build(),
69
+ }, {
70
+ parseMode: new Set([ gram.canParseVars, gram.canCreateBlankNodes ]),
71
+ dataFactory: new DataFactory(),
72
+ });
73
+ ```
74
+
75
+ ### Constructing a new grammar from an existing one
76
+
77
+ The builders can also be used to construct new parsers.
78
+ As an example the `triplesBlockParserBuilder` is created by merging the `objectListBuilder` with some new rules.
79
+
80
+ ## Configuration
81
+
82
+ Optionally, the following parameters can be set in the `Parser` constructor:
83
+
84
+ * `dataFactory`: A custom [RDFJS DataFactory](http://rdf.js.org/#datafactory-interface) to construct terms and triples. _(Default: `require('@rdfjs/data-model')`)_
85
+ * `baseIRI`: An initial default base IRI. _(Default: none)_
86
+ * `prefixes`: An initial map of prefixes
87
+ * `skipValidation`: Can be used to disable the validation that used variables in a select clause are in scope.
@@ -0,0 +1,210 @@
1
+ import { ParserBuilder } from '@traqula/core';
2
+ import type { Query, SparqlQuery, Update, SparqlGrammarRule } from '@traqula/rules-sparql-1-1';
3
+ import { gram, SparqlParser } from '@traqula/rules-sparql-1-1';
4
+ export declare const sparql11ParserBuilder: ParserBuilder<import("@traqula/rules-sparql-1-1").SparqlContext, "string" | "object" | "filter" | "add" | "clear" | "copy" | "move" | "var" | "path" | "drop" | "load" | "builtInStr" | "builtInLang" | "builtInLangmatches" | "builtInDatatype" | "builtInBound" | "builtInIri" | "builtInUri" | "builtInBnode" | "builtInRand" | "builtInAbs" | "builtInCeil" | "builtInFloor" | "builtInRound" | "builtInConcat" | "builtInStrlen" | "builtInUcase" | "builtInLcase" | "builtInEncode_for_uri" | "builtInContains" | "builtInStrstarts" | "builtInStrends" | "builtInStrbefore" | "builtInStrafter" | "builtInYear" | "builtInMonth" | "builtInDay" | "builtInHours" | "builtInMinutes" | "builtInSeconds" | "builtInTimezone" | "builtInTz" | "builtInNow" | "builtInUuid" | "builtInStruuid" | "builtInMd5" | "builtInSha1" | "builtInSha256" | "builtInSha384" | "builtInSha512" | "builtInCoalesce" | "builtInIf" | "builtInStrlang" | "builtInStrdt" | "builtInSameterm" | "builtInIsiri" | "builtInIsuri" | "builtInIsblank" | "builtInIsliteral" | "builtInIsnumeric" | "builtInRegex" | "builtInSubstr" | "builtInReplace" | "builtInExists" | "builtInNotexists" | "builtInCount" | "builtInSum" | "builtInMin" | "builtInMax" | "builtInAvg" | "builtInSample" | "builtInGroup_concat" | "quads" | "functionCall" | "create" | "bind" | "aggregate" | "rdfLiteral" | "iri" | "numericLiteral" | "numericLiteralUnsigned" | "numericLiteralPositive" | "numericLiteralNegative" | "booleanLiteral" | "prefixedName" | "blankNode" | "datasetClause" | "defaultGraphClause" | "namedGraphClause" | "sourceSelector" | "prologue" | "baseDecl" | "prefixDecl" | "verb" | "varOrIri" | "VerbA" | "varOrTerm" | "graphTerm" | "pathAlternative" | "pathSequence" | "pathEltOrInverse" | "pathElt" | "pathMod" | "pathPrimary" | "pathNegatedPropertySet" | "pathOneInPropertySet" | "triplesBlock" | "triplesSameSubjectPath" | "propertyListPathNotEmpty" | "propertyListNotEmpty" | "propertyListPath" | "propertyList" | "triplesNodePath" | "triplesNode" | "triplesSameSubject" | "triplesTemplate" | "verbPath" | "verbSimple" | "objectList" | "objectListPath" | "graphNodePath" | "graphNode" | "objectPath" | "collection" | "blankNodePropertyList" | "collectionPath" | "blankNodePropertyListPath" | "whereClause" | "groupGraphPattern" | "subSelect" | "groupGraphPatternSub" | "graphPatternNotTriples" | "groupOrUnionGraphPattern" | "optionalGraphPattern" | "minusGraphPattern" | "graphGraphPattern" | "serviceGraphPattern" | "inlineData" | "expression" | "valuesClause" | "dataBlock" | "inlineDataOneVar" | "inlineDataFull" | "dataBlockValue" | "constraint" | "brackettedExpression" | "builtInCall" | "argList" | "expressionList" | "conditionalOrExpression" | "iriOrFunction" | "conditionalAndExpression" | "valueLogical" | "relationalExpression" | "numericExpression" | "additiveExpression" | "multiplicativeExpression" | "unaryExpression" | "primaryExpression" | "solutionModifier" | "limitOffsetClauses" | "groupClause" | "havingClause" | "orderClause" | "groupCondition" | "havingCondition" | "orderCondition" | "limitClause" | "offsetClause" | "selectQuery" | "constructQuery" | "describeQuery" | "askQuery" | "selectClause" | "constructTemplate" | "constructTriples" | "update1" | "insertData" | "deleteData" | "deleteWhere" | "modify" | "graphRef" | "graphRefAll" | "graphOrDefault" | "quadData" | "quadPattern" | "deleteClause" | "insertClause" | "usingClause" | "quadsNotTriples" | "queryOrUpdate", {
5
+ string: import("@traqula/core").ParserRule<any, "string"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "string", string, undefined> & import("@traqula/core").GeneratorRule<undefined, "string", string, undefined>;
6
+ object: import("@traqula/core").ParserRule<any, "object"> & SparqlGrammarRule<"object", import("@traqula/rules-sparql-1-1").Triple[], Pick<import("@traqula/rules-sparql-1-1").Triple, "subject" | "predicate">>;
7
+ filter: import("@traqula/core").ParserRule<any, "filter"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "filter", import("@traqula/rules-sparql-1-1").FilterPattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "filter", import("@traqula/rules-sparql-1-1").FilterPattern, undefined>;
8
+ add: import("@traqula/core").ParserRule<any, "add"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "add", import("@traqula/rules-sparql-1-1").CopyMoveAddOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "add", import("@traqula/rules-sparql-1-1").CopyMoveAddOperation, undefined>;
9
+ clear: import("@traqula/core").ParserRule<any, "clear"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "clear", import("@traqula/rules-sparql-1-1").ClearDropOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "clear", import("@traqula/rules-sparql-1-1").ClearDropOperation, undefined>;
10
+ copy: import("@traqula/core").ParserRule<any, "copy"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "copy", import("@traqula/rules-sparql-1-1").CopyMoveAddOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "copy", import("@traqula/rules-sparql-1-1").CopyMoveAddOperation, undefined>;
11
+ move: import("@traqula/core").ParserRule<any, "move"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "move", import("@traqula/rules-sparql-1-1").CopyMoveAddOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "move", import("@traqula/rules-sparql-1-1").CopyMoveAddOperation, undefined>;
12
+ var: import("@traqula/core").ParserRule<any, "var"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "var", import("@rdfjs/types").Variable, undefined> & import("@traqula/core").GeneratorRule<undefined, "var", import("@rdfjs/types").Variable, undefined>;
13
+ path: import("@traqula/core").ParserRule<any, "path"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "path", import("@traqula/rules-sparql-1-1").PropertyPath | import("@traqula/rules-sparql-1-1").IriTerm, undefined> & import("@traqula/core").GeneratorRule<undefined, "path", import("@traqula/rules-sparql-1-1").PropertyPath | import("@traqula/rules-sparql-1-1").IriTerm, undefined>;
14
+ drop: import("@traqula/core").ParserRule<any, "drop"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "drop", import("@traqula/rules-sparql-1-1").ClearDropOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "drop", import("@traqula/rules-sparql-1-1").ClearDropOperation, undefined>;
15
+ load: import("@traqula/core").ParserRule<any, "load"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "load", import("@traqula/rules-sparql-1-1").LoadOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "load", import("@traqula/rules-sparql-1-1").LoadOperation, undefined>;
16
+ builtInStr: import("@traqula/core").ParserRule<any, "builtInStr"> & gram.RuleDefExpressionFunctionX<"builtInStr", [import("@traqula/rules-sparql-1-1").Expression]>;
17
+ builtInLang: import("@traqula/core").ParserRule<any, "builtInLang"> & gram.RuleDefExpressionFunctionX<"builtInLang", [import("@traqula/rules-sparql-1-1").Expression]>;
18
+ builtInLangmatches: import("@traqula/core").ParserRule<any, "builtInLangmatches"> & gram.RuleDefExpressionFunctionX<"builtInLangmatches", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
19
+ builtInDatatype: import("@traqula/core").ParserRule<any, "builtInDatatype"> & gram.RuleDefExpressionFunctionX<"builtInDatatype", [import("@traqula/rules-sparql-1-1").Expression]>;
20
+ builtInBound: import("@traqula/core").ParserRule<any, "builtInBound"> & gram.RuleDefExpressionFunctionX<"builtInBound", [import("@rdfjs/types").Variable]>;
21
+ builtInIri: import("@traqula/core").ParserRule<any, "builtInIri"> & gram.RuleDefExpressionFunctionX<"builtInIri", [import("@traqula/rules-sparql-1-1").Expression]>;
22
+ builtInUri: import("@traqula/core").ParserRule<any, "builtInUri"> & gram.RuleDefExpressionFunctionX<"builtInUri", [import("@traqula/rules-sparql-1-1").Expression]>;
23
+ builtInBnode: import("@traqula/core").ParserRule<any, "builtInBnode"> & gram.RuleDefExpressionFunctionX<"builtInBnode", [] | [import("@traqula/rules-sparql-1-1").Expression]>;
24
+ builtInRand: import("@traqula/core").ParserRule<any, "builtInRand"> & gram.RuleDefExpressionFunctionX<"builtInRand", []>;
25
+ builtInAbs: import("@traqula/core").ParserRule<any, "builtInAbs"> & gram.RuleDefExpressionFunctionX<"builtInAbs", [import("@traqula/rules-sparql-1-1").Expression]>;
26
+ builtInCeil: import("@traqula/core").ParserRule<any, "builtInCeil"> & gram.RuleDefExpressionFunctionX<"builtInCeil", [import("@traqula/rules-sparql-1-1").Expression]>;
27
+ builtInFloor: import("@traqula/core").ParserRule<any, "builtInFloor"> & gram.RuleDefExpressionFunctionX<"builtInFloor", [import("@traqula/rules-sparql-1-1").Expression]>;
28
+ builtInRound: import("@traqula/core").ParserRule<any, "builtInRound"> & gram.RuleDefExpressionFunctionX<"builtInRound", [import("@traqula/rules-sparql-1-1").Expression]>;
29
+ builtInConcat: import("@traqula/core").ParserRule<any, "builtInConcat"> & gram.RuleDefExpressionFunctionX<"builtInConcat", import("@traqula/rules-sparql-1-1").Expression[]>;
30
+ builtInStrlen: import("@traqula/core").ParserRule<any, "builtInStrlen"> & gram.RuleDefExpressionFunctionX<"builtInStrlen", [import("@traqula/rules-sparql-1-1").Expression]>;
31
+ builtInUcase: import("@traqula/core").ParserRule<any, "builtInUcase"> & gram.RuleDefExpressionFunctionX<"builtInUcase", [import("@traqula/rules-sparql-1-1").Expression]>;
32
+ builtInLcase: import("@traqula/core").ParserRule<any, "builtInLcase"> & gram.RuleDefExpressionFunctionX<"builtInLcase", [import("@traqula/rules-sparql-1-1").Expression]>;
33
+ builtInEncode_for_uri: import("@traqula/core").ParserRule<any, "builtInEncode_for_uri"> & gram.RuleDefExpressionFunctionX<"builtInEncode_for_uri", [import("@traqula/rules-sparql-1-1").Expression]>;
34
+ builtInContains: import("@traqula/core").ParserRule<any, "builtInContains"> & gram.RuleDefExpressionFunctionX<"builtInContains", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
35
+ builtInStrstarts: import("@traqula/core").ParserRule<any, "builtInStrstarts"> & gram.RuleDefExpressionFunctionX<"builtInStrstarts", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
36
+ builtInStrends: import("@traqula/core").ParserRule<any, "builtInStrends"> & gram.RuleDefExpressionFunctionX<"builtInStrends", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
37
+ builtInStrbefore: import("@traqula/core").ParserRule<any, "builtInStrbefore"> & gram.RuleDefExpressionFunctionX<"builtInStrbefore", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
38
+ builtInStrafter: import("@traqula/core").ParserRule<any, "builtInStrafter"> & gram.RuleDefExpressionFunctionX<"builtInStrafter", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
39
+ builtInYear: import("@traqula/core").ParserRule<any, "builtInYear"> & gram.RuleDefExpressionFunctionX<"builtInYear", [import("@traqula/rules-sparql-1-1").Expression]>;
40
+ builtInMonth: import("@traqula/core").ParserRule<any, "builtInMonth"> & gram.RuleDefExpressionFunctionX<"builtInMonth", [import("@traqula/rules-sparql-1-1").Expression]>;
41
+ builtInDay: import("@traqula/core").ParserRule<any, "builtInDay"> & gram.RuleDefExpressionFunctionX<"builtInDay", [import("@traqula/rules-sparql-1-1").Expression]>;
42
+ builtInHours: import("@traqula/core").ParserRule<any, "builtInHours"> & gram.RuleDefExpressionFunctionX<"builtInHours", [import("@traqula/rules-sparql-1-1").Expression]>;
43
+ builtInMinutes: import("@traqula/core").ParserRule<any, "builtInMinutes"> & gram.RuleDefExpressionFunctionX<"builtInMinutes", [import("@traqula/rules-sparql-1-1").Expression]>;
44
+ builtInSeconds: import("@traqula/core").ParserRule<any, "builtInSeconds"> & gram.RuleDefExpressionFunctionX<"builtInSeconds", [import("@traqula/rules-sparql-1-1").Expression]>;
45
+ builtInTimezone: import("@traqula/core").ParserRule<any, "builtInTimezone"> & gram.RuleDefExpressionFunctionX<"builtInTimezone", [import("@traqula/rules-sparql-1-1").Expression]>;
46
+ builtInTz: import("@traqula/core").ParserRule<any, "builtInTz"> & gram.RuleDefExpressionFunctionX<"builtInTz", [import("@traqula/rules-sparql-1-1").Expression]>;
47
+ builtInNow: import("@traqula/core").ParserRule<any, "builtInNow"> & gram.RuleDefExpressionFunctionX<"builtInNow", []>;
48
+ builtInUuid: import("@traqula/core").ParserRule<any, "builtInUuid"> & gram.RuleDefExpressionFunctionX<"builtInUuid", []>;
49
+ builtInStruuid: import("@traqula/core").ParserRule<any, "builtInStruuid"> & gram.RuleDefExpressionFunctionX<"builtInStruuid", []>;
50
+ builtInMd5: import("@traqula/core").ParserRule<any, "builtInMd5"> & gram.RuleDefExpressionFunctionX<"builtInMd5", [import("@traqula/rules-sparql-1-1").Expression]>;
51
+ builtInSha1: import("@traqula/core").ParserRule<any, "builtInSha1"> & gram.RuleDefExpressionFunctionX<"builtInSha1", [import("@traqula/rules-sparql-1-1").Expression]>;
52
+ builtInSha256: import("@traqula/core").ParserRule<any, "builtInSha256"> & gram.RuleDefExpressionFunctionX<"builtInSha256", [import("@traqula/rules-sparql-1-1").Expression]>;
53
+ builtInSha384: import("@traqula/core").ParserRule<any, "builtInSha384"> & gram.RuleDefExpressionFunctionX<"builtInSha384", [import("@traqula/rules-sparql-1-1").Expression]>;
54
+ builtInSha512: import("@traqula/core").ParserRule<any, "builtInSha512"> & gram.RuleDefExpressionFunctionX<"builtInSha512", [import("@traqula/rules-sparql-1-1").Expression]>;
55
+ builtInCoalesce: import("@traqula/core").ParserRule<any, "builtInCoalesce"> & gram.RuleDefExpressionFunctionX<"builtInCoalesce", import("@traqula/rules-sparql-1-1").Expression[]>;
56
+ builtInIf: import("@traqula/core").ParserRule<any, "builtInIf"> & gram.RuleDefExpressionFunctionX<"builtInIf", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
57
+ builtInStrlang: import("@traqula/core").ParserRule<any, "builtInStrlang"> & gram.RuleDefExpressionFunctionX<"builtInStrlang", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
58
+ builtInStrdt: import("@traqula/core").ParserRule<any, "builtInStrdt"> & gram.RuleDefExpressionFunctionX<"builtInStrdt", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
59
+ builtInSameterm: import("@traqula/core").ParserRule<any, "builtInSameterm"> & gram.RuleDefExpressionFunctionX<"builtInSameterm", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
60
+ builtInIsiri: import("@traqula/core").ParserRule<any, "builtInIsiri"> & gram.RuleDefExpressionFunctionX<"builtInIsiri", [import("@traqula/rules-sparql-1-1").Expression]>;
61
+ builtInIsuri: import("@traqula/core").ParserRule<any, "builtInIsuri"> & gram.RuleDefExpressionFunctionX<"builtInIsuri", [import("@traqula/rules-sparql-1-1").Expression]>;
62
+ builtInIsblank: import("@traqula/core").ParserRule<any, "builtInIsblank"> & gram.RuleDefExpressionFunctionX<"builtInIsblank", [import("@traqula/rules-sparql-1-1").Expression]>;
63
+ builtInIsliteral: import("@traqula/core").ParserRule<any, "builtInIsliteral"> & gram.RuleDefExpressionFunctionX<"builtInIsliteral", [import("@traqula/rules-sparql-1-1").Expression]>;
64
+ builtInIsnumeric: import("@traqula/core").ParserRule<any, "builtInIsnumeric"> & gram.RuleDefExpressionFunctionX<"builtInIsnumeric", [import("@traqula/rules-sparql-1-1").Expression]>;
65
+ builtInRegex: import("@traqula/core").ParserRule<any, "builtInRegex"> & gram.RuleDefExpressionFunctionX<"builtInRegex", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression] | [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
66
+ builtInSubstr: import("@traqula/core").ParserRule<any, "builtInSubstr"> & gram.RuleDefExpressionFunctionX<"builtInSubstr", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression] | [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
67
+ builtInReplace: import("@traqula/core").ParserRule<any, "builtInReplace"> & gram.RuleDefExpressionFunctionX<"builtInReplace", [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression] | [import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression, import("@traqula/rules-sparql-1-1").Expression]>;
68
+ builtInExists: import("@traqula/core").ParserRule<any, "builtInExists"> & gram.RuleDefExpressionFunctionX<"builtInExists", [import("@traqula/rules-sparql-1-1").Pattern]>;
69
+ builtInNotexists: import("@traqula/core").ParserRule<any, "builtInNotexists"> & gram.RuleDefExpressionFunctionX<"builtInNotexists", [import("@traqula/rules-sparql-1-1").Pattern]>;
70
+ builtInCount: import("@traqula/core").ParserRule<any, "builtInCount"> & gram.RuleDefExpressionAggregatorX<"builtInCount">;
71
+ builtInSum: import("@traqula/core").ParserRule<any, "builtInSum"> & gram.RuleDefExpressionAggregatorX<"builtInSum">;
72
+ builtInMin: import("@traqula/core").ParserRule<any, "builtInMin"> & gram.RuleDefExpressionAggregatorX<"builtInMin">;
73
+ builtInMax: import("@traqula/core").ParserRule<any, "builtInMax"> & gram.RuleDefExpressionAggregatorX<"builtInMax">;
74
+ builtInAvg: import("@traqula/core").ParserRule<any, "builtInAvg"> & gram.RuleDefExpressionAggregatorX<"builtInAvg">;
75
+ builtInSample: import("@traqula/core").ParserRule<any, "builtInSample"> & gram.RuleDefExpressionAggregatorX<"builtInSample">;
76
+ builtInGroup_concat: import("@traqula/core").ParserRule<any, "builtInGroup_concat"> & SparqlGrammarRule<"builtInGroup_concat", import("@traqula/rules-sparql-1-1").AggregateExpression>;
77
+ quads: import("@traqula/core").ParserRule<any, "quads"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "quads", import("@traqula/rules-sparql-1-1").Quads[], undefined> & import("@traqula/core").GeneratorRule<undefined, "quads", import("@traqula/rules-sparql-1-1").Quads[], undefined>;
78
+ functionCall: import("@traqula/core").ParserRule<any, "functionCall"> & SparqlGrammarRule<"functionCall", import("@traqula/rules-sparql-1-1").FunctionCallExpression>;
79
+ create: import("@traqula/core").ParserRule<any, "create"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "create", import("@traqula/rules-sparql-1-1").CreateOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "create", import("@traqula/rules-sparql-1-1").CreateOperation, undefined>;
80
+ bind: import("@traqula/core").ParserRule<any, "bind"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "bind", import("@traqula/rules-sparql-1-1").BindPattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "bind", import("@traqula/rules-sparql-1-1").BindPattern, undefined>;
81
+ aggregate: import("@traqula/core").ParserRule<any, "aggregate"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "aggregate", import("@traqula/rules-sparql-1-1").AggregateExpression, undefined> & import("@traqula/core").GeneratorRule<undefined, "aggregate", import("@traqula/rules-sparql-1-1").AggregateExpression, undefined>;
82
+ rdfLiteral: import("@traqula/core").ParserRule<any, "rdfLiteral"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "rdfLiteral", import("@rdfjs/types").Literal, undefined> & import("@traqula/core").GeneratorRule<undefined, "rdfLiteral", import("@rdfjs/types").Literal, undefined>;
83
+ iri: import("@traqula/core").ParserRule<any, "iri"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "iri", import("@traqula/rules-sparql-1-1").IriTerm, undefined> & import("@traqula/core").GeneratorRule<undefined, "iri", import("@traqula/rules-sparql-1-1").IriTerm, undefined>;
84
+ numericLiteral: import("@traqula/core").ParserRule<any, "numericLiteral"> & SparqlGrammarRule<"numericLiteral", import("@rdfjs/types").Literal>;
85
+ numericLiteralUnsigned: import("@traqula/core").ParserRule<any, "numericLiteralUnsigned"> & SparqlGrammarRule<"numericLiteralUnsigned", import("@rdfjs/types").Literal>;
86
+ numericLiteralPositive: import("@traqula/core").ParserRule<any, "numericLiteralPositive"> & SparqlGrammarRule<"numericLiteralPositive", import("@rdfjs/types").Literal>;
87
+ numericLiteralNegative: import("@traqula/core").ParserRule<any, "numericLiteralNegative"> & SparqlGrammarRule<"numericLiteralNegative", import("@rdfjs/types").Literal>;
88
+ booleanLiteral: import("@traqula/core").ParserRule<any, "booleanLiteral"> & SparqlGrammarRule<"booleanLiteral", import("@rdfjs/types").Literal>;
89
+ prefixedName: import("@traqula/core").ParserRule<any, "prefixedName"> & SparqlGrammarRule<"prefixedName", import("@traqula/rules-sparql-1-1").IriTerm>;
90
+ blankNode: import("@traqula/core").ParserRule<any, "blankNode"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "blankNode", import("@rdfjs/types").BlankNode, undefined> & import("@traqula/core").GeneratorRule<undefined, "blankNode", import("@rdfjs/types").BlankNode, undefined>;
91
+ datasetClause: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "datasetClause", gram.IDatasetClause, undefined>;
92
+ defaultGraphClause: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "defaultGraphClause", import("@traqula/rules-sparql-1-1").IriTerm, undefined>;
93
+ namedGraphClause: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "namedGraphClause", import("@traqula/rules-sparql-1-1").IriTerm, undefined>;
94
+ sourceSelector: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "sourceSelector", import("@traqula/rules-sparql-1-1").IriTerm, undefined>;
95
+ prologue: import("@traqula/core").ParserRule<any, "prologue"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "prologue", Pick<import("@traqula/rules-sparql-1-1").BaseQuery, "base" | "prefixes">, undefined> & import("@traqula/core").GeneratorRule<undefined, "prologue", Pick<import("@traqula/rules-sparql-1-1").BaseQuery, "base" | "prefixes">, undefined>;
96
+ baseDecl: import("@traqula/core").ParserRule<any, "baseDecl"> & SparqlGrammarRule<"baseDecl", string>;
97
+ prefixDecl: import("@traqula/core").ParserRule<any, "prefixDecl"> & SparqlGrammarRule<"prefixDecl", [string, string]>;
98
+ verb: import("@traqula/core").ParserRule<any, "verb"> & SparqlGrammarRule<"verb", import("@rdfjs/types").Variable | import("@traqula/rules-sparql-1-1").IriTerm>;
99
+ varOrIri: import("@traqula/core").ParserRule<any, "varOrIri"> & SparqlGrammarRule<"varOrIri", import("@rdfjs/types").Variable | import("@traqula/rules-sparql-1-1").IriTerm>;
100
+ VerbA: import("@traqula/core").ParserRule<any, "VerbA"> & SparqlGrammarRule<"VerbA", import("@traqula/rules-sparql-1-1").VerbA>;
101
+ varOrTerm: import("@traqula/core").ParserRule<any, "varOrTerm"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "varOrTerm", import("@traqula/rules-sparql-1-1").Term, undefined> & import("@traqula/core").GeneratorRule<undefined, "varOrTerm", import("@traqula/rules-sparql-1-1").Term, undefined>;
102
+ graphTerm: import("@traqula/core").ParserRule<any, "graphTerm"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "graphTerm", import("@traqula/rules-sparql-1-1").GraphTerm, undefined> & import("@traqula/core").GeneratorRule<undefined, "graphTerm", import("@traqula/rules-sparql-1-1").GraphTerm, undefined>;
103
+ pathAlternative: import("@traqula/core").ParserRule<any, "pathAlternative"> & SparqlGrammarRule<"pathAlternative", import("@traqula/rules-sparql-1-1").PropertyPath | import("@traqula/rules-sparql-1-1").IriTerm>;
104
+ pathSequence: import("@traqula/core").ParserRule<any, "pathSequence"> & SparqlGrammarRule<"pathSequence", import("@traqula/rules-sparql-1-1").PropertyPath | import("@traqula/rules-sparql-1-1").IriTerm>;
105
+ pathEltOrInverse: import("@traqula/core").ParserRule<any, "pathEltOrInverse"> & SparqlGrammarRule<"pathEltOrInverse", import("@traqula/rules-sparql-1-1").PropertyPath | import("@traqula/rules-sparql-1-1").IriTerm>;
106
+ pathElt: import("@traqula/core").ParserRule<any, "pathElt"> & SparqlGrammarRule<"pathElt", import("@traqula/rules-sparql-1-1").PropertyPath | import("@traqula/rules-sparql-1-1").IriTerm>;
107
+ pathMod: import("@traqula/core").ParserRule<any, "pathMod"> & SparqlGrammarRule<"pathMod", "?" | "*" | "+">;
108
+ pathPrimary: import("@traqula/core").ParserRule<any, "pathPrimary"> & SparqlGrammarRule<"pathPrimary", import("@traqula/rules-sparql-1-1").PropertyPath | import("@traqula/rules-sparql-1-1").IriTerm>;
109
+ pathNegatedPropertySet: import("@traqula/core").ParserRule<any, "pathNegatedPropertySet"> & SparqlGrammarRule<"pathNegatedPropertySet", [import("@traqula/rules-sparql-1-1").IriTermOrElt] | [{
110
+ type: "path";
111
+ pathType: "|";
112
+ items: (import("@traqula/rules-sparql-1-1").IriTermOrElt)[];
113
+ }]>;
114
+ pathOneInPropertySet: import("@traqula/core").ParserRule<any, "pathOneInPropertySet"> & SparqlGrammarRule<"pathOneInPropertySet", import("@traqula/rules-sparql-1-1").IriTermOrElt>;
115
+ triplesBlock: import("@traqula/core").ParserRule<any, "triplesBlock"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "triplesBlock", import("@traqula/rules-sparql-1-1").BgpPattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "triplesBlock", import("@traqula/rules-sparql-1-1").BgpPattern, undefined>;
116
+ triplesSameSubjectPath: import("@traqula/core").ParserRule<any, "triplesSameSubjectPath"> & SparqlGrammarRule<"triplesSameSubjectPath", import("@traqula/rules-sparql-1-1").Triple[]>;
117
+ propertyListPathNotEmpty: import("@traqula/core").ParserRule<any, "propertyListPathNotEmpty"> & SparqlGrammarRule<"propertyListPathNotEmpty", import("@traqula/rules-sparql-1-1").Triple[], Pick<import("@traqula/rules-sparql-1-1").Triple, "subject">>;
118
+ propertyListNotEmpty: import("@traqula/core").ParserRule<any, "propertyListNotEmpty"> & SparqlGrammarRule<"propertyListNotEmpty", import("@traqula/rules-sparql-1-1").Triple[], Pick<import("@traqula/rules-sparql-1-1").Triple, "subject">>;
119
+ propertyListPath: import("@traqula/core").ParserRule<any, "propertyListPath"> & SparqlGrammarRule<"propertyListPath", import("@traqula/rules-sparql-1-1").Triple[], Pick<import("@traqula/rules-sparql-1-1").Triple, "subject">>;
120
+ propertyList: import("@traqula/core").ParserRule<any, "propertyList"> & SparqlGrammarRule<"propertyList", import("@traqula/rules-sparql-1-1").Triple[], Pick<import("@traqula/rules-sparql-1-1").Triple, "subject">>;
121
+ triplesNodePath: import("@traqula/core").ParserRule<any, "triplesNodePath"> & SparqlGrammarRule<"triplesNodePath", import("@traqula/rules-sparql-1-1").ITriplesNode>;
122
+ triplesNode: import("@traqula/core").ParserRule<any, "triplesNode"> & SparqlGrammarRule<"triplesNode", import("@traqula/rules-sparql-1-1").ITriplesNode>;
123
+ triplesSameSubject: import("@traqula/core").ParserRule<any, "triplesSameSubject"> & SparqlGrammarRule<"triplesSameSubject", import("@traqula/rules-sparql-1-1").Triple[]>;
124
+ triplesTemplate: import("@traqula/core").ParserRule<any, "triplesTemplate"> & SparqlGrammarRule<"triplesTemplate", import("@traqula/rules-sparql-1-1").Triple[]>;
125
+ verbPath: import("@traqula/core").ParserRule<any, "verbPath"> & SparqlGrammarRule<"verbPath", import("@traqula/rules-sparql-1-1").PropertyPath | import("@traqula/rules-sparql-1-1").IriTerm>;
126
+ verbSimple: import("@traqula/core").ParserRule<any, "verbSimple"> & SparqlGrammarRule<"verbSimple", import("@rdfjs/types").Variable>;
127
+ objectList: import("@traqula/core").ParserRule<any, "objectList"> & SparqlGrammarRule<"objectList", import("@traqula/rules-sparql-1-1").Triple[], Pick<import("@traqula/rules-sparql-1-1").Triple, "subject" | "predicate">>;
128
+ objectListPath: import("@traqula/core").ParserRule<any, "objectListPath"> & SparqlGrammarRule<"objectListPath", import("@traqula/rules-sparql-1-1").Triple[], Pick<import("@traqula/rules-sparql-1-1").Triple, "subject" | "predicate">>;
129
+ graphNodePath: import("@traqula/core").ParserRule<any, "graphNodePath"> & SparqlGrammarRule<"graphNodePath", import("@traqula/rules-sparql-1-1").IGraphNode>;
130
+ graphNode: import("@traqula/core").ParserRule<any, "graphNode"> & SparqlGrammarRule<"graphNode", import("@traqula/rules-sparql-1-1").IGraphNode>;
131
+ objectPath: import("@traqula/core").ParserRule<any, "objectPath"> & SparqlGrammarRule<"objectPath", import("@traqula/rules-sparql-1-1").Triple[], Pick<import("@traqula/rules-sparql-1-1").Triple, "subject" | "predicate">>;
132
+ collection: import("@traqula/core").ParserRule<any, "collection"> & SparqlGrammarRule<"collection", import("@traqula/rules-sparql-1-1").ITriplesNode>;
133
+ blankNodePropertyList: import("@traqula/core").ParserRule<any, "blankNodePropertyList"> & SparqlGrammarRule<"blankNodePropertyList", import("@traqula/rules-sparql-1-1").ITriplesNode>;
134
+ collectionPath: import("@traqula/core").ParserRule<any, "collectionPath"> & SparqlGrammarRule<"collectionPath", import("@traqula/rules-sparql-1-1").ITriplesNode>;
135
+ blankNodePropertyListPath: import("@traqula/core").ParserRule<any, "blankNodePropertyListPath"> & SparqlGrammarRule<"blankNodePropertyListPath", import("@traqula/rules-sparql-1-1").ITriplesNode>;
136
+ whereClause: import("@traqula/core").ParserRule<any, "whereClause"> & SparqlGrammarRule<"whereClause", import("@traqula/rules-sparql-1-1").Pattern[]>;
137
+ groupGraphPattern: import("@traqula/core").ParserRule<any, "groupGraphPattern"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "groupGraphPattern", import("@traqula/rules-sparql-1-1").GroupPattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "groupGraphPattern", import("@traqula/rules-sparql-1-1").GroupPattern, undefined>;
138
+ subSelect: import("@traqula/core").ParserRule<any, "subSelect"> & SparqlGrammarRule<"subSelect", Omit<import("@traqula/rules-sparql-1-1").SelectQuery, "prefixes">>;
139
+ groupGraphPatternSub: import("@traqula/core").ParserRule<any, "groupGraphPatternSub"> & SparqlGrammarRule<"groupGraphPatternSub", import("@traqula/rules-sparql-1-1").Pattern[]>;
140
+ graphPatternNotTriples: import("@traqula/core").ParserRule<any, "graphPatternNotTriples"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "graphPatternNotTriples", import("@traqula/rules-sparql-1-1").BlockPattern | import("@traqula/rules-sparql-1-1").FilterPattern | import("@traqula/rules-sparql-1-1").BindPattern | import("@traqula/rules-sparql-1-1").ValuesPattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "graphPatternNotTriples", import("@traqula/rules-sparql-1-1").BlockPattern | import("@traqula/rules-sparql-1-1").FilterPattern | import("@traqula/rules-sparql-1-1").BindPattern | import("@traqula/rules-sparql-1-1").ValuesPattern, undefined>;
141
+ groupOrUnionGraphPattern: import("@traqula/core").ParserRule<any, "groupOrUnionGraphPattern"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "groupOrUnionGraphPattern", import("@traqula/rules-sparql-1-1").UnionPattern | import("@traqula/rules-sparql-1-1").GroupPattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "groupOrUnionGraphPattern", import("@traqula/rules-sparql-1-1").UnionPattern | import("@traqula/rules-sparql-1-1").GroupPattern, undefined>;
142
+ optionalGraphPattern: import("@traqula/core").ParserRule<any, "optionalGraphPattern"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "optionalGraphPattern", import("@traqula/rules-sparql-1-1").OptionalPattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "optionalGraphPattern", import("@traqula/rules-sparql-1-1").OptionalPattern, undefined>;
143
+ minusGraphPattern: import("@traqula/core").ParserRule<any, "minusGraphPattern"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "minusGraphPattern", import("@traqula/rules-sparql-1-1").MinusPattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "minusGraphPattern", import("@traqula/rules-sparql-1-1").MinusPattern, undefined>;
144
+ graphGraphPattern: import("@traqula/core").ParserRule<any, "graphGraphPattern"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "graphGraphPattern", import("@traqula/rules-sparql-1-1").GraphPattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "graphGraphPattern", import("@traqula/rules-sparql-1-1").GraphPattern, undefined>;
145
+ serviceGraphPattern: import("@traqula/core").ParserRule<any, "serviceGraphPattern"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "serviceGraphPattern", import("@traqula/rules-sparql-1-1").ServicePattern, undefined> & import("@traqula/core").GeneratorRule<undefined, "serviceGraphPattern", import("@traqula/rules-sparql-1-1").ServicePattern, undefined>;
146
+ inlineData: import("@traqula/core").ParserRule<any, "inlineData"> & SparqlGrammarRule<"inlineData", import("@traqula/rules-sparql-1-1").ValuesPattern>;
147
+ expression: import("@traqula/core").ParserRule<any, "expression"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "expression", import("@traqula/rules-sparql-1-1").Expression, undefined> & import("@traqula/core").GeneratorRule<undefined, "expression", import("@traqula/rules-sparql-1-1").Expression, undefined>;
148
+ valuesClause: import("@traqula/core").ParserRule<any, "valuesClause"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "valuesClause", import("@traqula/rules-sparql-1-1").ValuePatternRow[] | undefined, undefined> & import("@traqula/core").GeneratorRule<undefined, "valuesClause", import("@traqula/rules-sparql-1-1").ValuePatternRow[] | undefined, undefined>;
149
+ dataBlock: import("@traqula/core").ParserRule<any, "dataBlock"> & SparqlGrammarRule<"dataBlock", import("@traqula/rules-sparql-1-1").ValuePatternRow[]>;
150
+ inlineDataOneVar: import("@traqula/core").ParserRule<any, "inlineDataOneVar"> & SparqlGrammarRule<"inlineDataOneVar", import("@traqula/rules-sparql-1-1").ValuePatternRow[]>;
151
+ inlineDataFull: import("@traqula/core").ParserRule<any, "inlineDataFull"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "inlineDataFull", import("@traqula/rules-sparql-1-1").ValuePatternRow[], undefined> & import("@traqula/core").GeneratorRule<undefined, "inlineDataFull", import("@traqula/rules-sparql-1-1").ValuePatternRow[], undefined>;
152
+ dataBlockValue: import("@traqula/core").ParserRule<any, "dataBlockValue"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "dataBlockValue", import("@rdfjs/types").BlankNode | import("@rdfjs/types").Literal | import("@traqula/rules-sparql-1-1").IriTerm | undefined, undefined> & import("@traqula/core").GeneratorRule<undefined, "dataBlockValue", import("@rdfjs/types").BlankNode | import("@rdfjs/types").Literal | import("@traqula/rules-sparql-1-1").IriTerm | undefined, undefined>;
153
+ constraint: import("@traqula/core").ParserRule<any, "constraint"> & SparqlGrammarRule<"constraint", import("@traqula/rules-sparql-1-1").Expression>;
154
+ brackettedExpression: import("@traqula/core").ParserRule<any, "brackettedExpression"> & SparqlGrammarRule<"brackettedExpression", import("@traqula/rules-sparql-1-1").Expression>;
155
+ builtInCall: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "builtInCall", import("@traqula/rules-sparql-1-1").Expression, undefined>;
156
+ argList: import("@traqula/core").ParserRule<any, "argList"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "argList", gram.IArgList, undefined> & import("@traqula/core").GeneratorRule<undefined, "argList", gram.IArgList, undefined>;
157
+ expressionList: import("@traqula/core").ParserRule<any, "expressionList"> & SparqlGrammarRule<"expressionList", import("@traqula/rules-sparql-1-1").Expression[]>;
158
+ conditionalOrExpression: import("@traqula/core").ParserRule<any, "conditionalOrExpression"> & SparqlGrammarRule<"conditionalOrExpression", import("@traqula/rules-sparql-1-1").Expression>;
159
+ iriOrFunction: import("@traqula/core").ParserRule<any, "iriOrFunction"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "iriOrFunction", import("@traqula/rules-sparql-1-1").IriTerm | (gram.IArgList & {
160
+ function: import("@traqula/rules-sparql-1-1").IriTerm;
161
+ }), undefined> & import("@traqula/core").GeneratorRule<undefined, "iriOrFunction", import("@traqula/rules-sparql-1-1").IriTerm | (gram.IArgList & {
162
+ function: import("@traqula/rules-sparql-1-1").IriTerm;
163
+ }), undefined>;
164
+ conditionalAndExpression: import("@traqula/core").ParserRule<any, "conditionalAndExpression"> & SparqlGrammarRule<"conditionalAndExpression", import("@traqula/rules-sparql-1-1").Expression>;
165
+ valueLogical: import("@traqula/core").ParserRule<any, "valueLogical"> & SparqlGrammarRule<"valueLogical", import("@traqula/rules-sparql-1-1").Expression>;
166
+ relationalExpression: import("@traqula/core").ParserRule<any, "relationalExpression"> & SparqlGrammarRule<"relationalExpression", import("@traqula/rules-sparql-1-1").Expression>;
167
+ numericExpression: import("@traqula/core").ParserRule<any, "numericExpression"> & SparqlGrammarRule<"numericExpression", import("@traqula/rules-sparql-1-1").Expression>;
168
+ additiveExpression: import("@traqula/core").ParserRule<any, "additiveExpression"> & SparqlGrammarRule<"additiveExpression", import("@traqula/rules-sparql-1-1").Expression>;
169
+ multiplicativeExpression: import("@traqula/core").ParserRule<any, "multiplicativeExpression"> & SparqlGrammarRule<"multiplicativeExpression", import("@traqula/rules-sparql-1-1").Expression>;
170
+ unaryExpression: import("@traqula/core").ParserRule<any, "unaryExpression"> & SparqlGrammarRule<"unaryExpression", import("@traqula/rules-sparql-1-1").Expression>;
171
+ primaryExpression: import("@traqula/core").ParserRule<any, "primaryExpression"> & SparqlGrammarRule<"primaryExpression", import("@traqula/rules-sparql-1-1").Expression>;
172
+ solutionModifier: import("@traqula/core").ParserRule<any, "solutionModifier"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "solutionModifier", gram.ISolutionModifier, undefined> & import("@traqula/core").GeneratorRule<undefined, "solutionModifier", gram.ISolutionModifier, undefined>;
173
+ limitOffsetClauses: import("@traqula/core").ParserRule<any, "limitOffsetClauses"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "limitOffsetClauses", Pick<import("@traqula/rules-sparql-1-1").SelectQuery, "offset" | "limit">, undefined> & import("@traqula/core").GeneratorRule<undefined, "limitOffsetClauses", Pick<import("@traqula/rules-sparql-1-1").SelectQuery, "offset" | "limit">, undefined>;
174
+ groupClause: import("@traqula/core").ParserRule<any, "groupClause"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "groupClause", import("@traqula/rules-sparql-1-1").Grouping[], undefined> & import("@traqula/core").GeneratorRule<undefined, "groupClause", import("@traqula/rules-sparql-1-1").Grouping[], undefined>;
175
+ havingClause: import("@traqula/core").ParserRule<any, "havingClause"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "havingClause", import("@traqula/rules-sparql-1-1").Expression[], undefined> & import("@traqula/core").GeneratorRule<undefined, "havingClause", import("@traqula/rules-sparql-1-1").Expression[], undefined>;
176
+ orderClause: import("@traqula/core").ParserRule<any, "orderClause"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "orderClause", import("@traqula/rules-sparql-1-1").Ordering[], undefined> & import("@traqula/core").GeneratorRule<undefined, "orderClause", import("@traqula/rules-sparql-1-1").Ordering[], undefined>;
177
+ groupCondition: import("@traqula/core").ParserRule<any, "groupCondition"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "groupCondition", import("@traqula/rules-sparql-1-1").Grouping, undefined> & import("@traqula/core").GeneratorRule<undefined, "groupCondition", import("@traqula/rules-sparql-1-1").Grouping, undefined>;
178
+ havingCondition: import("@traqula/core").ParserRule<any, "havingCondition"> & SparqlGrammarRule<"havingCondition", import("@traqula/rules-sparql-1-1").Expression>;
179
+ orderCondition: import("@traqula/core").ParserRule<any, "orderCondition"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "orderCondition", import("@traqula/rules-sparql-1-1").Ordering, undefined> & import("@traqula/core").GeneratorRule<undefined, "orderCondition", import("@traqula/rules-sparql-1-1").Ordering, undefined>;
180
+ limitClause: import("@traqula/core").ParserRule<any, "limitClause"> & SparqlGrammarRule<"limitClause", number>;
181
+ offsetClause: import("@traqula/core").ParserRule<any, "offsetClause"> & SparqlGrammarRule<"offsetClause", number>;
182
+ selectQuery: import("@traqula/core").ParserRule<any, "selectQuery"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "selectQuery", Omit<import("@traqula/rules-sparql-1-1").SelectQuery, gram.HandledByBase>, undefined> & import("@traqula/core").GeneratorRule<undefined, "selectQuery", Omit<import("@traqula/rules-sparql-1-1").SelectQuery, gram.HandledByBase>, undefined>;
183
+ constructQuery: import("@traqula/core").ParserRule<any, "constructQuery"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "constructQuery", Omit<import("@traqula/rules-sparql-1-1").ConstructQuery, gram.HandledByBase>, undefined> & import("@traqula/core").GeneratorRule<undefined, "constructQuery", Omit<import("@traqula/rules-sparql-1-1").ConstructQuery, gram.HandledByBase>, undefined>;
184
+ describeQuery: import("@traqula/core").ParserRule<any, "describeQuery"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "describeQuery", Omit<import("@traqula/rules-sparql-1-1").DescribeQuery, gram.HandledByBase>, undefined> & import("@traqula/core").GeneratorRule<undefined, "describeQuery", Omit<import("@traqula/rules-sparql-1-1").DescribeQuery, gram.HandledByBase>, undefined>;
185
+ askQuery: import("@traqula/core").ParserRule<any, "askQuery"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "askQuery", Omit<import("@traqula/rules-sparql-1-1").AskQuery, gram.HandledByBase>, undefined> & import("@traqula/core").GeneratorRule<undefined, "askQuery", Omit<import("@traqula/rules-sparql-1-1").AskQuery, gram.HandledByBase>, undefined>;
186
+ selectClause: import("@traqula/core").ParserRule<any, "selectClause"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "selectClause", gram.ISelectClause, undefined> & import("@traqula/core").GeneratorRule<undefined, "selectClause", gram.ISelectClause, undefined>;
187
+ constructTemplate: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "constructTemplate", import("@traqula/rules-sparql-1-1").Triple[] | undefined, undefined>;
188
+ constructTriples: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "constructTriples", import("@traqula/rules-sparql-1-1").Triple[], undefined>;
189
+ update1: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "update1", import("@traqula/rules-sparql-1-1").UpdateOperation, undefined>;
190
+ insertData: import("@traqula/core").ParserRule<any, "insertData"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "insertData", import("@traqula/rules-sparql-1-1").InsertOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "insertData", import("@traqula/rules-sparql-1-1").InsertOperation, undefined>;
191
+ deleteData: import("@traqula/core").ParserRule<any, "deleteData"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "deleteData", import("@traqula/rules-sparql-1-1").DeleteOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "deleteData", import("@traqula/rules-sparql-1-1").DeleteOperation, undefined>;
192
+ deleteWhere: import("@traqula/core").ParserRule<any, "deleteWhere"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "deleteWhere", import("@traqula/rules-sparql-1-1").DeleteWhereOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "deleteWhere", import("@traqula/rules-sparql-1-1").DeleteWhereOperation, undefined>;
193
+ modify: import("@traqula/core").ParserRule<any, "modify"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "modify", import("@traqula/rules-sparql-1-1").ModifyOperation, undefined> & import("@traqula/core").GeneratorRule<undefined, "modify", import("@traqula/rules-sparql-1-1").ModifyOperation, undefined>;
194
+ graphRef: import("@traqula/core").ParserRule<any, "graphRef"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "graphRef", import("@traqula/rules-sparql-1-1").IriTerm, undefined> & import("@traqula/core").GeneratorRule<undefined, "graphRef", import("@traqula/rules-sparql-1-1").IriTerm, undefined>;
195
+ graphRefAll: import("@traqula/core").ParserRule<any, "graphRefAll"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "graphRefAll", import("@traqula/rules-sparql-1-1").GraphReference, undefined> & import("@traqula/core").GeneratorRule<undefined, "graphRefAll", import("@traqula/rules-sparql-1-1").GraphReference, undefined>;
196
+ graphOrDefault: import("@traqula/core").ParserRule<any, "graphOrDefault"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "graphOrDefault", import("@traqula/rules-sparql-1-1").GraphOrDefault, undefined> & import("@traqula/core").GeneratorRule<undefined, "graphOrDefault", import("@traqula/rules-sparql-1-1").GraphOrDefault, undefined>;
197
+ quadData: import("@traqula/core").ParserRule<any, "quadData"> & import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "quadData", import("@traqula/rules-sparql-1-1").Quads[], undefined> & import("@traqula/core").GeneratorRule<undefined, "quadData", import("@traqula/rules-sparql-1-1").Quads[], undefined>;
198
+ quadPattern: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "quadPattern", import("@traqula/rules-sparql-1-1").Quads[], undefined>;
199
+ deleteClause: import("@traqula/core").ParserRule<any, "deleteClause"> & SparqlGrammarRule<"deleteClause", import("@traqula/rules-sparql-1-1").Quads[]>;
200
+ insertClause: import("@traqula/core").ParserRule<any, "insertClause"> & SparqlGrammarRule<"insertClause", import("@traqula/rules-sparql-1-1").Quads[]>;
201
+ usingClause: import("@traqula/core").ParserRule<any, "usingClause"> & SparqlGrammarRule<"usingClause", {
202
+ value: import("@traqula/rules-sparql-1-1").IriTerm;
203
+ type: "default" | "named";
204
+ }>;
205
+ quadsNotTriples: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "quadsNotTriples", import("@traqula/rules-sparql-1-1").GraphQuads, undefined>;
206
+ queryOrUpdate: import("@traqula/core").ParserRule<import("@traqula/rules-sparql-1-1").SparqlContext, "queryOrUpdate", Query | Update | Pick<Update, "base" | "prefixes">, undefined>;
207
+ }>;
208
+ export declare class Parser extends SparqlParser<SparqlQuery> {
209
+ constructor();
210
+ }
package/lib/Parser.js ADDED
@@ -0,0 +1,111 @@
1
+ import { ParserBuilder } from '@traqula/core';
2
+ import { sparqlCodepointEscape, gram, lex as l, SparqlParser } from '@traqula/rules-sparql-1-1';
3
+ import { queryUnitParserBuilder } from './queryUnitParser';
4
+ import { updateParserBuilder } from './updateUnitParser';
5
+ // Create merge of
6
+ // ```
7
+ // Prologue
8
+ // ( SelectQuery | ConstructQuery | DescribeQuery | AskQuery )
9
+ // ValuesClause
10
+ // ```
11
+ // and:
12
+ // ```
13
+ // Prologue ( Update1 ( ';' Update )? )?
14
+ // ```
15
+ const queryOrUpdate = {
16
+ name: 'queryOrUpdate',
17
+ impl: ({ ACTION, SUBRULE, SUBRULE2, OR1, OR2, CONSUME, OPTION1, MANY }) => () => {
18
+ const prologueValues = SUBRULE(gram.prologue, undefined);
19
+ return OR1([
20
+ { ALT: () => {
21
+ const queryType = OR2([
22
+ { ALT: () => SUBRULE(gram.selectQuery, undefined) },
23
+ { ALT: () => SUBRULE(gram.constructQuery, undefined) },
24
+ { ALT: () => SUBRULE(gram.describeQuery, undefined) },
25
+ { ALT: () => SUBRULE(gram.askQuery, undefined) },
26
+ ]);
27
+ const values = SUBRULE(gram.valuesClause, undefined);
28
+ return ACTION(() => ({
29
+ ...prologueValues,
30
+ ...queryType,
31
+ type: 'query',
32
+ ...(values && { values }),
33
+ }));
34
+ } },
35
+ { ALT: () => {
36
+ // Prologue ( Update1 ( ';' Update )? )?
37
+ // Is equivalent to:
38
+ let parsedSemi = true;
39
+ const updateResult = {
40
+ ...prologueValues,
41
+ type: 'update',
42
+ updates: [],
43
+ };
44
+ MANY({
45
+ GATE: () => parsedSemi,
46
+ DEF: () => {
47
+ parsedSemi = false;
48
+ const updateOperation = SUBRULE(gram.update1, undefined);
49
+ updateResult.updates.push(updateOperation);
50
+ OPTION1(() => {
51
+ CONSUME(l.symbols.semi);
52
+ const prologueValues = SUBRULE2(gram.prologue, undefined);
53
+ ACTION(() => {
54
+ updateResult.base = prologueValues.base ?? updateResult.base;
55
+ updateResult.prefixes = prologueValues.prefixes ?
56
+ { ...updateResult.prefixes, ...prologueValues.prefixes } :
57
+ updateResult.prefixes;
58
+ });
59
+ parsedSemi = true;
60
+ });
61
+ },
62
+ });
63
+ ACTION(() => {
64
+ const blankLabelsUsedInInsertData = new Set();
65
+ for (const updateOperation of updateResult.updates) {
66
+ const iterBlankNodes = (callback) => {
67
+ if ('updateType' in updateOperation && updateOperation.updateType === 'insert') {
68
+ for (const quad of updateOperation.insert) {
69
+ for (const triple of quad.triples) {
70
+ for (const position of ['subject', 'object']) {
71
+ if (triple[position].termType === 'BlankNode') {
72
+ callback(triple[position].value);
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+ };
79
+ iterBlankNodes((label) => {
80
+ if (blankLabelsUsedInInsertData.has(label)) {
81
+ throw new Error('Detected reuse blank node across different INSERT DATA clauses');
82
+ }
83
+ });
84
+ iterBlankNodes(label => blankLabelsUsedInInsertData.add(label));
85
+ }
86
+ });
87
+ return updateResult.updates.length > 0 ? updateResult : prologueValues;
88
+ } },
89
+ ]);
90
+ },
91
+ };
92
+ export const sparql11ParserBuilder = ParserBuilder.createBuilder(queryUnitParserBuilder)
93
+ .merge(updateParserBuilder, [])
94
+ .deleteRule('queryUnit')
95
+ .deleteRule('query')
96
+ .deleteRule('updateUnit')
97
+ .deleteRule('update')
98
+ .addRule(queryOrUpdate);
99
+ export class Parser extends SparqlParser {
100
+ constructor() {
101
+ const parser = sparql11ParserBuilder.build({
102
+ tokenVocabulary: l.sparql11Tokens.tokenVocabulary,
103
+ queryPreProcessor: sparqlCodepointEscape,
104
+ parserConfig: {
105
+ skipValidations: true,
106
+ },
107
+ });
108
+ super(parser);
109
+ }
110
+ }
111
+ //# sourceMappingURL=Parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Parser.js","sourceRoot":"","sources":["Parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { ParserBuilder } from '@traqula/core';\nimport type { Query, SparqlQuery, Update, SparqlGrammarRule } from '@traqula/rules-sparql-1-1';\nimport { sparqlCodepointEscape, gram, lex as l, SparqlParser } from '@traqula/rules-sparql-1-1';\nimport { queryUnitParserBuilder } from './queryUnitParser';\nimport { updateParserBuilder } from './updateUnitParser';\n\n// Create merge of\n// ```\n// Prologue\n// ( SelectQuery | ConstructQuery | DescribeQuery | AskQuery )\n// ValuesClause\n// ```\n// and:\n// ```\n// Prologue ( Update1 ( ';' Update )? )?\n// ```\nconst queryOrUpdate: SparqlGrammarRule<'queryOrUpdate', Query | Update | Pick<Update, 'base' | 'prefixes'>> = {\n name: 'queryOrUpdate',\n impl: ({ ACTION, SUBRULE, SUBRULE2, OR1, OR2, CONSUME, OPTION1, MANY }) => () => {\n const prologueValues = SUBRULE(gram.prologue, undefined);\n return OR1<Query | Update | Pick<Update, 'base' | 'prefixes'>>([\n { ALT: () => {\n const queryType = OR2<Omit<Query, gram.HandledByBase>>([\n { ALT: () => SUBRULE(gram.selectQuery, undefined) },\n { ALT: () => SUBRULE(gram.constructQuery, undefined) },\n { ALT: () => SUBRULE(gram.describeQuery, undefined) },\n { ALT: () => SUBRULE(gram.askQuery, undefined) },\n ]);\n const values = SUBRULE(gram.valuesClause, undefined);\n return ACTION(() => (<Query>{\n ...prologueValues,\n ...queryType,\n type: 'query',\n ...(values && { values }),\n }));\n } },\n { ALT: () => {\n // Prologue ( Update1 ( ';' Update )? )?\n // Is equivalent to:\n\n let parsedSemi = true;\n const updateResult: Update = {\n ...prologueValues,\n type: 'update',\n updates: [],\n };\n MANY({\n GATE: () => parsedSemi,\n DEF: () => {\n parsedSemi = false;\n const updateOperation = SUBRULE(gram.update1, undefined);\n\n updateResult.updates.push(updateOperation);\n\n OPTION1(() => {\n CONSUME(l.symbols.semi);\n const prologueValues = SUBRULE2(gram.prologue, undefined);\n\n ACTION(() => {\n updateResult.base = prologueValues.base ?? updateResult.base;\n updateResult.prefixes = prologueValues.prefixes ?\n { ...updateResult.prefixes, ...prologueValues.prefixes } :\n updateResult.prefixes;\n });\n\n parsedSemi = true;\n });\n },\n });\n\n ACTION(() => {\n const blankLabelsUsedInInsertData = new Set<string>();\n for (const updateOperation of updateResult.updates) {\n const iterBlankNodes = (callback: (blankNodeLabel: string) => void): void => {\n if ('updateType' in updateOperation && updateOperation.updateType === 'insert') {\n for (const quad of updateOperation.insert) {\n for (const triple of quad.triples) {\n for (const position of <const> [ 'subject', 'object' ]) {\n if (triple[position].termType === 'BlankNode') {\n callback(triple[position].value);\n }\n }\n }\n }\n }\n };\n iterBlankNodes((label) => {\n if (blankLabelsUsedInInsertData.has(label)) {\n throw new Error('Detected reuse blank node across different INSERT DATA clauses');\n }\n });\n iterBlankNodes(label => blankLabelsUsedInInsertData.add(label));\n }\n });\n\n return updateResult.updates.length > 0 ? updateResult : prologueValues;\n } },\n ]);\n },\n};\n\nexport const sparql11ParserBuilder = ParserBuilder.createBuilder(queryUnitParserBuilder)\n .merge(updateParserBuilder, <const> [])\n .deleteRule('queryUnit')\n .deleteRule('query')\n .deleteRule('updateUnit')\n .deleteRule('update')\n .addRule(queryOrUpdate);\n\nexport class Parser extends SparqlParser<SparqlQuery> {\n public constructor() {\n const parser = sparql11ParserBuilder.build({\n tokenVocabulary: l.sparql11Tokens.tokenVocabulary,\n queryPreProcessor: sparqlCodepointEscape,\n parserConfig: {\n skipValidations: true,\n },\n });\n super(parser);\n }\n}\n"]}