@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
@@ -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"]}
@@ -6,4 +6,5 @@ export * from './MinimalSparqlParser.js';
6
6
  export * from './sparql11HelperTypes.js';
7
7
  export * from './astFactory.js';
8
8
  export * from './validation/validators.js';
9
+ export * as validation from './validation/validators.js';
9
10
  export * from './utils.js';
@@ -5,6 +5,8 @@ export * from './Sparql11types.js';
5
5
  export * from './MinimalSparqlParser.js';
6
6
  export * from './sparql11HelperTypes.js';
7
7
  export * from './astFactory.js';
8
+ // TODO: deprecate this export
8
9
  export * from './validation/validators.js';
10
+ export * as validation from './validation/validators.js';
9
11
  export * from './utils.js';
10
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,YAAY,CAAC","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,OAAO,KAAK,IAAI,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,8BAA8B;AAC9B,cAAc,4BAA4B,CAAC;AAE3C,OAAO,KAAK,UAAU,MAAM,4BAA4B,CAAC;AACzD,cAAc,YAAY,CAAC","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"]}
@@ -3,4 +3,4 @@ export declare const named: import("@traqula/core").NamedToken<"NamedGraph">;
3
3
  export declare const default_: import("@traqula/core").NamedToken<"DefaultGraph">;
4
4
  export declare const graph: import("@traqula/core").NamedToken<"Graph">;
5
5
  export declare const graphAll: import("@traqula/core").NamedToken<"GraphAll">;
6
- export declare const allGraphTokens: LexerBuilder<"NamedGraph" | "DefaultGraph" | "Graph" | "GraphAll">;
6
+ export declare const allGraphTokens: LexerBuilder<"Graph" | "DefaultGraph" | "NamedGraph" | "GraphAll">;
@@ -49,8 +49,8 @@ export declare const false_: import("@traqula/core").NamedToken<"False">;
49
49
  export declare const in_: import("@traqula/core").NamedToken<"In">;
50
50
  export declare const notIn: import("@traqula/core").NamedToken<"NotIn">;
51
51
  export declare const separator: import("@traqula/core").NamedToken<"Separator">;
52
- export declare const allBaseTokens: LexerBuilder<"BaseDecl" | "PrefixDecl" | "Select" | "Distinct" | "Reduced" | "As" | "Construct" | "Describe" | "Ask" | "From" | "Where" | "GroupByGroup" | "By" | "Having" | "Order" | "OrderAsc" | "OrderDesc" | "Limit" | "Offset" | "Values" | "Load" | "Silent" | "LoadInto" | "Clear" | "Drop" | "Create" | "Add" | "To" | "Move" | "Copy" | "ModifyWith" | "DeleteDataClause" | "DeleteWhereClause" | "DeleteClause" | "InsertDataClause" | "InsertClause" | "UsingClause" | "Optional" | "Service" | "Bind" | "Undef" | "Minus" | "Union" | "Filter" | "a" | "True" | "False" | "In" | "NotIn" | "Separator">;
52
+ export declare const allBaseTokens: LexerBuilder<"a" | "Clear" | "Drop" | "Add" | "Copy" | "Move" | "InsertDataClause" | "DeleteDataClause" | "DeleteWhereClause" | "Silent" | "UsingClause" | "Load" | "LoadInto" | "Create" | "To" | "Where" | "ModifyWith" | "DeleteClause" | "InsertClause" | "From" | "Select" | "Distinct" | "Reduced" | "Construct" | "Describe" | "Ask" | "As" | "Optional" | "Service" | "Bind" | "Values" | "Undef" | "Minus" | "Filter" | "Union" | "BaseDecl" | "PrefixDecl" | "GroupByGroup" | "By" | "Having" | "Order" | "OrderAsc" | "OrderDesc" | "Limit" | "Offset" | "True" | "False" | "In" | "NotIn" | "Separator">;
53
53
  /**
54
54
  * [!!!ORDER MATTERS!!!](https://chevrotain.io/docs/tutorial/step1_lexing.html#creating-the-lexer)
55
55
  */
56
- export declare const sparql11LexerBuilder: LexerBuilder<"BuiltInStr" | "BuiltInLang" | "BuiltInLangmatches" | "BuiltInDatatype" | "BuiltInBound" | "BuiltInIri" | "BuiltInUri" | "BuiltInBnode" | "BuiltInRand" | "BuiltInAbs" | "BuiltInCeil" | "BuiltInFloor" | "BuiltInRound" | "BuiltInConcat" | "BuiltInStrlen" | "BuiltInUcase" | "BuiltInLcase" | "BuiltInEncode_for_uri" | "BuiltInContains" | "BuiltInStrstarts" | "BuiltInStrends" | "BuiltInStrbefore" | "BuiltInStrafter" | "BuiltInYear" | "BuiltInMonth" | "BuiltInDay" | "BuiltInHours" | "BuiltInMinutes" | "BuiltInSeconds" | "BuiltInTimezone" | "BuiltInTz" | "BuiltInNow" | "BuiltInUuid" | "BuiltInStruuid" | "BuiltInMd5" | "BuiltInSha1" | "BuiltInSha256" | "BuiltInSha384" | "BuiltInSha512" | "BuiltInCoalesce" | "BuiltInIf" | "BuiltInStrlang" | "BuiltInStrdt" | "BuiltInSameterm" | "BuiltInIsiri" | "BuiltInIsuri" | "BuiltInIsblank" | "BuiltInIsliteral" | "BuiltInIsnumeric" | "BuiltInRegex" | "BuiltInSubstr" | "BuiltInReplace" | "BuiltInExists" | "BuiltInNotexists" | "BuiltInCount" | "BuiltInSum" | "BuiltInMin" | "BuiltInMax" | "BuiltInAvg" | "BuiltInSample" | "BuiltInGroup_concat" | "NamedGraph" | "DefaultGraph" | "Graph" | "GraphAll" | "LCurly" | "RCurly" | "Dot" | "Comma" | "Semi" | "LParen" | "RParen" | "LSquare" | "RSquare" | "Pipe" | "Slash" | "Hat" | "Question" | "Star" | "OpPlus" | "OpMinus" | "Exclamation" | "LogicAnd" | "LogicOr" | "Equal" | "NotEqual" | "LessThan" | "GreaterThan" | "LessThanEqual" | "GreaterThanEqual" | "Hathat" | "IriRef" | "PNameLn" | "PNameNs" | "BlankNodeLabel" | "Var1" | "Var2" | "LangTag" | "Integer" | "Decimal" | "Double" | "IntegerPositive" | "DecimalPositive" | "DoublePositive" | "IntegerNegative" | "DecimalNegative" | "DoubleNegative" | "StringLiteral1" | "StringLiteral2" | "StringLiteralLong1" | "StringLiteralLong2" | "Ws" | "Comment" | "Nil" | "Anon" | "BaseDecl" | "PrefixDecl" | "Select" | "Distinct" | "Reduced" | "As" | "Construct" | "Describe" | "Ask" | "From" | "Where" | "GroupByGroup" | "By" | "Having" | "Order" | "OrderAsc" | "OrderDesc" | "Limit" | "Offset" | "Values" | "Load" | "Silent" | "LoadInto" | "Clear" | "Drop" | "Create" | "Add" | "To" | "Move" | "Copy" | "ModifyWith" | "DeleteDataClause" | "DeleteWhereClause" | "DeleteClause" | "InsertDataClause" | "InsertClause" | "UsingClause" | "Optional" | "Service" | "Bind" | "Undef" | "Minus" | "Union" | "Filter" | "a" | "True" | "False" | "In" | "NotIn" | "Separator">;
56
+ export declare const sparql11LexerBuilder: LexerBuilder<"a" | "Semi" | "Clear" | "Drop" | "Add" | "Copy" | "Move" | "InsertDataClause" | "DeleteDataClause" | "DeleteWhereClause" | "Silent" | "UsingClause" | "Graph" | "Load" | "LoadInto" | "Create" | "To" | "LCurly" | "RCurly" | "Where" | "ModifyWith" | "DeleteClause" | "InsertClause" | "DefaultGraph" | "NamedGraph" | "GraphAll" | "Dot" | "From" | "Select" | "Star" | "Distinct" | "Reduced" | "Construct" | "Describe" | "Ask" | "LParen" | "As" | "RParen" | "Optional" | "Service" | "Bind" | "Values" | "Nil" | "Undef" | "Minus" | "Filter" | "Union" | "BuiltInStr" | "BuiltInLang" | "BuiltInLangmatches" | "BuiltInDatatype" | "BuiltInBound" | "BuiltInIri" | "BuiltInUri" | "BuiltInBnode" | "BuiltInRand" | "BuiltInAbs" | "BuiltInCeil" | "BuiltInFloor" | "BuiltInRound" | "BuiltInConcat" | "BuiltInStrlen" | "BuiltInUcase" | "BuiltInLcase" | "BuiltInEncode_for_uri" | "BuiltInContains" | "BuiltInStrstarts" | "BuiltInStrends" | "BuiltInStrbefore" | "BuiltInStrafter" | "BuiltInYear" | "BuiltInMonth" | "BuiltInDay" | "BuiltInHours" | "BuiltInMinutes" | "BuiltInSeconds" | "BuiltInTimezone" | "BuiltInTz" | "BuiltInNow" | "BuiltInUuid" | "BuiltInStruuid" | "BuiltInMd5" | "BuiltInSha1" | "BuiltInSha256" | "BuiltInSha384" | "BuiltInSha512" | "BuiltInCoalesce" | "BuiltInIf" | "BuiltInStrlang" | "BuiltInStrdt" | "BuiltInSameterm" | "BuiltInIsiri" | "BuiltInIsuri" | "BuiltInIsblank" | "BuiltInIsliteral" | "BuiltInIsnumeric" | "BuiltInRegex" | "BuiltInSubstr" | "BuiltInReplace" | "BuiltInExists" | "BuiltInNotexists" | "BuiltInCount" | "BuiltInSum" | "BuiltInMin" | "BuiltInMax" | "BuiltInAvg" | "BuiltInSample" | "BuiltInGroup_concat" | "Comma" | "LSquare" | "RSquare" | "Pipe" | "Slash" | "Hat" | "Question" | "OpPlus" | "OpMinus" | "Exclamation" | "LogicAnd" | "LogicOr" | "Equal" | "NotEqual" | "LessThan" | "GreaterThan" | "LessThanEqual" | "GreaterThanEqual" | "Hathat" | "IriRef" | "PNameLn" | "PNameNs" | "BlankNodeLabel" | "Var1" | "Var2" | "LangTag" | "Integer" | "Decimal" | "Double" | "IntegerPositive" | "DecimalPositive" | "DoublePositive" | "IntegerNegative" | "DecimalNegative" | "DoubleNegative" | "StringLiteral1" | "StringLiteral2" | "StringLiteralLong1" | "StringLiteralLong2" | "Ws" | "Comment" | "Anon" | "BaseDecl" | "PrefixDecl" | "GroupByGroup" | "By" | "Having" | "Order" | "OrderAsc" | "OrderDesc" | "Limit" | "Offset" | "True" | "False" | "In" | "NotIn" | "Separator">;
@@ -25,4 +25,4 @@ export declare const greaterThan: import("@traqula/core").NamedToken<"GreaterTha
25
25
  export declare const lessThanEqual: import("@traqula/core").NamedToken<"LessThanEqual">;
26
26
  export declare const greaterThanEqual: import("@traqula/core").NamedToken<"GreaterThanEqual">;
27
27
  export declare const hathat: import("@traqula/core").NamedToken<"Hathat">;
28
- export declare const allSymbols: LexerBuilder<"LCurly" | "RCurly" | "Dot" | "Comma" | "Semi" | "LParen" | "RParen" | "LSquare" | "RSquare" | "Pipe" | "Slash" | "Hat" | "Question" | "Star" | "OpPlus" | "OpMinus" | "Exclamation" | "LogicAnd" | "LogicOr" | "Equal" | "NotEqual" | "LessThan" | "GreaterThan" | "LessThanEqual" | "GreaterThanEqual" | "Hathat">;
28
+ export declare const allSymbols: LexerBuilder<"Semi" | "LCurly" | "RCurly" | "Dot" | "Star" | "LParen" | "RParen" | "Comma" | "LSquare" | "RSquare" | "Pipe" | "Slash" | "Hat" | "Question" | "OpPlus" | "OpMinus" | "Exclamation" | "LogicAnd" | "LogicOr" | "Equal" | "NotEqual" | "LessThan" | "GreaterThan" | "LessThanEqual" | "GreaterThanEqual" | "Hathat">;
@@ -92,4 +92,4 @@ export declare const nil: import("@traqula/core").NamedToken<"Nil">;
92
92
  * [[163]](https://www.w3.org/TR/sparql11-query/#rANON)
93
93
  */
94
94
  export declare const anon: import("@traqula/core").NamedToken<"Anon">;
95
- export declare const allTerminals: LexerBuilder<"IriRef" | "PNameLn" | "PNameNs" | "BlankNodeLabel" | "Var1" | "Var2" | "LangTag" | "Integer" | "Decimal" | "Double" | "IntegerPositive" | "DecimalPositive" | "DoublePositive" | "IntegerNegative" | "DecimalNegative" | "DoubleNegative" | "StringLiteral1" | "StringLiteral2" | "StringLiteralLong1" | "StringLiteralLong2" | "Ws" | "Comment" | "Nil" | "Anon">;
95
+ export declare const allTerminals: LexerBuilder<"Nil" | "IriRef" | "PNameLn" | "PNameNs" | "BlankNodeLabel" | "Var1" | "Var2" | "LangTag" | "Integer" | "Decimal" | "Double" | "IntegerPositive" | "DecimalPositive" | "DoublePositive" | "IntegerNegative" | "DecimalNegative" | "DoubleNegative" | "StringLiteral1" | "StringLiteral2" | "StringLiteralLong1" | "StringLiteralLong2" | "Ws" | "Comment" | "Anon">;
@@ -5,6 +5,11 @@ import type { Sparql11Nodes } from './Sparql11types.js';
5
5
  * and validate unicode codepoints.
6
6
  */
7
7
  export declare function sparqlCodepointEscape(input: string): string;
8
+ /**
9
+ * Common IRI constants used across SPARQL parsing and generation.
10
+ * Includes XSD datatypes (BOOLEAN, INTEGER, DECIMAL, DOUBLE, STRING)
11
+ * and RDF vocabulary (FIRST, REST, NIL, TYPE).
12
+ */
8
13
  export declare enum CommonIRIs {
9
14
  BOOLEAN = "http://www.w3.org/2001/XMLSchema#boolean",
10
15
  INTEGER = "http://www.w3.org/2001/XMLSchema#integer",
@@ -16,5 +21,17 @@ export declare enum CommonIRIs {
16
21
  NIL = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil",
17
22
  TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
18
23
  }
24
+ /**
25
+ * A {@link TransformerSubTyped} specialized for the SPARQL 1.1 AST node types.
26
+ * Provides a type-safe visitor/transformer that dispatches based on node `type` and `subType` fields.
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const transformer = new AstTransformer();
31
+ * transformer.transformNodeSpecific<'safe', typeof ast>(ast, {
32
+ * query: { select: (node) => { ... } },
33
+ * });
34
+ * ```
35
+ */
19
36
  export declare class AstTransformer extends TransformerSubTyped<Sparql11Nodes> {
20
37
  }
@@ -22,6 +22,11 @@ export function sparqlCodepointEscape(input) {
22
22
  }
23
23
  return sanitizedInput;
24
24
  }
25
+ /**
26
+ * Common IRI constants used across SPARQL parsing and generation.
27
+ * Includes XSD datatypes (BOOLEAN, INTEGER, DECIMAL, DOUBLE, STRING)
28
+ * and RDF vocabulary (FIRST, REST, NIL, TYPE).
29
+ */
25
30
  export var CommonIRIs;
26
31
  (function (CommonIRIs) {
27
32
  // XSD
@@ -36,6 +41,18 @@ export var CommonIRIs;
36
41
  CommonIRIs["NIL"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil";
37
42
  CommonIRIs["TYPE"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type";
38
43
  })(CommonIRIs || (CommonIRIs = {}));
44
+ /**
45
+ * A {@link TransformerSubTyped} specialized for the SPARQL 1.1 AST node types.
46
+ * Provides a type-safe visitor/transformer that dispatches based on node `type` and `subType` fields.
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const transformer = new AstTransformer();
51
+ * transformer.transformNodeSpecific<'safe', typeof ast>(ast, {
52
+ * query: { select: (node) => { ... } },
53
+ * });
54
+ * ```
55
+ */
39
56
  export class AstTransformer extends TransformerSubTyped {
40
57
  }
41
58
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD;;;GAGG;AACH,MAAM,UAAU,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,MAAM,CAAN,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,KAAV,UAAU,QAYrB;AAED,MAAM,OAAO,cAAe,SAAQ,mBAAkC;CAAG","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":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD;;;GAGG;AACH,MAAM,UAAU,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,MAAM,CAAN,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,KAAV,UAAU,QAYrB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,cAAe,SAAQ,mBAAkC;CAAG","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,4 +1,16 @@
1
- import type { Pattern, QuerySelect, Update, Sparql11Nodes } from '../Sparql11types.js';
1
+ import type { Expression, ExpressionAggregate, Pattern, QuerySelect, TermVariable, SolutionModifierGroupBind, Update, Sparql11Nodes } from '../Sparql11types.js';
2
+ /**
3
+ * Get all 'aggregate' rules from an expression
4
+ */
5
+ export declare function getAggregatesOfExpression(expression: Expression): ExpressionAggregate[];
6
+ /**
7
+ * Return the variable value id of an expression if bounded
8
+ */
9
+ export declare function getExpressionId(expression: SolutionModifierGroupBind | Expression | TermVariable): string | undefined;
10
+ /**
11
+ * Get all variables used in an expression
12
+ */
13
+ export declare function getVariablesFromExpression(expression: Expression, variables: Set<string>): void;
2
14
  /**
3
15
  * Verify that the projected variables (select head) are allowed:
4
16
  * - no group-by on select *
@@ -5,7 +5,7 @@ const transformer = new AstTransformer();
5
5
  /**
6
6
  * Get all 'aggregate' rules from an expression
7
7
  */
8
- function getAggregatesOfExpression(expression) {
8
+ export function getAggregatesOfExpression(expression) {
9
9
  if (F.isExpressionAggregate(expression)) {
10
10
  return [expression];
11
11
  }
@@ -21,7 +21,7 @@ function getAggregatesOfExpression(expression) {
21
21
  /**
22
22
  * Return the variable value id of an expression if bounded
23
23
  */
24
- function getExpressionId(expression) {
24
+ export function getExpressionId(expression) {
25
25
  // Check if grouping
26
26
  if (F.isTerm(expression) && F.isTermVariable(expression)) {
27
27
  return expression.value;
@@ -37,7 +37,7 @@ function getExpressionId(expression) {
37
37
  /**
38
38
  * Get all variables used in an expression
39
39
  */
40
- function getVariablesFromExpression(expression, variables) {
40
+ export function getVariablesFromExpression(expression, variables) {
41
41
  if (F.isExpressionOperator(expression)) {
42
42
  for (const expr of expression.args) {
43
43
  getVariablesFromExpression(expr, variables);
@@ -1 +1 @@
1
- {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../../lib/validation/validators.ts"],"names":[],"mappings":"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","sourcesContent":["import { AstFactory } from '../astFactory.js';\nimport type {\n Wildcard,\n Expression,\n ExpressionAggregate,\n Pattern,\n QuerySelect,\n TermVariable,\n SolutionModifierGroupBind,\n Update,\n PatternBind,\n Sparql11Nodes,\n} from '../Sparql11types.js';\nimport { AstTransformer } from '../utils.js';\n\nconst F = new AstFactory();\nconst transformer = new AstTransformer();\n\n/**\n * Get all 'aggregate' rules from an expression\n */\nfunction getAggregatesOfExpression(expression: Expression): ExpressionAggregate[] {\n if (F.isExpressionAggregate(expression)) {\n return [ expression ];\n }\n if (F.isExpressionOperator(expression)) {\n const aggregates: ExpressionAggregate[] = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n return [];\n}\n\n/**\n * Return the variable value id of an expression if bounded\n */\nfunction getExpressionId(expression: SolutionModifierGroupBind | Expression | TermVariable): string | undefined {\n // Check if grouping\n if (F.isTerm(expression) && F.isTermVariable(expression)) {\n return expression.value;\n }\n if (F.isExpression(expression)) {\n if (F.isExpressionAggregate(expression) && F.isTermVariable(expression.expression[0])) {\n return expression.expression[0].value;\n }\n return undefined;\n }\n return expression.variable.value;\n}\n\n/**\n * Get all variables used in an expression\n */\nfunction getVariablesFromExpression(expression: Expression, variables: Set<string>): void {\n if (F.isExpressionOperator(expression)) {\n for (const expr of expression.args) {\n getVariablesFromExpression(expr, variables);\n }\n } else if (F.isTerm(expression) && F.isTermVariable(expression)) {\n variables.add(expression.value);\n }\n}\n\n/**\n * Verify that the projected variables (select head) are allowed:\n * - no group-by on select *\n * - if group-by, selected variables need to be collected by the group-by\n * - 'select ?var as ?other', ?other cannot be in scope\n */\nexport function queryProjectionIsGood(query: Pick<QuerySelect, 'variables' | 'solutionModifiers' | 'where'>): void {\n // NoGroupByOnWildcardSelect\n if (query.variables.length === 1 && F.isWildcard(query.variables[0])) {\n if (query.solutionModifiers.group !== undefined) {\n throw new Error('GROUP BY not allowed with wildcard');\n }\n return;\n }\n\n // CannotProjectUngroupedVars - can be skipped if `SELECT *`\n // Check for projection of ungrouped variable\n // Check can be skipped in case of wildcard select.\n const variables = <Exclude<typeof query.variables, [Wildcard]>> query.variables;\n const hasCountAggregate = variables.flatMap(\n varVal => F.isTerm(varVal) ? [] : getAggregatesOfExpression(varVal.expression),\n ).some(agg => agg.aggregation === 'count' && !agg.expression.some(arg => F.isWildcard(arg)));\n const groupBy = query.solutionModifiers.group;\n if (hasCountAggregate || groupBy) {\n // We have to check whether\n // 1. Variables used in projection are usable given the group by clause\n // 2. A selectCount will create an implicit group by clause.\n for (const selectVar of variables) {\n if (F.isTerm(selectVar)) {\n if (!groupBy || !groupBy.groupings.map(groupvar => getExpressionId(groupvar))\n .includes((getExpressionId(selectVar)))) {\n throw new Error('Variable not allowed in projection');\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n // Current value binding does not use aggregates\n const usedvars = new Set<string>();\n getVariablesFromExpression(selectVar.expression, usedvars);\n for (const usedvar of usedvars) {\n if (!groupBy || !groupBy.groupings.map(groupVar => getExpressionId(groupVar))\n .includes(usedvar)) {\n throw new Error(`Use of ungrouped variable in projection of operation (?${usedvar})`);\n }\n }\n }\n }\n }\n\n // NOTE 12: Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = query.where.patterns.filter(pattern => pattern.type === 'query');\n if (subqueries.length > 0) {\n const selectBoundedVars = new Set<string>();\n for (const variable of variables) {\n if ('variable' in variable) {\n selectBoundedVars.add(variable.variable.value);\n }\n }\n\n // Look at in scope variables\n const vars = subqueries.flatMap<TermVariable | PatternBind | Wildcard>(sub => sub.variables)\n .map(v => F.isTerm(v) ? v.value : (F.isWildcard(v) ? '*' : v.variable.value));\n const subqueryIds = new Set(vars);\n for (const selectedVarId of selectBoundedVars) {\n if (subqueryIds.has(selectedVarId)) {\n throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);\n }\n }\n }\n}\n\nexport function findPatternBoundedVars(\n op: Sparql11Nodes | undefined | (Sparql11Nodes | undefined)[],\n boundedVars: Set<string>,\n): void {\n function recurse(x: Parameters<(typeof findPatternBoundedVars)>[0]): void {\n findPatternBoundedVars(x, boundedVars);\n }\n if (op === undefined) {\n return;\n }\n if (Array.isArray(op)) {\n for (const iter of op) {\n recurse(iter);\n }\n } else if (F.isQuery(op)) {\n if (F.isQuerySelect(op) || F.isQueryDescribe(op)) {\n recurse([\n ...(op.variables.some(x => F.isWildcard(x)) ? [ op.where ] : op.variables),\n op.solutionModifiers.group,\n op.values,\n ]);\n } else {\n recurse(op.solutionModifiers.group);\n }\n } else if (F.isTriple(op)) {\n recurse([ op.subject, op.predicate, op.object ]);\n } else if (F.isPathPure(op)) {\n recurse(op.items);\n } else if (F.isTripleCollection(op)) {\n recurse([ op.identifier, ...op.triples ]);\n } else if (F.isSolutionModifierGroup(op)) {\n recurse(op.groupings.filter(g => 'variable' in g).map(x => x.variable));\n } else if (F.isSolutionModifierHaving(op)) {\n recurse(op.having);\n } else if (F.isSolutionModifierOrder(op)) {\n recurse(op.orderDefs.map(x => x.expression));\n } else if (F.isPatternValues(op)) {\n for (const v of Object.keys(op.values.at(0) ?? {})) {\n boundedVars.add(v);\n }\n } else if (F.isPatternBgp(op)) {\n recurse(op.triples);\n } else if (F.isPatternGroup(op) || F.isPatternUnion(op) || F.isPatternOptional(op)) {\n recurse(op.patterns);\n } else if (F.isPatternService(op) || F.isPatternGraph(op)) {\n recurse([ op.name, ...op.patterns ]);\n } else if (F.isPatternBind(op)) {\n recurse(op.variable);\n } else if (F.isTermVariable(op)) {\n boundedVars.add(op.value);\n }\n}\n\n/**\n * NOTE 13 and https://www.w3.org/TR/sparql11-query/#variableScope\n * > In BIND (expr AS v) requires that the variable v is not in-scope from the preceeding elements in the\n * group graph pattern in which it is used.\n */\nexport function checkNote13(patterns: Pattern[]): void {\n for (const [ index, pattern ] of patterns.entries()) {\n if (F.isPatternBind(pattern) && index > 0 && F.isPatternBgp(patterns[index - 1])) {\n const bgp = patterns[index - 1];\n // Find variables used.\n const variables: TermVariable[] = [];\n // TODO: this is slow! 2.6% self execution\n transformer.visitNodeSpecific(bgp, {}, { term: { variable: { visitor: (var_) => {\n variables.push(var_);\n } }}});\n if (variables.some(var_ => var_.value === pattern.variable.value)) {\n throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);\n }\n }\n }\n\n const boundedVars = new Set<string>();\n for (const pattern of patterns) {\n // Element can be bind, in that case, check note 13. If it is not, buildup set of bounded variables.\n if (F.isPatternBind(pattern)) {\n if (boundedVars.has(pattern.variable.value)) {\n throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);\n }\n } else {\n findPatternBoundedVars(pattern, boundedVars);\n }\n }\n}\n\n/**\n * https://www.w3.org/TR/sparql11-query/#grammarBNodes\n * > two INSERT DATA operations within a single SPARQL Update request\n */\nexport function updateNoReuseBlankNodeLabels(updateQuery: Update): void {\n const blankLabelsUsedInInsertData = new Set<string>();\n for (const update of updateQuery.updates) {\n if (!update.operation) {\n continue;\n }\n const operation = update.operation;\n if (operation.subType === 'insertdata') {\n const blankNodesHere = new Set<string>();\n transformer.visitNodeSpecific(operation, {}, { term: { blankNode: { visitor: (blankNode) => {\n blankNodesHere.add(blankNode.label);\n if (blankLabelsUsedInInsertData.has(blankNode.label)) {\n throw new Error('Detected reuse blank node across different INSERT DATA clauses');\n }\n } }}});\n for (const blankNode of blankNodesHere) {\n blankLabelsUsedInInsertData.add(blankNode);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../../lib/validation/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAa9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;AAC3B,MAAM,WAAW,GAAG,IAAI,cAAc,EAAE,CAAC;AAEzC;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAAsB;IAC9D,IAAI,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,OAAO,CAAE,UAAU,CAAE,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,MAAM,UAAU,GAA0B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAiE;IAC/F,oBAAoB;IACpB,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACxC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,UAAsB,EAAE,SAAsB;IACvF,IAAI,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACnC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;QAChE,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAqE;IACzG,4BAA4B;IAC5B,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;IACT,CAAC;IAED,4DAA4D;IAC5D,6CAA6C;IAC7C,mDAAmD;IACnD,MAAM,SAAS,GAAiD,KAAK,CAAC,SAAS,CAAC;IAChF,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CACzC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,MAAM,CAAC,UAAU,CAAC,CAC/E,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;IAC9C,IAAI,iBAAiB,IAAI,OAAO,EAAE,CAAC;QACjC,2BAA2B;QAC3B,wEAAwE;QACxE,6DAA6D;QAC7D,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxB,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;qBAC1E,QAAQ,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;iBAAM,IAAI,yBAAyB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxE,gDAAgD;gBAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;gBACnC,0BAA0B,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC3D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;yBAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;wBACrB,MAAM,IAAI,KAAK,CAAC,0DAA0D,OAAO,GAAG,CAAC,CAAC;oBACxF,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IACpF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC5C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;gBAC3B,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAwC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC;aACzF,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAChF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,MAAM,aAAa,IAAI,iBAAiB,EAAE,CAAC;YAC9C,IAAI,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,uBAAuB,aAAa,4BAA4B,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,EAA6D,EAC7D,WAAwB;IAExB,SAAS,OAAO,CAAC,CAAiD;QAChE,sBAAsB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;YACjD,OAAO,CAAC;gBACN,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;gBAC1E,EAAE,CAAC,iBAAiB,CAAC,KAAK;gBAC1B,EAAE,CAAC,MAAM;aACV,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAE,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAE,CAAC,CAAC;IACnD,CAAC;SAAM,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;SAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,CAAE,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAE,CAAC,CAAC;IAC5C,CAAC;SAAM,IAAI,CAAC,CAAC,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1E,CAAC;SAAM,IAAI,CAAC,CAAC,wBAAwB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;SAAM,IAAI,CAAC,CAAC,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;QACjC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACnD,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;SAAM,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;QACnF,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,CAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAE,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;SAAM,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;QAChC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,QAAmB;IAC7C,KAAK,MAAM,CAAE,KAAK,EAAE,OAAO,CAAE,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAChC,uBAAuB;YACvB,MAAM,SAAS,GAAmB,EAAE,CAAC;YACrC,0CAA0C;YAC1C,WAAW,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;4BAC7E,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACvB,CAAC,EAAE,EAAC,EAAC,CAAC,CAAC;YACP,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CAAC,4CAA4C,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,oGAAoG;QACpG,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,4CAA4C,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,WAAmB;IAC9D,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAU,CAAC;IACtD,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,SAAS,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;YACvC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;YACzC,WAAW,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE;4BACzF,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;4BACpC,IAAI,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gCACrD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;4BACpF,CAAC;wBACH,CAAC,EAAE,EAAC,EAAC,CAAC,CAAC;YACP,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;gBACvC,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import { AstFactory } from '../astFactory.js';\nimport type {\n Wildcard,\n Expression,\n ExpressionAggregate,\n Pattern,\n QuerySelect,\n TermVariable,\n SolutionModifierGroupBind,\n Update,\n PatternBind,\n Sparql11Nodes,\n} from '../Sparql11types.js';\nimport { AstTransformer } from '../utils.js';\n\nconst F = new AstFactory();\nconst transformer = new AstTransformer();\n\n/**\n * Get all 'aggregate' rules from an expression\n */\nexport function getAggregatesOfExpression(expression: Expression): ExpressionAggregate[] {\n if (F.isExpressionAggregate(expression)) {\n return [ expression ];\n }\n if (F.isExpressionOperator(expression)) {\n const aggregates: ExpressionAggregate[] = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n return [];\n}\n\n/**\n * Return the variable value id of an expression if bounded\n */\nexport function getExpressionId(expression: SolutionModifierGroupBind | Expression | TermVariable): string | undefined {\n // Check if grouping\n if (F.isTerm(expression) && F.isTermVariable(expression)) {\n return expression.value;\n }\n if (F.isExpression(expression)) {\n if (F.isExpressionAggregate(expression) && F.isTermVariable(expression.expression[0])) {\n return expression.expression[0].value;\n }\n return undefined;\n }\n return expression.variable.value;\n}\n\n/**\n * Get all variables used in an expression\n */\nexport function getVariablesFromExpression(expression: Expression, variables: Set<string>): void {\n if (F.isExpressionOperator(expression)) {\n for (const expr of expression.args) {\n getVariablesFromExpression(expr, variables);\n }\n } else if (F.isTerm(expression) && F.isTermVariable(expression)) {\n variables.add(expression.value);\n }\n}\n\n/**\n * Verify that the projected variables (select head) are allowed:\n * - no group-by on select *\n * - if group-by, selected variables need to be collected by the group-by\n * - 'select ?var as ?other', ?other cannot be in scope\n */\nexport function queryProjectionIsGood(query: Pick<QuerySelect, 'variables' | 'solutionModifiers' | 'where'>): void {\n // NoGroupByOnWildcardSelect\n if (query.variables.length === 1 && F.isWildcard(query.variables[0])) {\n if (query.solutionModifiers.group !== undefined) {\n throw new Error('GROUP BY not allowed with wildcard');\n }\n return;\n }\n\n // CannotProjectUngroupedVars - can be skipped if `SELECT *`\n // Check for projection of ungrouped variable\n // Check can be skipped in case of wildcard select.\n const variables = <Exclude<typeof query.variables, [Wildcard]>> query.variables;\n const hasCountAggregate = variables.flatMap(\n varVal => F.isTerm(varVal) ? [] : getAggregatesOfExpression(varVal.expression),\n ).some(agg => agg.aggregation === 'count' && !agg.expression.some(arg => F.isWildcard(arg)));\n const groupBy = query.solutionModifiers.group;\n if (hasCountAggregate || groupBy) {\n // We have to check whether\n // 1. Variables used in projection are usable given the group by clause\n // 2. A selectCount will create an implicit group by clause.\n for (const selectVar of variables) {\n if (F.isTerm(selectVar)) {\n if (!groupBy || !groupBy.groupings.map(groupvar => getExpressionId(groupvar))\n .includes((getExpressionId(selectVar)))) {\n throw new Error('Variable not allowed in projection');\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n // Current value binding does not use aggregates\n const usedvars = new Set<string>();\n getVariablesFromExpression(selectVar.expression, usedvars);\n for (const usedvar of usedvars) {\n if (!groupBy || !groupBy.groupings.map(groupVar => getExpressionId(groupVar))\n .includes(usedvar)) {\n throw new Error(`Use of ungrouped variable in projection of operation (?${usedvar})`);\n }\n }\n }\n }\n }\n\n // NOTE 12: Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = query.where.patterns.filter(pattern => pattern.type === 'query');\n if (subqueries.length > 0) {\n const selectBoundedVars = new Set<string>();\n for (const variable of variables) {\n if ('variable' in variable) {\n selectBoundedVars.add(variable.variable.value);\n }\n }\n\n // Look at in scope variables\n const vars = subqueries.flatMap<TermVariable | PatternBind | Wildcard>(sub => sub.variables)\n .map(v => F.isTerm(v) ? v.value : (F.isWildcard(v) ? '*' : v.variable.value));\n const subqueryIds = new Set(vars);\n for (const selectedVarId of selectBoundedVars) {\n if (subqueryIds.has(selectedVarId)) {\n throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);\n }\n }\n }\n}\n\nexport function findPatternBoundedVars(\n op: Sparql11Nodes | undefined | (Sparql11Nodes | undefined)[],\n boundedVars: Set<string>,\n): void {\n function recurse(x: Parameters<(typeof findPatternBoundedVars)>[0]): void {\n findPatternBoundedVars(x, boundedVars);\n }\n if (op === undefined) {\n return;\n }\n if (Array.isArray(op)) {\n for (const iter of op) {\n recurse(iter);\n }\n } else if (F.isQuery(op)) {\n if (F.isQuerySelect(op) || F.isQueryDescribe(op)) {\n recurse([\n ...(op.variables.some(x => F.isWildcard(x)) ? [ op.where ] : op.variables),\n op.solutionModifiers.group,\n op.values,\n ]);\n } else {\n recurse(op.solutionModifiers.group);\n }\n } else if (F.isTriple(op)) {\n recurse([ op.subject, op.predicate, op.object ]);\n } else if (F.isPathPure(op)) {\n recurse(op.items);\n } else if (F.isTripleCollection(op)) {\n recurse([ op.identifier, ...op.triples ]);\n } else if (F.isSolutionModifierGroup(op)) {\n recurse(op.groupings.filter(g => 'variable' in g).map(x => x.variable));\n } else if (F.isSolutionModifierHaving(op)) {\n recurse(op.having);\n } else if (F.isSolutionModifierOrder(op)) {\n recurse(op.orderDefs.map(x => x.expression));\n } else if (F.isPatternValues(op)) {\n for (const v of Object.keys(op.values.at(0) ?? {})) {\n boundedVars.add(v);\n }\n } else if (F.isPatternBgp(op)) {\n recurse(op.triples);\n } else if (F.isPatternGroup(op) || F.isPatternUnion(op) || F.isPatternOptional(op)) {\n recurse(op.patterns);\n } else if (F.isPatternService(op) || F.isPatternGraph(op)) {\n recurse([ op.name, ...op.patterns ]);\n } else if (F.isPatternBind(op)) {\n recurse(op.variable);\n } else if (F.isTermVariable(op)) {\n boundedVars.add(op.value);\n }\n}\n\n/**\n * NOTE 13 and https://www.w3.org/TR/sparql11-query/#variableScope\n * > In BIND (expr AS v) requires that the variable v is not in-scope from the preceeding elements in the\n * group graph pattern in which it is used.\n */\nexport function checkNote13(patterns: Pattern[]): void {\n for (const [ index, pattern ] of patterns.entries()) {\n if (F.isPatternBind(pattern) && index > 0 && F.isPatternBgp(patterns[index - 1])) {\n const bgp = patterns[index - 1];\n // Find variables used.\n const variables: TermVariable[] = [];\n // TODO: this is slow! 2.6% self execution\n transformer.visitNodeSpecific(bgp, {}, { term: { variable: { visitor: (var_) => {\n variables.push(var_);\n } }}});\n if (variables.some(var_ => var_.value === pattern.variable.value)) {\n throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);\n }\n }\n }\n\n const boundedVars = new Set<string>();\n for (const pattern of patterns) {\n // Element can be bind, in that case, check note 13. If it is not, buildup set of bounded variables.\n if (F.isPatternBind(pattern)) {\n if (boundedVars.has(pattern.variable.value)) {\n throw new Error(`Variable used to bind is already bound (?${pattern.variable.value})`);\n }\n } else {\n findPatternBoundedVars(pattern, boundedVars);\n }\n }\n}\n\n/**\n * https://www.w3.org/TR/sparql11-query/#grammarBNodes\n * > two INSERT DATA operations within a single SPARQL Update request\n */\nexport function updateNoReuseBlankNodeLabels(updateQuery: Update): void {\n const blankLabelsUsedInInsertData = new Set<string>();\n for (const update of updateQuery.updates) {\n if (!update.operation) {\n continue;\n }\n const operation = update.operation;\n if (operation.subType === 'insertdata') {\n const blankNodesHere = new Set<string>();\n transformer.visitNodeSpecific(operation, {}, { term: { blankNode: { visitor: (blankNode) => {\n blankNodesHere.add(blankNode.label);\n if (blankLabelsUsedInInsertData.has(blankNode.label)) {\n throw new Error('Detected reuse blank node across different INSERT DATA clauses');\n }\n } }}});\n for (const blankNode of blankNodesHere) {\n blankLabelsUsedInInsertData.add(blankNode);\n }\n }\n }\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@traqula/rules-sparql-1-1",
3
3
  "type": "module",
4
- "version": "1.1.0",
4
+ "version": "1.1.2",
5
5
  "description": "TRAQULA Lexer and Grammar Rules for sparql 1.1",
6
6
  "lsd:module": true,
7
7
  "license": "MIT",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@traqula/chevrotain": "^1.1.0",
45
- "@traqula/core": "^1.1.0"
45
+ "@traqula/core": "^1.1.1"
46
46
  },
47
- "gitHead": "ecbed266b9247b7600d4d7185a98b2ead74e33b9"
47
+ "gitHead": "4a8a40e902755a39eab0d9f4f144e2e46d44b4d2"
48
48
  }