@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.
Files changed (70) hide show
  1. package/LICENSE.txt +22 -0
  2. package/README.md +15 -0
  3. package/lib/Sparql11types.d.ts +246 -0
  4. package/lib/Sparql11types.js +2 -0
  5. package/lib/Sparql11types.js.map +1 -0
  6. package/lib/expressionHelpers.d.ts +55 -0
  7. package/lib/expressionHelpers.js +224 -0
  8. package/lib/expressionHelpers.js.map +1 -0
  9. package/lib/grammar/builtIn.d.ts +91 -0
  10. package/lib/grammar/builtIn.js +239 -0
  11. package/lib/grammar/builtIn.js.map +1 -0
  12. package/lib/grammar/dataSetClause.d.ts +22 -0
  13. package/lib/grammar/dataSetClause.js +37 -0
  14. package/lib/grammar/dataSetClause.js.map +1 -0
  15. package/lib/grammar/expression.d.ts +68 -0
  16. package/lib/grammar/expression.js +397 -0
  17. package/lib/grammar/expression.js.map +1 -0
  18. package/lib/grammar/general.d.ts +42 -0
  19. package/lib/grammar/general.js +161 -0
  20. package/lib/grammar/general.js.map +1 -0
  21. package/lib/grammar/index.d.ts +12 -0
  22. package/lib/grammar/index.js +13 -0
  23. package/lib/grammar/index.js.map +1 -0
  24. package/lib/grammar/literals.d.ts +53 -0
  25. package/lib/grammar/literals.js +179 -0
  26. package/lib/grammar/literals.js.map +1 -0
  27. package/lib/grammar/propertyPaths.d.ts +40 -0
  28. package/lib/grammar/propertyPaths.js +193 -0
  29. package/lib/grammar/propertyPaths.js.map +1 -0
  30. package/lib/grammar/queryUnit/queryUnit.d.ts +53 -0
  31. package/lib/grammar/queryUnit/queryUnit.js +405 -0
  32. package/lib/grammar/queryUnit/queryUnit.js.map +1 -0
  33. package/lib/grammar/solutionModifier.d.ts +44 -0
  34. package/lib/grammar/solutionModifier.js +203 -0
  35. package/lib/grammar/solutionModifier.js.map +1 -0
  36. package/lib/grammar/tripleBlock.d.ts +42 -0
  37. package/lib/grammar/tripleBlock.js +309 -0
  38. package/lib/grammar/tripleBlock.js.map +1 -0
  39. package/lib/grammar/updateUnit/updateUnit.d.ts +101 -0
  40. package/lib/grammar/updateUnit/updateUnit.js +448 -0
  41. package/lib/grammar/updateUnit/updateUnit.js.map +1 -0
  42. package/lib/grammar/whereClause.d.ts +76 -0
  43. package/lib/grammar/whereClause.js +383 -0
  44. package/lib/grammar/whereClause.js.map +1 -0
  45. package/lib/index.cjs +13088 -0
  46. package/lib/index.d.ts +5 -0
  47. package/lib/index.js +6 -0
  48. package/lib/index.js.map +1 -0
  49. package/lib/lexer/BuildinCalls.d.ts +248 -0
  50. package/lib/lexer/BuildinCalls.js +189 -0
  51. package/lib/lexer/BuildinCalls.js.map +1 -0
  52. package/lib/lexer/graph.d.ts +14 -0
  53. package/lib/lexer/graph.js +9 -0
  54. package/lib/lexer/graph.js.map +1 -0
  55. package/lib/lexer/index.d.ts +5 -0
  56. package/lib/lexer/index.js +6 -0
  57. package/lib/lexer/index.js.map +1 -0
  58. package/lib/lexer/lexer.d.ts +147 -0
  59. package/lib/lexer/lexer.js +67 -0
  60. package/lib/lexer/lexer.js.map +1 -0
  61. package/lib/lexer/symbols.d.ts +80 -0
  62. package/lib/lexer/symbols.js +30 -0
  63. package/lib/lexer/symbols.js.map +1 -0
  64. package/lib/lexer/terminals.d.ts +108 -0
  65. package/lib/lexer/terminals.js +76 -0
  66. package/lib/lexer/terminals.js.map +1 -0
  67. package/lib/utils.d.ts +3 -0
  68. package/lib/utils.js +7 -0
  69. package/lib/utils.js.map +1 -0
  70. 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[]>;