@traqula/rules-sparql-1-1 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.
Files changed (37) hide show
  1. package/README.md +28 -1
  2. package/dist/cjs/lib/MinimalSparqlParser.js +21 -0
  3. package/dist/cjs/lib/MinimalSparqlParser.js.map +1 -1
  4. package/dist/cjs/lib/expressionHelpers.js +48 -0
  5. package/dist/cjs/lib/expressionHelpers.js.map +1 -1
  6. package/dist/cjs/lib/grammar/whereClause.js +1 -0
  7. package/dist/cjs/lib/grammar/whereClause.js.map +1 -1
  8. package/dist/cjs/lib/index.js +3 -1
  9. package/dist/cjs/lib/index.js.map +1 -1
  10. package/dist/cjs/lib/utils.js +17 -0
  11. package/dist/cjs/lib/utils.js.map +1 -1
  12. package/dist/cjs/lib/validation/validators.js +3 -0
  13. package/dist/cjs/lib/validation/validators.js.map +1 -1
  14. package/dist/esm/lib/MinimalSparqlParser.d.ts +21 -0
  15. package/dist/esm/lib/MinimalSparqlParser.js +21 -0
  16. package/dist/esm/lib/MinimalSparqlParser.js.map +1 -1
  17. package/dist/esm/lib/expressionHelpers.d.ts +48 -0
  18. package/dist/esm/lib/expressionHelpers.js +48 -0
  19. package/dist/esm/lib/expressionHelpers.js.map +1 -1
  20. package/dist/esm/lib/grammar/propertyPaths.d.ts +2 -2
  21. package/dist/esm/lib/grammar/tripleBlock.d.ts +4 -4
  22. package/dist/esm/lib/grammar/whereClause.js +1 -0
  23. package/dist/esm/lib/grammar/whereClause.js.map +1 -1
  24. package/dist/esm/lib/index.d.ts +1 -0
  25. package/dist/esm/lib/index.js +2 -0
  26. package/dist/esm/lib/index.js.map +1 -1
  27. package/dist/esm/lib/lexer/graph.d.ts +1 -1
  28. package/dist/esm/lib/lexer/lexer.d.ts +2 -2
  29. package/dist/esm/lib/lexer/symbols.d.ts +1 -1
  30. package/dist/esm/lib/lexer/terminals.d.ts +1 -1
  31. package/dist/esm/lib/utils.d.ts +17 -0
  32. package/dist/esm/lib/utils.js +17 -0
  33. package/dist/esm/lib/utils.js.map +1 -1
  34. package/dist/esm/lib/validation/validators.d.ts +13 -1
  35. package/dist/esm/lib/validation/validators.js +3 -3
  36. package/dist/esm/lib/validation/validators.js.map +1 -1
  37. package/package.json +3 -3
package/README.md CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  [![npm version](https://badge.fury.io/js/@traqula%2Frules-sparql-1-1.svg)](https://www.npmjs.com/package/@traqula/rules-sparql-1-1)
4
4
 
5
- Traqula rules SPARQL 1.1 contains rules required for creating a parser for SPARQL 1.1.
5
+ Traqula rules SPARQL 1.1 contains the grammar rules, lexer tokens, AST types, and factory for building [SPARQL 1.1](https://www.w3.org/TR/sparql11-query/#grammar) parsers and generators.
6
+
7
+ This package is the foundation that the [SPARQL 1.2 rules](../rules-sparql-1-2) and [SPARQL 1.1 + ADJUST rules](../rules-sparql-1-1-adjust) extend.
6
8
 
7
9
  ## Installation
8
10
 
@@ -15,3 +17,28 @@ or
15
17
  ```bash
16
18
  yarn add @traqula/rules-sparql-1-1
17
19
  ```
20
+
21
+ ## Exports
22
+
23
+ This package provides the following main exports:
24
+
25
+ | Export | Description |
26
+ |--------|-------------|
27
+ | `gram.*` | Grammar rules for SPARQL 1.1 (query, update, expression, pattern, etc.) |
28
+ | `lex.*` | Lexer tokens and the `sparql11LexerBuilder` |
29
+ | `AstFactory` | Factory for creating SPARQL 1.1 AST nodes |
30
+ | `MinimalSparqlParser` | Base class for parser engines |
31
+ | `completeParseContext` | Helper to fill in default parse context values |
32
+ | `completeGeneratorContext` | Helper to fill in default generator context values |
33
+ | `copyParseContext` | Helper to shallow-copy a parse context |
34
+ | `sparqlCodepointEscape` | SPARQL codepoint escape preprocessor |
35
+ | `AstTransformer` | Type-safe AST visitor/transformer |
36
+ | `CommonIRIs` | Enum of commonly used IRI constants (XSD, RDF) |
37
+ | `Sparql11types` | TypeScript types for all SPARQL 1.1 AST nodes |
38
+
39
+ ## Usage
40
+
41
+ This package is primarily used by engine packages and by dependent projects that extend Traqula's grammar.
42
+ For end-user parsing and generation, use the engine packages ([`@traqula/parser-sparql-1-1`](../../engines/parser-sparql-1-1), [`@traqula/generator-sparql-1-1`](../../engines/generator-sparql-1-1)) instead.
43
+
44
+ For guidance on extending grammar rules, see the [guidelines for dependent projects](../../docs/guidelines.md) and the [create a parser](../../docs/modifications/create-parser.md) documentation.
@@ -6,6 +6,11 @@ exports.completeGeneratorContext = completeGeneratorContext;
6
6
  exports.copyParseContext = copyParseContext;
7
7
  const core_1 = require("@traqula/core");
8
8
  const astFactory_js_1 = require("./astFactory.js");
9
+ /**
10
+ * Create a complete {@link SparqlContext} by filling in default values for any missing fields.
11
+ * @param context - Partial context to complete.
12
+ * @returns A fully populated SparqlContext.
13
+ */
9
14
  function completeParseContext(context) {
10
15
  return {
11
16
  astFactory: context.astFactory ?? new astFactory_js_1.AstFactory({ tracksSourceLocation: false }),
@@ -15,6 +20,11 @@ function completeParseContext(context) {
15
20
  skipValidation: context.skipValidation ?? false,
16
21
  };
17
22
  }
23
+ /**
24
+ * Create a complete {@link SparqlGeneratorContext} by filling in default values for any missing fields.
25
+ * @param context - Partial generator context to complete.
26
+ * @returns A fully populated SparqlGeneratorContext.
27
+ */
18
28
  function completeGeneratorContext(context) {
19
29
  return {
20
30
  astFactory: context.astFactory ?? new astFactory_js_1.AstFactory(),
@@ -25,6 +35,12 @@ function completeGeneratorContext(context) {
25
35
  indentInc: context.indentInc ?? 2,
26
36
  };
27
37
  }
38
+ /**
39
+ * Create a shallow copy of a parse/generator context so that mutations
40
+ * (e.g. adding prefixes during parsing) do not affect the original.
41
+ * @param context - The context to copy.
42
+ * @returns A new context with cloned `prefixes` and `parseMode`.
43
+ */
28
44
  function copyParseContext(context) {
29
45
  return {
30
46
  ...context,
@@ -32,6 +48,11 @@ function copyParseContext(context) {
32
48
  parseMode: new Set(context.parseMode),
33
49
  };
34
50
  }
51
+ /**
52
+ * Base class for SPARQL parsers that provides {@link parse} and {@link parsePath} methods.
53
+ * Engines typically extend this class to create pre-configured parser instances.
54
+ * @typeParam ParseRet - The AST return type (e.g. `SparqlQuery`).
55
+ */
35
56
  class MinimalSparqlParser {
36
57
  parser;
37
58
  defaultContext;
@@ -1 +1 @@
1
- {"version":3,"file":"MinimalSparqlParser.js","sourceRoot":"","sources":["../../../lib/MinimalSparqlParser.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Localized } from '@traqula/core';\nimport { traqulaNewlineAlternative, TransformerObject, traqulaIndentation } from '@traqula/core';\nimport { AstFactory } from './astFactory.js';\nimport type { SparqlContext, SparqlGeneratorContext } from './sparql11HelperTypes.js';\nimport type { Path, TermIri } from './Sparql11types.js';\n\ninterface Parser<ParseRet> {\n queryOrUpdate: (input: string, context: SparqlContext) => ParseRet;\n path: (input: string, context: SparqlContext) => TermIri | Path;\n}\n\nexport function completeParseContext(\n context: Partial<SparqlContext>,\n): SparqlContext {\n return {\n astFactory: context.astFactory ?? new AstFactory({ tracksSourceLocation: false }),\n baseIRI: context.baseIRI,\n prefixes: { ...context.prefixes },\n parseMode: context.parseMode ? new Set(context.parseMode) : new Set([ 'canParseVars', 'canCreateBlankNodes' ]),\n skipValidation: context.skipValidation ?? false,\n };\n}\n\nexport function completeGeneratorContext(\n context: Partial<SparqlGeneratorContext & { offset?: number }>,\n): SparqlGeneratorContext & { offset?: number } {\n return {\n astFactory: context.astFactory ?? new AstFactory(),\n origSource: context.origSource ?? '',\n offset: context.offset,\n [traqulaIndentation]: context[traqulaIndentation] ?? 0,\n [traqulaNewlineAlternative]: context[traqulaNewlineAlternative] ?? ' ',\n indentInc: context.indentInc ?? 2,\n };\n}\n\nexport function copyParseContext<T extends\nPartial<SparqlContext & SparqlGeneratorContext & { origSource: string; offset?: number }>>(\n context: T,\n): T {\n return {\n ...context,\n prefixes: { ...context.prefixes },\n parseMode: new Set(context.parseMode),\n };\n}\n\nexport class MinimalSparqlParser<ParseRet extends Localized> {\n protected readonly defaultContext: SparqlContext;\n protected readonly coreTransformer = new TransformerObject();\n\n public constructor(protected readonly parser: Parser<ParseRet>, defaultContext: Partial<SparqlContext> = {}) {\n this.defaultContext = completeParseContext(defaultContext);\n }\n\n /**\n * Parse a query string starting from the\n * [QueryUnit](https://www.w3.org/TR/sparql11-query/#rQueryUnit)\n * or [QueryUpdate](https://www.w3.org/TR/sparql11-query/#rUpdateUnit) rules.\n * @param query\n * @param context\n */\n public parse(query: string, context: Partial<SparqlContext> = {}): ParseRet {\n const ast = this.parser.queryOrUpdate(query, copyParseContext({ ...this.defaultContext, ...context }));\n ast.loc = this.defaultContext.astFactory.sourceLocationInlinedSource(query, ast.loc, 0, Number.MAX_SAFE_INTEGER);\n return ast;\n }\n\n /**\n * Parse a query string starting from the [Path](https://www.w3.org/TR/sparql11-query/#rPath) grammar rule.\n * @param query\n * @param context\n */\n public parsePath(query: string, context: Partial<SparqlContext> = {}):\n (Path & { prefixes: object }) | TermIri {\n const ast = this.parser.path(query, copyParseContext({ ...this.defaultContext, ...context }));\n ast.loc = this.defaultContext.astFactory.sourceLocationInlinedSource(query, ast.loc, 0, Number.MAX_SAFE_INTEGER);\n if (this.defaultContext.astFactory.isPathPure(ast)) {\n return {\n ...ast,\n prefixes: {},\n };\n }\n return ast;\n }\n}\n"]}
1
+ {"version":3,"file":"MinimalSparqlParser.js","sourceRoot":"","sources":["../../../lib/MinimalSparqlParser.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Localized } from '@traqula/core';\nimport { traqulaNewlineAlternative, TransformerObject, traqulaIndentation } from '@traqula/core';\nimport { AstFactory } from './astFactory.js';\nimport type { SparqlContext, SparqlGeneratorContext } from './sparql11HelperTypes.js';\nimport type { Path, TermIri } from './Sparql11types.js';\n\ninterface Parser<ParseRet> {\n queryOrUpdate: (input: string, context: SparqlContext) => ParseRet;\n path: (input: string, context: SparqlContext) => TermIri | Path;\n}\n\n/**\n * Create a complete {@link SparqlContext} by filling in default values for any missing fields.\n * @param context - Partial context to complete.\n * @returns A fully populated SparqlContext.\n */\nexport function completeParseContext(\n context: Partial<SparqlContext>,\n): SparqlContext {\n return {\n astFactory: context.astFactory ?? new AstFactory({ tracksSourceLocation: false }),\n baseIRI: context.baseIRI,\n prefixes: { ...context.prefixes },\n parseMode: context.parseMode ? new Set(context.parseMode) : new Set([ 'canParseVars', 'canCreateBlankNodes' ]),\n skipValidation: context.skipValidation ?? false,\n };\n}\n\n/**\n * Create a complete {@link SparqlGeneratorContext} by filling in default values for any missing fields.\n * @param context - Partial generator context to complete.\n * @returns A fully populated SparqlGeneratorContext.\n */\nexport function completeGeneratorContext(\n context: Partial<SparqlGeneratorContext & { offset?: number }>,\n): SparqlGeneratorContext & { offset?: number } {\n return {\n astFactory: context.astFactory ?? new AstFactory(),\n origSource: context.origSource ?? '',\n offset: context.offset,\n [traqulaIndentation]: context[traqulaIndentation] ?? 0,\n [traqulaNewlineAlternative]: context[traqulaNewlineAlternative] ?? ' ',\n indentInc: context.indentInc ?? 2,\n };\n}\n\n/**\n * Create a shallow copy of a parse/generator context so that mutations\n * (e.g. adding prefixes during parsing) do not affect the original.\n * @param context - The context to copy.\n * @returns A new context with cloned `prefixes` and `parseMode`.\n */\nexport function copyParseContext<T extends\nPartial<SparqlContext & SparqlGeneratorContext & { origSource: string; offset?: number }>>(\n context: T,\n): T {\n return {\n ...context,\n prefixes: { ...context.prefixes },\n parseMode: new Set(context.parseMode),\n };\n}\n\n/**\n * Base class for SPARQL parsers that provides {@link parse} and {@link parsePath} methods.\n * Engines typically extend this class to create pre-configured parser instances.\n * @typeParam ParseRet - The AST return type (e.g. `SparqlQuery`).\n */\nexport class MinimalSparqlParser<ParseRet extends Localized> {\n protected readonly defaultContext: SparqlContext;\n protected readonly coreTransformer = new TransformerObject();\n\n public constructor(protected readonly parser: Parser<ParseRet>, defaultContext: Partial<SparqlContext> = {}) {\n this.defaultContext = completeParseContext(defaultContext);\n }\n\n /**\n * Parse a query string starting from the\n * [QueryUnit](https://www.w3.org/TR/sparql11-query/#rQueryUnit)\n * or [QueryUpdate](https://www.w3.org/TR/sparql11-query/#rUpdateUnit) rules.\n * @param query\n * @param context\n */\n public parse(query: string, context: Partial<SparqlContext> = {}): ParseRet {\n const ast = this.parser.queryOrUpdate(query, copyParseContext({ ...this.defaultContext, ...context }));\n ast.loc = this.defaultContext.astFactory.sourceLocationInlinedSource(query, ast.loc, 0, Number.MAX_SAFE_INTEGER);\n return ast;\n }\n\n /**\n * Parse a query string starting from the [Path](https://www.w3.org/TR/sparql11-query/#rPath) grammar rule.\n * @param query\n * @param context\n */\n public parsePath(query: string, context: Partial<SparqlContext> = {}):\n (Path & { prefixes: object }) | TermIri {\n const ast = this.parser.path(query, copyParseContext({ ...this.defaultContext, ...context }));\n ast.loc = this.defaultContext.astFactory.sourceLocationInlinedSource(query, ast.loc, 0, Number.MAX_SAFE_INTEGER);\n if (this.defaultContext.astFactory.isPathPure(ast)) {\n return {\n ...ast,\n prefixes: {},\n };\n }\n return ast;\n }\n}\n"]}
@@ -47,6 +47,11 @@ exports.baseAggregateFunc = baseAggregateFunc;
47
47
  const core_1 = require("@traqula/core");
48
48
  const index_js_1 = require("./grammar/index.js");
49
49
  const l = __importStar(require("./lexer/index.js"));
50
+ /**
51
+ * Create a grammar rule for a SPARQL built-in function that takes exactly one expression argument.
52
+ * The rule name is derived from the token name (uncapitalized).
53
+ * @param func - The lexer token for the built-in function keyword.
54
+ */
50
55
  function funcExpr1(func) {
51
56
  return {
52
57
  name: (0, core_1.unCapitalize)(func.name),
@@ -59,6 +64,10 @@ function funcExpr1(func) {
59
64
  },
60
65
  };
61
66
  }
67
+ /**
68
+ * Create a grammar rule for a SPARQL built-in function that takes exactly two expression arguments.
69
+ * @param func - The lexer token for the built-in function keyword.
70
+ */
62
71
  function funcExpr2(func) {
63
72
  return {
64
73
  name: (0, core_1.unCapitalize)(func.name),
@@ -73,6 +82,10 @@ function funcExpr2(func) {
73
82
  },
74
83
  };
75
84
  }
85
+ /**
86
+ * Create a grammar rule for a SPARQL built-in function that takes exactly three expression arguments.
87
+ * @param func - The lexer token for the built-in function keyword.
88
+ */
76
89
  function funcExpr3(func) {
77
90
  return {
78
91
  name: (0, core_1.unCapitalize)(func.name),
@@ -89,6 +102,10 @@ function funcExpr3(func) {
89
102
  },
90
103
  };
91
104
  }
105
+ /**
106
+ * Create a grammar rule for a SPARQL built-in function that takes exactly one variable argument.
107
+ * @param func - The lexer token for the built-in function keyword.
108
+ */
92
109
  function funcVar1(func) {
93
110
  return {
94
111
  name: (0, core_1.unCapitalize)(func.name),
@@ -101,6 +118,11 @@ function funcVar1(func) {
101
118
  },
102
119
  };
103
120
  }
121
+ /**
122
+ * Create a grammar rule for a SPARQL built-in function that takes zero or one expression argument.
123
+ * Supports both `FUNC(expr)` and `FUNC NIL` syntax.
124
+ * @param func - The lexer token for the built-in function keyword.
125
+ */
104
126
  function funcExprOrNil1(func) {
105
127
  return {
106
128
  name: (0, core_1.unCapitalize)(func.name),
@@ -121,6 +143,10 @@ function funcExprOrNil1(func) {
121
143
  },
122
144
  };
123
145
  }
146
+ /**
147
+ * Create a grammar rule for a SPARQL built-in function that takes no arguments (NIL syntax only).
148
+ * @param func - The lexer token for the built-in function keyword.
149
+ */
124
150
  function funcNil1(func) {
125
151
  return {
126
152
  name: (0, core_1.unCapitalize)(func.name),
@@ -131,6 +157,10 @@ function funcNil1(func) {
131
157
  },
132
158
  };
133
159
  }
160
+ /**
161
+ * Create a grammar rule for a SPARQL built-in function that takes an expression list argument.
162
+ * @param func - The lexer token for the built-in function keyword.
163
+ */
134
164
  function funcExprList1(func) {
135
165
  return {
136
166
  name: (0, core_1.unCapitalize)(func.name),
@@ -141,6 +171,10 @@ function funcExprList1(func) {
141
171
  },
142
172
  };
143
173
  }
174
+ /**
175
+ * Create a grammar rule for a SPARQL built-in function that takes two or three expression arguments.
176
+ * @param func - The lexer token for the built-in function keyword.
177
+ */
144
178
  function funcExpr2or3(func) {
145
179
  return {
146
180
  name: (0, core_1.unCapitalize)(func.name),
@@ -159,6 +193,10 @@ function funcExpr2or3(func) {
159
193
  },
160
194
  };
161
195
  }
196
+ /**
197
+ * Create a grammar rule for a SPARQL built-in function that takes three or four expression arguments.
198
+ * @param func - The lexer token for the built-in function keyword.
199
+ */
162
200
  function funcExpr3or4(func) {
163
201
  return {
164
202
  name: (0, core_1.unCapitalize)(func.name),
@@ -179,6 +217,11 @@ function funcExpr3or4(func) {
179
217
  },
180
218
  };
181
219
  }
220
+ /**
221
+ * Create a grammar rule for a SPARQL built-in function that takes a GroupGraphPattern argument
222
+ * (e.g. EXISTS, NOT EXISTS).
223
+ * @param func - The lexer token for the built-in function keyword.
224
+ */
182
225
  function funcGroupGraphPattern(func) {
183
226
  return {
184
227
  name: (0, core_1.unCapitalize)(func.name),
@@ -189,6 +232,11 @@ function funcGroupGraphPattern(func) {
189
232
  },
190
233
  };
191
234
  }
235
+ /**
236
+ * Create a grammar rule for a SPARQL aggregate function (e.g. SUM, AVG, MIN, MAX)
237
+ * that takes a single expression with an optional DISTINCT modifier.
238
+ * @param func - The lexer token for the aggregate function keyword.
239
+ */
192
240
  function baseAggregateFunc(func) {
193
241
  return {
194
242
  name: (0, core_1.unCapitalize)(func.name),
@@ -1 +1 @@
1
- {"version":3,"file":"expressionHelpers.js","sourceRoot":"","sources":["../../../lib/expressionHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TokenType } from '@traqula/chevrotain';\nimport { unCapitalize } from '@traqula/core';\nimport { var_, expression, expressionList, groupGraphPattern } from './grammar/index.js';\nimport * as l from './lexer/index.js';\nimport type { SparqlGrammarRule } from './sparql11HelperTypes.js';\nimport type {\n Expression,\n ExpressionAggregateDefault,\n ExpressionOperation,\n ExpressionPatternOperation,\n TermVariable,\n} from './Sparql11types.js';\n\nexport type ExpressionFunctionX<U extends Expression[]> = ExpressionOperation & {\n args: U;\n};\n\nexport type RuleDefExpressionFunctionX<T extends string, U extends Expression[]>\n = SparqlGrammarRule<T, ExpressionFunctionX<U>>;\n\nexport function funcExpr1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(expression);\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [ arg ], C.astFactory.sourceLocation(operator, close)));\n },\n };\n}\n\nexport function funcExpr2<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression);\n CONSUME(l.symbols.comma);\n const arg2 = SUBRULE2(expression);\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [ arg1, arg2 ], C.astFactory.sourceLocation(operator, close)));\n },\n };\n}\n\nexport function funcExpr3<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, CONSUME1, CONSUME2, SUBRULE1, SUBRULE2, SUBRULE3 }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression);\n CONSUME2(l.symbols.comma);\n const arg3 = SUBRULE3(expression);\n const close = CONSUME(l.symbols.RParen);\n\n return ACTION(() =>\n C.astFactory.expressionOperation(\n operator.image,\n [ arg1, arg2, arg3 ],\n C.astFactory.sourceLocation(operator, close),\n ));\n },\n };\n}\n\nexport function funcVar1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [TermVariable]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(var_);\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [ arg ], C.astFactory.sourceLocation(operator, close)));\n },\n };\n}\n\nexport function funcExprOrNil1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [] | [Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {\n const operator = CONSUME(func);\n return OR<ExpressionFunctionX<[] | [Expression]>>([\n { ALT: () => {\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(expression);\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [ arg ], C.astFactory.sourceLocation(operator, close)));\n } },\n { ALT: () => {\n const nil = CONSUME(l.terminals.nil);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil)));\n } },\n ]);\n },\n };\n}\n\nexport function funcNil1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, []> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME }) => (C) => {\n const operator = CONSUME(func);\n const nil = CONSUME(l.terminals.nil);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil)));\n },\n };\n}\n\nexport function funcExprList1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, Expression[]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const operator = CONSUME(func);\n const args = SUBRULE(expressionList);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, args.val, C.astFactory.sourceLocation(operator, args)));\n },\n };\n}\n\nexport function funcExpr2or3<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression] | [Expression, Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) =>\n (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression);\n const arg3 = OPTION(() => {\n CONSUME2(l.symbols.comma);\n return SUBRULE3(expression);\n });\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() => C.astFactory.expressionOperation(\n operator.image,\n arg3 ? <const> [ arg1, arg2, arg3 ] : <const> [ arg1, arg2 ],\n C.astFactory.sourceLocation(operator, close),\n ));\n },\n };\n}\n\nexport function funcExpr3or4<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<\n Uncapitalize<T>,\n [Expression, Expression, Expression] | [Expression, Expression, Expression, Expression]\n> {\n return {\n name: unCapitalize(func.name),\n impl: ({\n ACTION,\n CONSUME,\n SUBRULE1,\n SUBRULE2,\n SUBRULE3,\n SUBRULE4,\n CONSUME1,\n OPTION,\n CONSUME2,\n CONSUME3,\n }) =>\n (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression);\n CONSUME2(l.symbols.comma);\n const arg3 = SUBRULE3(expression);\n const arg4 = OPTION(() => {\n CONSUME3(l.symbols.comma);\n return SUBRULE4(expression);\n });\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() => C.astFactory.expressionOperation(\n operator.image,\n arg4 ? <const> [ arg1, arg2, arg3, arg4 ] : <const> [ arg1, arg2, arg3 ],\n C.astFactory.sourceLocation(operator, close),\n ));\n },\n };\n}\n\nexport function funcGroupGraphPattern<T extends string>(func: TokenType & { name: T }):\nSparqlGrammarRule<Uncapitalize<T>, ExpressionPatternOperation> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const operator = CONSUME(func);\n const group = SUBRULE(groupGraphPattern);\n return ACTION(() => C.astFactory.expressionPatternOperation(\n operator.image,\n group,\n C.astFactory.sourceLocation(operator, group),\n ));\n },\n };\n}\n\nexport type RuleDefExpressionAggregatorX<T extends string> = SparqlGrammarRule<T, ExpressionAggregateDefault>;\n\nexport function baseAggregateFunc<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionAggregatorX<Uncapitalize<T>> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const distinct = OPTION(() => CONSUME(l.distinct));\n const expr1 = SUBRULE(expression);\n const close = CONSUME(l.symbols.RParen);\n\n return ACTION(() => C.astFactory.aggregate(\n operator.image,\n distinct !== undefined,\n expr1,\n undefined,\n C.astFactory.sourceLocation(operator, close),\n ));\n },\n };\n}\n"]}
1
+ {"version":3,"file":"expressionHelpers.js","sourceRoot":"","sources":["../../../lib/expressionHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TokenType } from '@traqula/chevrotain';\nimport { unCapitalize } from '@traqula/core';\nimport { var_, expression, expressionList, groupGraphPattern } from './grammar/index.js';\nimport * as l from './lexer/index.js';\nimport type { SparqlGrammarRule } from './sparql11HelperTypes.js';\nimport type {\n Expression,\n ExpressionAggregateDefault,\n ExpressionOperation,\n ExpressionPatternOperation,\n TermVariable,\n} from './Sparql11types.js';\n\nexport type ExpressionFunctionX<U extends Expression[]> = ExpressionOperation & {\n args: U;\n};\n\nexport type RuleDefExpressionFunctionX<T extends string, U extends Expression[]>\n = SparqlGrammarRule<T, ExpressionFunctionX<U>>;\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes exactly one expression argument.\n * The rule name is derived from the token name (uncapitalized).\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcExpr1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(expression);\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [ arg ], C.astFactory.sourceLocation(operator, close)));\n },\n };\n}\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes exactly two expression arguments.\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcExpr2<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2 }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression);\n CONSUME(l.symbols.comma);\n const arg2 = SUBRULE2(expression);\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [ arg1, arg2 ], C.astFactory.sourceLocation(operator, close)));\n },\n };\n}\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes exactly three expression arguments.\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcExpr3<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, CONSUME1, CONSUME2, SUBRULE1, SUBRULE2, SUBRULE3 }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression);\n CONSUME2(l.symbols.comma);\n const arg3 = SUBRULE3(expression);\n const close = CONSUME(l.symbols.RParen);\n\n return ACTION(() =>\n C.astFactory.expressionOperation(\n operator.image,\n [ arg1, arg2, arg3 ],\n C.astFactory.sourceLocation(operator, close),\n ));\n },\n };\n}\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes exactly one variable argument.\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcVar1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [TermVariable]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(var_);\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [ arg ], C.astFactory.sourceLocation(operator, close)));\n },\n };\n}\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes zero or one expression argument.\n * Supports both `FUNC(expr)` and `FUNC NIL` syntax.\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcExprOrNil1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [] | [Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, OR, SUBRULE }) => (C) => {\n const operator = CONSUME(func);\n return OR<ExpressionFunctionX<[] | [Expression]>>([\n { ALT: () => {\n CONSUME(l.symbols.LParen);\n const arg = SUBRULE(expression);\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [ arg ], C.astFactory.sourceLocation(operator, close)));\n } },\n { ALT: () => {\n const nil = CONSUME(l.terminals.nil);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil)));\n } },\n ]);\n },\n };\n}\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes no arguments (NIL syntax only).\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcNil1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, []> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME }) => (C) => {\n const operator = CONSUME(func);\n const nil = CONSUME(l.terminals.nil);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, [], C.astFactory.sourceLocation(operator, nil)));\n },\n };\n}\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes an expression list argument.\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcExprList1<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, Expression[]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const operator = CONSUME(func);\n const args = SUBRULE(expressionList);\n return ACTION(() =>\n C.astFactory.expressionOperation(operator.image, args.val, C.astFactory.sourceLocation(operator, args)));\n },\n };\n}\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes two or three expression arguments.\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcExpr2or3<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<Uncapitalize<T>, [Expression, Expression] | [Expression, Expression, Expression]> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, CONSUME1, OPTION, CONSUME2 }) =>\n (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression);\n const arg3 = OPTION(() => {\n CONSUME2(l.symbols.comma);\n return SUBRULE3(expression);\n });\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() => C.astFactory.expressionOperation(\n operator.image,\n arg3 ? <const> [ arg1, arg2, arg3 ] : <const> [ arg1, arg2 ],\n C.astFactory.sourceLocation(operator, close),\n ));\n },\n };\n}\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes three or four expression arguments.\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcExpr3or4<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionFunctionX<\n Uncapitalize<T>,\n [Expression, Expression, Expression] | [Expression, Expression, Expression, Expression]\n> {\n return {\n name: unCapitalize(func.name),\n impl: ({\n ACTION,\n CONSUME,\n SUBRULE1,\n SUBRULE2,\n SUBRULE3,\n SUBRULE4,\n CONSUME1,\n OPTION,\n CONSUME2,\n CONSUME3,\n }) =>\n (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const arg1 = SUBRULE1(expression);\n CONSUME1(l.symbols.comma);\n const arg2 = SUBRULE2(expression);\n CONSUME2(l.symbols.comma);\n const arg3 = SUBRULE3(expression);\n const arg4 = OPTION(() => {\n CONSUME3(l.symbols.comma);\n return SUBRULE4(expression);\n });\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() => C.astFactory.expressionOperation(\n operator.image,\n arg4 ? <const> [ arg1, arg2, arg3, arg4 ] : <const> [ arg1, arg2, arg3 ],\n C.astFactory.sourceLocation(operator, close),\n ));\n },\n };\n}\n\n/**\n * Create a grammar rule for a SPARQL built-in function that takes a GroupGraphPattern argument\n * (e.g. EXISTS, NOT EXISTS).\n * @param func - The lexer token for the built-in function keyword.\n */\nexport function funcGroupGraphPattern<T extends string>(func: TokenType & { name: T }):\nSparqlGrammarRule<Uncapitalize<T>, ExpressionPatternOperation> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const operator = CONSUME(func);\n const group = SUBRULE(groupGraphPattern);\n return ACTION(() => C.astFactory.expressionPatternOperation(\n operator.image,\n group,\n C.astFactory.sourceLocation(operator, group),\n ));\n },\n };\n}\n\nexport type RuleDefExpressionAggregatorX<T extends string> = SparqlGrammarRule<T, ExpressionAggregateDefault>;\n\n/**\n * Create a grammar rule for a SPARQL aggregate function (e.g. SUM, AVG, MIN, MAX)\n * that takes a single expression with an optional DISTINCT modifier.\n * @param func - The lexer token for the aggregate function keyword.\n */\nexport function baseAggregateFunc<T extends string>(func: TokenType & { name: T }):\nRuleDefExpressionAggregatorX<Uncapitalize<T>> {\n return {\n name: unCapitalize(func.name),\n impl: ({ ACTION, CONSUME, SUBRULE, OPTION }) => (C) => {\n const operator = CONSUME(func);\n CONSUME(l.symbols.LParen);\n const distinct = OPTION(() => CONSUME(l.distinct));\n const expr1 = SUBRULE(expression);\n const close = CONSUME(l.symbols.RParen);\n\n return ACTION(() => C.astFactory.aggregate(\n operator.image,\n distinct !== undefined,\n expr1,\n undefined,\n C.astFactory.sourceLocation(operator, close),\n ));\n },\n };\n}\n"]}
@@ -305,6 +305,7 @@ exports.inlineData = {
305
305
  }
306
306
  else {
307
307
  SUBRULE(tripleBlock_js_1.graphNodePath, mapping[var_]);
308
+ F.printFilter(ast, () => PRINT_WORD(''));
308
309
  }
309
310
  }
310
311
  F.printFilter(ast, () => {
@@ -1 +1 @@
1
- {"version":3,"file":"whereClause.js","sourceRoot":"","sources":["../../../../lib/grammar/whereClause.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RuleDefReturn, Wrap } from '@traqula/core';\nimport { traqulaIndentation } from '@traqula/core';\nimport * as l from '../lexer/index.js';\nimport type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes.js';\nimport type {\n Expression,\n ExpressionFunctionCall,\n Pattern,\n PatternBgp,\n PatternBind,\n PatternFilter,\n PatternGraph,\n PatternGroup,\n PatternMinus,\n PatternOptional,\n PatternService,\n PatternUnion,\n PatternValues,\n SubSelect,\n TermIri,\n TermLiteral,\n TermVariable,\n ValuePatternRow,\n} from '../Sparql11types.js';\nimport { checkNote13 } from '../validation/validators.js';\nimport { builtInCall } from './builtIn.js';\nimport { argList, brackettedExpression, expression } from './expression.js';\nimport { var_, varOrIri, varOrTerm } from './general.js';\nimport { booleanLiteral, iri, numericLiteral, rdfLiteral } from './literals.js';\nimport { query, subSelect } from './queryUnit.js';\nimport { graphNodePath, triplesBlock } from './tripleBlock.js';\n\n/**\n * [[17]](https://www.w3.org/TR/sparql11-query/#rWhereClause)\n */\nexport const whereClause: SparqlRule<'whereClause', Wrap<PatternGroup>> = <const> {\n name: 'whereClause',\n impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {\n const where = OPTION(() => CONSUME(l.where));\n const group = SUBRULE(groupGraphPattern);\n return ACTION(() => C.astFactory.wrap(group, C.astFactory.sourceLocation(where, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('WHERE'));\n SUBRULE(groupGraphPattern, ast.val);\n },\n};\n\n/**\n * [[53]](https://www.w3.org/TR/sparql11-query/#rGroupGraphPattern)\n */\nexport const groupGraphPattern: SparqlRule<'groupGraphPattern', PatternGroup> = <const> {\n name: 'groupGraphPattern',\n impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {\n const open = CONSUME(l.symbols.LCurly);\n const patterns = OR<Pattern[]>([\n { ALT: () => [ SUBRULE(subSelect) ]},\n { ALT: () => SUBRULE(groupGraphPatternSub) },\n ]);\n const close = CONSUME(l.symbols.RCurly);\n\n return ACTION(() => C.astFactory.patternGroup(patterns, C.astFactory.sourceLocation(open, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {\n const { astFactory: F, indentInc } = C;\n F.printFilter(ast, () => {\n C[traqulaIndentation] += indentInc;\n PRINT_WORD('{');\n NEW_LINE();\n });\n\n for (const pattern of ast.patterns) {\n SUBRULE(generatePattern, pattern);\n }\n\n F.printFilter(ast, () => {\n C[traqulaIndentation] -= indentInc;\n PRINT_ON_OWN_LINE('}');\n });\n },\n};\n\nexport const generatePattern: SparqlGeneratorRule<'generatePattern', Pattern> = {\n name: 'generatePattern',\n gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {\n if (ast.type === 'query') {\n SUBRULE(query, F.querySelect({\n context: [],\n datasets: F.datasetClauses([], F.sourceLocation()),\n where: ast.where,\n variables: ast.variables,\n solutionModifiers: ast.solutionModifiers,\n values: ast.values,\n distinct: ast.distinct,\n reduced: ast.reduced,\n }, ast.loc));\n } else if (ast.subType === 'group') {\n SUBRULE(groupGraphPattern, ast);\n } else if (ast.subType === 'bgp') {\n SUBRULE(triplesBlock, ast);\n } else {\n SUBRULE(graphPatternNotTriples, ast);\n }\n },\n};\n\n/**\n * [[54]](https://www.w3.org/TR/sparql11-query/#rGroupGraphPatternSub)\n */\nexport const groupGraphPatternSub:\nSparqlGrammarRule<'groupGraphPatternSub', Pattern[]> = <const> {\n name: 'groupGraphPatternSub',\n impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => (C) => {\n const patterns: Pattern[] = [];\n\n const bgpPattern = OPTION1(() => SUBRULE1(triplesBlock));\n if (bgpPattern) {\n patterns.push(bgpPattern);\n }\n MANY(() => {\n const notTriples = SUBRULE(graphPatternNotTriples);\n patterns.push(notTriples);\n\n OPTION2(() => CONSUME(l.symbols.dot));\n\n const moreTriples = OPTION3(() => SUBRULE2(triplesBlock));\n if (moreTriples) {\n patterns.push(moreTriples);\n }\n });\n\n ACTION(() => !C.skipValidation && checkNote13(patterns));\n\n return patterns;\n },\n};\n\n/**\n * [[56]](https://www.w3.org/TR/sparql11-query/#rGraphPatternNotTriples)\n */\nexport const graphPatternNotTriples: SparqlRule<'graphPatternNotTriples', Exclude<Pattern, SubSelect | PatternBgp>> = {\n name: 'graphPatternNotTriples',\n impl: ({ SUBRULE, OR }) => () => OR<RuleDefReturn<typeof graphPatternNotTriples>>([\n { ALT: () => SUBRULE(groupOrUnionGraphPattern) },\n { ALT: () => SUBRULE(optionalGraphPattern) },\n { ALT: () => SUBRULE(minusGraphPattern) },\n { ALT: () => SUBRULE(graphGraphPattern) },\n { ALT: () => SUBRULE(serviceGraphPattern) },\n { ALT: () => SUBRULE(filter) },\n { ALT: () => SUBRULE(bind) },\n { ALT: () => SUBRULE(inlineData) },\n ]),\n gImpl: ({ SUBRULE }) => (ast) => {\n switch (ast.subType) {\n case 'group':\n case 'union':\n SUBRULE(groupOrUnionGraphPattern, ast);\n break;\n case 'optional':\n SUBRULE(optionalGraphPattern, ast);\n break;\n case 'minus':\n SUBRULE(minusGraphPattern, ast);\n break;\n case 'graph':\n SUBRULE(graphGraphPattern, ast);\n break;\n case 'service':\n SUBRULE(serviceGraphPattern, ast);\n break;\n case 'filter':\n SUBRULE(filter, ast);\n break;\n case 'bind':\n SUBRULE(bind, ast);\n break;\n case 'values':\n SUBRULE(inlineData, ast);\n break;\n }\n },\n};\n\n/**\n * [[57]](https://www.w3.org/TR/sparql11-query/#rOptionalGraphPattern)\n */\nexport const optionalGraphPattern: SparqlRule<'optionalGraphPattern', PatternOptional> = <const> {\n name: 'optionalGraphPattern',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const optional = CONSUME(l.optional);\n const group = SUBRULE(groupGraphPattern);\n\n return ACTION(() => C.astFactory.patternOptional(group.patterns, C.astFactory.sourceLocation(optional, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('OPTIONAL'));\n SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));\n },\n};\n\n/**\n * [[58]](https://www.w3.org/TR/sparql11-query/#rGraphGraphPattern)\n */\nexport const graphGraphPattern: SparqlRule<'graphGraphPattern', PatternGraph> = <const> {\n name: 'graphGraphPattern',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const graph = CONSUME(l.graph.graph);\n const name = SUBRULE(varOrIri);\n const group = SUBRULE(groupGraphPattern);\n\n return ACTION(() => C.astFactory.patternGraph(name, group.patterns, C.astFactory.sourceLocation(graph, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('GRAPH'));\n SUBRULE(varOrTerm, ast.name);\n SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));\n },\n};\n\n/**\n * [[59]](https://www.w3.org/TR/sparql11-query/#rServiceGraphPattern)\n */\nexport const serviceGraphPattern: SparqlRule<'serviceGraphPattern', PatternService> = <const> {\n name: 'serviceGraphPattern',\n impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {\n const service = CONSUME(l.service);\n const silent = OPTION(() => {\n CONSUME(l.silent);\n return true;\n }) ?? false;\n const name = SUBRULE1(varOrIri);\n const group = SUBRULE1(groupGraphPattern);\n\n return ACTION(() =>\n C.astFactory.patternService(name, group.patterns, silent, C.astFactory.sourceLocation(service, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORD('SERVICE');\n if (ast.silent) {\n PRINT_WORD('SILENT');\n }\n });\n SUBRULE(varOrTerm, ast.name);\n SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));\n },\n};\n\n/**\n * [[60]](https://www.w3.org/TR/sparql11-query/#rBind)\n */\nexport const bind: SparqlRule<'bind', PatternBind> = <const> {\n name: 'bind',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const bind = CONSUME(l.bind);\n CONSUME(l.symbols.LParen);\n const expressionVal = SUBRULE(expression);\n CONSUME(l.as);\n const variable = SUBRULE(var_);\n const close = CONSUME(l.symbols.RParen);\n\n return ACTION(() => C.astFactory.patternBind(expressionVal, variable, C.astFactory.sourceLocation(bind, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('BIND', '('));\n SUBRULE(expression, ast.expression);\n F.printFilter(ast, () => PRINT_WORD('AS'));\n SUBRULE(var_, ast.variable);\n F.printFilter(ast, () => {\n PRINT_WORD(')');\n NEW_LINE();\n });\n },\n};\n\n/**\n * [[61]](https://www.w3.org/TR/sparql11-query/#rInlineData)\n */\nexport const inlineData: SparqlRule<'inlineData', PatternValues> = <const> {\n name: 'inlineData',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const values = CONSUME(l.values);\n const datablock = SUBRULE(dataBlock);\n\n return ACTION(() => {\n datablock.loc = C.astFactory.sourceLocation(values, datablock);\n return datablock;\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {\n const { astFactory: F, indentInc } = C;\n const variables = ast.variables;\n const singleVar = variables.length === 1;\n F.printFilter(ast, () => {\n PRINT_ON_EMPTY('VALUES', singleVar ? '' : '( ');\n });\n for (const variable of variables) {\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(varOrTerm, variable);\n F.printFilter(ast, () => PRINT_WORD(''));\n }\n F.printFilter(ast, () => {\n C[traqulaIndentation] += indentInc;\n PRINT_WORD(singleVar ? '' : ')', '{');\n NEW_LINE();\n });\n\n for (const mapping of ast.values) {\n F.printFilter(ast, () => !singleVar && PRINT_WORD('('));\n for (const variable of variables) {\n const var_ = variable.value;\n if (mapping[var_] === undefined) {\n F.printFilter(ast, () => PRINT_WORD('UNDEF'));\n } else {\n SUBRULE(graphNodePath, mapping[var_]);\n }\n }\n F.printFilter(ast, () => {\n PRINT_WORD(singleVar ? '' : ')');\n NEW_LINE();\n });\n }\n F.printFilter(ast, () => {\n C[traqulaIndentation] -= indentInc;\n PRINT_ON_OWN_LINE('}');\n });\n },\n};\n\n/**\n * [[62]](https://www.w3.org/TR/sparql11-query/#rDataBlock)\n */\nexport const dataBlock: SparqlGrammarRule<'dataBlock', PatternValues> = <const> {\n name: 'dataBlock',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(inlineDataOneVar) },\n { ALT: () => SUBRULE(inlineDataFull) },\n ]),\n};\n\n/**\n * [[63]](https://www.w3.org/TR/sparql11-query/#rInlineDataOneVar)\n */\nexport const inlineDataOneVar: SparqlGrammarRule<'inlineDataOneVar', PatternValues> = <const> {\n name: 'inlineDataOneVar',\n impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {\n const res: ValuePatternRow[] = [];\n const varVal = SUBRULE(var_);\n CONSUME(l.symbols.LCurly);\n MANY(() => {\n const value = SUBRULE(dataBlockValue);\n ACTION(() => {\n res.push({ [varVal.value]: value });\n });\n });\n const close = CONSUME(l.symbols.RCurly);\n\n return ACTION(() => C.astFactory.patternValues([ varVal ], res, C.astFactory.sourceLocation(varVal, close)));\n },\n};\n\n/**\n * [[64]](https://www.w3.org/TR/sparql11-query/#rInlineDataFull)\n */\nexport const inlineDataFull: SparqlGrammarRule<'inlineDataFull', PatternValues> = <const> {\n name: 'inlineDataFull',\n impl: ({\n ACTION,\n OR,\n MANY1,\n MANY2,\n MANY3,\n MANY4,\n SUBRULE,\n CONSUME1,\n CONSUME2,\n }) => (C) => {\n const res: ValuePatternRow[] = [];\n const vars: TermVariable[] = [];\n return OR<RuleDefReturn<typeof inlineDataFull>>([\n { ALT: () => {\n // Grammar rule 64 together with note 11 learns us that a nil should be followed by a nil in DataBlock.\n const nil = CONSUME1(l.terminals.nil);\n CONSUME1(l.symbols.LCurly);\n MANY1(() => {\n CONSUME2(l.terminals.nil);\n res.push({});\n });\n const close = CONSUME1(l.symbols.RCurly);\n\n return ACTION(() => C.astFactory.patternValues(vars, res, C.astFactory.sourceLocation(nil, close)));\n } },\n { ALT: () => {\n const open = CONSUME1(l.symbols.LParen);\n MANY2(() => {\n vars.push(SUBRULE(var_));\n });\n CONSUME1(l.symbols.RParen);\n CONSUME2(l.symbols.LCurly);\n MANY3(() => {\n let parsedValues = 0;\n const currentRow: ValuePatternRow = {};\n CONSUME2(l.symbols.LParen);\n MANY4(() => {\n ACTION(() => {\n if (!C.skipValidation && parsedValues >= vars.length) {\n throw new Error('Number of dataBlockValues does not match number of variables. Too much values.');\n }\n });\n const value = SUBRULE(dataBlockValue);\n ACTION(() => {\n currentRow[vars[parsedValues].value] = value;\n parsedValues++;\n });\n });\n CONSUME2(l.symbols.RParen);\n ACTION(() => {\n res.push(currentRow);\n if (!C.skipValidation && vars.length !== parsedValues) {\n throw new Error('Number of dataBlockValues does not match number of variables. Too few values.');\n }\n });\n });\n const close = CONSUME2(l.symbols.RCurly);\n return ACTION(() => C.astFactory.patternValues(vars, res, C.astFactory.sourceLocation(open, close)));\n } },\n ]);\n },\n};\n\n/**\n * [[65]](https://www.w3.org/TR/sparql11-query/#rDataBlockValue)\n */\nexport const dataBlockValue: SparqlGrammarRule<'dataBlockValue', TermIri | TermLiteral | undefined> = {\n name: 'dataBlockValue',\n impl: ({ SUBRULE, CONSUME, OR }) => () => OR<RuleDefReturn<typeof dataBlockValue>>([\n { ALT: () => SUBRULE(iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(numericLiteral) },\n { ALT: () => SUBRULE(booleanLiteral) },\n { ALT: () => {\n CONSUME(l.undef);\n // eslint-disable-next-line unicorn/no-useless-undefined\n return undefined;\n } },\n ]),\n};\n\n/**\n * [[66]](https://www.w3.org/TR/sparql11-query/#rMinusGraphPattern)\n */\nexport const minusGraphPattern: SparqlRule<'minusGraphPattern', PatternMinus> = <const> {\n name: 'minusGraphPattern',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const minus = CONSUME(l.minus);\n const group = SUBRULE(groupGraphPattern);\n\n return ACTION(() => C.astFactory.patternMinus(group.patterns, C.astFactory.sourceLocation(minus, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('MINUS'));\n SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));\n },\n};\n\n/**\n * [[67]](https://www.w3.org/TR/sparql11-query/#rGroupOrUnionGraphPattern)\n */\nexport const groupOrUnionGraphPattern: SparqlRule<'groupOrUnionGraphPattern', PatternGroup | PatternUnion> =\n <const> {\n name: 'groupOrUnionGraphPattern',\n impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {\n const groups: PatternGroup[] = [];\n\n const group = SUBRULE1(groupGraphPattern);\n groups.push(group);\n MANY(() => {\n CONSUME(l.union);\n const group = SUBRULE2(groupGraphPattern);\n groups.push(group);\n });\n\n return ACTION(() => groups.length === 1 ?\n groups[0] :\n C.astFactory.patternUnion(\n groups,\n C.astFactory.sourceLocation(group, groups.at(-1)),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n if (F.isPatternUnion(ast)) {\n const [ head, ...tail ] = ast.patterns;\n SUBRULE(groupGraphPattern, head);\n for (const pattern of tail) {\n F.printFilter(ast, () => PRINT_WORD('UNION'));\n SUBRULE(groupGraphPattern, pattern);\n }\n } else {\n SUBRULE(groupGraphPattern, ast);\n }\n },\n };\n\n/**\n * [[68]](https://www.w3.org/TR/sparql11-query/#rFilter)\n */\nexport const filter: SparqlRule<'filter', PatternFilter> = <const> {\n name: 'filter',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const filterToken = CONSUME(l.filter);\n const expression = SUBRULE(constraint);\n\n return ACTION(() => C.astFactory.patternFilter(expression, C.astFactory.sourceLocation(filterToken, expression)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('FILTER ('));\n SUBRULE(expression, ast.expression);\n F.printFilter(ast, () => {\n PRINT_WORD(')');\n NEW_LINE();\n });\n },\n};\n\n/**\n * [[69]](https://www.w3.org/TR/sparql11-query/#rConstraint)\n */\nexport const constraint: SparqlGrammarRule<'constraint', Expression> = <const> {\n name: 'constraint',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(brackettedExpression) },\n { ALT: () => SUBRULE(builtInCall) },\n { ALT: () => SUBRULE(functionCall) },\n ]),\n};\n\n/**\n * [[70]](https://www.w3.org/TR/sparql11-query/#rFunctionCall)\n */\nexport const functionCall: SparqlGrammarRule<'functionCall', ExpressionFunctionCall> = <const> {\n name: 'functionCall',\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const func = SUBRULE(iri);\n const args = SUBRULE(argList);\n return ACTION(() => C.astFactory.expressionFunctionCall(\n func,\n args.val.args,\n args.val.distinct,\n C.astFactory.sourceLocation(func, args),\n ));\n },\n};\n"]}
1
+ {"version":3,"file":"whereClause.js","sourceRoot":"","sources":["../../../../lib/grammar/whereClause.ts"],"names":[],"mappings":"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","sourcesContent":["import type { RuleDefReturn, Wrap } from '@traqula/core';\nimport { traqulaIndentation } from '@traqula/core';\nimport * as l from '../lexer/index.js';\nimport type { SparqlGeneratorRule, SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes.js';\nimport type {\n Expression,\n ExpressionFunctionCall,\n Pattern,\n PatternBgp,\n PatternBind,\n PatternFilter,\n PatternGraph,\n PatternGroup,\n PatternMinus,\n PatternOptional,\n PatternService,\n PatternUnion,\n PatternValues,\n SubSelect,\n TermIri,\n TermLiteral,\n TermVariable,\n ValuePatternRow,\n} from '../Sparql11types.js';\nimport { checkNote13 } from '../validation/validators.js';\nimport { builtInCall } from './builtIn.js';\nimport { argList, brackettedExpression, expression } from './expression.js';\nimport { var_, varOrIri, varOrTerm } from './general.js';\nimport { booleanLiteral, iri, numericLiteral, rdfLiteral } from './literals.js';\nimport { query, subSelect } from './queryUnit.js';\nimport { graphNodePath, triplesBlock } from './tripleBlock.js';\n\n/**\n * [[17]](https://www.w3.org/TR/sparql11-query/#rWhereClause)\n */\nexport const whereClause: SparqlRule<'whereClause', Wrap<PatternGroup>> = <const> {\n name: 'whereClause',\n impl: ({ ACTION, SUBRULE, CONSUME, OPTION }) => (C) => {\n const where = OPTION(() => CONSUME(l.where));\n const group = SUBRULE(groupGraphPattern);\n return ACTION(() => C.astFactory.wrap(group, C.astFactory.sourceLocation(where, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('WHERE'));\n SUBRULE(groupGraphPattern, ast.val);\n },\n};\n\n/**\n * [[53]](https://www.w3.org/TR/sparql11-query/#rGroupGraphPattern)\n */\nexport const groupGraphPattern: SparqlRule<'groupGraphPattern', PatternGroup> = <const> {\n name: 'groupGraphPattern',\n impl: ({ ACTION, SUBRULE, CONSUME, OR }) => (C) => {\n const open = CONSUME(l.symbols.LCurly);\n const patterns = OR<Pattern[]>([\n { ALT: () => [ SUBRULE(subSelect) ]},\n { ALT: () => SUBRULE(groupGraphPatternSub) },\n ]);\n const close = CONSUME(l.symbols.RCurly);\n\n return ACTION(() => C.astFactory.patternGroup(patterns, C.astFactory.sourceLocation(open, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {\n const { astFactory: F, indentInc } = C;\n F.printFilter(ast, () => {\n C[traqulaIndentation] += indentInc;\n PRINT_WORD('{');\n NEW_LINE();\n });\n\n for (const pattern of ast.patterns) {\n SUBRULE(generatePattern, pattern);\n }\n\n F.printFilter(ast, () => {\n C[traqulaIndentation] -= indentInc;\n PRINT_ON_OWN_LINE('}');\n });\n },\n};\n\nexport const generatePattern: SparqlGeneratorRule<'generatePattern', Pattern> = {\n name: 'generatePattern',\n gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {\n if (ast.type === 'query') {\n SUBRULE(query, F.querySelect({\n context: [],\n datasets: F.datasetClauses([], F.sourceLocation()),\n where: ast.where,\n variables: ast.variables,\n solutionModifiers: ast.solutionModifiers,\n values: ast.values,\n distinct: ast.distinct,\n reduced: ast.reduced,\n }, ast.loc));\n } else if (ast.subType === 'group') {\n SUBRULE(groupGraphPattern, ast);\n } else if (ast.subType === 'bgp') {\n SUBRULE(triplesBlock, ast);\n } else {\n SUBRULE(graphPatternNotTriples, ast);\n }\n },\n};\n\n/**\n * [[54]](https://www.w3.org/TR/sparql11-query/#rGroupGraphPatternSub)\n */\nexport const groupGraphPatternSub:\nSparqlGrammarRule<'groupGraphPatternSub', Pattern[]> = <const> {\n name: 'groupGraphPatternSub',\n impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => (C) => {\n const patterns: Pattern[] = [];\n\n const bgpPattern = OPTION1(() => SUBRULE1(triplesBlock));\n if (bgpPattern) {\n patterns.push(bgpPattern);\n }\n MANY(() => {\n const notTriples = SUBRULE(graphPatternNotTriples);\n patterns.push(notTriples);\n\n OPTION2(() => CONSUME(l.symbols.dot));\n\n const moreTriples = OPTION3(() => SUBRULE2(triplesBlock));\n if (moreTriples) {\n patterns.push(moreTriples);\n }\n });\n\n ACTION(() => !C.skipValidation && checkNote13(patterns));\n\n return patterns;\n },\n};\n\n/**\n * [[56]](https://www.w3.org/TR/sparql11-query/#rGraphPatternNotTriples)\n */\nexport const graphPatternNotTriples: SparqlRule<'graphPatternNotTriples', Exclude<Pattern, SubSelect | PatternBgp>> = {\n name: 'graphPatternNotTriples',\n impl: ({ SUBRULE, OR }) => () => OR<RuleDefReturn<typeof graphPatternNotTriples>>([\n { ALT: () => SUBRULE(groupOrUnionGraphPattern) },\n { ALT: () => SUBRULE(optionalGraphPattern) },\n { ALT: () => SUBRULE(minusGraphPattern) },\n { ALT: () => SUBRULE(graphGraphPattern) },\n { ALT: () => SUBRULE(serviceGraphPattern) },\n { ALT: () => SUBRULE(filter) },\n { ALT: () => SUBRULE(bind) },\n { ALT: () => SUBRULE(inlineData) },\n ]),\n gImpl: ({ SUBRULE }) => (ast) => {\n switch (ast.subType) {\n case 'group':\n case 'union':\n SUBRULE(groupOrUnionGraphPattern, ast);\n break;\n case 'optional':\n SUBRULE(optionalGraphPattern, ast);\n break;\n case 'minus':\n SUBRULE(minusGraphPattern, ast);\n break;\n case 'graph':\n SUBRULE(graphGraphPattern, ast);\n break;\n case 'service':\n SUBRULE(serviceGraphPattern, ast);\n break;\n case 'filter':\n SUBRULE(filter, ast);\n break;\n case 'bind':\n SUBRULE(bind, ast);\n break;\n case 'values':\n SUBRULE(inlineData, ast);\n break;\n }\n },\n};\n\n/**\n * [[57]](https://www.w3.org/TR/sparql11-query/#rOptionalGraphPattern)\n */\nexport const optionalGraphPattern: SparqlRule<'optionalGraphPattern', PatternOptional> = <const> {\n name: 'optionalGraphPattern',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const optional = CONSUME(l.optional);\n const group = SUBRULE(groupGraphPattern);\n\n return ACTION(() => C.astFactory.patternOptional(group.patterns, C.astFactory.sourceLocation(optional, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('OPTIONAL'));\n SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));\n },\n};\n\n/**\n * [[58]](https://www.w3.org/TR/sparql11-query/#rGraphGraphPattern)\n */\nexport const graphGraphPattern: SparqlRule<'graphGraphPattern', PatternGraph> = <const> {\n name: 'graphGraphPattern',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const graph = CONSUME(l.graph.graph);\n const name = SUBRULE(varOrIri);\n const group = SUBRULE(groupGraphPattern);\n\n return ACTION(() => C.astFactory.patternGraph(name, group.patterns, C.astFactory.sourceLocation(graph, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('GRAPH'));\n SUBRULE(varOrTerm, ast.name);\n SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));\n },\n};\n\n/**\n * [[59]](https://www.w3.org/TR/sparql11-query/#rServiceGraphPattern)\n */\nexport const serviceGraphPattern: SparqlRule<'serviceGraphPattern', PatternService> = <const> {\n name: 'serviceGraphPattern',\n impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {\n const service = CONSUME(l.service);\n const silent = OPTION(() => {\n CONSUME(l.silent);\n return true;\n }) ?? false;\n const name = SUBRULE1(varOrIri);\n const group = SUBRULE1(groupGraphPattern);\n\n return ACTION(() =>\n C.astFactory.patternService(name, group.patterns, silent, C.astFactory.sourceLocation(service, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORD('SERVICE');\n if (ast.silent) {\n PRINT_WORD('SILENT');\n }\n });\n SUBRULE(varOrTerm, ast.name);\n SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));\n },\n};\n\n/**\n * [[60]](https://www.w3.org/TR/sparql11-query/#rBind)\n */\nexport const bind: SparqlRule<'bind', PatternBind> = <const> {\n name: 'bind',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const bind = CONSUME(l.bind);\n CONSUME(l.symbols.LParen);\n const expressionVal = SUBRULE(expression);\n CONSUME(l.as);\n const variable = SUBRULE(var_);\n const close = CONSUME(l.symbols.RParen);\n\n return ACTION(() => C.astFactory.patternBind(expressionVal, variable, C.astFactory.sourceLocation(bind, close)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('BIND', '('));\n SUBRULE(expression, ast.expression);\n F.printFilter(ast, () => PRINT_WORD('AS'));\n SUBRULE(var_, ast.variable);\n F.printFilter(ast, () => {\n PRINT_WORD(')');\n NEW_LINE();\n });\n },\n};\n\n/**\n * [[61]](https://www.w3.org/TR/sparql11-query/#rInlineData)\n */\nexport const inlineData: SparqlRule<'inlineData', PatternValues> = <const> {\n name: 'inlineData',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const values = CONSUME(l.values);\n const datablock = SUBRULE(dataBlock);\n\n return ACTION(() => {\n datablock.loc = C.astFactory.sourceLocation(values, datablock);\n return datablock;\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY, NEW_LINE, PRINT_ON_OWN_LINE }) => (ast, C) => {\n const { astFactory: F, indentInc } = C;\n const variables = ast.variables;\n const singleVar = variables.length === 1;\n F.printFilter(ast, () => {\n PRINT_ON_EMPTY('VALUES', singleVar ? '' : '( ');\n });\n for (const variable of variables) {\n F.printFilter(ast, () => PRINT_WORD(''));\n SUBRULE(varOrTerm, variable);\n F.printFilter(ast, () => PRINT_WORD(''));\n }\n F.printFilter(ast, () => {\n C[traqulaIndentation] += indentInc;\n PRINT_WORD(singleVar ? '' : ')', '{');\n NEW_LINE();\n });\n\n for (const mapping of ast.values) {\n F.printFilter(ast, () => !singleVar && PRINT_WORD('('));\n for (const variable of variables) {\n const var_ = variable.value;\n if (mapping[var_] === undefined) {\n F.printFilter(ast, () => PRINT_WORD('UNDEF'));\n } else {\n SUBRULE(graphNodePath, mapping[var_]);\n F.printFilter(ast, () => PRINT_WORD(''));\n }\n }\n F.printFilter(ast, () => {\n PRINT_WORD(singleVar ? '' : ')');\n NEW_LINE();\n });\n }\n F.printFilter(ast, () => {\n C[traqulaIndentation] -= indentInc;\n PRINT_ON_OWN_LINE('}');\n });\n },\n};\n\n/**\n * [[62]](https://www.w3.org/TR/sparql11-query/#rDataBlock)\n */\nexport const dataBlock: SparqlGrammarRule<'dataBlock', PatternValues> = <const> {\n name: 'dataBlock',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(inlineDataOneVar) },\n { ALT: () => SUBRULE(inlineDataFull) },\n ]),\n};\n\n/**\n * [[63]](https://www.w3.org/TR/sparql11-query/#rInlineDataOneVar)\n */\nexport const inlineDataOneVar: SparqlGrammarRule<'inlineDataOneVar', PatternValues> = <const> {\n name: 'inlineDataOneVar',\n impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => (C) => {\n const res: ValuePatternRow[] = [];\n const varVal = SUBRULE(var_);\n CONSUME(l.symbols.LCurly);\n MANY(() => {\n const value = SUBRULE(dataBlockValue);\n ACTION(() => {\n res.push({ [varVal.value]: value });\n });\n });\n const close = CONSUME(l.symbols.RCurly);\n\n return ACTION(() => C.astFactory.patternValues([ varVal ], res, C.astFactory.sourceLocation(varVal, close)));\n },\n};\n\n/**\n * [[64]](https://www.w3.org/TR/sparql11-query/#rInlineDataFull)\n */\nexport const inlineDataFull: SparqlGrammarRule<'inlineDataFull', PatternValues> = <const> {\n name: 'inlineDataFull',\n impl: ({\n ACTION,\n OR,\n MANY1,\n MANY2,\n MANY3,\n MANY4,\n SUBRULE,\n CONSUME1,\n CONSUME2,\n }) => (C) => {\n const res: ValuePatternRow[] = [];\n const vars: TermVariable[] = [];\n return OR<RuleDefReturn<typeof inlineDataFull>>([\n { ALT: () => {\n // Grammar rule 64 together with note 11 learns us that a nil should be followed by a nil in DataBlock.\n const nil = CONSUME1(l.terminals.nil);\n CONSUME1(l.symbols.LCurly);\n MANY1(() => {\n CONSUME2(l.terminals.nil);\n res.push({});\n });\n const close = CONSUME1(l.symbols.RCurly);\n\n return ACTION(() => C.astFactory.patternValues(vars, res, C.astFactory.sourceLocation(nil, close)));\n } },\n { ALT: () => {\n const open = CONSUME1(l.symbols.LParen);\n MANY2(() => {\n vars.push(SUBRULE(var_));\n });\n CONSUME1(l.symbols.RParen);\n CONSUME2(l.symbols.LCurly);\n MANY3(() => {\n let parsedValues = 0;\n const currentRow: ValuePatternRow = {};\n CONSUME2(l.symbols.LParen);\n MANY4(() => {\n ACTION(() => {\n if (!C.skipValidation && parsedValues >= vars.length) {\n throw new Error('Number of dataBlockValues does not match number of variables. Too much values.');\n }\n });\n const value = SUBRULE(dataBlockValue);\n ACTION(() => {\n currentRow[vars[parsedValues].value] = value;\n parsedValues++;\n });\n });\n CONSUME2(l.symbols.RParen);\n ACTION(() => {\n res.push(currentRow);\n if (!C.skipValidation && vars.length !== parsedValues) {\n throw new Error('Number of dataBlockValues does not match number of variables. Too few values.');\n }\n });\n });\n const close = CONSUME2(l.symbols.RCurly);\n return ACTION(() => C.astFactory.patternValues(vars, res, C.astFactory.sourceLocation(open, close)));\n } },\n ]);\n },\n};\n\n/**\n * [[65]](https://www.w3.org/TR/sparql11-query/#rDataBlockValue)\n */\nexport const dataBlockValue: SparqlGrammarRule<'dataBlockValue', TermIri | TermLiteral | undefined> = {\n name: 'dataBlockValue',\n impl: ({ SUBRULE, CONSUME, OR }) => () => OR<RuleDefReturn<typeof dataBlockValue>>([\n { ALT: () => SUBRULE(iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(numericLiteral) },\n { ALT: () => SUBRULE(booleanLiteral) },\n { ALT: () => {\n CONSUME(l.undef);\n // eslint-disable-next-line unicorn/no-useless-undefined\n return undefined;\n } },\n ]),\n};\n\n/**\n * [[66]](https://www.w3.org/TR/sparql11-query/#rMinusGraphPattern)\n */\nexport const minusGraphPattern: SparqlRule<'minusGraphPattern', PatternMinus> = <const> {\n name: 'minusGraphPattern',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const minus = CONSUME(l.minus);\n const group = SUBRULE(groupGraphPattern);\n\n return ACTION(() => C.astFactory.patternMinus(group.patterns, C.astFactory.sourceLocation(minus, group)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('MINUS'));\n SUBRULE(groupGraphPattern, F.patternGroup(ast.patterns, ast.loc));\n },\n};\n\n/**\n * [[67]](https://www.w3.org/TR/sparql11-query/#rGroupOrUnionGraphPattern)\n */\nexport const groupOrUnionGraphPattern: SparqlRule<'groupOrUnionGraphPattern', PatternGroup | PatternUnion> =\n <const> {\n name: 'groupOrUnionGraphPattern',\n impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => (C) => {\n const groups: PatternGroup[] = [];\n\n const group = SUBRULE1(groupGraphPattern);\n groups.push(group);\n MANY(() => {\n CONSUME(l.union);\n const group = SUBRULE2(groupGraphPattern);\n groups.push(group);\n });\n\n return ACTION(() => groups.length === 1 ?\n groups[0] :\n C.astFactory.patternUnion(\n groups,\n C.astFactory.sourceLocation(group, groups.at(-1)),\n ));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {\n if (F.isPatternUnion(ast)) {\n const [ head, ...tail ] = ast.patterns;\n SUBRULE(groupGraphPattern, head);\n for (const pattern of tail) {\n F.printFilter(ast, () => PRINT_WORD('UNION'));\n SUBRULE(groupGraphPattern, pattern);\n }\n } else {\n SUBRULE(groupGraphPattern, ast);\n }\n },\n };\n\n/**\n * [[68]](https://www.w3.org/TR/sparql11-query/#rFilter)\n */\nexport const filter: SparqlRule<'filter', PatternFilter> = <const> {\n name: 'filter',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const filterToken = CONSUME(l.filter);\n const expression = SUBRULE(constraint);\n\n return ACTION(() => C.astFactory.patternFilter(expression, C.astFactory.sourceLocation(filterToken, expression)));\n },\n gImpl: ({ SUBRULE, PRINT_WORD, NEW_LINE }) => (ast, { astFactory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('FILTER ('));\n SUBRULE(expression, ast.expression);\n F.printFilter(ast, () => {\n PRINT_WORD(')');\n NEW_LINE();\n });\n },\n};\n\n/**\n * [[69]](https://www.w3.org/TR/sparql11-query/#rConstraint)\n */\nexport const constraint: SparqlGrammarRule<'constraint', Expression> = <const> {\n name: 'constraint',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(brackettedExpression) },\n { ALT: () => SUBRULE(builtInCall) },\n { ALT: () => SUBRULE(functionCall) },\n ]),\n};\n\n/**\n * [[70]](https://www.w3.org/TR/sparql11-query/#rFunctionCall)\n */\nexport const functionCall: SparqlGrammarRule<'functionCall', ExpressionFunctionCall> = <const> {\n name: 'functionCall',\n impl: ({ ACTION, SUBRULE }) => (C) => {\n const func = SUBRULE(iri);\n const args = SUBRULE(argList);\n return ACTION(() => C.astFactory.expressionFunctionCall(\n func,\n args.val.args,\n args.val.distinct,\n C.astFactory.sourceLocation(func, args),\n ));\n },\n};\n"]}
@@ -36,7 +36,7 @@ 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
40
  exports.gram = __importStar(require("./grammar/index.js"));
41
41
  exports.lex = __importStar(require("./lexer/index.js"));
42
42
  __exportStar(require("./expressionHelpers.js"), exports);
@@ -44,6 +44,8 @@ __exportStar(require("./Sparql11types.js"), exports);
44
44
  __exportStar(require("./MinimalSparqlParser.js"), exports);
45
45
  __exportStar(require("./sparql11HelperTypes.js"), exports);
46
46
  __exportStar(require("./astFactory.js"), exports);
47
+ // TODO: deprecate this export
47
48
  __exportStar(require("./validation/validators.js"), exports);
49
+ exports.validation = __importStar(require("./validation/validators.js"));
48
50
  __exportStar(require("./utils.js"), exports);
49
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA2C;AAC3C,wDAAwC;AACxC,yDAAuC;AACvC,qDAAmC;AACnC,2DAAyC;AACzC,2DAAyC;AACzC,kDAAgC;AAChC,6DAA2C;AAC3C,6CAA2B","sourcesContent":["export * as gram from './grammar/index.js';\nexport * as lex from './lexer/index.js';\nexport * from './expressionHelpers.js';\nexport * from './Sparql11types.js';\nexport * from './MinimalSparqlParser.js';\nexport * from './sparql11HelperTypes.js';\nexport * from './astFactory.js';\nexport * from './validation/validators.js';\nexport * from './utils.js';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA2C;AAC3C,wDAAwC;AACxC,yDAAuC;AACvC,qDAAmC;AACnC,2DAAyC;AACzC,2DAAyC;AACzC,kDAAgC;AAChC,8BAA8B;AAC9B,6DAA2C;AAE3C,yEAAyD;AACzD,6CAA2B","sourcesContent":["export * as gram from './grammar/index.js';\nexport * as lex from './lexer/index.js';\nexport * from './expressionHelpers.js';\nexport * from './Sparql11types.js';\nexport * from './MinimalSparqlParser.js';\nexport * from './sparql11HelperTypes.js';\nexport * from './astFactory.js';\n// TODO: deprecate this export\nexport * from './validation/validators.js';\n\nexport * as validation from './validation/validators.js';\nexport * from './utils.js';\n"]}
@@ -26,6 +26,11 @@ function sparqlCodepointEscape(input) {
26
26
  }
27
27
  return sanitizedInput;
28
28
  }
29
+ /**
30
+ * Common IRI constants used across SPARQL parsing and generation.
31
+ * Includes XSD datatypes (BOOLEAN, INTEGER, DECIMAL, DOUBLE, STRING)
32
+ * and RDF vocabulary (FIRST, REST, NIL, TYPE).
33
+ */
29
34
  var CommonIRIs;
30
35
  (function (CommonIRIs) {
31
36
  // XSD
@@ -40,6 +45,18 @@ var CommonIRIs;
40
45
  CommonIRIs["NIL"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";
41
46
  CommonIRIs["TYPE"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
42
47
  })(CommonIRIs || (exports.CommonIRIs = CommonIRIs = {}));
48
+ /**
49
+ * A {@link TransformerSubTyped} specialized for the SPARQL 1.1 AST node types.
50
+ * Provides a type-safe visitor/transformer that dispatches based on node `type` and `subType` fields.
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const transformer = new AstTransformer();
55
+ * transformer.transformNodeSpecific<'safe', typeof ast>(ast, {
56
+ * query: { select: (node) => { ... } },
57
+ * });
58
+ * ```
59
+ */
43
60
  class AstTransformer extends core_1.TransformerSubTyped {
44
61
  }
45
62
  exports.AstTransformer = AstTransformer;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/utils.ts"],"names":[],"mappings":";;;AAOA,sDAqBC;AA5BD,wCAAoD;AAGpD;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,KAAa;IACjD,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CACrC,2CAA2C,EAC3C,CAAC,CAAC,EAAE,QAAgB,EAAE,QAAgB,EAAE,EAAE;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,mBAAmB,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC/C,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5G,CAAC,CACF,CAAC;IACF,2CAA2C;IAC3C,IAAI,wCAAwC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,IAAY,UAYX;AAZD,WAAY,UAAU;IACpB,MAAM;IACN,kEAAoD,CAAA;IACpD,kEAAoD,CAAA;IACpD,kEAAoD,CAAA;IACpD,gEAAkD,CAAA;IAClD,gEAAkD,CAAA;IAClD,MAAM;IACN,wEAA0D,CAAA;IAC1D,sEAAwD,CAAA;IACxD,oEAAsD,CAAA;IACtD,sEAAwD,CAAA;AAC1D,CAAC,EAZW,UAAU,0BAAV,UAAU,QAYrB;AAED,MAAa,cAAe,SAAQ,0BAAkC;CAAG;AAAzE,wCAAyE","sourcesContent":["import { TransformerSubTyped } from '@traqula/core';\nimport type { Sparql11Nodes } from './Sparql11types.js';\n\n/**\n * Transform input in accordance to [19.2](https://www.w3.org/TR/sparql11-query/#codepointEscape)\n * and validate unicode codepoints.\n */\nexport function sparqlCodepointEscape(input: string): string {\n const sanitizedInput = input.replaceAll(\n /\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{8})/gu,\n (_, unicode4: string, unicode8: string) => {\n if (unicode4) {\n const charCode = Number.parseInt(unicode4, 16);\n return String.fromCodePoint(charCode);\n }\n const charCode = Number.parseInt(unicode8, 16);\n if (charCode < 0xFFFF) {\n return String.fromCodePoint(charCode);\n }\n const substractedCharCode = charCode - 0x10000;\n return String.fromCodePoint(0xD800 + (substractedCharCode >> 10), 0xDC00 + (substractedCharCode & 0x3FF));\n },\n );\n // Test for invalid unicode surrogate pairs\n if (/[\\uD800-\\uDBFF](?:[^\\uDC00-\\uDFFF]|$)/u.test(sanitizedInput)) {\n throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);\n }\n return sanitizedInput;\n}\n\nexport enum CommonIRIs {\n // XSD\n BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n STRING = 'http://www.w3.org/2001/XMLSchema#string',\n // RDF\n FIRST = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#first',\n REST = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest',\n NIL = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil',\n TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',\n}\n\nexport class AstTransformer extends TransformerSubTyped<Sparql11Nodes> {}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/utils.ts"],"names":[],"mappings":";;;AAOA,sDAqBC;AA5BD,wCAAoD;AAGpD;;;GAGG;AACH,SAAgB,qBAAqB,CAAC,KAAa;IACjD,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CACrC,2CAA2C,EAC3C,CAAC,CAAC,EAAE,QAAgB,EAAE,QAAgB,EAAE,EAAE;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,mBAAmB,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC/C,OAAO,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,mBAAmB,GAAG,KAAK,CAAC,CAAC,CAAC;IAC5G,CAAC,CACF,CAAC;IACF,2CAA2C;IAC3C,IAAI,wCAAwC,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAClE,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,IAAY,UAYX;AAZD,WAAY,UAAU;IACpB,MAAM;IACN,kEAAoD,CAAA;IACpD,kEAAoD,CAAA;IACpD,kEAAoD,CAAA;IACpD,gEAAkD,CAAA;IAClD,gEAAkD,CAAA;IAClD,MAAM;IACN,wEAA0D,CAAA;IAC1D,sEAAwD,CAAA;IACxD,oEAAsD,CAAA;IACtD,sEAAwD,CAAA;AAC1D,CAAC,EAZW,UAAU,0BAAV,UAAU,QAYrB;AAED;;;;;;;;;;;GAWG;AACH,MAAa,cAAe,SAAQ,0BAAkC;CAAG;AAAzE,wCAAyE","sourcesContent":["import { TransformerSubTyped } from '@traqula/core';\nimport type { Sparql11Nodes } from './Sparql11types.js';\n\n/**\n * Transform input in accordance to [19.2](https://www.w3.org/TR/sparql11-query/#codepointEscape)\n * and validate unicode codepoints.\n */\nexport function sparqlCodepointEscape(input: string): string {\n const sanitizedInput = input.replaceAll(\n /\\\\u([0-9a-fA-F]{4})|\\\\U([0-9a-fA-F]{8})/gu,\n (_, unicode4: string, unicode8: string) => {\n if (unicode4) {\n const charCode = Number.parseInt(unicode4, 16);\n return String.fromCodePoint(charCode);\n }\n const charCode = Number.parseInt(unicode8, 16);\n if (charCode < 0xFFFF) {\n return String.fromCodePoint(charCode);\n }\n const substractedCharCode = charCode - 0x10000;\n return String.fromCodePoint(0xD800 + (substractedCharCode >> 10), 0xDC00 + (substractedCharCode & 0x3FF));\n },\n );\n // Test for invalid unicode surrogate pairs\n if (/[\\uD800-\\uDBFF](?:[^\\uDC00-\\uDFFF]|$)/u.test(sanitizedInput)) {\n throw new Error(`Invalid unicode codepoint of surrogate pair without corresponding codepoint`);\n }\n return sanitizedInput;\n}\n\n/**\n * Common IRI constants used across SPARQL parsing and generation.\n * Includes XSD datatypes (BOOLEAN, INTEGER, DECIMAL, DOUBLE, STRING)\n * and RDF vocabulary (FIRST, REST, NIL, TYPE).\n */\nexport enum CommonIRIs {\n // XSD\n BOOLEAN = 'http://www.w3.org/2001/XMLSchema#boolean',\n INTEGER = 'http://www.w3.org/2001/XMLSchema#integer',\n DECIMAL = 'http://www.w3.org/2001/XMLSchema#decimal',\n DOUBLE = 'http://www.w3.org/2001/XMLSchema#double',\n STRING = 'http://www.w3.org/2001/XMLSchema#string',\n // RDF\n FIRST = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#first',\n REST = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest',\n NIL = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil',\n TYPE = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',\n}\n\n/**\n * A {@link TransformerSubTyped} specialized for the SPARQL 1.1 AST node types.\n * Provides a type-safe visitor/transformer that dispatches based on node `type` and `subType` fields.\n *\n * @example\n * ```typescript\n * const transformer = new AstTransformer();\n * transformer.transformNodeSpecific<'safe', typeof ast>(ast, {\n * query: { select: (node) => { ... } },\n * });\n * ```\n */\nexport class AstTransformer extends TransformerSubTyped<Sparql11Nodes> {}\n"]}
@@ -1,5 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAggregatesOfExpression = getAggregatesOfExpression;
4
+ exports.getExpressionId = getExpressionId;
5
+ exports.getVariablesFromExpression = getVariablesFromExpression;
3
6
  exports.queryProjectionIsGood = queryProjectionIsGood;
4
7
  exports.findPatternBoundedVars = findPatternBoundedVars;
5
8
  exports.checkNote13 = checkNote13;