@traqula/rules-sparql-1-2 1.1.0 → 1.1.2
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/README.md +27 -1
- package/dist/cjs/lib/grammar.js +28 -1
- package/dist/cjs/lib/grammar.js.map +1 -1
- package/dist/cjs/lib/index.js +8 -1
- package/dist/cjs/lib/index.js.map +1 -1
- package/dist/cjs/lib/validators.js +75 -0
- package/dist/cjs/lib/validators.js.map +1 -1
- package/dist/esm/lib/grammar.d.ts +10 -5
- package/dist/esm/lib/grammar.js +28 -1
- package/dist/esm/lib/grammar.js.map +1 -1
- package/dist/esm/lib/index.d.ts +4 -0
- package/dist/esm/lib/index.js +7 -0
- package/dist/esm/lib/index.js.map +1 -1
- package/dist/esm/lib/lexer.d.ts +1 -1
- package/dist/esm/lib/validators.d.ts +8 -1
- package/dist/esm/lib/validators.js +74 -0
- package/dist/esm/lib/validators.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@traqula/rules-sparql-1-2)
|
|
4
4
|
|
|
5
|
-
Traqula rules SPARQL 1.2 contains additional rules required for creating a parser for SPARQL 1.2
|
|
5
|
+
Traqula rules SPARQL 1.2 contains additional grammar rules, tokens, and AST types required for creating a parser for [SPARQL 1.2](https://www.w3.org/TR/sparql12-query/#grammar), extending the [SPARQL 1.1 rules](../rules-sparql-1-1).
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
@@ -15,3 +15,29 @@ or
|
|
|
15
15
|
```bash
|
|
16
16
|
yarn add @traqula/rules-sparql-1-2
|
|
17
17
|
```
|
|
18
|
+
|
|
19
|
+
## What's added over SPARQL 1.1
|
|
20
|
+
|
|
21
|
+
This package adds grammar, lexer, and AST type definitions for SPARQL 1.2 features including:
|
|
22
|
+
|
|
23
|
+
- **Reified triples** (`<<...>>` syntax) and triple terms
|
|
24
|
+
- **Annotations** on triples
|
|
25
|
+
- **VERSION declaration** (`VERSION 1.2`)
|
|
26
|
+
- Updated expression, pattern, and term types
|
|
27
|
+
|
|
28
|
+
## Exports
|
|
29
|
+
|
|
30
|
+
| Export | Description |
|
|
31
|
+
|--------|-------------|
|
|
32
|
+
| `gram.*` | SPARQL 1.2 grammar rule patches and additions |
|
|
33
|
+
| `lex.*` | SPARQL 1.2 lexer tokens and `sparql12LexerBuilder` |
|
|
34
|
+
| `AstFactory` | Extended factory supporting SPARQL 1.2 AST nodes |
|
|
35
|
+
| `Sparql12types` | TypeScript types for all SPARQL 1.2 AST nodes |
|
|
36
|
+
| `completeParseContext`, `copyParseContext` | Context helpers (SPARQL 1.2 version) |
|
|
37
|
+
| `validators` | SPARQL 1.2 specific validation functions |
|
|
38
|
+
|
|
39
|
+
## Usage
|
|
40
|
+
|
|
41
|
+
This package is primarily used by engine packages. For end-user parsing and generation, use [`@traqula/parser-sparql-1-2`](../../engines/parser-sparql-1-2) and [`@traqula/generator-sparql-1-2`](../../engines/generator-sparql-1-2).
|
|
42
|
+
|
|
43
|
+
For guidance on extending the grammar, see the [guidelines for dependent projects](../../docs/guidelines.md).
|
package/dist/cjs/lib/grammar.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.generateGraphTerm = exports.generateTriplesBlock = exports.unaryExpression = exports.rdfLiteral = exports.builtInCall = exports.buildInObject = exports.buildInPredicate = exports.buildInSubject = exports.buildInTriple = exports.buildInIsTriple = exports.buildInHasLangDir = exports.buildInHasLang = exports.buildInLangStrDir = exports.buildInLangDir = exports.exprTripleTermObject = exports.exprTripleTermSubject = exports.exprTripleTerm = exports.primaryExpression = exports.tripleTermDataObject = exports.tripleTermDataSubject = exports.tripleTermData = exports.tripleTermObject = exports.tripleTermSubject = exports.tripleTerm = exports.reifiedTripleObject = exports.reifiedTripleSubject = exports.reifiedTriple = exports.varOrTerm = exports.graphNodePath = exports.graphNode = exports.annotationBlock = exports.annotationBlockPath = exports.annotation = exports.annotationPath = exports.objectPath = exports.object = exports.triplesSameSubjectPath = exports.triplesSameSubject = exports.varOrReifierId = exports.reifier = exports.dataBlockValue = exports.reifiedTripleBlockPath = exports.reifiedTripleBlock = exports.prologue = exports.versionSpecifier = exports.versionDecl = void 0;
|
|
36
|
+
exports.generateGraphTerm = exports.generateTriplesBlock = exports.unaryExpression = exports.rdfLiteral = exports.builtInCall = exports.buildInObject = exports.buildInPredicate = exports.buildInSubject = exports.buildInTriple = exports.buildInIsTriple = exports.buildInHasLangDir = exports.buildInHasLang = exports.buildInLangStrDir = exports.buildInLangDir = exports.exprTripleTermObject = exports.exprTripleTermSubject = exports.exprTripleTerm = exports.primaryExpression = exports.tripleTermDataObject = exports.tripleTermDataSubject = exports.tripleTermData = exports.tripleTermObject = exports.tripleTermSubject = exports.tripleTerm = exports.reifiedTripleObject = exports.reifiedTripleSubject = exports.reifiedTriple = exports.varOrTerm = exports.graphNodePath = exports.graphNode = exports.annotationBlock = exports.annotationBlockPath = exports.annotation = exports.annotationPath = exports.objectPath = exports.object = exports.triplesSameSubjectPath = exports.triplesSameSubject = exports.varOrReifierId = exports.reifier = exports.dataBlockValue = exports.reifiedTripleBlockPath = exports.reifiedTripleBlock = exports.prologue = exports.versionSpecifier = exports.selectQuery = exports.versionDecl = void 0;
|
|
37
37
|
const core_1 = require("@traqula/core");
|
|
38
38
|
const rules_sparql_1_1_1 = require("@traqula/rules-sparql-1-1");
|
|
39
39
|
const l12 = __importStar(require("./lexer.js"));
|
|
@@ -54,6 +54,33 @@ exports.versionDecl = {
|
|
|
54
54
|
});
|
|
55
55
|
},
|
|
56
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* [[9]](https://www.w3.org/TR/sparql12-query/#rSelectQuery)
|
|
59
|
+
* (Validator has changed: https://github.com/w3c/sparql-query/pull/380)
|
|
60
|
+
*/
|
|
61
|
+
exports.selectQuery = {
|
|
62
|
+
name: 'selectQuery',
|
|
63
|
+
impl: ({ ACTION, SUBRULE }) => (C) => {
|
|
64
|
+
const selectVal = SUBRULE(rules_sparql_1_1_1.gram.selectClause);
|
|
65
|
+
const from = SUBRULE(rules_sparql_1_1_1.gram.datasetClauseStar);
|
|
66
|
+
const where = SUBRULE(rules_sparql_1_1_1.gram.whereClause);
|
|
67
|
+
const modifiers = SUBRULE(rules_sparql_1_1_1.gram.solutionModifier);
|
|
68
|
+
return ACTION(() => {
|
|
69
|
+
const ret = {
|
|
70
|
+
subType: 'select',
|
|
71
|
+
where: where.val,
|
|
72
|
+
solutionModifiers: modifiers,
|
|
73
|
+
datasets: from,
|
|
74
|
+
...selectVal.val,
|
|
75
|
+
loc: C.astFactory.sourceLocation(selectVal, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset),
|
|
76
|
+
};
|
|
77
|
+
if (!C.skipValidation) {
|
|
78
|
+
(0, validators_js_1.queryProjectionIsGood)(ret);
|
|
79
|
+
}
|
|
80
|
+
return ret;
|
|
81
|
+
});
|
|
82
|
+
},
|
|
83
|
+
};
|
|
57
84
|
/**
|
|
58
85
|
* [[8]](https://www.w3.org/TR/sparql12-query/#rVersionSpecifier)
|
|
59
86
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../lib/grammar.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * This module will define patch rules that should be used in combination with the sparql11 grammar to create\n * a sparql12 grammar.\n * Rules in this module redefine the return type of core grammar rules.\n * It is therefore essential that the parser retypes the rules from the core grammar.\n */\nimport type { RuleDefReturn, Wrap } from '@traqula/core';\nimport { traqulaIndentation } from '@traqula/core';\nimport { CommonIRIs, funcExpr1, funcExpr3, gram as S11, lex as l11 } from '@traqula/rules-sparql-1-1';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport * as l12 from './lexer.js';\nimport type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from './sparql12HelperTypes.js';\nimport type {\n Annotation,\n ContextDefinition,\n ContextDefinitionVersion,\n Expression,\n GraphNode,\n GraphTerm,\n PatternBgp,\n Term,\n TermBlank,\n TermIri,\n TermLiteral,\n TermTriple,\n TermVariable,\n TripleCollectionBlankNodeProperties,\n TripleCollectionReifiedTriple,\n TripleNesting,\n} from './sparql12Types.js';\nimport { langTagHasCorrectRange } from './validators.js';\n\n/**\n *[[7]](https://www.w3.org/TR/sparql12-query/#rVersionDecl)\n */\nexport const versionDecl: SparqlRule<'versionDecl', ContextDefinitionVersion> = {\n name: 'versionDecl',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const versionToken = CONSUME(l12.version);\n const identifier = SUBRULE(versionSpecifier);\n return ACTION(() =>\n C.astFactory.contextDefinitionVersion(identifier.val, C.astFactory.sourceLocation(versionToken, identifier)));\n },\n gImpl: ({ PRINT_ON_OWN_LINE }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => {\n PRINT_ON_OWN_LINE('VERSION ', `${S11.stringEscapedLexical(ast.version)}`);\n });\n },\n};\n\n/**\n * [[8]](https://www.w3.org/TR/sparql12-query/#rVersionSpecifier)\n */\nexport const versionSpecifier: SparqlGrammarRule<'versionSpecifier', Wrap<string>> = {\n name: 'versionSpecifier',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const token = OR([\n { ALT: () => CONSUME(l11.terminals.stringLiteral1) },\n { ALT: () => CONSUME(l11.terminals.stringLiteral2) },\n ]);\n return ACTION(() => C.astFactory.wrap(token.image.slice(1, -1), C.astFactory.sourceLocation(token)));\n },\n};\n\n/**\n * OVERRIDING RULE {@link S11.prologue}\n * [[4]](https://www.w3.org/TR/sparql12-query/#rPrologue)\n */\nexport const prologue: SparqlRule<'prologue', ContextDefinition[]> = {\n name: 'prologue',\n impl: ({ SUBRULE, MANY, OR }) => () => {\n const result: ContextDefinition[] = [];\n MANY(() => OR([\n { ALT: () => result.push(SUBRULE(S11.baseDecl)) },\n // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.\n // We might need to check this.\n { ALT: () => result.push(SUBRULE(S11.prefixDecl)) },\n { ALT: () => result.push(SUBRULE(versionDecl)) },\n ]));\n return result;\n },\n gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {\n for (const context of ast) {\n if (F.isContextDefinitionBase(context)) {\n SUBRULE(S11.baseDecl, context);\n } else if (F.isContextDefinitionPrefix(context)) {\n SUBRULE(S11.prefixDecl, context);\n } else {\n SUBRULE(versionDecl, context);\n }\n }\n },\n};\n\nfunction reifiedTripleBlockImpl<T extends string>(name: T, allowPath: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const triple = SUBRULE(reifiedTriple);\n const properties = SUBRULE(\n allowPath ? S11.propertyListPath : S11.propertyList,\n ACTION(() => C.astFactory.dematerialized(triple.identifier)),\n );\n\n return ACTION(() => <T11.BasicGraphPattern> [ triple, ...properties ]);\n },\n };\n}\n/**\n * [[58]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlock) Used by triplesSameSubject\n */\nexport const reifiedTripleBlock = reifiedTripleBlockImpl('reifiedTripleBlock', false);\n/**\n * [[59]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlockPath) Used by TriplesSameSubjectPath\n */\nexport const reifiedTripleBlockPath = reifiedTripleBlockImpl('reifiedTripleBlockPath', true);\n\n/**\n * OVERRIDING RULE: {@link S11.dataBlockValue}.\n * [[69]](https://www.w3.org/TR/sparql12-query/#rDataBlockValue)\n */\nexport const dataBlockValue:\nSparqlGrammarRule<'dataBlockValue', RuleDefReturn<typeof S11.dataBlockValue> | TermTriple> = <const> {\n name: 'dataBlockValue',\n impl: $ => C => $.OR2<RuleDefReturn<typeof dataBlockValue>>([\n { ALT: () => S11.dataBlockValue.impl($)(C) },\n { ALT: () => $.SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * [[70]](https://www.w3.org/TR/sparql12-query/#rReifier)\n */\nexport const reifier: SparqlGrammarRule<'reifier', Wrap<RuleDefReturn<typeof varOrReifierId>>> = <const> {\n name: 'reifier',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const tildeToken = CONSUME(l12.tilde);\n const reifier = OPTION(() => SUBRULE(varOrReifierId));\n return ACTION(() => {\n if (reifier === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.astFactory.wrap(\n reifier ?? C.astFactory.termBlank(undefined, C.astFactory.sourceLocation()),\n C.astFactory.sourceLocation(tildeToken, reifier),\n );\n });\n },\n};\n\n/**\n * [[71]](https://www.w3.org/TR/sparql12-query/#rVarOrReifierId)\n */\nexport const varOrReifierId: SparqlGrammarRule<'varOrReifierId', TermVariable | TermIri | TermBlank> =\n <const> {\n name: 'varOrReifierId',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof varOrReifierId>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(S11.blankNode) },\n ]),\n };\n\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: $ => C => $.OR2([\n { ALT: () => allowPaths ?\n S11.triplesSameSubjectPath.impl($)(C) :\n S11.triplesSameSubject.impl($)(C) },\n { ALT: () => $.SUBRULE(allowPaths ? reifiedTripleBlockPath : reifiedTripleBlock) },\n ]),\n };\n}\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubject}\n * [[81]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubject)\n */\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubjectPath}\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath)\n */\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\n\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting, [TripleNesting['subject'], TripleNesting['predicate']]> {\n return <const>{\n name,\n impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {\n const objectVal = SUBRULE(allowPaths ? graphNodePath : graphNode);\n const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation);\n\n return ACTION(() => {\n const F = C.astFactory;\n if (F.isPathPure(predicate) && annotationVal.length > 0) {\n throw new Error('Note 17 violation');\n }\n return F.annotatedTriple(\n subject,\n predicate,\n objectVal,\n annotationVal,\n );\n });\n },\n };\n}\n/**\n * OVERRIDING RULE: {@link S11.object}.\n * [[86]](https://www.w3.org/TR/sparql12-query/#rObject) Used by ObjectList\n */\nexport const object = objectImpl('object', false);\n/**\n * OVERRIDING RULE: {@link S11.objectPath}.\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath) Used by ObjectListPath\n */\nexport const objectPath = objectImpl('objectPath', true);\n\nfunction annotationImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, Annotation[]> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR, MANY }) => (C) => {\n const annotations: Annotation[] = [];\n let currentReifier: TermBlank | TermVariable | TermIri | undefined;\n\n MANY(() => {\n OR([\n { ALT: () => {\n const node = SUBRULE(reifier);\n annotations.push(node);\n currentReifier = node.val;\n } },\n { ALT: () => {\n ACTION(() => {\n if (!currentReifier && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n currentReifier = currentReifier ?? C.astFactory.termBlank(undefined, C.astFactory.sourceLocation());\n });\n const block = SUBRULE(\n allowPaths ? annotationBlockPath : annotationBlock,\n currentReifier!,\n );\n ACTION(() => {\n annotations.push(block);\n currentReifier = undefined;\n });\n } },\n ]);\n });\n return annotations;\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n for (const annotation of ast) {\n if (F.isTripleCollectionBlankNodeProperties(annotation)) {\n SUBRULE(annotationBlockPath, annotation);\n } else {\n F.printFilter(annotation, () => PRINT_WORD('~'));\n SUBRULE(graphNodePath, annotation.val);\n }\n }\n },\n };\n}\n/**\n * [[109]](https://www.w3.org/TR/sparql12-query/#rAnnotationPath)\n */\nexport const annotationPath = annotationImpl('annotationPath', true);\n/**\n * [[111]](https://www.w3.org/TR/sparql12-query/#rAnnotation)\n */\nexport const annotation = annotationImpl('annotation', false);\n\nfunction annotationBlockImpl<T extends string>(name: T, allowPaths: boolean):\n SparqlGrammarRule<T, TripleCollectionBlankNodeProperties, [TripleCollectionBlankNodeProperties['identifier']]> &\n SparqlGeneratorRule<T, TripleCollectionBlankNodeProperties> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C, arg) => {\n const open = CONSUME(l12.annotationOpen);\n const res = SUBRULE(\n allowPaths ? S11.propertyListPathNotEmpty : S11.propertyListNotEmpty,\n arg,\n );\n const close = CONSUME(l12.annotationClose);\n\n return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(\n arg,\n res,\n C.astFactory.sourceLocation(open, close),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {\n const { astFactory: F, indentInc } = C;\n F.printFilter(ast, () => {\n PRINT_WORD('{|');\n if (ast.triples.length > 1) {\n C[traqulaIndentation] += indentInc;\n NEW_LINE();\n }\n });\n\n function printTriple(triple: TripleNesting): void {\n HANDLE_LOC(triple, () => {\n if (F.isTerm(triple.predicate)) {\n SUBRULE(graphNodePath, triple.predicate);\n } else {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n }\n F.printFilter(triple, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, triple.object);\n });\n }\n\n const [ head, ...tail ] = ast.triples;\n printTriple(head);\n for (const triple of tail) {\n F.printFilter(ast, () => {\n PRINT_WORD(';');\n NEW_LINE();\n });\n printTriple(triple);\n }\n\n F.printFilter(ast, () => {\n if (ast.triples.length > 1) {\n PRINT_ON_OWN_LINE('|}');\n } else {\n PRINT_WORD('|}');\n }\n });\n },\n };\n}\n/**\n * [[110]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlockPath)\n */\nexport const annotationBlockPath = annotationBlockImpl('annotationBlockPath', true);\n/**\n * [[112]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlock)\n */\nexport const annotationBlock = annotationBlockImpl('annotationBlock', false);\n\n/**\n * OVERRIDING RULE: {@link S11.graphNode}.\n * [[113]](https://www.w3.org/TR/sparql12-query/#rGraphNode)\n */\nexport const graphNode: SparqlGrammarRule<'graphNode', GraphNode> = <const> {\n name: 'graphNode',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNode>>([\n { ALT: () => S11.graphNode.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n};\n/**\n * OVERRIDING RULE: {@link S11.graphNodePath}.\n * [[114]](https://www.w3.org/TR/sparql12-query/#rGraphNodePath)\n */\nexport const graphNodePath: SparqlRule<'graphNodePath', GraphNode> = <const> {\n name: 'graphNodePath',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNodePath>>([\n { ALT: () => S11.graphNodePath.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n gImpl: $ => (ast, C) => {\n if (C.astFactory.isTripleCollectionReifiedTriple(ast)) {\n $.SUBRULE(reifiedTriple, ast);\n } else {\n S11.graphNodePath.gImpl($)(<T11.Term | T11.TripleCollection> ast, C);\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.varOrTerm}.\n * [[115]](https://www.w3.org/TR/sparql12-query/#rVarOrTerm)\n */\nexport const varOrTerm: SparqlGrammarRule<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ ACTION, SUBRULE, OR, CONSUME }) => C => OR<Term>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => {\n const token = CONSUME(l11.terminals.nil);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.NIL));\n } },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n // Generation remains untouched - go through graphTerm\n};\n\n/**\n * [[116]](https://www.w3.org/TR/sparql12-query/#rReifiedTriple)\n */\nexport const reifiedTriple: SparqlRule<'reifiedTriple', TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTriple',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const open = CONSUME(l12.reificationOpen);\n const subject = SUBRULE(reifiedTripleSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(reifiedTripleObject);\n const reifierVal = OPTION(() => SUBRULE(reifier));\n const close = CONSUME(l12.reificationClose);\n\n return ACTION(() => {\n // A reifier would be auto generated in this case, but we are not allowed to use them.\n if (reifierVal === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.astFactory.tripleCollectionReifiedTriple(\n C.astFactory.sourceLocation(open, close),\n subject,\n predicate,\n object,\n reifierVal?.val,\n );\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<'));\n const triple = ast.triples[0];\n SUBRULE(graphNodePath, triple.subject);\n\n F.printFilter(ast, () => PRINT_WORD(''));\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, triple.object);\n\n SUBRULE(annotationPath, [ F.wrap(ast.identifier, ast.identifier.loc) ]);\n F.printFilter(ast, () => PRINT_WORD('>>'));\n },\n};\n\n/**\n * [[117]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleSubject)\n */\nexport const reifiedTripleSubject:\nSparqlGrammarRule<'reifiedTripleSubject', Term | TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTripleSubject',\n impl: ({ OR, SUBRULE }) => C => OR<RuleDefReturn<typeof reifiedTripleSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(reifiedTriple) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[118]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleObject)\n */\nexport const reifiedTripleObject:\nSparqlGrammarRule<'reifiedTripleObject', RuleDefReturn<typeof reifiedTripleSubject>> =\n <const> {\n name: 'reifiedTripleObject',\n impl: reifiedTripleSubject.impl,\n };\n\n/**\n * [[119]](https://www.w3.org/TR/sparql12-query/#rTripleTerm)\n */\nexport const tripleTerm: SparqlRule<'tripleTerm', TermTriple> = <const> {\n name: 'tripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(tripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n return ACTION(() => C.astFactory.termTriple(subject, predicate, object, C.astFactory.sourceLocation(open, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<('));\n SUBRULE(graphNodePath, ast.subject);\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, ast.predicate);\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, ast.object);\n F.printFilter(ast, () => PRINT_WORD(')>>'));\n },\n};\n\n/**\n * [[120]](https://www.w3.org/TR/sparql12-query/#rTripleTermSubject)\n */\nexport const tripleTermSubject:\nSparqlGrammarRule<'tripleTermSubject', TermVariable | TermIri | TermLiteral | TermBlank | TermTriple> = <const> {\n name: 'tripleTermSubject',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof tripleTermSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[121]](https://www.w3.org/TR/sparql12-query/#rTripleTermObject)\n */\nexport const tripleTermObject:\nSparqlGrammarRule<'tripleTermObject', RuleDefReturn<typeof tripleTermSubject>> = <const> {\n name: 'tripleTermObject',\n impl: tripleTermSubject.impl,\n};\n\n/**\n * [[122]](https://www.w3.org/TR/sparql12-query/#rTripleTermData)\n */\nexport const tripleTermData: SparqlGrammarRule<'tripleTermData', TermTriple> = <const> {\n name: 'tripleTermData',\n impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermDataSubject);\n const predicate = OR([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => {\n const token = CONSUME(l11.a);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.TYPE));\n } },\n ]);\n const object = SUBRULE(tripleTermDataObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.astFactory.termTriple(subject, predicate, object, C.astFactory.sourceLocation(open, close)));\n },\n};\n\n/**\n * [[123]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataSubject)\n */\nexport const tripleTermDataSubject: SparqlGrammarRule<'tripleTermDataSubject', TermIri | TermLiteral | TermTriple> =\n <const> {\n name: 'tripleTermDataSubject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n ]),\n };\n\n/**\n * [[124]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataObject)\n */\nexport const tripleTermDataObject:\nSparqlGrammarRule<'tripleTermDataObject', RuleDefReturn<typeof tripleTermDataSubject>> = <const> {\n name: 'tripleTermDataObject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.primaryExpression}.\n * [[136]](https://www.w3.org/TR/sparql12-query/#rPrimaryExpression)\n */\nexport const primaryExpression: SparqlGrammarRule<'primaryExpression', Expression> = <const> {\n name: 'primaryExpression',\n impl: $ => C => $.OR2<Expression>([\n { ALT: () => S11.primaryExpression.impl($)(C) },\n { ALT: () => $.SUBRULE(exprTripleTerm) },\n ]),\n};\n\n/**\n * [[137]](https://www.w3.org/TR/sparql12-query/#rExprTripleTerm)\n */\nexport const exprTripleTerm: SparqlGrammarRule<'exprTripleTerm', TermTriple> = <const> {\n name: 'exprTripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(exprTripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(exprTripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.astFactory.termTriple(\n subject,\n predicate,\n object,\n C.astFactory.sourceLocation(open, close),\n ));\n },\n};\n\n/**\n * [[138]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermSubject)\n */\nexport const exprTripleTermSubject:\nSparqlGrammarRule<'exprTripleTermSubject', TermIri | TermVariable | TermLiteral | TermTriple> = <const> {\n name: 'exprTripleTermSubject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n ]),\n};\n\n/**\n * [[139]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermObject)\n */\nexport const exprTripleTermObject:\nSparqlGrammarRule<'exprTripleTermObject', RuleDefReturn<typeof exprTripleTermSubject> | TermTriple> = <const> {\n name: 'exprTripleTermObject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(exprTripleTerm) },\n ]),\n};\n\nexport const buildInLangDir = funcExpr1(l12.buildInLangDir);\nexport const buildInLangStrDir = funcExpr3(l12.buildInStrLangDir);\nexport const buildInHasLang = funcExpr1(l12.buildInHasLang);\nexport const buildInHasLangDir = funcExpr1(l12.buildInHasLangDir);\nexport const buildInIsTriple = funcExpr1(l12.buildInIsTRIPLE);\nexport const buildInTriple = funcExpr3(l12.buildInTRIPLE);\nexport const buildInSubject = funcExpr1(l12.buildInSUBJECT);\nexport const buildInPredicate = funcExpr1(l12.buildInPREDICATE);\nexport const buildInObject = funcExpr1(l12.buildInOBJECT);\n\n/**\n * OVERRIDING RULE: {@link S11.builtInCall}.\n * [[141]](https://www.w3.org/TR/sparql12-query/#rBuiltInCall)\n */\nexport const builtInCall: typeof S11.builtInCall = <const> {\n name: 'builtInCall',\n impl: $ => C => $.OR2<T11.Expression>([\n { ALT: () => S11.builtInCall.impl($)(C) },\n { ALT: () => $.SUBRULE(buildInLangDir) },\n { ALT: () => $.SUBRULE(buildInLangStrDir) },\n { ALT: () => $.SUBRULE(buildInHasLang) },\n { ALT: () => $.SUBRULE(buildInHasLangDir) },\n { ALT: () => $.SUBRULE(buildInIsTriple) },\n { ALT: () => $.SUBRULE(buildInTriple) },\n { ALT: () => $.SUBRULE(buildInSubject) },\n { ALT: () => $.SUBRULE(buildInPredicate) },\n { ALT: () => $.SUBRULE(buildInObject) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.rdfLiteral}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const rdfLiteral: SparqlGrammarRule<'rdfLiteral', RuleDefReturn<typeof S11.rdfLiteral>> = <const> {\n name: 'rdfLiteral',\n impl: ({ ACTION, SUBRULE, OPTION, CONSUME, OR }) => (C) => {\n const value = SUBRULE(S11.string);\n return OPTION(() => OR<RuleDefReturn<typeof rdfLiteral>>([\n { ALT: () => {\n const langTag = CONSUME(l12.LANG_DIR);\n return ACTION(() => {\n const literal = C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, langTag),\n value.value,\n langTag.image.slice(1).toLowerCase(),\n );\n langTagHasCorrectRange(literal);\n return literal;\n });\n } },\n { ALT: () => {\n CONSUME(l11.symbols.hathat);\n const iriVal = SUBRULE(S11.iri);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, iriVal),\n value.value,\n iriVal,\n ));\n } },\n ])) ?? value;\n },\n};\n\nexport const unaryExpression: SparqlGrammarRule<(typeof S11.unaryExpression)['name'], Expression> = {\n name: 'unaryExpression',\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => C => OR1<Expression>([\n { ALT: () => SUBRULE1(primaryExpression) },\n { ALT: () => {\n const operator = CONSUME(l11.symbols.exclamation);\n const expr = SUBRULE1(unaryExpression);\n return ACTION(() => C.astFactory.expressionOperation(\n '!',\n [ <T11.Expression> expr ],\n C.astFactory.sourceLocation(operator, expr),\n ));\n } },\n { ALT: () => {\n const operator = OR2([\n { ALT: () => CONSUME(l11.symbols.opPlus) },\n { ALT: () => CONSUME(l11.symbols.opMinus) },\n ]);\n const expr = SUBRULE2(primaryExpression);\n return ACTION(() => C.astFactory.expressionOperation(\n operator.image === '+' ? 'UPLUS' : 'UMINUS',\n [ <T11.Expression> expr ],\n C.astFactory.sourceLocation(operator, expr),\n ));\n } },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.triplesBlock}.\n */\nexport const generateTriplesBlock: SparqlGeneratorRule<'triplesBlock', PatternBgp> = {\n name: 'triplesBlock',\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE, HANDLE_LOC }) => (ast, { astFactory: F }) => {\n for (const [ index, triple ] of ast.triples.entries()) {\n HANDLE_LOC(triple, () => {\n const nextTriple = ast.triples.at(index + 1);\n if (F.isTripleCollection(triple)) {\n SUBRULE(graphNodePath, triple);\n // A top level tripleCollection block means that it is either not used in a triple\n // - or is the subject of a triple. In case it is the subject,\n // the identifier of the block will be the subject of the next triple and that subject is not materialized.\n const isSubjectOfTriple = nextTriple?.type === 'triple' &&\n F.isSourceLocationNoMaterialize(nextTriple.subject.loc);\n if (!isSubjectOfTriple) {\n F.printFilter(triple, () => {\n PRINT_WORD('.');\n NEW_LINE();\n });\n }\n } else {\n // Subject\n SUBRULE(graphNodePath, triple.subject);\n F.printFilter(ast, () => PRINT_WORD(''));\n // Predicate\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n F.printFilter(ast, () => PRINT_WORD(''));\n // Object\n SUBRULE(graphNodePath, triple.object);\n SUBRULE(annotationPath, triple.annotations ?? []);\n\n // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT\n if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||\n !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {\n F.printFilter(ast, () => {\n PRINT_WORD('.');\n NEW_LINE();\n });\n } else if (F.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {\n F.printFilter(ast, () => PRINT_WORD(','));\n } else {\n F.printFilter(ast, () => {\n PRINT_WORD(';');\n NEW_LINE();\n });\n }\n }\n });\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.graphTerm}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const generateGraphTerm: SparqlGeneratorRule<'graphTerm', GraphTerm> = {\n name: 'graphTerm',\n gImpl: $ => (ast, C) => {\n if (C.astFactory.isTermTriple(ast)) {\n $.SUBRULE(tripleTerm, ast);\n } else {\n S11.graphTerm.gImpl($)(ast, C);\n }\n },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../lib/grammar.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * This module will define patch rules that should be used in combination with the sparql11 grammar to create\n * a sparql12 grammar.\n * Rules in this module redefine the return type of core grammar rules.\n * It is therefore essential that the parser retypes the rules from the core grammar.\n */\nimport type { RuleDefReturn, Wrap } from '@traqula/core';\nimport { traqulaIndentation } from '@traqula/core';\nimport { CommonIRIs, funcExpr1, funcExpr3, gram as S11, lex as l11 } from '@traqula/rules-sparql-1-1';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport * as l12 from './lexer.js';\nimport type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from './sparql12HelperTypes.js';\nimport type {\n Annotation,\n ContextDefinition,\n ContextDefinitionVersion,\n Expression,\n GraphNode,\n GraphTerm,\n PatternBgp,\n QuerySelect,\n Term,\n TermBlank,\n TermIri,\n TermLiteral,\n TermTriple,\n TermVariable,\n TripleCollectionBlankNodeProperties,\n TripleCollectionReifiedTriple,\n TripleNesting,\n} from './sparql12Types.js';\nimport { langTagHasCorrectRange, queryProjectionIsGood } from './validators.js';\n\n/**\n *[[7]](https://www.w3.org/TR/sparql12-query/#rVersionDecl)\n */\nexport const versionDecl: SparqlRule<'versionDecl', ContextDefinitionVersion> = {\n name: 'versionDecl',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const versionToken = CONSUME(l12.version);\n const identifier = SUBRULE(versionSpecifier);\n return ACTION(() =>\n C.astFactory.contextDefinitionVersion(identifier.val, C.astFactory.sourceLocation(versionToken, identifier)));\n },\n gImpl: ({ PRINT_ON_OWN_LINE }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => {\n PRINT_ON_OWN_LINE('VERSION ', `${S11.stringEscapedLexical(ast.version)}`);\n });\n },\n};\n\n/**\n * [[9]](https://www.w3.org/TR/sparql12-query/#rSelectQuery)\n * (Validator has changed: https://github.com/w3c/sparql-query/pull/380)\n */\nexport const selectQuery: SparqlGrammarRule<'selectQuery', Omit<QuerySelect, 'type' | 'context' | 'values'>> = <const> {\n name: 'selectQuery',\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const selectVal = SUBRULE(S11.selectClause);\n const from = SUBRULE(S11.datasetClauseStar);\n const where = SUBRULE(S11.whereClause);\n const modifiers = SUBRULE(S11.solutionModifier);\n\n return ACTION(() => {\n const ret = {\n subType: 'select',\n where: where.val,\n solutionModifiers: modifiers,\n datasets: from,\n ...selectVal.val,\n loc: C.astFactory.sourceLocation(\n selectVal,\n where,\n modifiers.group,\n modifiers.having,\n modifiers.order,\n modifiers.limitOffset,\n ),\n } satisfies RuleDefReturn<typeof selectQuery>;\n if (!C.skipValidation) {\n queryProjectionIsGood(ret);\n }\n return ret;\n });\n },\n};\n\n/**\n * [[8]](https://www.w3.org/TR/sparql12-query/#rVersionSpecifier)\n */\nexport const versionSpecifier: SparqlGrammarRule<'versionSpecifier', Wrap<string>> = {\n name: 'versionSpecifier',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const token = OR([\n { ALT: () => CONSUME(l11.terminals.stringLiteral1) },\n { ALT: () => CONSUME(l11.terminals.stringLiteral2) },\n ]);\n return ACTION(() => C.astFactory.wrap(token.image.slice(1, -1), C.astFactory.sourceLocation(token)));\n },\n};\n\n/**\n * OVERRIDING RULE {@link S11.prologue}\n * [[4]](https://www.w3.org/TR/sparql12-query/#rPrologue)\n */\nexport const prologue: SparqlRule<'prologue', ContextDefinition[]> = {\n name: 'prologue',\n impl: ({ SUBRULE, MANY, OR }) => () => {\n const result: ContextDefinition[] = [];\n MANY(() => OR([\n { ALT: () => result.push(SUBRULE(S11.baseDecl)) },\n // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.\n // We might need to check this.\n { ALT: () => result.push(SUBRULE(S11.prefixDecl)) },\n { ALT: () => result.push(SUBRULE(versionDecl)) },\n ]));\n return result;\n },\n gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {\n for (const context of ast) {\n if (F.isContextDefinitionBase(context)) {\n SUBRULE(S11.baseDecl, context);\n } else if (F.isContextDefinitionPrefix(context)) {\n SUBRULE(S11.prefixDecl, context);\n } else {\n SUBRULE(versionDecl, context);\n }\n }\n },\n};\n\nfunction reifiedTripleBlockImpl<T extends string>(name: T, allowPath: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const triple = SUBRULE(reifiedTriple);\n const properties = SUBRULE(\n allowPath ? S11.propertyListPath : S11.propertyList,\n ACTION(() => C.astFactory.dematerialized(triple.identifier)),\n );\n\n return ACTION(() => <T11.BasicGraphPattern> [ triple, ...properties ]);\n },\n };\n}\n/**\n * [[58]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlock) Used by triplesSameSubject\n */\nexport const reifiedTripleBlock = reifiedTripleBlockImpl('reifiedTripleBlock', false);\n/**\n * [[59]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlockPath) Used by TriplesSameSubjectPath\n */\nexport const reifiedTripleBlockPath = reifiedTripleBlockImpl('reifiedTripleBlockPath', true);\n\n/**\n * OVERRIDING RULE: {@link S11.dataBlockValue}.\n * [[69]](https://www.w3.org/TR/sparql12-query/#rDataBlockValue)\n */\nexport const dataBlockValue:\nSparqlGrammarRule<'dataBlockValue', RuleDefReturn<typeof S11.dataBlockValue> | TermTriple> = <const> {\n name: 'dataBlockValue',\n impl: $ => C => $.OR2<RuleDefReturn<typeof dataBlockValue>>([\n { ALT: () => S11.dataBlockValue.impl($)(C) },\n { ALT: () => $.SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * [[70]](https://www.w3.org/TR/sparql12-query/#rReifier)\n */\nexport const reifier: SparqlGrammarRule<'reifier', Wrap<RuleDefReturn<typeof varOrReifierId>>> = <const> {\n name: 'reifier',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const tildeToken = CONSUME(l12.tilde);\n const reifier = OPTION(() => SUBRULE(varOrReifierId));\n return ACTION(() => {\n if (reifier === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.astFactory.wrap(\n reifier ?? C.astFactory.termBlank(undefined, C.astFactory.sourceLocation()),\n C.astFactory.sourceLocation(tildeToken, reifier),\n );\n });\n },\n};\n\n/**\n * [[71]](https://www.w3.org/TR/sparql12-query/#rVarOrReifierId)\n */\nexport const varOrReifierId: SparqlGrammarRule<'varOrReifierId', TermVariable | TermIri | TermBlank> =\n <const> {\n name: 'varOrReifierId',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof varOrReifierId>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(S11.blankNode) },\n ]),\n };\n\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: $ => C => $.OR2([\n { ALT: () => allowPaths ?\n S11.triplesSameSubjectPath.impl($)(C) :\n S11.triplesSameSubject.impl($)(C) },\n { ALT: () => $.SUBRULE(allowPaths ? reifiedTripleBlockPath : reifiedTripleBlock) },\n ]),\n };\n}\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubject}\n * [[81]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubject)\n */\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubjectPath}\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath)\n */\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\n\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting, [TripleNesting['subject'], TripleNesting['predicate']]> {\n return <const>{\n name,\n impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {\n const objectVal = SUBRULE(allowPaths ? graphNodePath : graphNode);\n const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation);\n\n return ACTION(() => {\n const F = C.astFactory;\n if (F.isPathPure(predicate) && annotationVal.length > 0) {\n throw new Error('Note 17 violation');\n }\n return F.annotatedTriple(\n subject,\n predicate,\n objectVal,\n annotationVal,\n );\n });\n },\n };\n}\n/**\n * OVERRIDING RULE: {@link S11.object}.\n * [[86]](https://www.w3.org/TR/sparql12-query/#rObject) Used by ObjectList\n */\nexport const object = objectImpl('object', false);\n/**\n * OVERRIDING RULE: {@link S11.objectPath}.\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath) Used by ObjectListPath\n */\nexport const objectPath = objectImpl('objectPath', true);\n\nfunction annotationImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, Annotation[]> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR, MANY }) => (C) => {\n const annotations: Annotation[] = [];\n let currentReifier: TermBlank | TermVariable | TermIri | undefined;\n\n MANY(() => {\n OR([\n { ALT: () => {\n const node = SUBRULE(reifier);\n annotations.push(node);\n currentReifier = node.val;\n } },\n { ALT: () => {\n ACTION(() => {\n if (!currentReifier && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n currentReifier = currentReifier ?? C.astFactory.termBlank(undefined, C.astFactory.sourceLocation());\n });\n const block = SUBRULE(\n allowPaths ? annotationBlockPath : annotationBlock,\n currentReifier!,\n );\n ACTION(() => {\n annotations.push(block);\n currentReifier = undefined;\n });\n } },\n ]);\n });\n return annotations;\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n for (const annotation of ast) {\n if (F.isTripleCollectionBlankNodeProperties(annotation)) {\n SUBRULE(annotationBlockPath, annotation);\n } else {\n F.printFilter(annotation, () => PRINT_WORD('~'));\n SUBRULE(graphNodePath, annotation.val);\n }\n }\n },\n };\n}\n/**\n * [[109]](https://www.w3.org/TR/sparql12-query/#rAnnotationPath)\n */\nexport const annotationPath = annotationImpl('annotationPath', true);\n/**\n * [[111]](https://www.w3.org/TR/sparql12-query/#rAnnotation)\n */\nexport const annotation = annotationImpl('annotation', false);\n\nfunction annotationBlockImpl<T extends string>(name: T, allowPaths: boolean):\n SparqlGrammarRule<T, TripleCollectionBlankNodeProperties, [TripleCollectionBlankNodeProperties['identifier']]> &\n SparqlGeneratorRule<T, TripleCollectionBlankNodeProperties> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C, arg) => {\n const open = CONSUME(l12.annotationOpen);\n const res = SUBRULE(\n allowPaths ? S11.propertyListPathNotEmpty : S11.propertyListNotEmpty,\n arg,\n );\n const close = CONSUME(l12.annotationClose);\n\n return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(\n arg,\n res,\n C.astFactory.sourceLocation(open, close),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {\n const { astFactory: F, indentInc } = C;\n F.printFilter(ast, () => {\n PRINT_WORD('{|');\n if (ast.triples.length > 1) {\n C[traqulaIndentation] += indentInc;\n NEW_LINE();\n }\n });\n\n function printTriple(triple: TripleNesting): void {\n HANDLE_LOC(triple, () => {\n if (F.isTerm(triple.predicate)) {\n SUBRULE(graphNodePath, triple.predicate);\n } else {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n }\n F.printFilter(triple, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, triple.object);\n });\n }\n\n const [ head, ...tail ] = ast.triples;\n printTriple(head);\n for (const triple of tail) {\n F.printFilter(ast, () => {\n PRINT_WORD(';');\n NEW_LINE();\n });\n printTriple(triple);\n }\n\n F.printFilter(ast, () => {\n if (ast.triples.length > 1) {\n PRINT_ON_OWN_LINE('|}');\n } else {\n PRINT_WORD('|}');\n }\n });\n },\n };\n}\n/**\n * [[110]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlockPath)\n */\nexport const annotationBlockPath = annotationBlockImpl('annotationBlockPath', true);\n/**\n * [[112]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlock)\n */\nexport const annotationBlock = annotationBlockImpl('annotationBlock', false);\n\n/**\n * OVERRIDING RULE: {@link S11.graphNode}.\n * [[113]](https://www.w3.org/TR/sparql12-query/#rGraphNode)\n */\nexport const graphNode: SparqlGrammarRule<'graphNode', GraphNode> = <const> {\n name: 'graphNode',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNode>>([\n { ALT: () => S11.graphNode.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n};\n/**\n * OVERRIDING RULE: {@link S11.graphNodePath}.\n * [[114]](https://www.w3.org/TR/sparql12-query/#rGraphNodePath)\n */\nexport const graphNodePath: SparqlRule<'graphNodePath', GraphNode> = <const> {\n name: 'graphNodePath',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNodePath>>([\n { ALT: () => S11.graphNodePath.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n gImpl: $ => (ast, C) => {\n if (C.astFactory.isTripleCollectionReifiedTriple(ast)) {\n $.SUBRULE(reifiedTriple, ast);\n } else {\n S11.graphNodePath.gImpl($)(<T11.Term | T11.TripleCollection> ast, C);\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.varOrTerm}.\n * [[115]](https://www.w3.org/TR/sparql12-query/#rVarOrTerm)\n */\nexport const varOrTerm: SparqlGrammarRule<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ ACTION, SUBRULE, OR, CONSUME }) => C => OR<Term>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => {\n const token = CONSUME(l11.terminals.nil);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.NIL));\n } },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n // Generation remains untouched - go through graphTerm\n};\n\n/**\n * [[116]](https://www.w3.org/TR/sparql12-query/#rReifiedTriple)\n */\nexport const reifiedTriple: SparqlRule<'reifiedTriple', TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTriple',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const open = CONSUME(l12.reificationOpen);\n const subject = SUBRULE(reifiedTripleSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(reifiedTripleObject);\n const reifierVal = OPTION(() => SUBRULE(reifier));\n const close = CONSUME(l12.reificationClose);\n\n return ACTION(() => {\n // A reifier would be auto generated in this case, but we are not allowed to use them.\n if (reifierVal === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.astFactory.tripleCollectionReifiedTriple(\n C.astFactory.sourceLocation(open, close),\n subject,\n predicate,\n object,\n reifierVal?.val,\n );\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<'));\n const triple = ast.triples[0];\n SUBRULE(graphNodePath, triple.subject);\n\n F.printFilter(ast, () => PRINT_WORD(''));\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, triple.object);\n\n SUBRULE(annotationPath, [ F.wrap(ast.identifier, ast.identifier.loc) ]);\n F.printFilter(ast, () => PRINT_WORD('>>'));\n },\n};\n\n/**\n * [[117]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleSubject)\n */\nexport const reifiedTripleSubject:\nSparqlGrammarRule<'reifiedTripleSubject', Term | TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTripleSubject',\n impl: ({ OR, SUBRULE }) => C => OR<RuleDefReturn<typeof reifiedTripleSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(reifiedTriple) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[118]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleObject)\n */\nexport const reifiedTripleObject:\nSparqlGrammarRule<'reifiedTripleObject', RuleDefReturn<typeof reifiedTripleSubject>> =\n <const> {\n name: 'reifiedTripleObject',\n impl: reifiedTripleSubject.impl,\n };\n\n/**\n * [[119]](https://www.w3.org/TR/sparql12-query/#rTripleTerm)\n */\nexport const tripleTerm: SparqlRule<'tripleTerm', TermTriple> = <const> {\n name: 'tripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(tripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n return ACTION(() => C.astFactory.termTriple(subject, predicate, object, C.astFactory.sourceLocation(open, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<('));\n SUBRULE(graphNodePath, ast.subject);\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, ast.predicate);\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, ast.object);\n F.printFilter(ast, () => PRINT_WORD(')>>'));\n },\n};\n\n/**\n * [[120]](https://www.w3.org/TR/sparql12-query/#rTripleTermSubject)\n */\nexport const tripleTermSubject:\nSparqlGrammarRule<'tripleTermSubject', TermVariable | TermIri | TermLiteral | TermBlank | TermTriple> = <const> {\n name: 'tripleTermSubject',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof tripleTermSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[121]](https://www.w3.org/TR/sparql12-query/#rTripleTermObject)\n */\nexport const tripleTermObject:\nSparqlGrammarRule<'tripleTermObject', RuleDefReturn<typeof tripleTermSubject>> = <const> {\n name: 'tripleTermObject',\n impl: tripleTermSubject.impl,\n};\n\n/**\n * [[122]](https://www.w3.org/TR/sparql12-query/#rTripleTermData)\n */\nexport const tripleTermData: SparqlGrammarRule<'tripleTermData', TermTriple> = <const> {\n name: 'tripleTermData',\n impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermDataSubject);\n const predicate = OR([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => {\n const token = CONSUME(l11.a);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.TYPE));\n } },\n ]);\n const object = SUBRULE(tripleTermDataObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.astFactory.termTriple(subject, predicate, object, C.astFactory.sourceLocation(open, close)));\n },\n};\n\n/**\n * [[123]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataSubject)\n */\nexport const tripleTermDataSubject: SparqlGrammarRule<'tripleTermDataSubject', TermIri | TermLiteral | TermTriple> =\n <const> {\n name: 'tripleTermDataSubject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n ]),\n };\n\n/**\n * [[124]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataObject)\n */\nexport const tripleTermDataObject:\nSparqlGrammarRule<'tripleTermDataObject', RuleDefReturn<typeof tripleTermDataSubject>> = <const> {\n name: 'tripleTermDataObject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.primaryExpression}.\n * [[136]](https://www.w3.org/TR/sparql12-query/#rPrimaryExpression)\n */\nexport const primaryExpression: SparqlGrammarRule<'primaryExpression', Expression> = <const> {\n name: 'primaryExpression',\n impl: $ => C => $.OR2<Expression>([\n { ALT: () => S11.primaryExpression.impl($)(C) },\n { ALT: () => $.SUBRULE(exprTripleTerm) },\n ]),\n};\n\n/**\n * [[137]](https://www.w3.org/TR/sparql12-query/#rExprTripleTerm)\n */\nexport const exprTripleTerm: SparqlGrammarRule<'exprTripleTerm', TermTriple> = <const> {\n name: 'exprTripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(exprTripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(exprTripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.astFactory.termTriple(\n subject,\n predicate,\n object,\n C.astFactory.sourceLocation(open, close),\n ));\n },\n};\n\n/**\n * [[138]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermSubject)\n */\nexport const exprTripleTermSubject:\nSparqlGrammarRule<'exprTripleTermSubject', TermIri | TermVariable | TermLiteral | TermTriple> = <const> {\n name: 'exprTripleTermSubject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n ]),\n};\n\n/**\n * [[139]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermObject)\n */\nexport const exprTripleTermObject:\nSparqlGrammarRule<'exprTripleTermObject', RuleDefReturn<typeof exprTripleTermSubject> | TermTriple> = <const> {\n name: 'exprTripleTermObject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(exprTripleTerm) },\n ]),\n};\n\nexport const buildInLangDir = funcExpr1(l12.buildInLangDir);\nexport const buildInLangStrDir = funcExpr3(l12.buildInStrLangDir);\nexport const buildInHasLang = funcExpr1(l12.buildInHasLang);\nexport const buildInHasLangDir = funcExpr1(l12.buildInHasLangDir);\nexport const buildInIsTriple = funcExpr1(l12.buildInIsTRIPLE);\nexport const buildInTriple = funcExpr3(l12.buildInTRIPLE);\nexport const buildInSubject = funcExpr1(l12.buildInSUBJECT);\nexport const buildInPredicate = funcExpr1(l12.buildInPREDICATE);\nexport const buildInObject = funcExpr1(l12.buildInOBJECT);\n\n/**\n * OVERRIDING RULE: {@link S11.builtInCall}.\n * [[141]](https://www.w3.org/TR/sparql12-query/#rBuiltInCall)\n */\nexport const builtInCall: typeof S11.builtInCall = <const> {\n name: 'builtInCall',\n impl: $ => C => $.OR2<T11.Expression>([\n { ALT: () => S11.builtInCall.impl($)(C) },\n { ALT: () => $.SUBRULE(buildInLangDir) },\n { ALT: () => $.SUBRULE(buildInLangStrDir) },\n { ALT: () => $.SUBRULE(buildInHasLang) },\n { ALT: () => $.SUBRULE(buildInHasLangDir) },\n { ALT: () => $.SUBRULE(buildInIsTriple) },\n { ALT: () => $.SUBRULE(buildInTriple) },\n { ALT: () => $.SUBRULE(buildInSubject) },\n { ALT: () => $.SUBRULE(buildInPredicate) },\n { ALT: () => $.SUBRULE(buildInObject) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.rdfLiteral}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const rdfLiteral: SparqlGrammarRule<'rdfLiteral', RuleDefReturn<typeof S11.rdfLiteral>> = <const> {\n name: 'rdfLiteral',\n impl: ({ ACTION, SUBRULE, OPTION, CONSUME, OR }) => (C) => {\n const value = SUBRULE(S11.string);\n return OPTION(() => OR<RuleDefReturn<typeof rdfLiteral>>([\n { ALT: () => {\n const langTag = CONSUME(l12.LANG_DIR);\n return ACTION(() => {\n const literal = C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, langTag),\n value.value,\n langTag.image.slice(1).toLowerCase(),\n );\n langTagHasCorrectRange(literal);\n return literal;\n });\n } },\n { ALT: () => {\n CONSUME(l11.symbols.hathat);\n const iriVal = SUBRULE(S11.iri);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, iriVal),\n value.value,\n iriVal,\n ));\n } },\n ])) ?? value;\n },\n};\n\nexport const unaryExpression: SparqlGrammarRule<(typeof S11.unaryExpression)['name'], Expression> = {\n name: 'unaryExpression',\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => C => OR1<Expression>([\n { ALT: () => SUBRULE1(primaryExpression) },\n { ALT: () => {\n const operator = CONSUME(l11.symbols.exclamation);\n const expr = SUBRULE1(unaryExpression);\n return ACTION(() => C.astFactory.expressionOperation(\n '!',\n [ <T11.Expression> expr ],\n C.astFactory.sourceLocation(operator, expr),\n ));\n } },\n { ALT: () => {\n const operator = OR2([\n { ALT: () => CONSUME(l11.symbols.opPlus) },\n { ALT: () => CONSUME(l11.symbols.opMinus) },\n ]);\n const expr = SUBRULE2(primaryExpression);\n return ACTION(() => C.astFactory.expressionOperation(\n operator.image === '+' ? 'UPLUS' : 'UMINUS',\n [ <T11.Expression> expr ],\n C.astFactory.sourceLocation(operator, expr),\n ));\n } },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.triplesBlock}.\n */\nexport const generateTriplesBlock: SparqlGeneratorRule<'triplesBlock', PatternBgp> = {\n name: 'triplesBlock',\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE, HANDLE_LOC }) => (ast, { astFactory: F }) => {\n for (const [ index, triple ] of ast.triples.entries()) {\n HANDLE_LOC(triple, () => {\n const nextTriple = ast.triples.at(index + 1);\n if (F.isTripleCollection(triple)) {\n SUBRULE(graphNodePath, triple);\n // A top level tripleCollection block means that it is either not used in a triple\n // - or is the subject of a triple. In case it is the subject,\n // the identifier of the block will be the subject of the next triple and that subject is not materialized.\n const isSubjectOfTriple = nextTriple?.type === 'triple' &&\n F.isSourceLocationNoMaterialize(nextTriple.subject.loc);\n if (!isSubjectOfTriple) {\n F.printFilter(triple, () => {\n PRINT_WORD('.');\n NEW_LINE();\n });\n }\n } else {\n // Subject\n SUBRULE(graphNodePath, triple.subject);\n F.printFilter(ast, () => PRINT_WORD(''));\n // Predicate\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n F.printFilter(ast, () => PRINT_WORD(''));\n // Object\n SUBRULE(graphNodePath, triple.object);\n SUBRULE(annotationPath, triple.annotations ?? []);\n\n // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT\n if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||\n !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {\n F.printFilter(ast, () => {\n PRINT_WORD('.');\n NEW_LINE();\n });\n } else if (F.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {\n F.printFilter(ast, () => PRINT_WORD(','));\n } else {\n F.printFilter(ast, () => {\n PRINT_WORD(';');\n NEW_LINE();\n });\n }\n }\n });\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.graphTerm}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const generateGraphTerm: SparqlGeneratorRule<'graphTerm', GraphTerm> = {\n name: 'graphTerm',\n gImpl: $ => (ast, C) => {\n if (C.astFactory.isTermTriple(ast)) {\n $.SUBRULE(tripleTerm, ast);\n } else {\n S11.graphTerm.gImpl($)(ast, C);\n }\n },\n};\n"]}
|
package/dist/cjs/lib/index.js
CHANGED
|
@@ -36,12 +36,19 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
36
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.lex = exports.gram = void 0;
|
|
39
|
+
exports.validation = exports.lex = exports.gram = void 0;
|
|
40
|
+
const rules_sparql_1_1_1 = require("@traqula/rules-sparql-1-1");
|
|
41
|
+
const validation12 = __importStar(require("./validators.js"));
|
|
40
42
|
exports.gram = __importStar(require("./grammar.js"));
|
|
41
43
|
exports.lex = __importStar(require("./lexer.js"));
|
|
42
44
|
__exportStar(require("./sparql12Types.js"), exports);
|
|
43
45
|
__exportStar(require("./sparql12HelperTypes.js"), exports);
|
|
44
46
|
__exportStar(require("./parserUtils.js"), exports);
|
|
45
47
|
__exportStar(require("./AstFactory.js"), exports);
|
|
48
|
+
// TODO: deprecate this export
|
|
46
49
|
__exportStar(require("./validators.js"), exports);
|
|
50
|
+
exports.validation = {
|
|
51
|
+
...rules_sparql_1_1_1.validation,
|
|
52
|
+
...validation12,
|
|
53
|
+
};
|
|
47
54
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAqC;AACrC,kDAAkC;AAClC,qDAAmC;AACnC,2DAAyC;AACzC,mDAAiC;AACjC,kDAAgC;AAChC,kDAAgC","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gEAEmC;AACnC,8DAAgD;AAEhD,qDAAqC;AACrC,kDAAkC;AAClC,qDAAmC;AACnC,2DAAyC;AACzC,mDAAiC;AACjC,kDAAgC;AAChC,8BAA8B;AAC9B,kDAAgC;AAGnB,QAAA,UAAU,GAAqE;IAC1F,GAAG,6BAAY;IACf,GAAG,YAAY;CAChB,CAAC","sourcesContent":["import {\n validation as validation11,\n} from '@traqula/rules-sparql-1-1';\nimport * as validation12 from './validators.js';\n\nexport * as gram from './grammar.js';\nexport * as lex from './lexer.js';\nexport * from './sparql12Types.js';\nexport * from './sparql12HelperTypes.js';\nexport * from './parserUtils.js';\nexport * from './AstFactory.js';\n// TODO: deprecate this export\nexport * from './validators.js';\n\ntype OverriddenKeys = keyof typeof validation11 & keyof typeof validation12;\nexport const validation = <Omit<typeof validation11, OverriddenKeys> & typeof validation12> {\n ...validation11,\n ...validation12,\n};\n"]}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.langTagHasCorrectRange = langTagHasCorrectRange;
|
|
4
4
|
exports.findPatternBoundedVars = findPatternBoundedVars;
|
|
5
|
+
exports.queryProjectionIsGood = queryProjectionIsGood;
|
|
6
|
+
const rules_sparql_1_1_1 = require("@traqula/rules-sparql-1-1");
|
|
5
7
|
const AstFactory_js_1 = require("./AstFactory.js");
|
|
6
8
|
const F = new AstFactory_js_1.AstFactory();
|
|
7
9
|
function isLangDir(dir) {
|
|
@@ -96,4 +98,77 @@ function findPatternBoundedVars(iter, boundedVars) {
|
|
|
96
98
|
}
|
|
97
99
|
}
|
|
98
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Verify that the projected variables (select head) are allowed:
|
|
103
|
+
* - no group-by on select *
|
|
104
|
+
* - if group-by, selected variables need to be collected by the group-by
|
|
105
|
+
* - 'select ?var as ?other', ?other cannot be in scope
|
|
106
|
+
*/
|
|
107
|
+
function queryProjectionIsGood(query) {
|
|
108
|
+
// NoGroupByOnWildcardSelect
|
|
109
|
+
if (query.variables.length === 1 && F.isWildcard(query.variables[0])) {
|
|
110
|
+
if (query.solutionModifiers.group !== undefined) {
|
|
111
|
+
throw new Error('GROUP BY not allowed with wildcard');
|
|
112
|
+
}
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// CannotProjectUngroupedVars - can be skipped if `SELECT *`
|
|
116
|
+
// Check for projection of ungrouped variable
|
|
117
|
+
// Check can be skipped in case of wildcard select.
|
|
118
|
+
const variables = query.variables;
|
|
119
|
+
const hasCountAggregate = variables.flatMap(varVal => F.isTerm(varVal) ? [] : (0, rules_sparql_1_1_1.getAggregatesOfExpression)(varVal.expression)).some(agg => agg.aggregation === 'count' && !agg.expression.some(arg => F.isWildcard(arg)));
|
|
120
|
+
const groupBy = query.solutionModifiers.group;
|
|
121
|
+
if (hasCountAggregate || groupBy) {
|
|
122
|
+
// We have to check whether
|
|
123
|
+
// 1. Variables used in projection are usable given the group by clause
|
|
124
|
+
// 2. A selectCount will create an implicit group by clause.
|
|
125
|
+
// Variables bound by preceding (expr AS ?var) expressions are in scope for later expressions.
|
|
126
|
+
const asBoundVars = new Set();
|
|
127
|
+
for (const selectVar of variables) {
|
|
128
|
+
if (F.isTerm(selectVar)) {
|
|
129
|
+
if (!groupBy || !groupBy.groupings.map(groupvar => (0, rules_sparql_1_1_1.getExpressionId)(groupvar))
|
|
130
|
+
.includes(((0, rules_sparql_1_1_1.getExpressionId)(selectVar)))) {
|
|
131
|
+
throw new Error('Variable not allowed in projection');
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else if ((0, rules_sparql_1_1_1.getAggregatesOfExpression)(selectVar.expression).length === 0) {
|
|
135
|
+
// Current value binding does not use aggregates
|
|
136
|
+
const usedvars = new Set();
|
|
137
|
+
(0, rules_sparql_1_1_1.getVariablesFromExpression)(selectVar.expression, usedvars);
|
|
138
|
+
for (const usedvar of usedvars) {
|
|
139
|
+
// If the var is created within the select, it is fine.
|
|
140
|
+
if (asBoundVars.has(usedvar)) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
if (!groupBy || !groupBy.groupings.map(groupVar => (0, rules_sparql_1_1_1.getExpressionId)(groupVar)).includes(usedvar)) {
|
|
144
|
+
throw new Error(`Use of ungrouped variable in projection of operation (?${usedvar})`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (!F.isTerm(selectVar)) {
|
|
149
|
+
// Register a var is created by a bind
|
|
150
|
+
asBoundVars.add(selectVar.variable.value);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// NOTE 12: Check if id of each AS-selected column is not yet bound by subquery
|
|
155
|
+
const subqueries = query.where.patterns.filter(pattern => pattern.type === 'query');
|
|
156
|
+
if (subqueries.length > 0) {
|
|
157
|
+
const selectBoundedVars = new Set();
|
|
158
|
+
for (const variable of variables) {
|
|
159
|
+
if ('variable' in variable) {
|
|
160
|
+
selectBoundedVars.add(variable.variable.value);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Look at in scope variables
|
|
164
|
+
const vars = subqueries.flatMap(sub => sub.variables)
|
|
165
|
+
.map(v => F.isTerm(v) ? v.value : (F.isWildcard(v) ? '*' : v.variable.value));
|
|
166
|
+
const subqueryIds = new Set(vars);
|
|
167
|
+
for (const selectedVarId of selectBoundedVars) {
|
|
168
|
+
if (subqueryIds.has(selectedVarId)) {
|
|
169
|
+
throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
99
174
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../lib/validators.ts"],"names":[],"mappings":";;AAkBA,wDAUC;AAED,wDA2EC;AAzGD,mDAA6C;AAY7C,MAAM,CAAC,GAAG,IAAI,0BAAU,EAAE,CAAC;AAE3B,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;AACxC,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAoB;IACzD,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAE,CAAC,EAAE,SAAS,CAAE,GAAG,QAAQ,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,uBAAuB,SAAS,iBAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;YACvI,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CACpC,IAAuF,EACvF,WAAwB;IAExB,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBAC/B,sBAAsB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC9C,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;oBACnC,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;wBACpB,sBAAsB,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;oBAClD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBAClC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAClD,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YACpD,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAClD,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpD,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACjD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;YAChD,sBAAsB,CACpB,CAAC,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAC9D,WAAW,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;SAAM,IACL,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5G,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;SAAM,IAAI,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC5D,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import { AstFactory } from './AstFactory.js';\nimport type {\n Path,\n Pattern,\n SparqlQuery,\n Term,\n TermLiteral,\n TripleCollection,\n TripleNesting,\n Wildcard,\n} from './sparql12Types.js';\n\nconst F = new AstFactory();\n\nfunction isLangDir(dir: string): dir is 'ltr' | 'rtl' {\n return dir === 'ltr' || dir === 'rtl';\n}\n\nexport function langTagHasCorrectRange(literal: TermLiteral): void {\n if (F.isTermLiteralLangStr(literal)) {\n const dirSplit = literal.langOrIri.split('--');\n if (dirSplit.length > 1) {\n const [ _, direction ] = dirSplit;\n if (!isLangDir(direction)) {\n throw new Error(`language direction \"${direction}\" of literal \"${JSON.stringify(literal)}\" is not is required range 'ltr' | 'rtl'.`);\n }\n }\n }\n}\n\nexport function findPatternBoundedVars(\n iter: SparqlQuery | Pattern | TripleNesting | TripleCollection | Path | Term | Wildcard,\n boundedVars: Set<string>,\n): void {\n if (F.isQuery(iter) || F.isUpdate(iter)) {\n if (F.isQuerySelect(iter) || F.isQueryDescribe(iter)) {\n if (iter.where && iter.variables.some(x => F.isWildcard(x))) {\n findPatternBoundedVars(iter.where, boundedVars);\n } else {\n for (const v of iter.variables) {\n findPatternBoundedVars(v, boundedVars);\n }\n }\n if (iter.solutionModifiers.group) {\n const grouping = iter.solutionModifiers.group;\n for (const g of grouping.groupings) {\n if ('variable' in g) {\n findPatternBoundedVars(g.variable, boundedVars);\n }\n }\n }\n if (iter.values?.values && iter.values.values.length > 0) {\n const values = iter.values.values;\n for (const v of Object.keys(values[0])) {\n boundedVars.add(v);\n }\n }\n }\n } else if (F.isTerm(iter)) {\n if (F.isTermVariable(iter)) {\n boundedVars.add(iter.value);\n }\n if (F.isTermTriple(iter)) {\n findPatternBoundedVars(iter.subject, boundedVars);\n findPatternBoundedVars(iter.predicate, boundedVars);\n findPatternBoundedVars(iter.object, boundedVars);\n }\n } else if (F.isTriple(iter)) {\n findPatternBoundedVars(iter.subject, boundedVars);\n findPatternBoundedVars(iter.predicate, boundedVars);\n findPatternBoundedVars(iter.object, boundedVars);\n for (const annotation of iter.annotations ?? []) {\n findPatternBoundedVars(\n F.isTripleCollection(annotation) ? annotation : annotation.val,\n boundedVars,\n );\n }\n } else if (F.isPath(iter)) {\n for (const item of iter.items) {\n findPatternBoundedVars(item, boundedVars);\n }\n } else if (F.isTripleCollection(iter) || F.isPatternBgp(iter)) {\n for (const triple of iter.triples) {\n findPatternBoundedVars(triple, boundedVars);\n }\n } else if (\n F.isPatternGroup(iter) || F.isPatternUnion(iter) || F.isPatternOptional(iter) || F.isPatternService(iter)) {\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n if (F.isPatternService(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n }\n } else if (F.isPatternBind(iter)) {\n findPatternBoundedVars(iter.variable, boundedVars);\n } else if (F.isPatternValues(iter)) {\n for (const variable of Object.keys(iter.values.at(0) ?? {})) {\n boundedVars.add(variable);\n }\n } else if (F.isPatternGraph(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../lib/validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { getAggregatesOfExpression, getExpressionId, getVariablesFromExpression } from '@traqula/rules-sparql-1-1';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport { AstFactory } from './AstFactory.js';\nimport type {\n Path,\n Pattern,\n PatternBind,\n QuerySelect,\n SparqlQuery,\n Term,\n TermLiteral,\n TermVariable,\n TripleCollection,\n TripleNesting,\n Wildcard,\n} from './sparql12Types.js';\n\nconst F = new AstFactory();\n\nfunction isLangDir(dir: string): dir is 'ltr' | 'rtl' {\n return dir === 'ltr' || dir === 'rtl';\n}\n\nexport function langTagHasCorrectRange(literal: TermLiteral): void {\n if (F.isTermLiteralLangStr(literal)) {\n const dirSplit = literal.langOrIri.split('--');\n if (dirSplit.length > 1) {\n const [ _, direction ] = dirSplit;\n if (!isLangDir(direction)) {\n throw new Error(`language direction \"${direction}\" of literal \"${JSON.stringify(literal)}\" is not is required range 'ltr' | 'rtl'.`);\n }\n }\n }\n}\n\nexport function findPatternBoundedVars(\n iter: SparqlQuery | Pattern | TripleNesting | TripleCollection | Path | Term | Wildcard,\n boundedVars: Set<string>,\n): void {\n if (F.isQuery(iter) || F.isUpdate(iter)) {\n if (F.isQuerySelect(iter) || F.isQueryDescribe(iter)) {\n if (iter.where && iter.variables.some(x => F.isWildcard(x))) {\n findPatternBoundedVars(iter.where, boundedVars);\n } else {\n for (const v of iter.variables) {\n findPatternBoundedVars(v, boundedVars);\n }\n }\n if (iter.solutionModifiers.group) {\n const grouping = iter.solutionModifiers.group;\n for (const g of grouping.groupings) {\n if ('variable' in g) {\n findPatternBoundedVars(g.variable, boundedVars);\n }\n }\n }\n if (iter.values?.values && iter.values.values.length > 0) {\n const values = iter.values.values;\n for (const v of Object.keys(values[0])) {\n boundedVars.add(v);\n }\n }\n }\n } else if (F.isTerm(iter)) {\n if (F.isTermVariable(iter)) {\n boundedVars.add(iter.value);\n }\n if (F.isTermTriple(iter)) {\n findPatternBoundedVars(iter.subject, boundedVars);\n findPatternBoundedVars(iter.predicate, boundedVars);\n findPatternBoundedVars(iter.object, boundedVars);\n }\n } else if (F.isTriple(iter)) {\n findPatternBoundedVars(iter.subject, boundedVars);\n findPatternBoundedVars(iter.predicate, boundedVars);\n findPatternBoundedVars(iter.object, boundedVars);\n for (const annotation of iter.annotations ?? []) {\n findPatternBoundedVars(\n F.isTripleCollection(annotation) ? annotation : annotation.val,\n boundedVars,\n );\n }\n } else if (F.isPath(iter)) {\n for (const item of iter.items) {\n findPatternBoundedVars(item, boundedVars);\n }\n } else if (F.isTripleCollection(iter) || F.isPatternBgp(iter)) {\n for (const triple of iter.triples) {\n findPatternBoundedVars(triple, boundedVars);\n }\n } else if (\n F.isPatternGroup(iter) || F.isPatternUnion(iter) || F.isPatternOptional(iter) || F.isPatternService(iter)) {\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n if (F.isPatternService(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n }\n } else if (F.isPatternBind(iter)) {\n findPatternBoundedVars(iter.variable, boundedVars);\n } else if (F.isPatternValues(iter)) {\n for (const variable of Object.keys(iter.values.at(0) ?? {})) {\n boundedVars.add(variable);\n }\n } else if (F.isPatternGraph(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n }\n}\n\n/**\n * Verify that the projected variables (select head) are allowed:\n * - no group-by on select *\n * - if group-by, selected variables need to be collected by the group-by\n * - 'select ?var as ?other', ?other cannot be in scope\n */\nexport function queryProjectionIsGood(query: Pick<QuerySelect, 'variables' | 'solutionModifiers' | 'where'>): void {\n // NoGroupByOnWildcardSelect\n if (query.variables.length === 1 && F.isWildcard(query.variables[0])) {\n if (query.solutionModifiers.group !== undefined) {\n throw new Error('GROUP BY not allowed with wildcard');\n }\n return;\n }\n\n // CannotProjectUngroupedVars - can be skipped if `SELECT *`\n // Check for projection of ungrouped variable\n // Check can be skipped in case of wildcard select.\n const variables = <Exclude<typeof query.variables, [Wildcard]>> query.variables;\n const hasCountAggregate = variables.flatMap(\n varVal => F.isTerm(varVal) ? [] : getAggregatesOfExpression(<T11.Expression> varVal.expression),\n ).some(agg => agg.aggregation === 'count' && !agg.expression.some(arg => F.isWildcard(arg)));\n const groupBy = query.solutionModifiers.group;\n if (hasCountAggregate || groupBy) {\n // We have to check whether\n // 1. Variables used in projection are usable given the group by clause\n // 2. A selectCount will create an implicit group by clause.\n // Variables bound by preceding (expr AS ?var) expressions are in scope for later expressions.\n const asBoundVars = new Set<string>();\n for (const selectVar of variables) {\n if (F.isTerm(selectVar)) {\n if (!groupBy || !groupBy.groupings.map(groupvar =>\n getExpressionId(<T11.Expression | T11.SolutionModifierGroupBind> groupvar))\n .includes((getExpressionId(selectVar)))) {\n throw new Error('Variable not allowed in projection');\n }\n } else if (getAggregatesOfExpression(<T11.Expression> selectVar.expression).length === 0) {\n // Current value binding does not use aggregates\n const usedvars = new Set<string>();\n getVariablesFromExpression(<T11.Expression> selectVar.expression, usedvars);\n for (const usedvar of usedvars) {\n // If the var is created within the select, it is fine.\n if (asBoundVars.has(usedvar)) {\n continue;\n }\n if (!groupBy || !groupBy.groupings.map(groupVar =>\n getExpressionId(<T11.Expression | T11.SolutionModifierGroupBind>groupVar)).includes(usedvar)) {\n throw new Error(`Use of ungrouped variable in projection of operation (?${usedvar})`);\n }\n }\n }\n if (!F.isTerm(selectVar)) {\n // Register a var is created by a bind\n asBoundVars.add(selectVar.variable.value);\n }\n }\n }\n\n // NOTE 12: Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = query.where.patterns.filter(pattern => pattern.type === 'query');\n if (subqueries.length > 0) {\n const selectBoundedVars = new Set<string>();\n for (const variable of variables) {\n if ('variable' in variable) {\n selectBoundedVars.add(variable.variable.value);\n }\n }\n\n // Look at in scope variables\n const vars = subqueries.flatMap<TermVariable | PatternBind | Wildcard>(sub => sub.variables)\n .map(v => F.isTerm(v) ? v.value : (F.isWildcard(v) ? '*' : v.variable.value));\n const subqueryIds = new Set(vars);\n for (const selectedVarId of selectBoundedVars) {\n if (subqueryIds.has(selectedVarId)) {\n throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);\n }\n }\n }\n}\n"]}
|
|
@@ -8,11 +8,16 @@ import type { RuleDefReturn, Wrap } from '@traqula/core';
|
|
|
8
8
|
import { gram as S11 } from '@traqula/rules-sparql-1-1';
|
|
9
9
|
import type * as T11 from '@traqula/rules-sparql-1-1';
|
|
10
10
|
import type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from './sparql12HelperTypes.js';
|
|
11
|
-
import type { Annotation, ContextDefinition, ContextDefinitionVersion, Expression, GraphNode, GraphTerm, PatternBgp, Term, TermBlank, TermIri, TermLiteral, TermTriple, TermVariable, TripleCollectionReifiedTriple, TripleNesting } from './sparql12Types.js';
|
|
11
|
+
import type { Annotation, ContextDefinition, ContextDefinitionVersion, Expression, GraphNode, GraphTerm, PatternBgp, QuerySelect, Term, TermBlank, TermIri, TermLiteral, TermTriple, TermVariable, TripleCollectionReifiedTriple, TripleNesting } from './sparql12Types.js';
|
|
12
12
|
/**
|
|
13
13
|
*[[7]](https://www.w3.org/TR/sparql12-query/#rVersionDecl)
|
|
14
14
|
*/
|
|
15
15
|
export declare const versionDecl: SparqlRule<'versionDecl', ContextDefinitionVersion>;
|
|
16
|
+
/**
|
|
17
|
+
* [[9]](https://www.w3.org/TR/sparql12-query/#rSelectQuery)
|
|
18
|
+
* (Validator has changed: https://github.com/w3c/sparql-query/pull/380)
|
|
19
|
+
*/
|
|
20
|
+
export declare const selectQuery: SparqlGrammarRule<'selectQuery', Omit<QuerySelect, 'type' | 'context' | 'values'>>;
|
|
16
21
|
/**
|
|
17
22
|
* [[8]](https://www.w3.org/TR/sparql12-query/#rVersionSpecifier)
|
|
18
23
|
*/
|
|
@@ -57,12 +62,12 @@ export declare const triplesSameSubjectPath: SparqlGrammarRule<"triplesSameSubje
|
|
|
57
62
|
* OVERRIDING RULE: {@link S11.object}.
|
|
58
63
|
* [[86]](https://www.w3.org/TR/sparql12-query/#rObject) Used by ObjectList
|
|
59
64
|
*/
|
|
60
|
-
export declare const object: SparqlGrammarRule<"object", TripleNesting, [GraphNode, T11.TermIriFull | T11.TermIriPrefixed | T11.
|
|
65
|
+
export declare const object: SparqlGrammarRule<"object", TripleNesting, [GraphNode, T11.TermIriFull | T11.TermIriPrefixed | T11.PropertyPathChain | T11.PathModified | T11.PathNegated | T11.TermVariable]>;
|
|
61
66
|
/**
|
|
62
67
|
* OVERRIDING RULE: {@link S11.objectPath}.
|
|
63
68
|
* [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath) Used by ObjectListPath
|
|
64
69
|
*/
|
|
65
|
-
export declare const objectPath: SparqlGrammarRule<"objectPath", TripleNesting, [GraphNode, T11.TermIriFull | T11.TermIriPrefixed | T11.
|
|
70
|
+
export declare const objectPath: SparqlGrammarRule<"objectPath", TripleNesting, [GraphNode, T11.TermIriFull | T11.TermIriPrefixed | T11.PropertyPathChain | T11.PathModified | T11.PathNegated | T11.TermVariable]>;
|
|
66
71
|
/**
|
|
67
72
|
* [[109]](https://www.w3.org/TR/sparql12-query/#rAnnotationPath)
|
|
68
73
|
*/
|
|
@@ -77,7 +82,7 @@ export declare const annotation: SparqlRule<"annotation", Annotation[]>;
|
|
|
77
82
|
export declare const annotationBlockPath: SparqlGrammarRule<"annotationBlockPath", import("@traqula/core").Patch<T11.TripleCollectionBlankNodeProperties, {
|
|
78
83
|
triples: TripleNesting[];
|
|
79
84
|
identifier: TermBlank | TermVariable | TermIri;
|
|
80
|
-
}>, [T11.TermIri | T11.
|
|
85
|
+
}>, [T11.TermIri | T11.TermBlank | T11.TermVariable]> & SparqlGeneratorRule<"annotationBlockPath", import("@traqula/core").Patch<T11.TripleCollectionBlankNodeProperties, {
|
|
81
86
|
triples: TripleNesting[];
|
|
82
87
|
identifier: TermBlank | TermVariable | TermIri;
|
|
83
88
|
}>>;
|
|
@@ -87,7 +92,7 @@ export declare const annotationBlockPath: SparqlGrammarRule<"annotationBlockPath
|
|
|
87
92
|
export declare const annotationBlock: SparqlGrammarRule<"annotationBlock", import("@traqula/core").Patch<T11.TripleCollectionBlankNodeProperties, {
|
|
88
93
|
triples: TripleNesting[];
|
|
89
94
|
identifier: TermBlank | TermVariable | TermIri;
|
|
90
|
-
}>, [T11.TermIri | T11.
|
|
95
|
+
}>, [T11.TermIri | T11.TermBlank | T11.TermVariable]> & SparqlGeneratorRule<"annotationBlock", import("@traqula/core").Patch<T11.TripleCollectionBlankNodeProperties, {
|
|
91
96
|
triples: TripleNesting[];
|
|
92
97
|
identifier: TermBlank | TermVariable | TermIri;
|
|
93
98
|
}>>;
|
package/dist/esm/lib/grammar.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { traqulaIndentation } from '@traqula/core';
|
|
2
2
|
import { CommonIRIs, funcExpr1, funcExpr3, gram as S11, lex as l11 } from '@traqula/rules-sparql-1-1';
|
|
3
3
|
import * as l12 from './lexer.js';
|
|
4
|
-
import { langTagHasCorrectRange } from './validators.js';
|
|
4
|
+
import { langTagHasCorrectRange, queryProjectionIsGood } from './validators.js';
|
|
5
5
|
/**
|
|
6
6
|
*[[7]](https://www.w3.org/TR/sparql12-query/#rVersionDecl)
|
|
7
7
|
*/
|
|
@@ -18,6 +18,33 @@ export const versionDecl = {
|
|
|
18
18
|
});
|
|
19
19
|
},
|
|
20
20
|
};
|
|
21
|
+
/**
|
|
22
|
+
* [[9]](https://www.w3.org/TR/sparql12-query/#rSelectQuery)
|
|
23
|
+
* (Validator has changed: https://github.com/w3c/sparql-query/pull/380)
|
|
24
|
+
*/
|
|
25
|
+
export const selectQuery = {
|
|
26
|
+
name: 'selectQuery',
|
|
27
|
+
impl: ({ ACTION, SUBRULE }) => (C) => {
|
|
28
|
+
const selectVal = SUBRULE(S11.selectClause);
|
|
29
|
+
const from = SUBRULE(S11.datasetClauseStar);
|
|
30
|
+
const where = SUBRULE(S11.whereClause);
|
|
31
|
+
const modifiers = SUBRULE(S11.solutionModifier);
|
|
32
|
+
return ACTION(() => {
|
|
33
|
+
const ret = {
|
|
34
|
+
subType: 'select',
|
|
35
|
+
where: where.val,
|
|
36
|
+
solutionModifiers: modifiers,
|
|
37
|
+
datasets: from,
|
|
38
|
+
...selectVal.val,
|
|
39
|
+
loc: C.astFactory.sourceLocation(selectVal, where, modifiers.group, modifiers.having, modifiers.order, modifiers.limitOffset),
|
|
40
|
+
};
|
|
41
|
+
if (!C.skipValidation) {
|
|
42
|
+
queryProjectionIsGood(ret);
|
|
43
|
+
}
|
|
44
|
+
return ret;
|
|
45
|
+
});
|
|
46
|
+
},
|
|
47
|
+
};
|
|
21
48
|
/**
|
|
22
49
|
* [[8]](https://www.w3.org/TR/sparql12-query/#rVersionSpecifier)
|
|
23
50
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../lib/grammar.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * This module will define patch rules that should be used in combination with the sparql11 grammar to create\n * a sparql12 grammar.\n * Rules in this module redefine the return type of core grammar rules.\n * It is therefore essential that the parser retypes the rules from the core grammar.\n */\nimport type { RuleDefReturn, Wrap } from '@traqula/core';\nimport { traqulaIndentation } from '@traqula/core';\nimport { CommonIRIs, funcExpr1, funcExpr3, gram as S11, lex as l11 } from '@traqula/rules-sparql-1-1';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport * as l12 from './lexer.js';\nimport type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from './sparql12HelperTypes.js';\nimport type {\n Annotation,\n ContextDefinition,\n ContextDefinitionVersion,\n Expression,\n GraphNode,\n GraphTerm,\n PatternBgp,\n Term,\n TermBlank,\n TermIri,\n TermLiteral,\n TermTriple,\n TermVariable,\n TripleCollectionBlankNodeProperties,\n TripleCollectionReifiedTriple,\n TripleNesting,\n} from './sparql12Types.js';\nimport { langTagHasCorrectRange } from './validators.js';\n\n/**\n *[[7]](https://www.w3.org/TR/sparql12-query/#rVersionDecl)\n */\nexport const versionDecl: SparqlRule<'versionDecl', ContextDefinitionVersion> = {\n name: 'versionDecl',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const versionToken = CONSUME(l12.version);\n const identifier = SUBRULE(versionSpecifier);\n return ACTION(() =>\n C.astFactory.contextDefinitionVersion(identifier.val, C.astFactory.sourceLocation(versionToken, identifier)));\n },\n gImpl: ({ PRINT_ON_OWN_LINE }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => {\n PRINT_ON_OWN_LINE('VERSION ', `${S11.stringEscapedLexical(ast.version)}`);\n });\n },\n};\n\n/**\n * [[8]](https://www.w3.org/TR/sparql12-query/#rVersionSpecifier)\n */\nexport const versionSpecifier: SparqlGrammarRule<'versionSpecifier', Wrap<string>> = {\n name: 'versionSpecifier',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const token = OR([\n { ALT: () => CONSUME(l11.terminals.stringLiteral1) },\n { ALT: () => CONSUME(l11.terminals.stringLiteral2) },\n ]);\n return ACTION(() => C.astFactory.wrap(token.image.slice(1, -1), C.astFactory.sourceLocation(token)));\n },\n};\n\n/**\n * OVERRIDING RULE {@link S11.prologue}\n * [[4]](https://www.w3.org/TR/sparql12-query/#rPrologue)\n */\nexport const prologue: SparqlRule<'prologue', ContextDefinition[]> = {\n name: 'prologue',\n impl: ({ SUBRULE, MANY, OR }) => () => {\n const result: ContextDefinition[] = [];\n MANY(() => OR([\n { ALT: () => result.push(SUBRULE(S11.baseDecl)) },\n // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.\n // We might need to check this.\n { ALT: () => result.push(SUBRULE(S11.prefixDecl)) },\n { ALT: () => result.push(SUBRULE(versionDecl)) },\n ]));\n return result;\n },\n gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {\n for (const context of ast) {\n if (F.isContextDefinitionBase(context)) {\n SUBRULE(S11.baseDecl, context);\n } else if (F.isContextDefinitionPrefix(context)) {\n SUBRULE(S11.prefixDecl, context);\n } else {\n SUBRULE(versionDecl, context);\n }\n }\n },\n};\n\nfunction reifiedTripleBlockImpl<T extends string>(name: T, allowPath: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const triple = SUBRULE(reifiedTriple);\n const properties = SUBRULE(\n allowPath ? S11.propertyListPath : S11.propertyList,\n ACTION(() => C.astFactory.dematerialized(triple.identifier)),\n );\n\n return ACTION(() => <T11.BasicGraphPattern> [ triple, ...properties ]);\n },\n };\n}\n/**\n * [[58]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlock) Used by triplesSameSubject\n */\nexport const reifiedTripleBlock = reifiedTripleBlockImpl('reifiedTripleBlock', false);\n/**\n * [[59]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlockPath) Used by TriplesSameSubjectPath\n */\nexport const reifiedTripleBlockPath = reifiedTripleBlockImpl('reifiedTripleBlockPath', true);\n\n/**\n * OVERRIDING RULE: {@link S11.dataBlockValue}.\n * [[69]](https://www.w3.org/TR/sparql12-query/#rDataBlockValue)\n */\nexport const dataBlockValue:\nSparqlGrammarRule<'dataBlockValue', RuleDefReturn<typeof S11.dataBlockValue> | TermTriple> = <const> {\n name: 'dataBlockValue',\n impl: $ => C => $.OR2<RuleDefReturn<typeof dataBlockValue>>([\n { ALT: () => S11.dataBlockValue.impl($)(C) },\n { ALT: () => $.SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * [[70]](https://www.w3.org/TR/sparql12-query/#rReifier)\n */\nexport const reifier: SparqlGrammarRule<'reifier', Wrap<RuleDefReturn<typeof varOrReifierId>>> = <const> {\n name: 'reifier',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const tildeToken = CONSUME(l12.tilde);\n const reifier = OPTION(() => SUBRULE(varOrReifierId));\n return ACTION(() => {\n if (reifier === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.astFactory.wrap(\n reifier ?? C.astFactory.termBlank(undefined, C.astFactory.sourceLocation()),\n C.astFactory.sourceLocation(tildeToken, reifier),\n );\n });\n },\n};\n\n/**\n * [[71]](https://www.w3.org/TR/sparql12-query/#rVarOrReifierId)\n */\nexport const varOrReifierId: SparqlGrammarRule<'varOrReifierId', TermVariable | TermIri | TermBlank> =\n <const> {\n name: 'varOrReifierId',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof varOrReifierId>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(S11.blankNode) },\n ]),\n };\n\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: $ => C => $.OR2([\n { ALT: () => allowPaths ?\n S11.triplesSameSubjectPath.impl($)(C) :\n S11.triplesSameSubject.impl($)(C) },\n { ALT: () => $.SUBRULE(allowPaths ? reifiedTripleBlockPath : reifiedTripleBlock) },\n ]),\n };\n}\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubject}\n * [[81]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubject)\n */\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubjectPath}\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath)\n */\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\n\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting, [TripleNesting['subject'], TripleNesting['predicate']]> {\n return <const>{\n name,\n impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {\n const objectVal = SUBRULE(allowPaths ? graphNodePath : graphNode);\n const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation);\n\n return ACTION(() => {\n const F = C.astFactory;\n if (F.isPathPure(predicate) && annotationVal.length > 0) {\n throw new Error('Note 17 violation');\n }\n return F.annotatedTriple(\n subject,\n predicate,\n objectVal,\n annotationVal,\n );\n });\n },\n };\n}\n/**\n * OVERRIDING RULE: {@link S11.object}.\n * [[86]](https://www.w3.org/TR/sparql12-query/#rObject) Used by ObjectList\n */\nexport const object = objectImpl('object', false);\n/**\n * OVERRIDING RULE: {@link S11.objectPath}.\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath) Used by ObjectListPath\n */\nexport const objectPath = objectImpl('objectPath', true);\n\nfunction annotationImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, Annotation[]> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR, MANY }) => (C) => {\n const annotations: Annotation[] = [];\n let currentReifier: TermBlank | TermVariable | TermIri | undefined;\n\n MANY(() => {\n OR([\n { ALT: () => {\n const node = SUBRULE(reifier);\n annotations.push(node);\n currentReifier = node.val;\n } },\n { ALT: () => {\n ACTION(() => {\n if (!currentReifier && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n currentReifier = currentReifier ?? C.astFactory.termBlank(undefined, C.astFactory.sourceLocation());\n });\n const block = SUBRULE(\n allowPaths ? annotationBlockPath : annotationBlock,\n currentReifier!,\n );\n ACTION(() => {\n annotations.push(block);\n currentReifier = undefined;\n });\n } },\n ]);\n });\n return annotations;\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n for (const annotation of ast) {\n if (F.isTripleCollectionBlankNodeProperties(annotation)) {\n SUBRULE(annotationBlockPath, annotation);\n } else {\n F.printFilter(annotation, () => PRINT_WORD('~'));\n SUBRULE(graphNodePath, annotation.val);\n }\n }\n },\n };\n}\n/**\n * [[109]](https://www.w3.org/TR/sparql12-query/#rAnnotationPath)\n */\nexport const annotationPath = annotationImpl('annotationPath', true);\n/**\n * [[111]](https://www.w3.org/TR/sparql12-query/#rAnnotation)\n */\nexport const annotation = annotationImpl('annotation', false);\n\nfunction annotationBlockImpl<T extends string>(name: T, allowPaths: boolean):\n SparqlGrammarRule<T, TripleCollectionBlankNodeProperties, [TripleCollectionBlankNodeProperties['identifier']]> &\n SparqlGeneratorRule<T, TripleCollectionBlankNodeProperties> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C, arg) => {\n const open = CONSUME(l12.annotationOpen);\n const res = SUBRULE(\n allowPaths ? S11.propertyListPathNotEmpty : S11.propertyListNotEmpty,\n arg,\n );\n const close = CONSUME(l12.annotationClose);\n\n return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(\n arg,\n res,\n C.astFactory.sourceLocation(open, close),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {\n const { astFactory: F, indentInc } = C;\n F.printFilter(ast, () => {\n PRINT_WORD('{|');\n if (ast.triples.length > 1) {\n C[traqulaIndentation] += indentInc;\n NEW_LINE();\n }\n });\n\n function printTriple(triple: TripleNesting): void {\n HANDLE_LOC(triple, () => {\n if (F.isTerm(triple.predicate)) {\n SUBRULE(graphNodePath, triple.predicate);\n } else {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n }\n F.printFilter(triple, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, triple.object);\n });\n }\n\n const [ head, ...tail ] = ast.triples;\n printTriple(head);\n for (const triple of tail) {\n F.printFilter(ast, () => {\n PRINT_WORD(';');\n NEW_LINE();\n });\n printTriple(triple);\n }\n\n F.printFilter(ast, () => {\n if (ast.triples.length > 1) {\n PRINT_ON_OWN_LINE('|}');\n } else {\n PRINT_WORD('|}');\n }\n });\n },\n };\n}\n/**\n * [[110]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlockPath)\n */\nexport const annotationBlockPath = annotationBlockImpl('annotationBlockPath', true);\n/**\n * [[112]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlock)\n */\nexport const annotationBlock = annotationBlockImpl('annotationBlock', false);\n\n/**\n * OVERRIDING RULE: {@link S11.graphNode}.\n * [[113]](https://www.w3.org/TR/sparql12-query/#rGraphNode)\n */\nexport const graphNode: SparqlGrammarRule<'graphNode', GraphNode> = <const> {\n name: 'graphNode',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNode>>([\n { ALT: () => S11.graphNode.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n};\n/**\n * OVERRIDING RULE: {@link S11.graphNodePath}.\n * [[114]](https://www.w3.org/TR/sparql12-query/#rGraphNodePath)\n */\nexport const graphNodePath: SparqlRule<'graphNodePath', GraphNode> = <const> {\n name: 'graphNodePath',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNodePath>>([\n { ALT: () => S11.graphNodePath.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n gImpl: $ => (ast, C) => {\n if (C.astFactory.isTripleCollectionReifiedTriple(ast)) {\n $.SUBRULE(reifiedTriple, ast);\n } else {\n S11.graphNodePath.gImpl($)(<T11.Term | T11.TripleCollection> ast, C);\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.varOrTerm}.\n * [[115]](https://www.w3.org/TR/sparql12-query/#rVarOrTerm)\n */\nexport const varOrTerm: SparqlGrammarRule<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ ACTION, SUBRULE, OR, CONSUME }) => C => OR<Term>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => {\n const token = CONSUME(l11.terminals.nil);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.NIL));\n } },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n // Generation remains untouched - go through graphTerm\n};\n\n/**\n * [[116]](https://www.w3.org/TR/sparql12-query/#rReifiedTriple)\n */\nexport const reifiedTriple: SparqlRule<'reifiedTriple', TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTriple',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const open = CONSUME(l12.reificationOpen);\n const subject = SUBRULE(reifiedTripleSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(reifiedTripleObject);\n const reifierVal = OPTION(() => SUBRULE(reifier));\n const close = CONSUME(l12.reificationClose);\n\n return ACTION(() => {\n // A reifier would be auto generated in this case, but we are not allowed to use them.\n if (reifierVal === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.astFactory.tripleCollectionReifiedTriple(\n C.astFactory.sourceLocation(open, close),\n subject,\n predicate,\n object,\n reifierVal?.val,\n );\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<'));\n const triple = ast.triples[0];\n SUBRULE(graphNodePath, triple.subject);\n\n F.printFilter(ast, () => PRINT_WORD(''));\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, triple.object);\n\n SUBRULE(annotationPath, [ F.wrap(ast.identifier, ast.identifier.loc) ]);\n F.printFilter(ast, () => PRINT_WORD('>>'));\n },\n};\n\n/**\n * [[117]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleSubject)\n */\nexport const reifiedTripleSubject:\nSparqlGrammarRule<'reifiedTripleSubject', Term | TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTripleSubject',\n impl: ({ OR, SUBRULE }) => C => OR<RuleDefReturn<typeof reifiedTripleSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(reifiedTriple) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[118]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleObject)\n */\nexport const reifiedTripleObject:\nSparqlGrammarRule<'reifiedTripleObject', RuleDefReturn<typeof reifiedTripleSubject>> =\n <const> {\n name: 'reifiedTripleObject',\n impl: reifiedTripleSubject.impl,\n };\n\n/**\n * [[119]](https://www.w3.org/TR/sparql12-query/#rTripleTerm)\n */\nexport const tripleTerm: SparqlRule<'tripleTerm', TermTriple> = <const> {\n name: 'tripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(tripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n return ACTION(() => C.astFactory.termTriple(subject, predicate, object, C.astFactory.sourceLocation(open, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<('));\n SUBRULE(graphNodePath, ast.subject);\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, ast.predicate);\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, ast.object);\n F.printFilter(ast, () => PRINT_WORD(')>>'));\n },\n};\n\n/**\n * [[120]](https://www.w3.org/TR/sparql12-query/#rTripleTermSubject)\n */\nexport const tripleTermSubject:\nSparqlGrammarRule<'tripleTermSubject', TermVariable | TermIri | TermLiteral | TermBlank | TermTriple> = <const> {\n name: 'tripleTermSubject',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof tripleTermSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[121]](https://www.w3.org/TR/sparql12-query/#rTripleTermObject)\n */\nexport const tripleTermObject:\nSparqlGrammarRule<'tripleTermObject', RuleDefReturn<typeof tripleTermSubject>> = <const> {\n name: 'tripleTermObject',\n impl: tripleTermSubject.impl,\n};\n\n/**\n * [[122]](https://www.w3.org/TR/sparql12-query/#rTripleTermData)\n */\nexport const tripleTermData: SparqlGrammarRule<'tripleTermData', TermTriple> = <const> {\n name: 'tripleTermData',\n impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermDataSubject);\n const predicate = OR([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => {\n const token = CONSUME(l11.a);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.TYPE));\n } },\n ]);\n const object = SUBRULE(tripleTermDataObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.astFactory.termTriple(subject, predicate, object, C.astFactory.sourceLocation(open, close)));\n },\n};\n\n/**\n * [[123]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataSubject)\n */\nexport const tripleTermDataSubject: SparqlGrammarRule<'tripleTermDataSubject', TermIri | TermLiteral | TermTriple> =\n <const> {\n name: 'tripleTermDataSubject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n ]),\n };\n\n/**\n * [[124]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataObject)\n */\nexport const tripleTermDataObject:\nSparqlGrammarRule<'tripleTermDataObject', RuleDefReturn<typeof tripleTermDataSubject>> = <const> {\n name: 'tripleTermDataObject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.primaryExpression}.\n * [[136]](https://www.w3.org/TR/sparql12-query/#rPrimaryExpression)\n */\nexport const primaryExpression: SparqlGrammarRule<'primaryExpression', Expression> = <const> {\n name: 'primaryExpression',\n impl: $ => C => $.OR2<Expression>([\n { ALT: () => S11.primaryExpression.impl($)(C) },\n { ALT: () => $.SUBRULE(exprTripleTerm) },\n ]),\n};\n\n/**\n * [[137]](https://www.w3.org/TR/sparql12-query/#rExprTripleTerm)\n */\nexport const exprTripleTerm: SparqlGrammarRule<'exprTripleTerm', TermTriple> = <const> {\n name: 'exprTripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(exprTripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(exprTripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.astFactory.termTriple(\n subject,\n predicate,\n object,\n C.astFactory.sourceLocation(open, close),\n ));\n },\n};\n\n/**\n * [[138]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermSubject)\n */\nexport const exprTripleTermSubject:\nSparqlGrammarRule<'exprTripleTermSubject', TermIri | TermVariable | TermLiteral | TermTriple> = <const> {\n name: 'exprTripleTermSubject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n ]),\n};\n\n/**\n * [[139]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermObject)\n */\nexport const exprTripleTermObject:\nSparqlGrammarRule<'exprTripleTermObject', RuleDefReturn<typeof exprTripleTermSubject> | TermTriple> = <const> {\n name: 'exprTripleTermObject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(exprTripleTerm) },\n ]),\n};\n\nexport const buildInLangDir = funcExpr1(l12.buildInLangDir);\nexport const buildInLangStrDir = funcExpr3(l12.buildInStrLangDir);\nexport const buildInHasLang = funcExpr1(l12.buildInHasLang);\nexport const buildInHasLangDir = funcExpr1(l12.buildInHasLangDir);\nexport const buildInIsTriple = funcExpr1(l12.buildInIsTRIPLE);\nexport const buildInTriple = funcExpr3(l12.buildInTRIPLE);\nexport const buildInSubject = funcExpr1(l12.buildInSUBJECT);\nexport const buildInPredicate = funcExpr1(l12.buildInPREDICATE);\nexport const buildInObject = funcExpr1(l12.buildInOBJECT);\n\n/**\n * OVERRIDING RULE: {@link S11.builtInCall}.\n * [[141]](https://www.w3.org/TR/sparql12-query/#rBuiltInCall)\n */\nexport const builtInCall: typeof S11.builtInCall = <const> {\n name: 'builtInCall',\n impl: $ => C => $.OR2<T11.Expression>([\n { ALT: () => S11.builtInCall.impl($)(C) },\n { ALT: () => $.SUBRULE(buildInLangDir) },\n { ALT: () => $.SUBRULE(buildInLangStrDir) },\n { ALT: () => $.SUBRULE(buildInHasLang) },\n { ALT: () => $.SUBRULE(buildInHasLangDir) },\n { ALT: () => $.SUBRULE(buildInIsTriple) },\n { ALT: () => $.SUBRULE(buildInTriple) },\n { ALT: () => $.SUBRULE(buildInSubject) },\n { ALT: () => $.SUBRULE(buildInPredicate) },\n { ALT: () => $.SUBRULE(buildInObject) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.rdfLiteral}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const rdfLiteral: SparqlGrammarRule<'rdfLiteral', RuleDefReturn<typeof S11.rdfLiteral>> = <const> {\n name: 'rdfLiteral',\n impl: ({ ACTION, SUBRULE, OPTION, CONSUME, OR }) => (C) => {\n const value = SUBRULE(S11.string);\n return OPTION(() => OR<RuleDefReturn<typeof rdfLiteral>>([\n { ALT: () => {\n const langTag = CONSUME(l12.LANG_DIR);\n return ACTION(() => {\n const literal = C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, langTag),\n value.value,\n langTag.image.slice(1).toLowerCase(),\n );\n langTagHasCorrectRange(literal);\n return literal;\n });\n } },\n { ALT: () => {\n CONSUME(l11.symbols.hathat);\n const iriVal = SUBRULE(S11.iri);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, iriVal),\n value.value,\n iriVal,\n ));\n } },\n ])) ?? value;\n },\n};\n\nexport const unaryExpression: SparqlGrammarRule<(typeof S11.unaryExpression)['name'], Expression> = {\n name: 'unaryExpression',\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => C => OR1<Expression>([\n { ALT: () => SUBRULE1(primaryExpression) },\n { ALT: () => {\n const operator = CONSUME(l11.symbols.exclamation);\n const expr = SUBRULE1(unaryExpression);\n return ACTION(() => C.astFactory.expressionOperation(\n '!',\n [ <T11.Expression> expr ],\n C.astFactory.sourceLocation(operator, expr),\n ));\n } },\n { ALT: () => {\n const operator = OR2([\n { ALT: () => CONSUME(l11.symbols.opPlus) },\n { ALT: () => CONSUME(l11.symbols.opMinus) },\n ]);\n const expr = SUBRULE2(primaryExpression);\n return ACTION(() => C.astFactory.expressionOperation(\n operator.image === '+' ? 'UPLUS' : 'UMINUS',\n [ <T11.Expression> expr ],\n C.astFactory.sourceLocation(operator, expr),\n ));\n } },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.triplesBlock}.\n */\nexport const generateTriplesBlock: SparqlGeneratorRule<'triplesBlock', PatternBgp> = {\n name: 'triplesBlock',\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE, HANDLE_LOC }) => (ast, { astFactory: F }) => {\n for (const [ index, triple ] of ast.triples.entries()) {\n HANDLE_LOC(triple, () => {\n const nextTriple = ast.triples.at(index + 1);\n if (F.isTripleCollection(triple)) {\n SUBRULE(graphNodePath, triple);\n // A top level tripleCollection block means that it is either not used in a triple\n // - or is the subject of a triple. In case it is the subject,\n // the identifier of the block will be the subject of the next triple and that subject is not materialized.\n const isSubjectOfTriple = nextTriple?.type === 'triple' &&\n F.isSourceLocationNoMaterialize(nextTriple.subject.loc);\n if (!isSubjectOfTriple) {\n F.printFilter(triple, () => {\n PRINT_WORD('.');\n NEW_LINE();\n });\n }\n } else {\n // Subject\n SUBRULE(graphNodePath, triple.subject);\n F.printFilter(ast, () => PRINT_WORD(''));\n // Predicate\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n F.printFilter(ast, () => PRINT_WORD(''));\n // Object\n SUBRULE(graphNodePath, triple.object);\n SUBRULE(annotationPath, triple.annotations ?? []);\n\n // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT\n if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||\n !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {\n F.printFilter(ast, () => {\n PRINT_WORD('.');\n NEW_LINE();\n });\n } else if (F.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {\n F.printFilter(ast, () => PRINT_WORD(','));\n } else {\n F.printFilter(ast, () => {\n PRINT_WORD(';');\n NEW_LINE();\n });\n }\n }\n });\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.graphTerm}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const generateGraphTerm: SparqlGeneratorRule<'graphTerm', GraphTerm> = {\n name: 'graphTerm',\n gImpl: $ => (ast, C) => {\n if (C.astFactory.isTermTriple(ast)) {\n $.SUBRULE(tripleTerm, ast);\n } else {\n S11.graphTerm.gImpl($)(ast, C);\n }\n },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"grammar.js","sourceRoot":"","sources":["../../../lib/grammar.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * This module will define patch rules that should be used in combination with the sparql11 grammar to create\n * a sparql12 grammar.\n * Rules in this module redefine the return type of core grammar rules.\n * It is therefore essential that the parser retypes the rules from the core grammar.\n */\nimport type { RuleDefReturn, Wrap } from '@traqula/core';\nimport { traqulaIndentation } from '@traqula/core';\nimport { CommonIRIs, funcExpr1, funcExpr3, gram as S11, lex as l11 } from '@traqula/rules-sparql-1-1';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport * as l12 from './lexer.js';\nimport type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from './sparql12HelperTypes.js';\nimport type {\n Annotation,\n ContextDefinition,\n ContextDefinitionVersion,\n Expression,\n GraphNode,\n GraphTerm,\n PatternBgp,\n QuerySelect,\n Term,\n TermBlank,\n TermIri,\n TermLiteral,\n TermTriple,\n TermVariable,\n TripleCollectionBlankNodeProperties,\n TripleCollectionReifiedTriple,\n TripleNesting,\n} from './sparql12Types.js';\nimport { langTagHasCorrectRange, queryProjectionIsGood } from './validators.js';\n\n/**\n *[[7]](https://www.w3.org/TR/sparql12-query/#rVersionDecl)\n */\nexport const versionDecl: SparqlRule<'versionDecl', ContextDefinitionVersion> = {\n name: 'versionDecl',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const versionToken = CONSUME(l12.version);\n const identifier = SUBRULE(versionSpecifier);\n return ACTION(() =>\n C.astFactory.contextDefinitionVersion(identifier.val, C.astFactory.sourceLocation(versionToken, identifier)));\n },\n gImpl: ({ PRINT_ON_OWN_LINE }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => {\n PRINT_ON_OWN_LINE('VERSION ', `${S11.stringEscapedLexical(ast.version)}`);\n });\n },\n};\n\n/**\n * [[9]](https://www.w3.org/TR/sparql12-query/#rSelectQuery)\n * (Validator has changed: https://github.com/w3c/sparql-query/pull/380)\n */\nexport const selectQuery: SparqlGrammarRule<'selectQuery', Omit<QuerySelect, 'type' | 'context' | 'values'>> = <const> {\n name: 'selectQuery',\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const selectVal = SUBRULE(S11.selectClause);\n const from = SUBRULE(S11.datasetClauseStar);\n const where = SUBRULE(S11.whereClause);\n const modifiers = SUBRULE(S11.solutionModifier);\n\n return ACTION(() => {\n const ret = {\n subType: 'select',\n where: where.val,\n solutionModifiers: modifiers,\n datasets: from,\n ...selectVal.val,\n loc: C.astFactory.sourceLocation(\n selectVal,\n where,\n modifiers.group,\n modifiers.having,\n modifiers.order,\n modifiers.limitOffset,\n ),\n } satisfies RuleDefReturn<typeof selectQuery>;\n if (!C.skipValidation) {\n queryProjectionIsGood(ret);\n }\n return ret;\n });\n },\n};\n\n/**\n * [[8]](https://www.w3.org/TR/sparql12-query/#rVersionSpecifier)\n */\nexport const versionSpecifier: SparqlGrammarRule<'versionSpecifier', Wrap<string>> = {\n name: 'versionSpecifier',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const token = OR([\n { ALT: () => CONSUME(l11.terminals.stringLiteral1) },\n { ALT: () => CONSUME(l11.terminals.stringLiteral2) },\n ]);\n return ACTION(() => C.astFactory.wrap(token.image.slice(1, -1), C.astFactory.sourceLocation(token)));\n },\n};\n\n/**\n * OVERRIDING RULE {@link S11.prologue}\n * [[4]](https://www.w3.org/TR/sparql12-query/#rPrologue)\n */\nexport const prologue: SparqlRule<'prologue', ContextDefinition[]> = {\n name: 'prologue',\n impl: ({ SUBRULE, MANY, OR }) => () => {\n const result: ContextDefinition[] = [];\n MANY(() => OR([\n { ALT: () => result.push(SUBRULE(S11.baseDecl)) },\n // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.\n // We might need to check this.\n { ALT: () => result.push(SUBRULE(S11.prefixDecl)) },\n { ALT: () => result.push(SUBRULE(versionDecl)) },\n ]));\n return result;\n },\n gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {\n for (const context of ast) {\n if (F.isContextDefinitionBase(context)) {\n SUBRULE(S11.baseDecl, context);\n } else if (F.isContextDefinitionPrefix(context)) {\n SUBRULE(S11.prefixDecl, context);\n } else {\n SUBRULE(versionDecl, context);\n }\n }\n },\n};\n\nfunction reifiedTripleBlockImpl<T extends string>(name: T, allowPath: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const triple = SUBRULE(reifiedTriple);\n const properties = SUBRULE(\n allowPath ? S11.propertyListPath : S11.propertyList,\n ACTION(() => C.astFactory.dematerialized(triple.identifier)),\n );\n\n return ACTION(() => <T11.BasicGraphPattern> [ triple, ...properties ]);\n },\n };\n}\n/**\n * [[58]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlock) Used by triplesSameSubject\n */\nexport const reifiedTripleBlock = reifiedTripleBlockImpl('reifiedTripleBlock', false);\n/**\n * [[59]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleBlockPath) Used by TriplesSameSubjectPath\n */\nexport const reifiedTripleBlockPath = reifiedTripleBlockImpl('reifiedTripleBlockPath', true);\n\n/**\n * OVERRIDING RULE: {@link S11.dataBlockValue}.\n * [[69]](https://www.w3.org/TR/sparql12-query/#rDataBlockValue)\n */\nexport const dataBlockValue:\nSparqlGrammarRule<'dataBlockValue', RuleDefReturn<typeof S11.dataBlockValue> | TermTriple> = <const> {\n name: 'dataBlockValue',\n impl: $ => C => $.OR2<RuleDefReturn<typeof dataBlockValue>>([\n { ALT: () => S11.dataBlockValue.impl($)(C) },\n { ALT: () => $.SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * [[70]](https://www.w3.org/TR/sparql12-query/#rReifier)\n */\nexport const reifier: SparqlGrammarRule<'reifier', Wrap<RuleDefReturn<typeof varOrReifierId>>> = <const> {\n name: 'reifier',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const tildeToken = CONSUME(l12.tilde);\n const reifier = OPTION(() => SUBRULE(varOrReifierId));\n return ACTION(() => {\n if (reifier === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.astFactory.wrap(\n reifier ?? C.astFactory.termBlank(undefined, C.astFactory.sourceLocation()),\n C.astFactory.sourceLocation(tildeToken, reifier),\n );\n });\n },\n};\n\n/**\n * [[71]](https://www.w3.org/TR/sparql12-query/#rVarOrReifierId)\n */\nexport const varOrReifierId: SparqlGrammarRule<'varOrReifierId', TermVariable | TermIri | TermBlank> =\n <const> {\n name: 'varOrReifierId',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof varOrReifierId>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(S11.blankNode) },\n ]),\n };\n\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, T11.BasicGraphPattern> {\n return <const> {\n name,\n impl: $ => C => $.OR2([\n { ALT: () => allowPaths ?\n S11.triplesSameSubjectPath.impl($)(C) :\n S11.triplesSameSubject.impl($)(C) },\n { ALT: () => $.SUBRULE(allowPaths ? reifiedTripleBlockPath : reifiedTripleBlock) },\n ]),\n };\n}\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubject}\n * [[81]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubject)\n */\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\n/**\n * OVERRIDING RULE {@link S11.triplesSameSubjectPath}\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath)\n */\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\n\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting, [TripleNesting['subject'], TripleNesting['predicate']]> {\n return <const>{\n name,\n impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {\n const objectVal = SUBRULE(allowPaths ? graphNodePath : graphNode);\n const annotationVal = SUBRULE(allowPaths ? annotationPath : annotation);\n\n return ACTION(() => {\n const F = C.astFactory;\n if (F.isPathPure(predicate) && annotationVal.length > 0) {\n throw new Error('Note 17 violation');\n }\n return F.annotatedTriple(\n subject,\n predicate,\n objectVal,\n annotationVal,\n );\n });\n },\n };\n}\n/**\n * OVERRIDING RULE: {@link S11.object}.\n * [[86]](https://www.w3.org/TR/sparql12-query/#rObject) Used by ObjectList\n */\nexport const object = objectImpl('object', false);\n/**\n * OVERRIDING RULE: {@link S11.objectPath}.\n * [[87]](https://www.w3.org/TR/sparql12-query/#rTriplesSameSubjectPath) Used by ObjectListPath\n */\nexport const objectPath = objectImpl('objectPath', true);\n\nfunction annotationImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, Annotation[]> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR, MANY }) => (C) => {\n const annotations: Annotation[] = [];\n let currentReifier: TermBlank | TermVariable | TermIri | undefined;\n\n MANY(() => {\n OR([\n { ALT: () => {\n const node = SUBRULE(reifier);\n annotations.push(node);\n currentReifier = node.val;\n } },\n { ALT: () => {\n ACTION(() => {\n if (!currentReifier && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n currentReifier = currentReifier ?? C.astFactory.termBlank(undefined, C.astFactory.sourceLocation());\n });\n const block = SUBRULE(\n allowPaths ? annotationBlockPath : annotationBlock,\n currentReifier!,\n );\n ACTION(() => {\n annotations.push(block);\n currentReifier = undefined;\n });\n } },\n ]);\n });\n return annotations;\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n for (const annotation of ast) {\n if (F.isTripleCollectionBlankNodeProperties(annotation)) {\n SUBRULE(annotationBlockPath, annotation);\n } else {\n F.printFilter(annotation, () => PRINT_WORD('~'));\n SUBRULE(graphNodePath, annotation.val);\n }\n }\n },\n };\n}\n/**\n * [[109]](https://www.w3.org/TR/sparql12-query/#rAnnotationPath)\n */\nexport const annotationPath = annotationImpl('annotationPath', true);\n/**\n * [[111]](https://www.w3.org/TR/sparql12-query/#rAnnotation)\n */\nexport const annotation = annotationImpl('annotation', false);\n\nfunction annotationBlockImpl<T extends string>(name: T, allowPaths: boolean):\n SparqlGrammarRule<T, TripleCollectionBlankNodeProperties, [TripleCollectionBlankNodeProperties['identifier']]> &\n SparqlGeneratorRule<T, TripleCollectionBlankNodeProperties> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C, arg) => {\n const open = CONSUME(l12.annotationOpen);\n const res = SUBRULE(\n allowPaths ? S11.propertyListPathNotEmpty : S11.propertyListNotEmpty,\n arg,\n );\n const close = CONSUME(l12.annotationClose);\n\n return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(\n arg,\n res,\n C.astFactory.sourceLocation(open, close),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {\n const { astFactory: F, indentInc } = C;\n F.printFilter(ast, () => {\n PRINT_WORD('{|');\n if (ast.triples.length > 1) {\n C[traqulaIndentation] += indentInc;\n NEW_LINE();\n }\n });\n\n function printTriple(triple: TripleNesting): void {\n HANDLE_LOC(triple, () => {\n if (F.isTerm(triple.predicate)) {\n SUBRULE(graphNodePath, triple.predicate);\n } else {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n }\n F.printFilter(triple, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, triple.object);\n });\n }\n\n const [ head, ...tail ] = ast.triples;\n printTriple(head);\n for (const triple of tail) {\n F.printFilter(ast, () => {\n PRINT_WORD(';');\n NEW_LINE();\n });\n printTriple(triple);\n }\n\n F.printFilter(ast, () => {\n if (ast.triples.length > 1) {\n PRINT_ON_OWN_LINE('|}');\n } else {\n PRINT_WORD('|}');\n }\n });\n },\n };\n}\n/**\n * [[110]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlockPath)\n */\nexport const annotationBlockPath = annotationBlockImpl('annotationBlockPath', true);\n/**\n * [[112]](https://www.w3.org/TR/sparql12-query/#rAnnotationBlock)\n */\nexport const annotationBlock = annotationBlockImpl('annotationBlock', false);\n\n/**\n * OVERRIDING RULE: {@link S11.graphNode}.\n * [[113]](https://www.w3.org/TR/sparql12-query/#rGraphNode)\n */\nexport const graphNode: SparqlGrammarRule<'graphNode', GraphNode> = <const> {\n name: 'graphNode',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNode>>([\n { ALT: () => S11.graphNode.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n};\n/**\n * OVERRIDING RULE: {@link S11.graphNodePath}.\n * [[114]](https://www.w3.org/TR/sparql12-query/#rGraphNodePath)\n */\nexport const graphNodePath: SparqlRule<'graphNodePath', GraphNode> = <const> {\n name: 'graphNodePath',\n impl: $ => C => $.OR2<RuleDefReturn<typeof graphNodePath>>([\n { ALT: () => S11.graphNodePath.impl($)(C) },\n { ALT: () => $.SUBRULE(reifiedTriple) },\n ]),\n gImpl: $ => (ast, C) => {\n if (C.astFactory.isTripleCollectionReifiedTriple(ast)) {\n $.SUBRULE(reifiedTriple, ast);\n } else {\n S11.graphNodePath.gImpl($)(<T11.Term | T11.TripleCollection> ast, C);\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.varOrTerm}.\n * [[115]](https://www.w3.org/TR/sparql12-query/#rVarOrTerm)\n */\nexport const varOrTerm: SparqlGrammarRule<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ ACTION, SUBRULE, OR, CONSUME }) => C => OR<Term>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => {\n const token = CONSUME(l11.terminals.nil);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.NIL));\n } },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n // Generation remains untouched - go through graphTerm\n};\n\n/**\n * [[116]](https://www.w3.org/TR/sparql12-query/#rReifiedTriple)\n */\nexport const reifiedTriple: SparqlRule<'reifiedTriple', TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTriple',\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const open = CONSUME(l12.reificationOpen);\n const subject = SUBRULE(reifiedTripleSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(reifiedTripleObject);\n const reifierVal = OPTION(() => SUBRULE(reifier));\n const close = CONSUME(l12.reificationClose);\n\n return ACTION(() => {\n // A reifier would be auto generated in this case, but we are not allowed to use them.\n if (reifierVal === undefined && !C.parseMode.has('canCreateBlankNodes')) {\n throw new Error('Cannot create blanknodes in current parse mode');\n }\n return C.astFactory.tripleCollectionReifiedTriple(\n C.astFactory.sourceLocation(open, close),\n subject,\n predicate,\n object,\n reifierVal?.val,\n );\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<'));\n const triple = ast.triples[0];\n SUBRULE(graphNodePath, triple.subject);\n\n F.printFilter(ast, () => PRINT_WORD(''));\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, triple.object);\n\n SUBRULE(annotationPath, [ F.wrap(ast.identifier, ast.identifier.loc) ]);\n F.printFilter(ast, () => PRINT_WORD('>>'));\n },\n};\n\n/**\n * [[117]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleSubject)\n */\nexport const reifiedTripleSubject:\nSparqlGrammarRule<'reifiedTripleSubject', Term | TripleCollectionReifiedTriple> = <const> {\n name: 'reifiedTripleSubject',\n impl: ({ OR, SUBRULE }) => C => OR<RuleDefReturn<typeof reifiedTripleSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(reifiedTriple) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[118]](https://www.w3.org/TR/sparql12-query/#rReifiedTripleObject)\n */\nexport const reifiedTripleObject:\nSparqlGrammarRule<'reifiedTripleObject', RuleDefReturn<typeof reifiedTripleSubject>> =\n <const> {\n name: 'reifiedTripleObject',\n impl: reifiedTripleSubject.impl,\n };\n\n/**\n * [[119]](https://www.w3.org/TR/sparql12-query/#rTripleTerm)\n */\nexport const tripleTerm: SparqlRule<'tripleTerm', TermTriple> = <const> {\n name: 'tripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(tripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n return ACTION(() => C.astFactory.termTriple(subject, predicate, object, C.astFactory.sourceLocation(open, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('<<('));\n SUBRULE(graphNodePath, ast.subject);\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, ast.predicate);\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(graphNodePath, ast.object);\n F.printFilter(ast, () => PRINT_WORD(')>>'));\n },\n};\n\n/**\n * [[120]](https://www.w3.org/TR/sparql12-query/#rTripleTermSubject)\n */\nexport const tripleTermSubject:\nSparqlGrammarRule<'tripleTermSubject', TermVariable | TermIri | TermLiteral | TermBlank | TermTriple> = <const> {\n name: 'tripleTermSubject',\n impl: ({ SUBRULE, OR }) => C => OR<RuleDefReturn<typeof tripleTermSubject>>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(S11.blankNode) },\n { ALT: () => SUBRULE(tripleTerm) },\n ]),\n};\n\n/**\n * [[121]](https://www.w3.org/TR/sparql12-query/#rTripleTermObject)\n */\nexport const tripleTermObject:\nSparqlGrammarRule<'tripleTermObject', RuleDefReturn<typeof tripleTermSubject>> = <const> {\n name: 'tripleTermObject',\n impl: tripleTermSubject.impl,\n};\n\n/**\n * [[122]](https://www.w3.org/TR/sparql12-query/#rTripleTermData)\n */\nexport const tripleTermData: SparqlGrammarRule<'tripleTermData', TermTriple> = <const> {\n name: 'tripleTermData',\n impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(tripleTermDataSubject);\n const predicate = OR([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => {\n const token = CONSUME(l11.a);\n return ACTION(() => C.astFactory.termNamed(C.astFactory.sourceLocation(token), CommonIRIs.TYPE));\n } },\n ]);\n const object = SUBRULE(tripleTermDataObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.astFactory.termTriple(subject, predicate, object, C.astFactory.sourceLocation(open, close)));\n },\n};\n\n/**\n * [[123]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataSubject)\n */\nexport const tripleTermDataSubject: SparqlGrammarRule<'tripleTermDataSubject', TermIri | TermLiteral | TermTriple> =\n <const> {\n name: 'tripleTermDataSubject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n ]),\n };\n\n/**\n * [[124]](https://www.w3.org/TR/sparql12-query/#rTripleTermDataObject)\n */\nexport const tripleTermDataObject:\nSparqlGrammarRule<'tripleTermDataObject', RuleDefReturn<typeof tripleTermDataSubject>> = <const> {\n name: 'tripleTermDataObject',\n impl: ({ OR, SUBRULE }) => () => OR<RuleDefReturn<typeof tripleTermDataSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { ALT: () => SUBRULE(tripleTermData) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.primaryExpression}.\n * [[136]](https://www.w3.org/TR/sparql12-query/#rPrimaryExpression)\n */\nexport const primaryExpression: SparqlGrammarRule<'primaryExpression', Expression> = <const> {\n name: 'primaryExpression',\n impl: $ => C => $.OR2<Expression>([\n { ALT: () => S11.primaryExpression.impl($)(C) },\n { ALT: () => $.SUBRULE(exprTripleTerm) },\n ]),\n};\n\n/**\n * [[137]](https://www.w3.org/TR/sparql12-query/#rExprTripleTerm)\n */\nexport const exprTripleTerm: SparqlGrammarRule<'exprTripleTerm', TermTriple> = <const> {\n name: 'exprTripleTerm',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const open = CONSUME(l12.tripleTermOpen);\n const subject = SUBRULE(exprTripleTermSubject);\n const predicate = SUBRULE(S11.verb);\n const object = SUBRULE(exprTripleTermObject);\n const close = CONSUME(l12.tripleTermClose);\n\n return ACTION(() => C.astFactory.termTriple(\n subject,\n predicate,\n object,\n C.astFactory.sourceLocation(open, close),\n ));\n },\n};\n\n/**\n * [[138]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermSubject)\n */\nexport const exprTripleTermSubject:\nSparqlGrammarRule<'exprTripleTermSubject', TermIri | TermVariable | TermLiteral | TermTriple> = <const> {\n name: 'exprTripleTermSubject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n ]),\n};\n\n/**\n * [[139]](https://www.w3.org/TR/sparql12-query/#rExprTripleTermObject)\n */\nexport const exprTripleTermObject:\nSparqlGrammarRule<'exprTripleTermObject', RuleDefReturn<typeof exprTripleTermSubject> | TermTriple> = <const> {\n name: 'exprTripleTermObject',\n impl: ({ OR, SUBRULE }) => C =>\n OR<RuleDefReturn<typeof exprTripleTermSubject>>([\n { ALT: () => SUBRULE(S11.iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(S11.numericLiteral) },\n { ALT: () => SUBRULE(S11.booleanLiteral) },\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(S11.var_) },\n { ALT: () => SUBRULE(exprTripleTerm) },\n ]),\n};\n\nexport const buildInLangDir = funcExpr1(l12.buildInLangDir);\nexport const buildInLangStrDir = funcExpr3(l12.buildInStrLangDir);\nexport const buildInHasLang = funcExpr1(l12.buildInHasLang);\nexport const buildInHasLangDir = funcExpr1(l12.buildInHasLangDir);\nexport const buildInIsTriple = funcExpr1(l12.buildInIsTRIPLE);\nexport const buildInTriple = funcExpr3(l12.buildInTRIPLE);\nexport const buildInSubject = funcExpr1(l12.buildInSUBJECT);\nexport const buildInPredicate = funcExpr1(l12.buildInPREDICATE);\nexport const buildInObject = funcExpr1(l12.buildInOBJECT);\n\n/**\n * OVERRIDING RULE: {@link S11.builtInCall}.\n * [[141]](https://www.w3.org/TR/sparql12-query/#rBuiltInCall)\n */\nexport const builtInCall: typeof S11.builtInCall = <const> {\n name: 'builtInCall',\n impl: $ => C => $.OR2<T11.Expression>([\n { ALT: () => S11.builtInCall.impl($)(C) },\n { ALT: () => $.SUBRULE(buildInLangDir) },\n { ALT: () => $.SUBRULE(buildInLangStrDir) },\n { ALT: () => $.SUBRULE(buildInHasLang) },\n { ALT: () => $.SUBRULE(buildInHasLangDir) },\n { ALT: () => $.SUBRULE(buildInIsTriple) },\n { ALT: () => $.SUBRULE(buildInTriple) },\n { ALT: () => $.SUBRULE(buildInSubject) },\n { ALT: () => $.SUBRULE(buildInPredicate) },\n { ALT: () => $.SUBRULE(buildInObject) },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.rdfLiteral}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const rdfLiteral: SparqlGrammarRule<'rdfLiteral', RuleDefReturn<typeof S11.rdfLiteral>> = <const> {\n name: 'rdfLiteral',\n impl: ({ ACTION, SUBRULE, OPTION, CONSUME, OR }) => (C) => {\n const value = SUBRULE(S11.string);\n return OPTION(() => OR<RuleDefReturn<typeof rdfLiteral>>([\n { ALT: () => {\n const langTag = CONSUME(l12.LANG_DIR);\n return ACTION(() => {\n const literal = C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, langTag),\n value.value,\n langTag.image.slice(1).toLowerCase(),\n );\n langTagHasCorrectRange(literal);\n return literal;\n });\n } },\n { ALT: () => {\n CONSUME(l11.symbols.hathat);\n const iriVal = SUBRULE(S11.iri);\n return ACTION(() => C.astFactory.termLiteral(\n C.astFactory.sourceLocation(value, iriVal),\n value.value,\n iriVal,\n ));\n } },\n ])) ?? value;\n },\n};\n\nexport const unaryExpression: SparqlGrammarRule<(typeof S11.unaryExpression)['name'], Expression> = {\n name: 'unaryExpression',\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => C => OR1<Expression>([\n { ALT: () => SUBRULE1(primaryExpression) },\n { ALT: () => {\n const operator = CONSUME(l11.symbols.exclamation);\n const expr = SUBRULE1(unaryExpression);\n return ACTION(() => C.astFactory.expressionOperation(\n '!',\n [ <T11.Expression> expr ],\n C.astFactory.sourceLocation(operator, expr),\n ));\n } },\n { ALT: () => {\n const operator = OR2([\n { ALT: () => CONSUME(l11.symbols.opPlus) },\n { ALT: () => CONSUME(l11.symbols.opMinus) },\n ]);\n const expr = SUBRULE2(primaryExpression);\n return ACTION(() => C.astFactory.expressionOperation(\n operator.image === '+' ? 'UPLUS' : 'UMINUS',\n [ <T11.Expression> expr ],\n C.astFactory.sourceLocation(operator, expr),\n ));\n } },\n ]),\n};\n\n/**\n * OVERRIDING RULE: {@link S11.triplesBlock}.\n */\nexport const generateTriplesBlock: SparqlGeneratorRule<'triplesBlock', PatternBgp> = {\n name: 'triplesBlock',\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE, HANDLE_LOC }) => (ast, { astFactory: F }) => {\n for (const [ index, triple ] of ast.triples.entries()) {\n HANDLE_LOC(triple, () => {\n const nextTriple = ast.triples.at(index + 1);\n if (F.isTripleCollection(triple)) {\n SUBRULE(graphNodePath, triple);\n // A top level tripleCollection block means that it is either not used in a triple\n // - or is the subject of a triple. In case it is the subject,\n // the identifier of the block will be the subject of the next triple and that subject is not materialized.\n const isSubjectOfTriple = nextTriple?.type === 'triple' &&\n F.isSourceLocationNoMaterialize(nextTriple.subject.loc);\n if (!isSubjectOfTriple) {\n F.printFilter(triple, () => {\n PRINT_WORD('.');\n NEW_LINE();\n });\n }\n } else {\n // Subject\n SUBRULE(graphNodePath, triple.subject);\n F.printFilter(ast, () => PRINT_WORD(''));\n // Predicate\n if (F.isPathPure(triple.predicate)) {\n SUBRULE(S11.pathGenerator, triple.predicate, undefined);\n } else {\n SUBRULE(graphNodePath, triple.predicate);\n }\n F.printFilter(ast, () => PRINT_WORD(''));\n // Object\n SUBRULE(graphNodePath, triple.object);\n SUBRULE(annotationPath, triple.annotations ?? []);\n\n // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT\n if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||\n !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {\n F.printFilter(ast, () => {\n PRINT_WORD('.');\n NEW_LINE();\n });\n } else if (F.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {\n F.printFilter(ast, () => PRINT_WORD(','));\n } else {\n F.printFilter(ast, () => {\n PRINT_WORD(';');\n NEW_LINE();\n });\n }\n }\n });\n }\n },\n};\n\n/**\n * OVERRIDING RULE: {@link S11.graphTerm}.\n * No retyping is needed since the return type is the same\n * [[149]](https://www.w3.org/TR/sparql12-query/#rRDFLiteral)\n */\nexport const generateGraphTerm: SparqlGeneratorRule<'graphTerm', GraphTerm> = {\n name: 'graphTerm',\n gImpl: $ => (ast, C) => {\n if (C.astFactory.isTermTriple(ast)) {\n $.SUBRULE(tripleTerm, ast);\n } else {\n S11.graphTerm.gImpl($)(ast, C);\n }\n },\n};\n"]}
|
package/dist/esm/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { validation as validation11 } from '@traqula/rules-sparql-1-1';
|
|
2
|
+
import * as validation12 from './validators.js';
|
|
1
3
|
export * as gram from './grammar.js';
|
|
2
4
|
export * as lex from './lexer.js';
|
|
3
5
|
export * from './sparql12Types.js';
|
|
@@ -5,3 +7,5 @@ export * from './sparql12HelperTypes.js';
|
|
|
5
7
|
export * from './parserUtils.js';
|
|
6
8
|
export * from './AstFactory.js';
|
|
7
9
|
export * from './validators.js';
|
|
10
|
+
type OverriddenKeys = keyof typeof validation11 & keyof typeof validation12;
|
|
11
|
+
export declare const validation: Omit<typeof validation11, OverriddenKeys> & typeof validation12;
|
package/dist/esm/lib/index.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
import { validation as validation11, } from '@traqula/rules-sparql-1-1';
|
|
2
|
+
import * as validation12 from './validators.js';
|
|
1
3
|
export * as gram from './grammar.js';
|
|
2
4
|
export * as lex from './lexer.js';
|
|
3
5
|
export * from './sparql12Types.js';
|
|
4
6
|
export * from './sparql12HelperTypes.js';
|
|
5
7
|
export * from './parserUtils.js';
|
|
6
8
|
export * from './AstFactory.js';
|
|
9
|
+
// TODO: deprecate this export
|
|
7
10
|
export * from './validators.js';
|
|
11
|
+
export const validation = {
|
|
12
|
+
...validation11,
|
|
13
|
+
...validation12,
|
|
14
|
+
};
|
|
8
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,IAAI,YAAY,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,8BAA8B;AAC9B,cAAc,iBAAiB,CAAC;AAGhC,MAAM,CAAC,MAAM,UAAU,GAAqE;IAC1F,GAAG,YAAY;IACf,GAAG,YAAY;CAChB,CAAC","sourcesContent":["import {\n validation as validation11,\n} from '@traqula/rules-sparql-1-1';\nimport * as validation12 from './validators.js';\n\nexport * as gram from './grammar.js';\nexport * as lex from './lexer.js';\nexport * from './sparql12Types.js';\nexport * from './sparql12HelperTypes.js';\nexport * from './parserUtils.js';\nexport * from './AstFactory.js';\n// TODO: deprecate this export\nexport * from './validators.js';\n\ntype OverriddenKeys = keyof typeof validation11 & keyof typeof validation12;\nexport const validation = <Omit<typeof validation11, OverriddenKeys> & typeof validation12> {\n ...validation11,\n ...validation12,\n};\n"]}
|
package/dist/esm/lib/lexer.d.ts
CHANGED
|
@@ -17,4 +17,4 @@ export declare const buildInSUBJECT: import("@traqula/core").NamedToken<"BuiltIn
|
|
|
17
17
|
export declare const buildInPREDICATE: import("@traqula/core").NamedToken<"BuiltInPredicate">;
|
|
18
18
|
export declare const buildInOBJECT: import("@traqula/core").NamedToken<"BuiltInObject">;
|
|
19
19
|
export declare const LANG_DIR: import("@traqula/core").NamedToken<"LANG_DIR">;
|
|
20
|
-
export declare const sparql12LexerBuilder: LexerBuilder<"
|
|
20
|
+
export declare const sparql12LexerBuilder: LexerBuilder<"NamedGraph" | "DefaultGraph" | "Graph" | "GraphAll" | "BaseDecl" | "PrefixDecl" | "Select" | "Distinct" | "Reduced" | "As" | "Construct" | "Describe" | "Ask" | "From" | "Where" | "GroupByGroup" | "By" | "Having" | "Order" | "OrderAsc" | "OrderDesc" | "Limit" | "Offset" | "Values" | "Load" | "Silent" | "LoadInto" | "Clear" | "Drop" | "Create" | "Add" | "To" | "Move" | "Copy" | "ModifyWith" | "DeleteDataClause" | "DeleteWhereClause" | "DeleteClause" | "InsertDataClause" | "InsertClause" | "UsingClause" | "Optional" | "Service" | "Bind" | "Undef" | "Minus" | "Union" | "Filter" | "a" | "True" | "False" | "In" | "NotIn" | "Separator" | "Semi" | "LCurly" | "RCurly" | "Dot" | "Star" | "LParen" | "RParen" | "Nil" | "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" | "Comma" | "LSquare" | "RSquare" | "Pipe" | "Slash" | "Hat" | "Question" | "OpPlus" | "OpMinus" | "Exclamation" | "LogicAnd" | "LogicOr" | "Equal" | "NotEqual" | "LessThan" | "GreaterThan" | "LessThanEqual" | "GreaterThanEqual" | "Hathat" | "IriRef" | "PNameLn" | "PNameNs" | "BlankNodeLabel" | "Var1" | "Var2" | "Integer" | "Decimal" | "Double" | "IntegerPositive" | "DecimalPositive" | "DoublePositive" | "IntegerNegative" | "DecimalNegative" | "DoubleNegative" | "StringLiteral1" | "StringLiteral2" | "StringLiteralLong1" | "StringLiteralLong2" | "Ws" | "Comment" | "Anon" | "BuiltInLangdir" | "BuiltInStrLangdir" | "BuiltInHasLang" | "BuiltInHasLangdir" | "BuiltInIsTriple" | "BuiltInTriple" | "BuiltInSubject" | "BuiltInPredicate" | "BuiltInObject" | "Version" | "Tilde" | "AnnotationOpen" | "AnnotationClose" | "ReificationOpen" | "ReificationClose" | "TripleTermOpen" | "TripleTermClose" | "LANG_DIR">;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
-
import type { Path, Pattern, SparqlQuery, Term, TermLiteral, TripleCollection, TripleNesting, Wildcard } from './sparql12Types.js';
|
|
1
|
+
import type { Path, Pattern, QuerySelect, SparqlQuery, Term, TermLiteral, TripleCollection, TripleNesting, Wildcard } from './sparql12Types.js';
|
|
2
2
|
export declare function langTagHasCorrectRange(literal: TermLiteral): void;
|
|
3
3
|
export declare function findPatternBoundedVars(iter: SparqlQuery | Pattern | TripleNesting | TripleCollection | Path | Term | Wildcard, boundedVars: Set<string>): void;
|
|
4
|
+
/**
|
|
5
|
+
* Verify that the projected variables (select head) are allowed:
|
|
6
|
+
* - no group-by on select *
|
|
7
|
+
* - if group-by, selected variables need to be collected by the group-by
|
|
8
|
+
* - 'select ?var as ?other', ?other cannot be in scope
|
|
9
|
+
*/
|
|
10
|
+
export declare function queryProjectionIsGood(query: Pick<QuerySelect, 'variables' | 'solutionModifiers' | 'where'>): void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getAggregatesOfExpression, getExpressionId, getVariablesFromExpression } from '@traqula/rules-sparql-1-1';
|
|
1
2
|
import { AstFactory } from './AstFactory.js';
|
|
2
3
|
const F = new AstFactory();
|
|
3
4
|
function isLangDir(dir) {
|
|
@@ -92,4 +93,77 @@ export function findPatternBoundedVars(iter, boundedVars) {
|
|
|
92
93
|
}
|
|
93
94
|
}
|
|
94
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Verify that the projected variables (select head) are allowed:
|
|
98
|
+
* - no group-by on select *
|
|
99
|
+
* - if group-by, selected variables need to be collected by the group-by
|
|
100
|
+
* - 'select ?var as ?other', ?other cannot be in scope
|
|
101
|
+
*/
|
|
102
|
+
export function queryProjectionIsGood(query) {
|
|
103
|
+
// NoGroupByOnWildcardSelect
|
|
104
|
+
if (query.variables.length === 1 && F.isWildcard(query.variables[0])) {
|
|
105
|
+
if (query.solutionModifiers.group !== undefined) {
|
|
106
|
+
throw new Error('GROUP BY not allowed with wildcard');
|
|
107
|
+
}
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// CannotProjectUngroupedVars - can be skipped if `SELECT *`
|
|
111
|
+
// Check for projection of ungrouped variable
|
|
112
|
+
// Check can be skipped in case of wildcard select.
|
|
113
|
+
const variables = query.variables;
|
|
114
|
+
const hasCountAggregate = variables.flatMap(varVal => F.isTerm(varVal) ? [] : getAggregatesOfExpression(varVal.expression)).some(agg => agg.aggregation === 'count' && !agg.expression.some(arg => F.isWildcard(arg)));
|
|
115
|
+
const groupBy = query.solutionModifiers.group;
|
|
116
|
+
if (hasCountAggregate || groupBy) {
|
|
117
|
+
// We have to check whether
|
|
118
|
+
// 1. Variables used in projection are usable given the group by clause
|
|
119
|
+
// 2. A selectCount will create an implicit group by clause.
|
|
120
|
+
// Variables bound by preceding (expr AS ?var) expressions are in scope for later expressions.
|
|
121
|
+
const asBoundVars = new Set();
|
|
122
|
+
for (const selectVar of variables) {
|
|
123
|
+
if (F.isTerm(selectVar)) {
|
|
124
|
+
if (!groupBy || !groupBy.groupings.map(groupvar => getExpressionId(groupvar))
|
|
125
|
+
.includes((getExpressionId(selectVar)))) {
|
|
126
|
+
throw new Error('Variable not allowed in projection');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else if (getAggregatesOfExpression(selectVar.expression).length === 0) {
|
|
130
|
+
// Current value binding does not use aggregates
|
|
131
|
+
const usedvars = new Set();
|
|
132
|
+
getVariablesFromExpression(selectVar.expression, usedvars);
|
|
133
|
+
for (const usedvar of usedvars) {
|
|
134
|
+
// If the var is created within the select, it is fine.
|
|
135
|
+
if (asBoundVars.has(usedvar)) {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (!groupBy || !groupBy.groupings.map(groupVar => getExpressionId(groupVar)).includes(usedvar)) {
|
|
139
|
+
throw new Error(`Use of ungrouped variable in projection of operation (?${usedvar})`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (!F.isTerm(selectVar)) {
|
|
144
|
+
// Register a var is created by a bind
|
|
145
|
+
asBoundVars.add(selectVar.variable.value);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
// NOTE 12: Check if id of each AS-selected column is not yet bound by subquery
|
|
150
|
+
const subqueries = query.where.patterns.filter(pattern => pattern.type === 'query');
|
|
151
|
+
if (subqueries.length > 0) {
|
|
152
|
+
const selectBoundedVars = new Set();
|
|
153
|
+
for (const variable of variables) {
|
|
154
|
+
if ('variable' in variable) {
|
|
155
|
+
selectBoundedVars.add(variable.variable.value);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Look at in scope variables
|
|
159
|
+
const vars = subqueries.flatMap(sub => sub.variables)
|
|
160
|
+
.map(v => F.isTerm(v) ? v.value : (F.isWildcard(v) ? '*' : v.variable.value));
|
|
161
|
+
const subqueryIds = new Set(vars);
|
|
162
|
+
for (const selectedVarId of selectBoundedVars) {
|
|
163
|
+
if (subqueryIds.has(selectedVarId)) {
|
|
164
|
+
throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
95
169
|
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../lib/validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { AstFactory } from './AstFactory.js';\nimport type {\n Path,\n Pattern,\n SparqlQuery,\n Term,\n TermLiteral,\n TripleCollection,\n TripleNesting,\n Wildcard,\n} from './sparql12Types.js';\n\nconst F = new AstFactory();\n\nfunction isLangDir(dir: string): dir is 'ltr' | 'rtl' {\n return dir === 'ltr' || dir === 'rtl';\n}\n\nexport function langTagHasCorrectRange(literal: TermLiteral): void {\n if (F.isTermLiteralLangStr(literal)) {\n const dirSplit = literal.langOrIri.split('--');\n if (dirSplit.length > 1) {\n const [ _, direction ] = dirSplit;\n if (!isLangDir(direction)) {\n throw new Error(`language direction \"${direction}\" of literal \"${JSON.stringify(literal)}\" is not is required range 'ltr' | 'rtl'.`);\n }\n }\n }\n}\n\nexport function findPatternBoundedVars(\n iter: SparqlQuery | Pattern | TripleNesting | TripleCollection | Path | Term | Wildcard,\n boundedVars: Set<string>,\n): void {\n if (F.isQuery(iter) || F.isUpdate(iter)) {\n if (F.isQuerySelect(iter) || F.isQueryDescribe(iter)) {\n if (iter.where && iter.variables.some(x => F.isWildcard(x))) {\n findPatternBoundedVars(iter.where, boundedVars);\n } else {\n for (const v of iter.variables) {\n findPatternBoundedVars(v, boundedVars);\n }\n }\n if (iter.solutionModifiers.group) {\n const grouping = iter.solutionModifiers.group;\n for (const g of grouping.groupings) {\n if ('variable' in g) {\n findPatternBoundedVars(g.variable, boundedVars);\n }\n }\n }\n if (iter.values?.values && iter.values.values.length > 0) {\n const values = iter.values.values;\n for (const v of Object.keys(values[0])) {\n boundedVars.add(v);\n }\n }\n }\n } else if (F.isTerm(iter)) {\n if (F.isTermVariable(iter)) {\n boundedVars.add(iter.value);\n }\n if (F.isTermTriple(iter)) {\n findPatternBoundedVars(iter.subject, boundedVars);\n findPatternBoundedVars(iter.predicate, boundedVars);\n findPatternBoundedVars(iter.object, boundedVars);\n }\n } else if (F.isTriple(iter)) {\n findPatternBoundedVars(iter.subject, boundedVars);\n findPatternBoundedVars(iter.predicate, boundedVars);\n findPatternBoundedVars(iter.object, boundedVars);\n for (const annotation of iter.annotations ?? []) {\n findPatternBoundedVars(\n F.isTripleCollection(annotation) ? annotation : annotation.val,\n boundedVars,\n );\n }\n } else if (F.isPath(iter)) {\n for (const item of iter.items) {\n findPatternBoundedVars(item, boundedVars);\n }\n } else if (F.isTripleCollection(iter) || F.isPatternBgp(iter)) {\n for (const triple of iter.triples) {\n findPatternBoundedVars(triple, boundedVars);\n }\n } else if (\n F.isPatternGroup(iter) || F.isPatternUnion(iter) || F.isPatternOptional(iter) || F.isPatternService(iter)) {\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n if (F.isPatternService(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n }\n } else if (F.isPatternBind(iter)) {\n findPatternBoundedVars(iter.variable, boundedVars);\n } else if (F.isPatternValues(iter)) {\n for (const variable of Object.keys(iter.values.at(0) ?? {})) {\n boundedVars.add(variable);\n }\n } else if (F.isPatternGraph(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../lib/validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { getAggregatesOfExpression, getExpressionId, getVariablesFromExpression } from '@traqula/rules-sparql-1-1';\nimport type * as T11 from '@traqula/rules-sparql-1-1';\nimport { AstFactory } from './AstFactory.js';\nimport type {\n Path,\n Pattern,\n PatternBind,\n QuerySelect,\n SparqlQuery,\n Term,\n TermLiteral,\n TermVariable,\n TripleCollection,\n TripleNesting,\n Wildcard,\n} from './sparql12Types.js';\n\nconst F = new AstFactory();\n\nfunction isLangDir(dir: string): dir is 'ltr' | 'rtl' {\n return dir === 'ltr' || dir === 'rtl';\n}\n\nexport function langTagHasCorrectRange(literal: TermLiteral): void {\n if (F.isTermLiteralLangStr(literal)) {\n const dirSplit = literal.langOrIri.split('--');\n if (dirSplit.length > 1) {\n const [ _, direction ] = dirSplit;\n if (!isLangDir(direction)) {\n throw new Error(`language direction \"${direction}\" of literal \"${JSON.stringify(literal)}\" is not is required range 'ltr' | 'rtl'.`);\n }\n }\n }\n}\n\nexport function findPatternBoundedVars(\n iter: SparqlQuery | Pattern | TripleNesting | TripleCollection | Path | Term | Wildcard,\n boundedVars: Set<string>,\n): void {\n if (F.isQuery(iter) || F.isUpdate(iter)) {\n if (F.isQuerySelect(iter) || F.isQueryDescribe(iter)) {\n if (iter.where && iter.variables.some(x => F.isWildcard(x))) {\n findPatternBoundedVars(iter.where, boundedVars);\n } else {\n for (const v of iter.variables) {\n findPatternBoundedVars(v, boundedVars);\n }\n }\n if (iter.solutionModifiers.group) {\n const grouping = iter.solutionModifiers.group;\n for (const g of grouping.groupings) {\n if ('variable' in g) {\n findPatternBoundedVars(g.variable, boundedVars);\n }\n }\n }\n if (iter.values?.values && iter.values.values.length > 0) {\n const values = iter.values.values;\n for (const v of Object.keys(values[0])) {\n boundedVars.add(v);\n }\n }\n }\n } else if (F.isTerm(iter)) {\n if (F.isTermVariable(iter)) {\n boundedVars.add(iter.value);\n }\n if (F.isTermTriple(iter)) {\n findPatternBoundedVars(iter.subject, boundedVars);\n findPatternBoundedVars(iter.predicate, boundedVars);\n findPatternBoundedVars(iter.object, boundedVars);\n }\n } else if (F.isTriple(iter)) {\n findPatternBoundedVars(iter.subject, boundedVars);\n findPatternBoundedVars(iter.predicate, boundedVars);\n findPatternBoundedVars(iter.object, boundedVars);\n for (const annotation of iter.annotations ?? []) {\n findPatternBoundedVars(\n F.isTripleCollection(annotation) ? annotation : annotation.val,\n boundedVars,\n );\n }\n } else if (F.isPath(iter)) {\n for (const item of iter.items) {\n findPatternBoundedVars(item, boundedVars);\n }\n } else if (F.isTripleCollection(iter) || F.isPatternBgp(iter)) {\n for (const triple of iter.triples) {\n findPatternBoundedVars(triple, boundedVars);\n }\n } else if (\n F.isPatternGroup(iter) || F.isPatternUnion(iter) || F.isPatternOptional(iter) || F.isPatternService(iter)) {\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n if (F.isPatternService(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n }\n } else if (F.isPatternBind(iter)) {\n findPatternBoundedVars(iter.variable, boundedVars);\n } else if (F.isPatternValues(iter)) {\n for (const variable of Object.keys(iter.values.at(0) ?? {})) {\n boundedVars.add(variable);\n }\n } else if (F.isPatternGraph(iter)) {\n findPatternBoundedVars(iter.name, boundedVars);\n for (const pattern of iter.patterns) {\n findPatternBoundedVars(pattern, boundedVars);\n }\n }\n}\n\n/**\n * Verify that the projected variables (select head) are allowed:\n * - no group-by on select *\n * - if group-by, selected variables need to be collected by the group-by\n * - 'select ?var as ?other', ?other cannot be in scope\n */\nexport function queryProjectionIsGood(query: Pick<QuerySelect, 'variables' | 'solutionModifiers' | 'where'>): void {\n // NoGroupByOnWildcardSelect\n if (query.variables.length === 1 && F.isWildcard(query.variables[0])) {\n if (query.solutionModifiers.group !== undefined) {\n throw new Error('GROUP BY not allowed with wildcard');\n }\n return;\n }\n\n // CannotProjectUngroupedVars - can be skipped if `SELECT *`\n // Check for projection of ungrouped variable\n // Check can be skipped in case of wildcard select.\n const variables = <Exclude<typeof query.variables, [Wildcard]>> query.variables;\n const hasCountAggregate = variables.flatMap(\n varVal => F.isTerm(varVal) ? [] : getAggregatesOfExpression(<T11.Expression> varVal.expression),\n ).some(agg => agg.aggregation === 'count' && !agg.expression.some(arg => F.isWildcard(arg)));\n const groupBy = query.solutionModifiers.group;\n if (hasCountAggregate || groupBy) {\n // We have to check whether\n // 1. Variables used in projection are usable given the group by clause\n // 2. A selectCount will create an implicit group by clause.\n // Variables bound by preceding (expr AS ?var) expressions are in scope for later expressions.\n const asBoundVars = new Set<string>();\n for (const selectVar of variables) {\n if (F.isTerm(selectVar)) {\n if (!groupBy || !groupBy.groupings.map(groupvar =>\n getExpressionId(<T11.Expression | T11.SolutionModifierGroupBind> groupvar))\n .includes((getExpressionId(selectVar)))) {\n throw new Error('Variable not allowed in projection');\n }\n } else if (getAggregatesOfExpression(<T11.Expression> selectVar.expression).length === 0) {\n // Current value binding does not use aggregates\n const usedvars = new Set<string>();\n getVariablesFromExpression(<T11.Expression> selectVar.expression, usedvars);\n for (const usedvar of usedvars) {\n // If the var is created within the select, it is fine.\n if (asBoundVars.has(usedvar)) {\n continue;\n }\n if (!groupBy || !groupBy.groupings.map(groupVar =>\n getExpressionId(<T11.Expression | T11.SolutionModifierGroupBind>groupVar)).includes(usedvar)) {\n throw new Error(`Use of ungrouped variable in projection of operation (?${usedvar})`);\n }\n }\n }\n if (!F.isTerm(selectVar)) {\n // Register a var is created by a bind\n asBoundVars.add(selectVar.variable.value);\n }\n }\n }\n\n // NOTE 12: Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = query.where.patterns.filter(pattern => pattern.type === 'query');\n if (subqueries.length > 0) {\n const selectBoundedVars = new Set<string>();\n for (const variable of variables) {\n if ('variable' in variable) {\n selectBoundedVars.add(variable.variable.value);\n }\n }\n\n // Look at in scope variables\n const vars = subqueries.flatMap<TermVariable | PatternBind | Wildcard>(sub => sub.variables)\n .map(v => F.isTerm(v) ? v.value : (F.isWildcard(v) ? '*' : v.variable.value));\n const subqueryIds = new Set(vars);\n for (const selectedVarId of selectBoundedVars) {\n if (subqueryIds.has(selectedVarId)) {\n throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);\n }\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@traqula/rules-sparql-1-2",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.2",
|
|
5
5
|
"description": "Traqula Lexer and Grammar Rules for sparql 1.2",
|
|
6
6
|
"lsd:module": true,
|
|
7
7
|
"license": "MIT",
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"build:cjs": "node \"../../node_modules/typescript/bin/tsc\" -b tsconfig.cjs.json"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@traqula/core": "^1.1.
|
|
45
|
-
"@traqula/rules-sparql-1-1": "^1.1.
|
|
44
|
+
"@traqula/core": "^1.1.1",
|
|
45
|
+
"@traqula/rules-sparql-1-1": "^1.1.2"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "4a8a40e902755a39eab0d9f4f144e2e46d44b4d2"
|
|
48
48
|
}
|