@traqula/rules-sparql-1-1 0.0.1-alpha.137
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +22 -0
- package/README.md +15 -0
- package/lib/Sparql11types.d.ts +246 -0
- package/lib/Sparql11types.js +2 -0
- package/lib/Sparql11types.js.map +1 -0
- package/lib/expressionHelpers.d.ts +55 -0
- package/lib/expressionHelpers.js +224 -0
- package/lib/expressionHelpers.js.map +1 -0
- package/lib/grammar/builtIn.d.ts +91 -0
- package/lib/grammar/builtIn.js +239 -0
- package/lib/grammar/builtIn.js.map +1 -0
- package/lib/grammar/dataSetClause.d.ts +22 -0
- package/lib/grammar/dataSetClause.js +37 -0
- package/lib/grammar/dataSetClause.js.map +1 -0
- package/lib/grammar/expression.d.ts +68 -0
- package/lib/grammar/expression.js +397 -0
- package/lib/grammar/expression.js.map +1 -0
- package/lib/grammar/general.d.ts +42 -0
- package/lib/grammar/general.js +161 -0
- package/lib/grammar/general.js.map +1 -0
- package/lib/grammar/index.d.ts +12 -0
- package/lib/grammar/index.js +13 -0
- package/lib/grammar/index.js.map +1 -0
- package/lib/grammar/literals.d.ts +53 -0
- package/lib/grammar/literals.js +179 -0
- package/lib/grammar/literals.js.map +1 -0
- package/lib/grammar/propertyPaths.d.ts +40 -0
- package/lib/grammar/propertyPaths.js +193 -0
- package/lib/grammar/propertyPaths.js.map +1 -0
- package/lib/grammar/queryUnit/queryUnit.d.ts +53 -0
- package/lib/grammar/queryUnit/queryUnit.js +405 -0
- package/lib/grammar/queryUnit/queryUnit.js.map +1 -0
- package/lib/grammar/solutionModifier.d.ts +44 -0
- package/lib/grammar/solutionModifier.js +203 -0
- package/lib/grammar/solutionModifier.js.map +1 -0
- package/lib/grammar/tripleBlock.d.ts +42 -0
- package/lib/grammar/tripleBlock.js +309 -0
- package/lib/grammar/tripleBlock.js.map +1 -0
- package/lib/grammar/updateUnit/updateUnit.d.ts +101 -0
- package/lib/grammar/updateUnit/updateUnit.js +448 -0
- package/lib/grammar/updateUnit/updateUnit.js.map +1 -0
- package/lib/grammar/whereClause.d.ts +76 -0
- package/lib/grammar/whereClause.js +383 -0
- package/lib/grammar/whereClause.js.map +1 -0
- package/lib/index.cjs +13088 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -0
- package/lib/lexer/BuildinCalls.d.ts +248 -0
- package/lib/lexer/BuildinCalls.js +189 -0
- package/lib/lexer/BuildinCalls.js.map +1 -0
- package/lib/lexer/graph.d.ts +14 -0
- package/lib/lexer/graph.js +9 -0
- package/lib/lexer/graph.js.map +1 -0
- package/lib/lexer/index.d.ts +5 -0
- package/lib/lexer/index.js +6 -0
- package/lib/lexer/index.js.map +1 -0
- package/lib/lexer/lexer.d.ts +147 -0
- package/lib/lexer/lexer.js +67 -0
- package/lib/lexer/lexer.js.map +1 -0
- package/lib/lexer/symbols.d.ts +80 -0
- package/lib/lexer/symbols.js +30 -0
- package/lib/lexer/symbols.js.map +1 -0
- package/lib/lexer/terminals.d.ts +108 -0
- package/lib/lexer/terminals.js +76 -0
- package/lib/lexer/terminals.js.map +1 -0
- package/lib/utils.d.ts +3 -0
- package/lib/utils.js +7 -0
- package/lib/utils.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"general.js","sourceRoot":"","sources":["general.ts"],"names":[],"mappings":"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","sourcesContent":["import * as l from '../lexer';\nimport type { RuleDef } from '@traqula/core';\nimport { CommonIRIs, resolveIRI } from '@traqula/core';\nimport { blankNode, booleanLiteral, canCreateBlankNodes, iri, numericLiteral, rdfLiteral } from './literals';\nimport type { GraphTerm, Term, Triple, VerbA, IriTerm, VariableTerm, BaseQuery } from '../Sparql11types';\nimport { triplesSameSubject } from './tripleBlock';\n\n/**\n * [[4]](https://www.w3.org/TR/sparql11-query/#rPrologue)\n */\nexport const prologue: RuleDef<'prologue', Pick<BaseQuery, 'base' | 'prefixes'>> = <const> {\n name: 'prologue',\n impl: ({ ACTION, SUBRULE, MANY, OR }) => () => {\n const result: Pick<BaseQuery, 'base' | 'prefixes'> = {\n prefixes: {},\n };\n MANY(() => {\n OR([\n {\n ALT: () => {\n result.base = SUBRULE(baseDecl);\n },\n },\n {\n ALT: () => {\n const pref = SUBRULE(prefixDecl);\n ACTION(() => {\n const [ name, value ] = pref;\n result.prefixes[name] = value;\n });\n },\n },\n ]);\n });\n return result;\n },\n};\n\n/**\n * Registers base IRI in the context and returns it.\n * [[5]](https://www.w3.org/TR/sparql11-query/#rBaseDecl)\n */\nexport const baseDecl: RuleDef<'baseDecl', string> = <const> {\n name: 'baseDecl',\n impl: ({ CONSUME, ACTION, context }) => () => {\n CONSUME(l.baseDecl);\n const base = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n return ACTION(() => {\n context.baseIRI = base;\n return base;\n });\n },\n};\n\n/**\n * Registers prefix in the context and returns registered key-value-pair.\n * [[6]](https://www.w3.org/TR/sparql11-query/#rPrefixDecl)\n */\nexport const prefixDecl: RuleDef<'prefixDecl', [string, string]> = <const> {\n name: 'prefixDecl',\n impl: ({ CONSUME, ACTION, context }) => () => {\n CONSUME(l.prefixDecl);\n const name = CONSUME(l.terminals.pNameNs).image.slice(0, -1);\n const value = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n\n return ACTION(() => {\n const fullIri = resolveIRI(value, context.baseIRI);\n context.prefixes[name] = fullIri;\n return [ name, fullIri ];\n });\n },\n};\n\n/**\n * [[52]](https://www.w3.org/TR/sparql11-query/#rTriplesTemplate)\n */\nexport const triplesTemplate: RuleDef<'triplesTemplate', Triple[]> = <const> {\n name: 'triplesTemplate',\n impl: ({ SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {\n const triples: Triple[][] = [];\n\n triples.push(SUBRULE(triplesSameSubject));\n OPTION1(() => {\n CONSUME(l.symbols.dot);\n OPTION2(() => {\n triples.push(SUBRULE(triplesTemplate));\n });\n });\n\n return triples.flat(1);\n },\n};\n\n/**\n * [[78]](https://www.w3.org/TR/sparql11-query/#rVerb)\n */\nexport const verb: RuleDef<'verb', VariableTerm | IriTerm> = <const> {\n name: 'verb',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(varOrIri) },\n {\n ALT: () => SUBRULE(verbA),\n },\n ]),\n};\n\nexport const verbA: RuleDef<'VerbA', VerbA> = <const> {\n name: 'VerbA',\n impl: ({ CONSUME, context }) => () => {\n CONSUME(l.a);\n return context.dataFactory.namedNode(CommonIRIs.TYPE);\n },\n};\n\n/**\n * [[106]](https://www.w3.org/TR/sparql11-query/#rVarOrTerm)\n */\nexport const varOrTerm: RuleDef<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ SUBRULE, OR, context }) => () => OR<Term>([\n { GATE: () => context.parseMode.has(canParseVars), ALT: () => SUBRULE(var_) },\n { ALT: () => SUBRULE(graphTerm) },\n ]),\n};\n\n/**\n * [[107]](https://www.w3.org/TR/sparql11-query/#rVarOrIri)\n */\nexport const varOrIri: RuleDef<'varOrIri', IriTerm | VariableTerm> = <const> {\n name: 'varOrIri',\n impl: ({ SUBRULE, OR, context }) => () => OR<IriTerm | VariableTerm>([\n { GATE: () => context.parseMode.has(canParseVars), ALT: () => SUBRULE(var_) },\n { ALT: () => SUBRULE(iri) },\n ]),\n};\n\nexport const canParseVars = Symbol('canParseVars');\n\n/**\n * [[108]](https://www.w3.org/TR/sparql11-query/#rVar)\n */\nexport const var_: RuleDef<'var', VariableTerm> = <const> {\n name: 'var',\n impl: ({ ACTION, CONSUME, OR, context }) => () => {\n const result = OR([\n { ALT: () => context.dataFactory.variable(CONSUME(l.terminals.var1).image.slice(1)) },\n { ALT: () => context.dataFactory.variable(CONSUME(l.terminals.var2).image.slice(1)) },\n ]);\n ACTION(() => {\n if (!context.parseMode.has(canParseVars)) {\n throw new Error('Variables are not allowed here');\n }\n });\n return result;\n },\n};\n\n/**\n * [[109]](https://www.w3.org/TR/sparql11-query/#rGraphTerm)\n */\nexport const graphTerm: RuleDef<'graphTerm', GraphTerm> = <const> {\n name: 'graphTerm',\n impl: ({ SUBRULE, CONSUME, OR, context }) => () => OR<GraphTerm>([\n { ALT: () => SUBRULE(iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(numericLiteral) },\n { ALT: () => SUBRULE(booleanLiteral) },\n { GATE: () => context.parseMode.has(canCreateBlankNodes), ALT: () => SUBRULE(blankNode) },\n {\n ALT: () => {\n CONSUME(l.terminals.nil);\n return context.dataFactory.namedNode(CommonIRIs.NIL);\n },\n },\n ]),\n};\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './queryUnit/queryUnit';
|
|
2
|
+
export * from './updateUnit/updateUnit';
|
|
3
|
+
export * from './builtIn';
|
|
4
|
+
export * from './dataSetClause';
|
|
5
|
+
export * from './expression';
|
|
6
|
+
export * from '../expressionHelpers';
|
|
7
|
+
export * from './general';
|
|
8
|
+
export * from './literals';
|
|
9
|
+
export * from './propertyPaths';
|
|
10
|
+
export * from './solutionModifier';
|
|
11
|
+
export * from './tripleBlock';
|
|
12
|
+
export * from './whereClause';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './queryUnit/queryUnit';
|
|
2
|
+
export * from './updateUnit/updateUnit';
|
|
3
|
+
export * from './builtIn';
|
|
4
|
+
export * from './dataSetClause';
|
|
5
|
+
export * from './expression';
|
|
6
|
+
export * from '../expressionHelpers';
|
|
7
|
+
export * from './general';
|
|
8
|
+
export * from './literals';
|
|
9
|
+
export * from './propertyPaths';
|
|
10
|
+
export * from './solutionModifier';
|
|
11
|
+
export * from './tripleBlock';
|
|
12
|
+
export * from './whereClause';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC","sourcesContent":["export * from './queryUnit/queryUnit';\nexport * from './updateUnit/updateUnit';\nexport * from './builtIn';\nexport * from './dataSetClause';\nexport * from './expression';\nexport * from '../expressionHelpers';\nexport * from './general';\nexport * from './literals';\nexport * from './propertyPaths';\nexport * from './solutionModifier';\nexport * from './tripleBlock';\nexport * from './whereClause';\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { RuleDef } from '@traqula/core';
|
|
2
|
+
import type { BlankTerm, IriTerm, LiteralTerm } from '../Sparql11types';
|
|
3
|
+
/**
|
|
4
|
+
* Parses an RDF literal, in the form of {value}@{lang} or {value}^^{datatype}.
|
|
5
|
+
* [[129]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)
|
|
6
|
+
*/
|
|
7
|
+
export declare const rdfLiteral: RuleDef<'rdfLiteral', LiteralTerm>;
|
|
8
|
+
/**
|
|
9
|
+
* Parses a numeric literal.
|
|
10
|
+
* [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)
|
|
11
|
+
*/
|
|
12
|
+
export declare const numericLiteral: RuleDef<'numericLiteral', LiteralTerm>;
|
|
13
|
+
/**
|
|
14
|
+
* Parses an unsigned numeric literal.
|
|
15
|
+
* [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)
|
|
16
|
+
*/
|
|
17
|
+
export declare const numericLiteralUnsigned: RuleDef<'numericLiteralUnsigned', LiteralTerm>;
|
|
18
|
+
/**
|
|
19
|
+
* Parses a positive numeric literal.
|
|
20
|
+
* [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)
|
|
21
|
+
*/
|
|
22
|
+
export declare const numericLiteralPositive: RuleDef<'numericLiteralPositive', LiteralTerm>;
|
|
23
|
+
/**
|
|
24
|
+
* Parses a negative numeric literal.
|
|
25
|
+
* [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)
|
|
26
|
+
*/
|
|
27
|
+
export declare const numericLiteralNegative: RuleDef<'numericLiteralNegative', LiteralTerm>;
|
|
28
|
+
/**
|
|
29
|
+
* Parses a boolean literal.
|
|
30
|
+
* [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)
|
|
31
|
+
*/
|
|
32
|
+
export declare const booleanLiteral: RuleDef<'booleanLiteral', LiteralTerm>;
|
|
33
|
+
/**
|
|
34
|
+
* Parses a string literal.
|
|
35
|
+
* [[135]](https://www.w3.org/TR/sparql11-query/#rString)
|
|
36
|
+
*/
|
|
37
|
+
export declare const string: RuleDef<'string', string>;
|
|
38
|
+
/**
|
|
39
|
+
* Parses a named node, either as an IRI or as a prefixed name.
|
|
40
|
+
* [[136]](https://www.w3.org/TR/sparql11-query/#riri)
|
|
41
|
+
*/
|
|
42
|
+
export declare const iri: RuleDef<'iri', IriTerm>;
|
|
43
|
+
/**
|
|
44
|
+
* Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.
|
|
45
|
+
* [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)
|
|
46
|
+
*/
|
|
47
|
+
export declare const prefixedName: RuleDef<'prefixedName', IriTerm>;
|
|
48
|
+
export declare const canCreateBlankNodes: unique symbol;
|
|
49
|
+
/**
|
|
50
|
+
* Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.
|
|
51
|
+
* [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)
|
|
52
|
+
*/
|
|
53
|
+
export declare const blankNode: RuleDef<'blankNode', BlankTerm>;
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import * as l from '../lexer';
|
|
2
|
+
import { CommonIRIs, resolveIRI } from '@traqula/core';
|
|
3
|
+
/**
|
|
4
|
+
* Parses an RDF literal, in the form of {value}@{lang} or {value}^^{datatype}.
|
|
5
|
+
* [[129]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)
|
|
6
|
+
*/
|
|
7
|
+
export const rdfLiteral = {
|
|
8
|
+
name: 'rdfLiteral',
|
|
9
|
+
impl: ({ SUBRULE, CONSUME, OPTION, OR, context }) => () => {
|
|
10
|
+
const value = SUBRULE(string);
|
|
11
|
+
const languageOrDatatype = OPTION(() => OR([
|
|
12
|
+
{ ALT: () => CONSUME(l.terminals.langTag).image.slice(1) },
|
|
13
|
+
{
|
|
14
|
+
ALT: () => {
|
|
15
|
+
CONSUME(l.symbols.hathat);
|
|
16
|
+
return SUBRULE(iri);
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
]));
|
|
20
|
+
return context.dataFactory.literal(value, languageOrDatatype);
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Parses a numeric literal.
|
|
25
|
+
* [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)
|
|
26
|
+
*/
|
|
27
|
+
export const numericLiteral = {
|
|
28
|
+
name: 'numericLiteral',
|
|
29
|
+
impl: ({ SUBRULE, OR }) => () => OR([
|
|
30
|
+
{ ALT: () => SUBRULE(numericLiteralUnsigned) },
|
|
31
|
+
{ ALT: () => SUBRULE(numericLiteralPositive) },
|
|
32
|
+
{ ALT: () => SUBRULE(numericLiteralNegative) },
|
|
33
|
+
]),
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Parses an unsigned numeric literal.
|
|
37
|
+
* [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)
|
|
38
|
+
*/
|
|
39
|
+
export const numericLiteralUnsigned = {
|
|
40
|
+
name: 'numericLiteralUnsigned',
|
|
41
|
+
impl: ({ CONSUME, OR, context }) => () => OR([
|
|
42
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.terminals.integer).image, context.dataFactory.namedNode(CommonIRIs.INTEGER)) },
|
|
43
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.terminals.decimal).image, context.dataFactory.namedNode(CommonIRIs.DECIMAL)) },
|
|
44
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.terminals.double).image, context.dataFactory.namedNode(CommonIRIs.DOUBLE)) },
|
|
45
|
+
]),
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Parses a positive numeric literal.
|
|
49
|
+
* [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)
|
|
50
|
+
*/
|
|
51
|
+
export const numericLiteralPositive = {
|
|
52
|
+
name: 'numericLiteralPositive',
|
|
53
|
+
impl: ({ CONSUME, OR, context }) => () => OR([
|
|
54
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.terminals.interferePositive).image, context.dataFactory.namedNode(CommonIRIs.INTEGER)) },
|
|
55
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.terminals.decimalPositive).image, context.dataFactory.namedNode(CommonIRIs.DECIMAL)) },
|
|
56
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.terminals.doublePositive).image, context.dataFactory.namedNode(CommonIRIs.DOUBLE)) },
|
|
57
|
+
]),
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Parses a negative numeric literal.
|
|
61
|
+
* [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)
|
|
62
|
+
*/
|
|
63
|
+
export const numericLiteralNegative = {
|
|
64
|
+
name: 'numericLiteralNegative',
|
|
65
|
+
impl: ({ CONSUME, OR, context }) => () => OR([
|
|
66
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.terminals.integerNegative).image, context.dataFactory.namedNode(CommonIRIs.INTEGER)) },
|
|
67
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.terminals.decimalNegative).image, context.dataFactory.namedNode(CommonIRIs.DECIMAL)) },
|
|
68
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.terminals.doubleNegative).image, context.dataFactory.namedNode(CommonIRIs.DOUBLE)) },
|
|
69
|
+
]),
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Parses a boolean literal.
|
|
73
|
+
* [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)
|
|
74
|
+
*/
|
|
75
|
+
export const booleanLiteral = {
|
|
76
|
+
name: 'booleanLiteral',
|
|
77
|
+
impl: ({ CONSUME, OR, context }) => () => OR([
|
|
78
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.true_).image.toLowerCase(), context.dataFactory.namedNode(CommonIRIs.BOOLEAN)) },
|
|
79
|
+
{ ALT: () => context.dataFactory.literal(CONSUME(l.false_).image.toLowerCase(), context.dataFactory.namedNode(CommonIRIs.BOOLEAN)) },
|
|
80
|
+
]),
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Parses a string literal.
|
|
84
|
+
* [[135]](https://www.w3.org/TR/sparql11-query/#rString)
|
|
85
|
+
*/
|
|
86
|
+
export const string = {
|
|
87
|
+
name: 'string',
|
|
88
|
+
impl: ({ ACTION, CONSUME, OR }) => () => {
|
|
89
|
+
const rawString = OR([
|
|
90
|
+
{ ALT: () => CONSUME(l.terminals.stringLiteral1).image.slice(1, -1) },
|
|
91
|
+
{ ALT: () => CONSUME(l.terminals.stringLiteral2).image.slice(1, -1) },
|
|
92
|
+
{ ALT: () => CONSUME(l.terminals.stringLiteralLong1).image.slice(3, -3) },
|
|
93
|
+
{ ALT: () => CONSUME(l.terminals.stringLiteralLong2).image.slice(3, -3) },
|
|
94
|
+
]);
|
|
95
|
+
// Handle string escapes (19.7). (19.2 is handled at input level.)
|
|
96
|
+
return ACTION(() => rawString.replaceAll(/\\([tnrbf"'\\])/gu, (_, char) => {
|
|
97
|
+
switch (char) {
|
|
98
|
+
case 't': return '\t';
|
|
99
|
+
case 'n': return '\n';
|
|
100
|
+
case 'r': return '\r';
|
|
101
|
+
case 'b': return '\b';
|
|
102
|
+
case 'f': return '\f';
|
|
103
|
+
default: return char;
|
|
104
|
+
}
|
|
105
|
+
}));
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Parses a named node, either as an IRI or as a prefixed name.
|
|
110
|
+
* [[136]](https://www.w3.org/TR/sparql11-query/#riri)
|
|
111
|
+
*/
|
|
112
|
+
export const iri = {
|
|
113
|
+
name: 'iri',
|
|
114
|
+
impl: ({ ACTION, SUBRULE, CONSUME, OR, context }) => () => OR([
|
|
115
|
+
{ ALT: () => {
|
|
116
|
+
const iriVal = CONSUME(l.terminals.iriRef).image.slice(1, -1);
|
|
117
|
+
return ACTION(() => context.dataFactory.namedNode(resolveIRI(iriVal, context.baseIRI)));
|
|
118
|
+
} },
|
|
119
|
+
{ ALT: () => SUBRULE(prefixedName) },
|
|
120
|
+
]),
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.
|
|
124
|
+
* [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)
|
|
125
|
+
*/
|
|
126
|
+
export const prefixedName = {
|
|
127
|
+
name: 'prefixedName',
|
|
128
|
+
impl: ({ ACTION, CONSUME, OR, context }) => () => {
|
|
129
|
+
const fullStr = OR([
|
|
130
|
+
{ ALT: () => CONSUME(l.terminals.pNameLn).image },
|
|
131
|
+
{ ALT: () => CONSUME(l.terminals.pNameNs).image },
|
|
132
|
+
]);
|
|
133
|
+
return ACTION(() => {
|
|
134
|
+
const [prefix, localName] = fullStr.split(':');
|
|
135
|
+
const value = context.prefixes[prefix];
|
|
136
|
+
if (value === undefined) {
|
|
137
|
+
throw new Error(`Unknown prefix: ${prefix}`);
|
|
138
|
+
}
|
|
139
|
+
return context.dataFactory.namedNode(resolveIRI(value + localName, context.baseIRI));
|
|
140
|
+
});
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
export const canCreateBlankNodes = Symbol('canCreateBlankNodes');
|
|
144
|
+
/**
|
|
145
|
+
* Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.
|
|
146
|
+
* [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)
|
|
147
|
+
*/
|
|
148
|
+
export const blankNode = {
|
|
149
|
+
name: 'blankNode',
|
|
150
|
+
impl: ({ ACTION, CONSUME, OR, context }) => () => {
|
|
151
|
+
const result = OR([
|
|
152
|
+
{
|
|
153
|
+
ALT: () => {
|
|
154
|
+
const label = CONSUME(l.terminals.blankNodeLabel).image;
|
|
155
|
+
ACTION(() => {
|
|
156
|
+
if (context.flushedBlankNodeLabels.has(label)) {
|
|
157
|
+
throw new Error('Detected reuse blank node across different request string.');
|
|
158
|
+
}
|
|
159
|
+
context.usedBlankNodeLabels.add(label);
|
|
160
|
+
});
|
|
161
|
+
return ACTION(() => context.dataFactory.blankNode(label.replace('_:', 'e_')));
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
ALT: () => {
|
|
166
|
+
CONSUME(l.terminals.anon);
|
|
167
|
+
return ACTION(() => context.dataFactory.blankNode());
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
]);
|
|
171
|
+
ACTION(() => {
|
|
172
|
+
if (!context.parseMode.has(canCreateBlankNodes)) {
|
|
173
|
+
throw new Error('Blank nodes are not allowed in this context');
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
return result;
|
|
177
|
+
},
|
|
178
|
+
};
|
|
179
|
+
//# sourceMappingURL=literals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"literals.js","sourceRoot":"","sources":["literals.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NamedNode } from 'rdf-data-factory';\nimport * as l from '../lexer';\nimport type { RuleDef } from '@traqula/core';\nimport { CommonIRIs, resolveIRI } from '@traqula/core';\nimport type { BlankTerm, IriTerm, LiteralTerm } from '../Sparql11types';\n\n/**\n * Parses an RDF literal, in the form of {value}@{lang} or {value}^^{datatype}.\n * [[129]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)\n */\nexport const rdfLiteral: RuleDef<'rdfLiteral', LiteralTerm> = <const> {\n name: 'rdfLiteral',\n impl: ({ SUBRULE, CONSUME, OPTION, OR, context }) => () => {\n const value = SUBRULE(string);\n const languageOrDatatype = OPTION(() => OR<string | NamedNode>([\n { ALT: () => CONSUME(l.terminals.langTag).image.slice(1) },\n {\n ALT: () => {\n CONSUME(l.symbols.hathat);\n return SUBRULE(iri);\n },\n },\n ]));\n return context.dataFactory.literal(value, languageOrDatatype);\n },\n};\n\n/**\n * Parses a numeric literal.\n * [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)\n */\nexport const numericLiteral: RuleDef<'numericLiteral', LiteralTerm> = <const> {\n name: 'numericLiteral',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(numericLiteralUnsigned) },\n { ALT: () => SUBRULE(numericLiteralPositive) },\n { ALT: () => SUBRULE(numericLiteralNegative) },\n ]),\n};\n\n/**\n * Parses an unsigned numeric literal.\n * [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)\n */\nexport const numericLiteralUnsigned: RuleDef<'numericLiteralUnsigned', LiteralTerm> = <const> {\n name: 'numericLiteralUnsigned',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.integer).image,\n context.dataFactory.namedNode(CommonIRIs.INTEGER),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.decimal).image,\n context.dataFactory.namedNode(CommonIRIs.DECIMAL),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.double).image,\n context.dataFactory.namedNode(CommonIRIs.DOUBLE),\n ) },\n ]),\n};\n\n/**\n * Parses a positive numeric literal.\n * [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)\n */\nexport const numericLiteralPositive: RuleDef<'numericLiteralPositive', LiteralTerm> = <const> {\n name: 'numericLiteralPositive',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.interferePositive).image,\n context.dataFactory.namedNode(CommonIRIs.INTEGER),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.decimalPositive).image,\n context.dataFactory.namedNode(CommonIRIs.DECIMAL),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.doublePositive).image,\n context.dataFactory.namedNode(CommonIRIs.DOUBLE),\n ) },\n ]),\n};\n\n/**\n * Parses a negative numeric literal.\n * [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)\n */\nexport const numericLiteralNegative: RuleDef<'numericLiteralNegative', LiteralTerm> = <const> {\n name: 'numericLiteralNegative',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.integerNegative).image,\n context.dataFactory.namedNode(CommonIRIs.INTEGER),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.decimalNegative).image,\n context.dataFactory.namedNode(CommonIRIs.DECIMAL),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.doubleNegative).image,\n context.dataFactory.namedNode(CommonIRIs.DOUBLE),\n ) },\n ]),\n};\n\n/**\n * Parses a boolean literal.\n * [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)\n */\nexport const booleanLiteral: RuleDef<'booleanLiteral', LiteralTerm> = <const> {\n name: 'booleanLiteral',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.true_).image.toLowerCase(),\n context.dataFactory.namedNode(CommonIRIs.BOOLEAN),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.false_).image.toLowerCase(),\n context.dataFactory.namedNode(CommonIRIs.BOOLEAN),\n ) },\n ]),\n};\n\n/**\n * Parses a string literal.\n * [[135]](https://www.w3.org/TR/sparql11-query/#rString)\n */\nexport const string: RuleDef<'string', string> = <const> {\n name: 'string',\n impl: ({ ACTION, CONSUME, OR }) => () => {\n const rawString = OR([\n { ALT: () => CONSUME(l.terminals.stringLiteral1).image.slice(1, -1) },\n { ALT: () => CONSUME(l.terminals.stringLiteral2).image.slice(1, -1) },\n { ALT: () => CONSUME(l.terminals.stringLiteralLong1).image.slice(3, -3) },\n { ALT: () => CONSUME(l.terminals.stringLiteralLong2).image.slice(3, -3) },\n ]);\n // Handle string escapes (19.7). (19.2 is handled at input level.)\n return ACTION(() => rawString.replaceAll(/\\\\([tnrbf\"'\\\\])/gu, (_, char: string) => {\n switch (char) {\n case 't': return '\\t';\n case 'n': return '\\n';\n case 'r': return '\\r';\n case 'b': return '\\b';\n case 'f': return '\\f';\n default: return char;\n }\n }));\n },\n};\n\n/**\n * Parses a named node, either as an IRI or as a prefixed name.\n * [[136]](https://www.w3.org/TR/sparql11-query/#riri)\n */\nexport const iri: RuleDef<'iri', IriTerm> = <const> {\n name: 'iri',\n impl: ({ ACTION, SUBRULE, CONSUME, OR, context }) => () => OR([\n { ALT: () => {\n const iriVal = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n return ACTION(() => context.dataFactory.namedNode(resolveIRI(iriVal, context.baseIRI)));\n } },\n { ALT: () => SUBRULE(prefixedName) },\n ]),\n};\n\n/**\n * Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.\n * [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)\n */\nexport const prefixedName: RuleDef<'prefixedName', IriTerm> = <const> {\n name: 'prefixedName',\n impl: ({ ACTION, CONSUME, OR, context }) => () => {\n const fullStr = OR([\n { ALT: () => CONSUME(l.terminals.pNameLn).image },\n { ALT: () => CONSUME(l.terminals.pNameNs).image },\n ]);\n return ACTION(() => {\n const [ prefix, localName ] = fullStr.split(':');\n const value = context.prefixes[prefix];\n if (value === undefined) {\n throw new Error(`Unknown prefix: ${prefix}`);\n }\n return context.dataFactory.namedNode(resolveIRI(value + localName, context.baseIRI));\n });\n },\n};\n\nexport const canCreateBlankNodes = Symbol('canCreateBlankNodes');\n\n/**\n * Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.\n * [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)\n */\nexport const blankNode: RuleDef<'blankNode', BlankTerm> = <const> {\n name: 'blankNode',\n impl: ({ ACTION, CONSUME, OR, context }) => () => {\n const result = OR([\n {\n ALT: () => {\n const label = CONSUME(l.terminals.blankNodeLabel).image;\n ACTION(() => {\n if (context.flushedBlankNodeLabels.has(label)) {\n throw new Error('Detected reuse blank node across different request string.');\n }\n context.usedBlankNodeLabels.add(label);\n });\n return ACTION(() => context.dataFactory.blankNode(label.replace('_:', 'e_')));\n },\n },\n {\n ALT: () => {\n CONSUME(l.terminals.anon);\n return ACTION(() => context.dataFactory.blankNode());\n },\n },\n ]);\n ACTION(() => {\n if (!context.parseMode.has(canCreateBlankNodes)) {\n throw new Error('Blank nodes are not allowed in this context');\n }\n });\n return result;\n },\n};\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { TokenType } from 'chevrotain';
|
|
2
|
+
import type { RuleDef } from '@traqula/core';
|
|
3
|
+
import type { IriTerm, IriTermOrElt, NegatedPropertySet, PropertyPath } from '../Sparql11types';
|
|
4
|
+
/**
|
|
5
|
+
* [[88]](https://www.w3.org/TR/sparql11-query/#rPath)
|
|
6
|
+
*/
|
|
7
|
+
export declare const path: RuleDef<'path', PropertyPath | IriTerm>;
|
|
8
|
+
export declare function pathHelper<T extends string>(name: T, SEP: TokenType, pathType: '|' | '/' | '^' | '+' | '*' | '?', subRule: RuleDef<string, PropertyPath | IriTerm>): RuleDef<T, PropertyPath | IriTerm>;
|
|
9
|
+
/**
|
|
10
|
+
* [[92]](https://www.w3.org/TR/sparql11-query/#rPathEltOrInverse)
|
|
11
|
+
*/
|
|
12
|
+
export declare const pathEltOrInverse: RuleDef<'pathEltOrInverse', PropertyPath | IriTerm>;
|
|
13
|
+
/**
|
|
14
|
+
* [[90]](https://www.w3.org/TR/sparql11-query/#rPathSequence)
|
|
15
|
+
*/
|
|
16
|
+
export declare const pathSequence: RuleDef<"pathSequence", PropertyPath | IriTerm>;
|
|
17
|
+
/**
|
|
18
|
+
* [[89]](https://www.w3.org/TR/sparql11-query/#rPathAlternative)
|
|
19
|
+
*/
|
|
20
|
+
export declare const pathAlternative: RuleDef<"pathAlternative", PropertyPath | IriTerm>;
|
|
21
|
+
/**
|
|
22
|
+
* [[91]](https://www.w3.org/TR/sparql11-query/#rPathElt)
|
|
23
|
+
*/
|
|
24
|
+
export declare const pathElt: RuleDef<'pathElt', PropertyPath | IriTerm>;
|
|
25
|
+
/**
|
|
26
|
+
* [[93]](https://www.w3.org/TR/sparql11-query/#rPathMod)
|
|
27
|
+
*/
|
|
28
|
+
export declare const pathMod: RuleDef<'pathMod', '*' | '+' | '?'>;
|
|
29
|
+
/**
|
|
30
|
+
* [[94]](https://www.w3.org/TR/sparql11-query/#rPathPrimary)
|
|
31
|
+
*/
|
|
32
|
+
export declare const pathPrimary: RuleDef<'pathPrimary', PropertyPath | IriTerm>;
|
|
33
|
+
/**
|
|
34
|
+
* [[95]](https://www.w3.org/TR/sparql11-query/#rPathNegatedPropertySet)
|
|
35
|
+
*/
|
|
36
|
+
export declare const pathNegatedPropertySet: RuleDef<'pathNegatedPropertySet', NegatedPropertySet['items']>;
|
|
37
|
+
/**
|
|
38
|
+
* [[96]](https://www.w3.org/TR/sparql11-query/#rPathOneInPropertySet)
|
|
39
|
+
*/
|
|
40
|
+
export declare const pathOneInPropertySet: RuleDef<'pathOneInPropertySet', IriTermOrElt>;
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import * as l from '../lexer';
|
|
2
|
+
import { verbA } from './general';
|
|
3
|
+
import { iri } from './literals';
|
|
4
|
+
/**
|
|
5
|
+
* [[88]](https://www.w3.org/TR/sparql11-query/#rPath)
|
|
6
|
+
*/
|
|
7
|
+
export const path = {
|
|
8
|
+
name: 'path',
|
|
9
|
+
impl: ({ SUBRULE }) => () => SUBRULE(pathAlternative),
|
|
10
|
+
};
|
|
11
|
+
export function pathHelper(name, SEP, pathType, subRule) {
|
|
12
|
+
return {
|
|
13
|
+
name,
|
|
14
|
+
impl: ({ SUBRULE2, AT_LEAST_ONE_SEP }) => () => {
|
|
15
|
+
const alternatives = [];
|
|
16
|
+
AT_LEAST_ONE_SEP({
|
|
17
|
+
DEF: () => {
|
|
18
|
+
alternatives.push(SUBRULE2(subRule));
|
|
19
|
+
},
|
|
20
|
+
SEP,
|
|
21
|
+
});
|
|
22
|
+
return alternatives.length === 1 ?
|
|
23
|
+
alternatives[0] :
|
|
24
|
+
{
|
|
25
|
+
type: 'path',
|
|
26
|
+
pathType,
|
|
27
|
+
items: alternatives,
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* [[92]](https://www.w3.org/TR/sparql11-query/#rPathEltOrInverse)
|
|
34
|
+
*/
|
|
35
|
+
export const pathEltOrInverse = {
|
|
36
|
+
name: 'pathEltOrInverse',
|
|
37
|
+
impl: ({ CONSUME, SUBRULE1, SUBRULE2, OR }) => () => OR([
|
|
38
|
+
{
|
|
39
|
+
ALT: () => SUBRULE1(pathElt),
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
ALT: () => {
|
|
43
|
+
CONSUME(l.symbols.hat);
|
|
44
|
+
const item = SUBRULE2(pathElt);
|
|
45
|
+
return {
|
|
46
|
+
type: 'path',
|
|
47
|
+
pathType: '^',
|
|
48
|
+
items: [
|
|
49
|
+
item,
|
|
50
|
+
],
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
]),
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* [[90]](https://www.w3.org/TR/sparql11-query/#rPathSequence)
|
|
58
|
+
*/
|
|
59
|
+
export const pathSequence = pathHelper('pathSequence', l.symbols.slash, '/', pathEltOrInverse);
|
|
60
|
+
/**
|
|
61
|
+
* [[89]](https://www.w3.org/TR/sparql11-query/#rPathAlternative)
|
|
62
|
+
*/
|
|
63
|
+
export const pathAlternative = pathHelper('pathAlternative', l.symbols.pipe, '|', pathSequence);
|
|
64
|
+
/**
|
|
65
|
+
* [[91]](https://www.w3.org/TR/sparql11-query/#rPathElt)
|
|
66
|
+
*/
|
|
67
|
+
export const pathElt = {
|
|
68
|
+
name: 'pathElt',
|
|
69
|
+
impl: ({ SUBRULE, OPTION }) => () => {
|
|
70
|
+
const item = SUBRULE(pathPrimary);
|
|
71
|
+
const modification = OPTION(() => SUBRULE(pathMod));
|
|
72
|
+
return modification === undefined ?
|
|
73
|
+
item :
|
|
74
|
+
{
|
|
75
|
+
type: 'path',
|
|
76
|
+
pathType: modification,
|
|
77
|
+
items: [item],
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* [[93]](https://www.w3.org/TR/sparql11-query/#rPathMod)
|
|
83
|
+
*/
|
|
84
|
+
export const pathMod = {
|
|
85
|
+
name: 'pathMod',
|
|
86
|
+
impl: ({ CONSUME, OR }) => () => OR([
|
|
87
|
+
{
|
|
88
|
+
ALT: () => {
|
|
89
|
+
CONSUME(l.symbols.question);
|
|
90
|
+
return '?';
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
ALT: () => {
|
|
95
|
+
CONSUME(l.symbols.star);
|
|
96
|
+
return '*';
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
ALT: () => {
|
|
101
|
+
CONSUME(l.symbols.opPlus);
|
|
102
|
+
return '+';
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
]),
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* [[94]](https://www.w3.org/TR/sparql11-query/#rPathPrimary)
|
|
109
|
+
*/
|
|
110
|
+
export const pathPrimary = {
|
|
111
|
+
name: 'pathPrimary',
|
|
112
|
+
impl: ({ SUBRULE, CONSUME, OR }) => () => OR([
|
|
113
|
+
{ ALT: () => SUBRULE(iri) },
|
|
114
|
+
{
|
|
115
|
+
ALT: () => SUBRULE(verbA),
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
ALT: () => {
|
|
119
|
+
CONSUME(l.symbols.exclamation);
|
|
120
|
+
const negatedPath = SUBRULE(pathNegatedPropertySet);
|
|
121
|
+
return {
|
|
122
|
+
type: 'path',
|
|
123
|
+
pathType: '!',
|
|
124
|
+
items: negatedPath,
|
|
125
|
+
};
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
ALT: () => {
|
|
130
|
+
CONSUME(l.symbols.LParen);
|
|
131
|
+
const resRecursive = SUBRULE(path);
|
|
132
|
+
CONSUME(l.symbols.RParen);
|
|
133
|
+
return resRecursive;
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
]),
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* [[95]](https://www.w3.org/TR/sparql11-query/#rPathNegatedPropertySet)
|
|
140
|
+
*/
|
|
141
|
+
export const pathNegatedPropertySet = {
|
|
142
|
+
name: 'pathNegatedPropertySet',
|
|
143
|
+
impl: ({ CONSUME, SUBRULE1, SUBRULE2, OR, MANY_SEP }) => () => OR([
|
|
144
|
+
{
|
|
145
|
+
ALT: () => [SUBRULE1(pathOneInPropertySet)],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
ALT: () => {
|
|
149
|
+
CONSUME(l.symbols.LParen);
|
|
150
|
+
const items = [];
|
|
151
|
+
MANY_SEP({
|
|
152
|
+
DEF: () => {
|
|
153
|
+
items.push(SUBRULE2(pathOneInPropertySet));
|
|
154
|
+
},
|
|
155
|
+
SEP: l.symbols.pipe,
|
|
156
|
+
});
|
|
157
|
+
CONSUME(l.symbols.RParen);
|
|
158
|
+
return items.length === 1 ?
|
|
159
|
+
items :
|
|
160
|
+
[{
|
|
161
|
+
type: 'path',
|
|
162
|
+
pathType: '|',
|
|
163
|
+
items,
|
|
164
|
+
}];
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
]),
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* [[96]](https://www.w3.org/TR/sparql11-query/#rPathOneInPropertySet)
|
|
171
|
+
*/
|
|
172
|
+
export const pathOneInPropertySet = {
|
|
173
|
+
name: 'pathOneInPropertySet',
|
|
174
|
+
impl: ({ CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => () => OR1([
|
|
175
|
+
{ ALT: () => SUBRULE1(iri) },
|
|
176
|
+
{ ALT: () => SUBRULE1(verbA) },
|
|
177
|
+
{
|
|
178
|
+
ALT: () => {
|
|
179
|
+
CONSUME(l.symbols.hat);
|
|
180
|
+
const item = OR2([
|
|
181
|
+
{ ALT: () => SUBRULE2(iri) },
|
|
182
|
+
{ ALT: () => SUBRULE2(verbA) },
|
|
183
|
+
]);
|
|
184
|
+
return {
|
|
185
|
+
type: 'path',
|
|
186
|
+
pathType: '^',
|
|
187
|
+
items: [item],
|
|
188
|
+
};
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
]),
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=propertyPaths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"propertyPaths.js","sourceRoot":"","sources":["propertyPaths.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TokenType } from 'chevrotain';\nimport * as l from '../lexer';\nimport type { RuleDef } from '@traqula/core';\nimport { verbA } from './general';\nimport { iri } from './literals';\nimport type { IriTerm, IriTermOrElt, NegatedPropertySet, PropertyPath } from '../Sparql11types';\n\n/**\n * [[88]](https://www.w3.org/TR/sparql11-query/#rPath)\n */\nexport const path: RuleDef<'path', PropertyPath | IriTerm> = <const> {\n name: 'path',\n impl: ({ SUBRULE }) => () => SUBRULE(pathAlternative),\n};\n\nexport function pathHelper<T extends string>(\n name: T,\n SEP: TokenType,\n pathType: '|' | '/' | '^' | '+' | '*' | '?',\n subRule: RuleDef<string, PropertyPath | IriTerm>,\n): RuleDef<T, PropertyPath | IriTerm> {\n return {\n name,\n impl: ({ SUBRULE2, AT_LEAST_ONE_SEP }) => () => {\n const alternatives: (IriTerm | PropertyPath)[] = [];\n AT_LEAST_ONE_SEP({\n DEF: () => {\n alternatives.push(SUBRULE2(subRule));\n },\n SEP,\n });\n return alternatives.length === 1 ?\n alternatives[0] :\n {\n type: 'path',\n pathType,\n items: alternatives,\n };\n },\n };\n}\n\n/**\n * [[92]](https://www.w3.org/TR/sparql11-query/#rPathEltOrInverse)\n */\nexport const pathEltOrInverse: RuleDef<'pathEltOrInverse', PropertyPath | IriTerm> = <const> {\n name: 'pathEltOrInverse',\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, OR }) => () => OR<PropertyPath | IriTerm>([\n {\n ALT: () => SUBRULE1(pathElt),\n },\n {\n ALT: () => {\n CONSUME(l.symbols.hat);\n const item = SUBRULE2(pathElt);\n return {\n type: 'path',\n pathType: '^',\n items: [\n item,\n ],\n };\n },\n },\n ]),\n};\n\n/**\n * [[90]](https://www.w3.org/TR/sparql11-query/#rPathSequence)\n */\nexport const pathSequence = pathHelper('pathSequence', l.symbols.slash, '/', pathEltOrInverse);\n\n/**\n * [[89]](https://www.w3.org/TR/sparql11-query/#rPathAlternative)\n */\nexport const pathAlternative = pathHelper('pathAlternative', l.symbols.pipe, '|', pathSequence);\n\n/**\n * [[91]](https://www.w3.org/TR/sparql11-query/#rPathElt)\n */\nexport const pathElt: RuleDef<'pathElt', PropertyPath | IriTerm> = <const> {\n name: 'pathElt',\n impl: ({ SUBRULE, OPTION }) => () => {\n const item = SUBRULE(pathPrimary);\n const modification = OPTION(() => SUBRULE(pathMod));\n return modification === undefined ?\n item :\n {\n type: 'path',\n pathType: modification,\n items: [ item ],\n };\n },\n};\n\n/**\n * [[93]](https://www.w3.org/TR/sparql11-query/#rPathMod)\n */\nexport const pathMod: RuleDef<'pathMod', '*' | '+' | '?'> = <const> {\n name: 'pathMod',\n impl: ({ CONSUME, OR }) => () => OR([\n {\n ALT: () => {\n CONSUME(l.symbols.question);\n return '?';\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.star);\n return '*';\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.opPlus);\n return '+';\n },\n },\n ]),\n};\n\n/**\n * [[94]](https://www.w3.org/TR/sparql11-query/#rPathPrimary)\n */\nexport const pathPrimary: RuleDef<'pathPrimary', PropertyPath | IriTerm> = <const> {\n name: 'pathPrimary',\n impl: ({ SUBRULE, CONSUME, OR }) => () => OR<PropertyPath | IriTerm>([\n { ALT: () => SUBRULE(iri) },\n {\n ALT: () => SUBRULE(verbA),\n },\n {\n ALT: () => {\n CONSUME(l.symbols.exclamation);\n const negatedPath = SUBRULE(pathNegatedPropertySet);\n return {\n type: 'path',\n pathType: '!',\n items: negatedPath,\n };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.LParen);\n const resRecursive = SUBRULE(path);\n CONSUME(l.symbols.RParen);\n return resRecursive;\n },\n },\n ]),\n};\n\n/**\n * [[95]](https://www.w3.org/TR/sparql11-query/#rPathNegatedPropertySet)\n */\nexport const pathNegatedPropertySet: RuleDef<'pathNegatedPropertySet', NegatedPropertySet['items']> = <const> {\n name: 'pathNegatedPropertySet',\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, OR, MANY_SEP }) => () => OR<NegatedPropertySet['items']>([\n {\n ALT: () => [ SUBRULE1(pathOneInPropertySet) ],\n },\n {\n ALT: () => {\n CONSUME(l.symbols.LParen);\n const items: IriTermOrElt[] = [];\n MANY_SEP({\n DEF: () => {\n items.push(SUBRULE2(pathOneInPropertySet));\n },\n SEP: l.symbols.pipe,\n });\n CONSUME(l.symbols.RParen);\n return items.length === 1 ?\n items :\n [{\n type: 'path',\n pathType: '|',\n items,\n }];\n },\n },\n ]),\n};\n\n/**\n * [[96]](https://www.w3.org/TR/sparql11-query/#rPathOneInPropertySet)\n */\nexport const pathOneInPropertySet: RuleDef<'pathOneInPropertySet', IriTermOrElt> = <const> {\n name: 'pathOneInPropertySet',\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => () =>\n OR1<IriTermOrElt>([\n { ALT: () => SUBRULE1(iri) },\n { ALT: () => SUBRULE1(verbA) },\n {\n ALT: () => {\n CONSUME(l.symbols.hat);\n const item = OR2([\n { ALT: () => SUBRULE2(iri) },\n { ALT: () => SUBRULE2(verbA) },\n ]);\n return {\n type: 'path',\n pathType: '^',\n items: [ item ],\n };\n },\n },\n ]),\n};\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Wildcard } from '@traqula/core';
|
|
2
|
+
import type { RuleDef } from '@traqula/core';
|
|
3
|
+
import type { AskQuery, ConstructQuery, DescribeQuery, Query, SelectQuery, Triple, ValuePatternRow, Variable } from '../../Sparql11types';
|
|
4
|
+
/**
|
|
5
|
+
* [[1]](https://www.w3.org/TR/sparql11-query/#rQueryUnit)
|
|
6
|
+
*/
|
|
7
|
+
export declare const queryUnit: RuleDef<'queryUnit', Query>;
|
|
8
|
+
/**
|
|
9
|
+
* [[2]](https://www.w3.org/TR/sparql11-query/#rQuery)
|
|
10
|
+
*/
|
|
11
|
+
export declare const query: RuleDef<'query', Query>;
|
|
12
|
+
export type HandledByBase = 'values' | 'type' | 'base' | 'prefixes';
|
|
13
|
+
/**
|
|
14
|
+
* [[7]](https://www.w3.org/TR/sparql11-query/#rSelectQuery)
|
|
15
|
+
*/
|
|
16
|
+
export declare const selectQuery: RuleDef<'selectQuery', Omit<SelectQuery, HandledByBase>>;
|
|
17
|
+
/**
|
|
18
|
+
* [[8]](https://www.w3.org/TR/sparql11-query/#rSubSelect)
|
|
19
|
+
*/
|
|
20
|
+
export declare const subSelect: RuleDef<'subSelect', Omit<SelectQuery, 'prefixes'>>;
|
|
21
|
+
/**
|
|
22
|
+
* [[9]](https://www.w3.org/TR/sparql11-query/#rSelectClause)
|
|
23
|
+
*/
|
|
24
|
+
export interface ISelectClause {
|
|
25
|
+
variables: Variable[] | [Wildcard];
|
|
26
|
+
distinct?: true;
|
|
27
|
+
reduced?: true;
|
|
28
|
+
}
|
|
29
|
+
export declare const selectClause: RuleDef<'selectClause', ISelectClause>;
|
|
30
|
+
/**
|
|
31
|
+
* [[10]](https://www.w3.org/TR/sparql11-query/#rConstructQuery)
|
|
32
|
+
*/
|
|
33
|
+
export declare const constructQuery: RuleDef<'constructQuery', Omit<ConstructQuery, HandledByBase>>;
|
|
34
|
+
/**
|
|
35
|
+
* [[11]](https://www.w3.org/TR/sparql11-query/#rDescribeQuery)
|
|
36
|
+
*/
|
|
37
|
+
export declare const describeQuery: RuleDef<'describeQuery', Omit<DescribeQuery, HandledByBase>>;
|
|
38
|
+
/**
|
|
39
|
+
* [[12]](https://www.w3.org/TR/sparql11-query/#rAskQuery)
|
|
40
|
+
*/
|
|
41
|
+
export declare const askQuery: RuleDef<'askQuery', Omit<AskQuery, HandledByBase>>;
|
|
42
|
+
/**
|
|
43
|
+
* [[28]](https://www.w3.org/TR/sparql11-query/#rValuesClause)
|
|
44
|
+
*/
|
|
45
|
+
export declare const valuesClause: RuleDef<'valuesClause', ValuePatternRow[] | undefined>;
|
|
46
|
+
/**
|
|
47
|
+
* [[73]](https://www.w3.org/TR/sparql11-query/#ConstructTemplate)
|
|
48
|
+
*/
|
|
49
|
+
export declare const constructTemplate: RuleDef<'constructTemplate', Triple[] | undefined>;
|
|
50
|
+
/**
|
|
51
|
+
* [[12]](https://www.w3.org/TR/sparql11-query/#rConstructTriples)
|
|
52
|
+
*/
|
|
53
|
+
export declare const constructTriples: RuleDef<'constructTriples', Triple[]>;
|