@traqula/rules-sparql-1-1 0.0.1-alpha.176 → 0.0.1

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 (100) hide show
  1. package/lib/RoundTripTypes.d.ts +379 -0
  2. package/lib/RoundTripTypes.js +2 -0
  3. package/lib/RoundTripTypes.js.map +1 -0
  4. package/lib/Sparql11types.d.ts +18 -245
  5. package/lib/Sparql11types.js.map +1 -1
  6. package/lib/SparqlParser.d.ts +13 -4
  7. package/lib/SparqlParser.js +7 -4
  8. package/lib/SparqlParser.js.map +1 -1
  9. package/lib/expressionHelpers.d.ts +8 -19
  10. package/lib/expressionHelpers.js +40 -103
  11. package/lib/expressionHelpers.js.map +1 -1
  12. package/lib/factory.d.ts +447 -0
  13. package/lib/factory.js +105 -0
  14. package/lib/factory.js.map +1 -0
  15. package/lib/factoryMixins/ContextFactory.d.ts +38 -0
  16. package/lib/factoryMixins/ContextFactory.js +30 -0
  17. package/lib/factoryMixins/ContextFactory.js.map +1 -0
  18. package/lib/factoryMixins/ExpressionFactory.d.ts +60 -0
  19. package/lib/factoryMixins/ExpressionFactory.js +83 -0
  20. package/lib/factoryMixins/ExpressionFactory.js.map +1 -0
  21. package/lib/factoryMixins/GraphRefFactory.d.ts +43 -0
  22. package/lib/factoryMixins/GraphRefFactory.js +51 -0
  23. package/lib/factoryMixins/GraphRefFactory.js.map +1 -0
  24. package/lib/factoryMixins/PathFactory.d.ts +51 -0
  25. package/lib/factoryMixins/PathFactory.js +68 -0
  26. package/lib/factoryMixins/PathFactory.js.map +1 -0
  27. package/lib/factoryMixins/Patternfactory.d.ts +55 -0
  28. package/lib/factoryMixins/Patternfactory.js +98 -0
  29. package/lib/factoryMixins/Patternfactory.js.map +1 -0
  30. package/lib/factoryMixins/QueryFactory.d.ts +41 -0
  31. package/lib/factoryMixins/QueryFactory.js +43 -0
  32. package/lib/factoryMixins/QueryFactory.js.map +1 -0
  33. package/lib/factoryMixins/SolutionModifiersFactory.d.ts +43 -0
  34. package/lib/factoryMixins/SolutionModifiersFactory.js +55 -0
  35. package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -0
  36. package/lib/factoryMixins/TermFactory.d.ts +76 -0
  37. package/lib/factoryMixins/TermFactory.js +84 -0
  38. package/lib/factoryMixins/TermFactory.js.map +1 -0
  39. package/lib/factoryMixins/UpdateOperationFactory.d.ts +68 -0
  40. package/lib/factoryMixins/UpdateOperationFactory.js +126 -0
  41. package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -0
  42. package/lib/factoryMixins/mixins.d.ts +14 -0
  43. package/lib/factoryMixins/mixins.js +20 -0
  44. package/lib/factoryMixins/mixins.js.map +1 -0
  45. package/lib/grammar/builtIn.d.ts +59 -59
  46. package/lib/grammar/builtIn.js +50 -57
  47. package/lib/grammar/builtIn.js.map +1 -1
  48. package/lib/grammar/dataSetClause.d.ts +22 -9
  49. package/lib/grammar/dataSetClause.js +57 -14
  50. package/lib/grammar/dataSetClause.js.map +1 -1
  51. package/lib/grammar/expression.d.ts +12 -16
  52. package/lib/grammar/expression.js +224 -296
  53. package/lib/grammar/expression.js.map +1 -1
  54. package/lib/grammar/general.d.ts +8 -8
  55. package/lib/grammar/general.js +59 -94
  56. package/lib/grammar/general.js.map +1 -1
  57. package/lib/grammar/literals.d.ts +16 -13
  58. package/lib/grammar/literals.js +161 -144
  59. package/lib/grammar/literals.js.map +1 -1
  60. package/lib/grammar/propertyPaths.d.ts +16 -12
  61. package/lib/grammar/propertyPaths.js +100 -129
  62. package/lib/grammar/propertyPaths.js.map +1 -1
  63. package/lib/grammar/queryUnit/queryUnit.d.ts +13 -17
  64. package/lib/grammar/queryUnit/queryUnit.js +195 -329
  65. package/lib/grammar/queryUnit/queryUnit.js.map +1 -1
  66. package/lib/grammar/solutionModifier.d.ts +12 -11
  67. package/lib/grammar/solutionModifier.js +125 -109
  68. package/lib/grammar/solutionModifier.js.map +1 -1
  69. package/lib/grammar/tripleBlock.d.ts +24 -33
  70. package/lib/grammar/tripleBlock.js +172 -126
  71. package/lib/grammar/tripleBlock.js.map +1 -1
  72. package/lib/grammar/updateUnit/updateUnit.d.ts +28 -33
  73. package/lib/grammar/updateUnit/updateUnit.js +282 -367
  74. package/lib/grammar/updateUnit/updateUnit.js.map +1 -1
  75. package/lib/grammar/whereClause.d.ts +20 -19
  76. package/lib/grammar/whereClause.js +232 -245
  77. package/lib/grammar/whereClause.js.map +1 -1
  78. package/lib/grammar-helpers/utils.d.ts +0 -4
  79. package/lib/grammar-helpers/utils.js +0 -37
  80. package/lib/grammar-helpers/utils.js.map +1 -1
  81. package/lib/index.cjs +3061 -2438
  82. package/lib/index.d.ts +4 -2
  83. package/lib/index.js +4 -2
  84. package/lib/index.js.map +1 -1
  85. package/lib/lexer/lexer.d.ts +4 -3
  86. package/lib/lexer/lexer.js +11 -7
  87. package/lib/lexer/lexer.js.map +1 -1
  88. package/lib/lexer/terminals.d.ts +0 -34
  89. package/lib/lexer/terminals.js +35 -37
  90. package/lib/lexer/terminals.js.map +1 -1
  91. package/lib/utils.d.ts +0 -3
  92. package/lib/utils.js +0 -6
  93. package/lib/utils.js.map +1 -1
  94. package/lib/validation/validators.d.ts +14 -0
  95. package/lib/validation/validators.js +235 -0
  96. package/lib/validation/validators.js.map +1 -0
  97. package/package.json +6 -8
  98. package/lib/Wildcard.d.ts +0 -9
  99. package/lib/Wildcard.js +0 -19
  100. package/lib/Wildcard.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"expression.js","sourceRoot":"","sources":["expression.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ImplArgs } from '@traqula/core';\nimport * as l from '../lexer';\nimport type {\n Expression,\n IriTerm,\n Pattern,\n SparqlGrammarRule,\n SparqlRule,\n} from '../Sparql11types';\nimport { aggregate, builtInCall } from './builtIn';\nimport {\n var_,\n varOrTerm,\n} from './general';\nimport {\n booleanLiteral,\n iri,\n numericLiteral,\n numericLiteralNegative,\n numericLiteralPositive,\n rdfLiteral,\n} from './literals';\nimport { groupGraphPattern } from './whereClause';\n\nexport type Operation = '||' | '&&' | RelationalOperator | AdditiveOperator | aggregatorOperator | buildInOperator;\nexport type RelationalOperator = '=' | '!=' | '<' | '>' | '<=' | '>=' | 'in' | 'notin';\nexport type AdditiveOperator = '+' | '-' | '*' | '/';\nexport type unaryOperator = '!' | '+' | '-';\nexport type buildInOperator = 'STR' | 'LANG' | 'LANGMATCHES' | 'DATATYPE' | 'BOUND' | 'IRI' | 'URI' | 'BNODE' |\n 'RAND' | 'ABS' | 'CEIL' | 'FLOOR' | 'ROUND' | 'CONCAT' | 'STRLEN' | 'UCASE' | 'LCASE' | 'ENCODE_FOR_URI' |\n 'CONTAINS' | 'STRSTARTS' | 'STRENDS' | 'STRBEFORE' | 'STRAFTER' | 'YEAR' | 'MONTH' | 'DAY' | 'HOURS' | 'MINUTES' |\n 'SECONDS' | 'TIMEZONE' | 'TZ' | 'NOW' | 'UUID' | 'STRUUID' | 'MD5' | 'SHA1' | 'SHA256' | 'SHA384' | 'SHA512' |\n 'COALESCE' | 'IF' | 'STRLANG' | 'STRDT' | 'sameTerm' | 'isIRI' | 'isURI' | 'isBLANK' | 'isLITERAL' | 'isNUMERIC' |\n 'REGEX' | 'SUBSTR' | 'REPLACE' | 'EXISTS' | 'NOT EXISTS';\nexport type aggregatorOperator = 'COUNT' | 'SUM' | 'MIN' | 'MAX' | 'AVG' | 'SAMPLE' | 'GROUP_CONCAT';\n\n/**\n * [[71]](https://www.w3.org/TR/sparql11-query/#rArgList)\n */\nexport interface IArgList {\n type: 'functionCall';\n args: Expression[];\n distinct?: boolean;\n}\nexport const argList: SparqlRule<'argList', IArgList> = <const> {\n name: 'argList',\n impl: ({ CONSUME, SUBRULE1, OPTION, OR, MANY_SEP }) => () => OR<IArgList>([\n {\n ALT: () => {\n CONSUME(l.terminals.nil);\n return {\n type: 'functionCall',\n args: [],\n distinct: false,\n };\n },\n },\n {\n ALT: () => {\n const args: Expression[] = [];\n CONSUME(l.symbols.LParen);\n const distinct = OPTION(() => CONSUME(l.distinct)) && true;\n\n MANY_SEP({\n DEF: () => args.push(SUBRULE1(expression, undefined)),\n SEP: l.symbols.comma,\n });\n CONSUME(l.symbols.RParen);\n\n return {\n type: 'functionCall',\n args,\n distinct: Boolean(distinct),\n };\n },\n },\n ]),\n gImpl: ({ SUBRULE }) => (ast) => {\n const builder = [ '(' ];\n if (ast.distinct) {\n builder.push('DISTINCT');\n }\n // Slice brackets\n builder.push(SUBRULE(expression, ast.args, undefined).slice(1, -1));\n builder.push(')');\n return builder.join(' ');\n },\n};\n\nexport const expressionList: SparqlGrammarRule<'expressionList', Expression[]> = <const> {\n name: 'expressionList',\n impl: ({ CONSUME, SUBRULE, MANY_SEP, OR }) => () => OR([\n {\n ALT: () => {\n CONSUME(l.terminals.nil);\n return [];\n },\n },\n {\n ALT: () => {\n const args: Expression[] = [];\n CONSUME(l.symbols.LParen);\n MANY_SEP({\n SEP: l.symbols.comma,\n DEF: () => {\n args.push(SUBRULE(expression, undefined));\n },\n });\n CONSUME(l.symbols.RParen);\n return args;\n },\n },\n ]),\n};\n\n/**\n * [[110]](https://www.w3.org/TR/sparql11-query/#rExpression)\n */\nexport const expression: SparqlRule<'expression', Expression> = <const> {\n name: 'expression',\n impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression, undefined),\n gImpl: ({ SUBRULE }) => (ast) => {\n if (Array.isArray(ast)) {\n return `( ${ast.map(arg => SUBRULE(expression, arg, undefined)).join(', ')} )`;\n }\n if ('type' in ast) {\n if (ast.type === 'operation') {\n if ([ '||', '&&', '=', '!=', '<', '>', '<=', '>=', 'in', '+', '-', '*', '/' ].includes(ast.operator)) {\n const [ left, right ] = <[Expression, Expression]>ast.args;\n return `( ${SUBRULE(expression, left, undefined)} ${ast.operator} ${SUBRULE(expression, right, undefined)} )`;\n }\n if (ast.operator === 'notin') {\n const [ left, right ] = <[Expression, Expression]>ast.args;\n return `( ${SUBRULE(expression, left, undefined)} NOT IN ${SUBRULE(expression, right, undefined)} )`;\n }\n if ([ '!', 'UPLUS', 'UMINUS' ].includes(ast.operator)) {\n const [ expr ] = <[Expression]>ast.args;\n return `${ast.operator}${SUBRULE(expression, expr, undefined)}`;\n }\n if ([ 'in', 'notin' ].includes(ast.operator)) {\n // ExpressionList\n const [ first, rest ] = <Expression[]>ast.args;\n const operator = ast.operator === 'in' ? 'IN' : 'NOT IN';\n return `${SUBRULE(expression, first, undefined)} ${operator} ( ${SUBRULE(expression, rest, undefined)} )`;\n }\n if ([ 'exists', 'notexists' ].includes(ast.operator)) {\n const patterns = <[Pattern]>ast.args;\n const operator = ast.operator === 'exists' ? 'EXISTS' : 'NOT EXISTS';\n return `${operator} ${SUBRULE(groupGraphPattern, { type: 'group', patterns }, undefined)}`;\n }\n // It's a builtin function\n return `${ast.operator}( ${ast.args.map(arg => SUBRULE(expression, <Expression>arg, undefined)).join(', ')} )`;\n }\n if (ast.type === 'functionCall') {\n return SUBRULE(iriOrFunction, ast, undefined);\n }\n if (ast.type === 'aggregate') {\n return SUBRULE(aggregate, ast, undefined);\n }\n }\n return SUBRULE(varOrTerm, ast, undefined);\n },\n};\n\ninterface LeftDeepBuildArgs<T extends string = string> {\n expr: Expression;\n operator: T;\n}\n\nfunction constructLeftDeep<T extends string = string>(\n startGenerator: () => Expression,\n restGenerator: () => LeftDeepBuildArgs<T>,\n ACTION: ImplArgs['ACTION'],\n MANY: ImplArgs['MANY'],\n): Expression {\n// By using iterExpression, we avoid creating unnecessary arrays\n let iterExpr = startGenerator();\n MANY(() => {\n const res = restGenerator();\n ACTION(() => {\n iterExpr = {\n type: 'operation',\n operator: res.operator,\n args: [ iterExpr, res.expr ],\n };\n });\n });\n return iterExpr;\n}\n\n/**\n * [[111]](https://www.w3.org/TR/sparql11-query/#rConditionalOrExpression)\n */\nexport const conditionalOrExpression: SparqlGrammarRule<'conditionalOrExpression', Expression> = <const> {\n name: 'conditionalOrExpression',\n impl: ({ ACTION, MANY, CONSUME, SUBRULE1, SUBRULE2 }) => () =>\n constructLeftDeep(() => SUBRULE1(conditionalAndExpression, undefined), () => {\n CONSUME(l.symbols.logicOr);\n return {\n expr: SUBRULE2(conditionalAndExpression, undefined),\n operator: '||',\n };\n }, ACTION, MANY),\n};\n\n/**\n * [[112]](https://www.w3.org/TR/sparql11-query/#rConditionalAndExpression)\n */\nexport const conditionalAndExpression: SparqlGrammarRule<'conditionalAndExpression', Expression> = <const> {\n name: 'conditionalAndExpression',\n impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => () => constructLeftDeep(\n () => SUBRULE1(valueLogical, undefined),\n () => {\n CONSUME(l.symbols.logicAnd);\n return {\n expr: SUBRULE2(valueLogical, undefined),\n operator: '&&',\n };\n },\n ACTION,\n MANY,\n ),\n};\n\n/**\n * [[113]](https://www.w3.org/TR/sparql11-query/#rValueLogical)\n */\nexport const valueLogical: SparqlGrammarRule<'valueLogical', Expression> = <const> {\n name: 'valueLogical',\n impl: ({ SUBRULE }) => () => SUBRULE(relationalExpression, undefined),\n};\n\n/**\n * [[114]](https://www.w3.org/TR/sparql11-query/#rRelationalExpression)\n */\nexport const relationalExpression: SparqlGrammarRule<'relationalExpression', Expression> = <const> {\n name: 'relationalExpression',\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR, SUBRULE3, SUBRULE4, SUBRULE5, SUBRULE6, SUBRULE7 }) =>\n () => {\n const args1 = SUBRULE1(numericExpression, undefined);\n const arg2 = OPTION(() => OR<{ operator: RelationalOperator; args: Expression }>([\n {\n ALT: () => {\n CONSUME(l.symbols.equal);\n const expr = SUBRULE2(numericExpression, undefined);\n return { operator: '=', args: expr };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.notEqual);\n const expr = SUBRULE3(numericExpression, undefined);\n return { operator: '!=', args: expr };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.lessThan);\n const expr = SUBRULE4(numericExpression, undefined);\n return { operator: '<', args: expr };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.greaterThan);\n const expr = SUBRULE5(numericExpression, undefined);\n return { operator: '>', args: expr };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.lessThanEqual);\n const expr = SUBRULE6(numericExpression, undefined);\n return { operator: '<=', args: expr };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.greaterThanEqual);\n const expr = SUBRULE7(numericExpression, undefined);\n return { operator: '>=', args: expr };\n },\n },\n {\n ALT: () => {\n CONSUME(l.in_);\n const args = SUBRULE1(expressionList, undefined);\n return { operator: 'in', args };\n },\n },\n {\n ALT: () => {\n CONSUME(l.notIn);\n const args = SUBRULE2(expressionList, undefined);\n return { operator: 'notin', args };\n },\n },\n ]));\n if (!arg2) {\n return args1;\n }\n return ACTION(() => ({\n type: 'operation',\n operator: arg2.operator,\n args: [ args1, arg2.args ],\n }));\n },\n};\n\n/**\n * [[115]](https://www.w3.org/TR/sparql11-query/#rNumericExpression)\n */\nexport const numericExpression: SparqlGrammarRule<'numericExpression', Expression> = <const> {\n name: 'numericExpression',\n impl: ({ SUBRULE }) => () => SUBRULE(additiveExpression, undefined),\n};\n\n/**\n * [[116]](https://www.w3.org/TR/sparql11-query/#rAdditiveExpression)\n */\nexport const additiveExpression: SparqlGrammarRule<'additiveExpression', Expression> = <const> {\n name: 'additiveExpression',\n impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, MANY1, MANY2, OR1, OR2, OR3 }) => () =>\n constructLeftDeep(\n () => SUBRULE1(multiplicativeExpression, undefined),\n () => OR1([\n {\n ALT: () => {\n CONSUME(l.symbols.opPlus);\n return {\n operator: '+',\n expr: SUBRULE2(multiplicativeExpression, undefined),\n };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.opMinus);\n return {\n operator: '-',\n expr: SUBRULE3(multiplicativeExpression, undefined),\n };\n },\n },\n {\n ALT: () => {\n // The operator of this alternative is actually parsed as part of the signed numeric literal. (note #6)\n const { operator, args } = OR2([\n {\n ALT: () => {\n // Note #6. No spaces are allowed between the sign and a number.\n // In this rule however, we do not want to care about this.\n const integer = SUBRULE(numericLiteralPositive, undefined);\n return ACTION(() => {\n integer.value = integer.value.replace(/^\\+/u, '');\n return {\n operator: '+',\n args: [ integer ],\n };\n });\n },\n },\n {\n ALT: () => {\n const integer = SUBRULE(numericLiteralNegative, undefined);\n return ACTION(() => {\n integer.value = integer.value.replace(/^-/u, '');\n return {\n operator: '-',\n args: [ integer ],\n };\n });\n },\n },\n ]);\n const expr = constructLeftDeep(\n () => ACTION(() => args[0]),\n () => OR3<{ expr: Expression; operator: string }>([\n {\n ALT: () => {\n CONSUME(l.symbols.star);\n const expr = SUBRULE1(unaryExpression, undefined);\n return {\n operator: '*',\n expr,\n };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.slash);\n const expr = SUBRULE2(unaryExpression, undefined);\n return {\n operator: '/',\n expr,\n };\n },\n },\n ]),\n ACTION,\n MANY2,\n );\n return {\n operator,\n expr,\n };\n },\n },\n ]),\n ACTION,\n MANY1,\n ),\n};\n\n/**\n * [[117]](https://www.w3.org/TR/sparql11-query/#rMultiplicativeExpression)\n */\nexport const multiplicativeExpression: SparqlGrammarRule<'multiplicativeExpression', Expression> = <const> {\n name: 'multiplicativeExpression',\n impl: ({ ACTION, CONSUME, MANY, SUBRULE1, SUBRULE2, SUBRULE3, OR }) => () => constructLeftDeep(\n () => SUBRULE1(unaryExpression, undefined),\n () => OR<LeftDeepBuildArgs>([\n {\n ALT: () => {\n CONSUME(l.symbols.star);\n const expr = SUBRULE2(unaryExpression, undefined);\n return {\n operator: '*',\n expr,\n };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.slash);\n const expr = SUBRULE3(unaryExpression, undefined);\n return {\n operator: '/',\n expr,\n };\n },\n },\n ]),\n ACTION,\n MANY,\n ),\n};\n\n/**\n * [[118]](https://www.w3.org/TR/sparql11-query/#rUnaryExpression)\n */\nexport const unaryExpression: SparqlGrammarRule<'unaryExpression', Expression> = <const> {\n name: 'unaryExpression',\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, SUBRULE3, SUBRULE4, OR }) => () => OR<Expression>([\n {\n ALT: () => {\n CONSUME(l.symbols.exclamation);\n const expr = SUBRULE1(primaryExpression, undefined);\n return {\n type: 'operation',\n operator: '!',\n args: [ expr ],\n };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.opPlus);\n const expr = SUBRULE2(primaryExpression, undefined);\n return {\n type: 'operation',\n operator: 'UPLUS',\n args: [ expr ],\n };\n },\n },\n {\n ALT: () => {\n CONSUME(l.symbols.opMinus);\n const expr = SUBRULE3(primaryExpression, undefined);\n return {\n type: 'operation',\n operator: 'UMINUS',\n args: [ expr ],\n };\n },\n },\n { ALT: () => SUBRULE4(primaryExpression, undefined) },\n ]),\n};\n\n/**\n * [[119]](https://www.w3.org/TR/sparql11-query/#rPrimaryExpression)\n */\nexport const primaryExpression: SparqlGrammarRule<'primaryExpression', Expression> = <const> {\n name: 'primaryExpression',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(brackettedExpression, undefined) },\n { ALT: () => SUBRULE(builtInCall, undefined) },\n { ALT: () => SUBRULE(iriOrFunction, undefined) },\n { ALT: () => SUBRULE(rdfLiteral, undefined) },\n { ALT: () => SUBRULE(numericLiteral, undefined) },\n { ALT: () => SUBRULE(booleanLiteral, undefined) },\n { ALT: () => SUBRULE(var_, undefined) },\n ]),\n};\n\n/**\n * [[120]](https://www.w3.org/TR/sparql11-query/#rBrackettedExpression)\n */\nexport const brackettedExpression: SparqlGrammarRule<'brackettedExpression', Expression> = <const> {\n name: 'brackettedExpression',\n impl: ({ SUBRULE, CONSUME }) => () => {\n CONSUME(l.symbols.LParen);\n const expr = SUBRULE(expression, undefined);\n CONSUME(l.symbols.RParen);\n\n return expr;\n },\n};\n\n/**\n * [[128]](https://www.w3.org/TR/sparql11-query/#ririOrFunction)\n */\nexport const iriOrFunction: SparqlRule<'iriOrFunction', IriTerm | (IArgList & { function: IriTerm })> = <const> {\n name: 'iriOrFunction',\n impl: ({ SUBRULE, OPTION }) => () => {\n const iriVal = SUBRULE(iri, undefined);\n const args = OPTION(() => SUBRULE(argList, undefined));\n return args ?\n {\n ...args,\n function: iriVal,\n } :\n iriVal;\n },\n gImpl: ({ SUBRULE }) => (ast) => {\n if ('function' in ast) {\n return `${SUBRULE(iri, ast.function, undefined)}${SUBRULE(argList, ast, undefined)}`;\n }\n return SUBRULE(iri, ast, undefined);\n },\n};\n"]}
1
+ {"version":3,"file":"expression.js","sourceRoot":"","sources":["expression.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ImplArgs, RuleDefReturn, Wrap } from '@traqula/core';\nimport * as l from '../lexer';\nimport type {\n Expression,\n ExpressionFunctionCall,\n ExpressionOperation,\n TermIri,\n TermLiteral,\n} from '../RoundTripTypes';\nimport type {\n SparqlGrammarRule,\n SparqlRule,\n} from '../Sparql11types';\nimport { aggregate, builtInCall } from './builtIn';\nimport {\n var_,\n varOrTerm,\n} from './general';\nimport {\n booleanLiteral,\n iri,\n numericLiteral,\n numericLiteralNegative,\n numericLiteralPositive,\n rdfLiteral,\n} from './literals';\nimport { groupGraphPattern } from './whereClause';\n\n/**\n * [[71]](https://www.w3.org/TR/sparql11-query/#rArgList)\n */\nexport interface IArgList {\n args: Expression[];\n distinct: boolean;\n}\nexport const argList: SparqlRule<'argList', Wrap<IArgList>> = <const> {\n name: 'argList',\n impl: ({ ACTION, CONSUME, SUBRULE1, OPTION, OR, AT_LEAST_ONE_SEP }) => C =>\n OR<RuleDefReturn<typeof argList>>([\n { ALT: () => {\n const nil = CONSUME(l.terminals.nil);\n return ACTION(() =>\n C.factory.wrap({ args: [], distinct: false }, C.factory.sourceLocation(nil)));\n } },\n { ALT: () => {\n const args: Expression[] = [];\n const open = CONSUME(l.symbols.LParen);\n const distinct = OPTION(() => {\n CONSUME(l.distinct);\n return true;\n }) ?? false;\n\n AT_LEAST_ONE_SEP({\n SEP: l.symbols.comma,\n DEF: () => {\n const arg = SUBRULE1(expression, undefined);\n args.push(arg);\n },\n });\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() =>\n C.factory.wrap({ args, distinct }, C.factory.sourceLocation(open, close)));\n } },\n ]),\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORD('(');\n if (ast.val.distinct) {\n PRINT_WORD('distinct');\n }\n });\n const [ head, ...tail ] = ast.val.args;\n if (head) {\n SUBRULE(expression, head, undefined);\n }\n for (const expr of tail) {\n F.printFilter(ast, () => PRINT_WORD(','));\n SUBRULE(expression, expr, undefined);\n }\n F.printFilter(ast, () => PRINT_WORD(')'));\n },\n};\n\n/**\n * [[72]](https://www.w3.org/TR/sparql11-query/#rConstructTemplate)\n */\nexport const expressionList: SparqlGrammarRule<'expressionList', Wrap<Expression[]>> = <const> {\n name: 'expressionList',\n impl: ({ ACTION, CONSUME, MANY, OR, SUBRULE1, SUBRULE2 }) => C => OR([\n { ALT: () => {\n const nil = CONSUME(l.terminals.nil);\n return ACTION(() => C.factory.wrap([], C.factory.sourceLocation(nil)));\n } },\n { ALT: () => {\n const open = CONSUME(l.symbols.LParen);\n const expr1 = SUBRULE1(expression, undefined);\n const args: Expression[] = [ expr1 ];\n MANY(() => {\n CONSUME(l.symbols.comma);\n const expr = SUBRULE2(expression, undefined);\n args.push(expr);\n });\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() => C.factory.wrap(args, C.factory.sourceLocation(open, close)));\n } },\n ]),\n};\n\nconst infixOperators = new Set([ 'in', 'notin', '||', '&&', '=', '!=', '<', '>', '<=', '>=', '+', '-', '*', '/' ]);\nconst prefixOperator = new Set([ '!', 'UPLUS', 'UMINUS' ]);\n\n/**\n * [[110]](https://www.w3.org/TR/sparql11-query/#rExpression)\n */\nexport const expression: SparqlRule<'expression', Expression> = <const> {\n name: 'expression',\n impl: ({ SUBRULE }) => () => SUBRULE(conditionalOrExpression, undefined),\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n if (F.isTerm(ast)) {\n SUBRULE(varOrTerm, ast, undefined);\n } else if (F.isExpressionOperator(ast)) {\n if (infixOperators.has(ast.operator)) {\n const [ left, ...right ] = ast.args;\n F.printFilter(ast, () => PRINT_WORD('('));\n SUBRULE(expression, left, undefined);\n F.printFilter(ast, () => {\n if (ast.operator === 'notin') {\n PRINT_WORD('NOT IN');\n } else if (ast.operator === 'in') {\n PRINT_WORD('IN');\n } else {\n PRINT_WORD(ast.operator);\n }\n });\n if (right.length === 1) {\n SUBRULE(expression, right[0], undefined);\n } else {\n SUBRULE(argList, F.wrap({ args: right, distinct: false }, ast.loc), undefined);\n }\n F.printFilter(ast, () => PRINT_WORD(')'));\n } else if (prefixOperator.has(ast.operator)) {\n const [ expr ] = <[Expression]>ast.args;\n F.printFilter(ast, () => PRINT_WORD(ast.operator));\n SUBRULE(expression, expr, undefined);\n } else {\n F.printFilter(ast, () => PRINT_WORD(ast.operator, '('));\n const [ head, ...tail ] = ast.args;\n if (head) {\n SUBRULE(expression, head, undefined);\n }\n for (const arg of tail) {\n F.printFilter(ast, () => PRINT_WORD(','));\n SUBRULE(expression, arg, undefined);\n }\n F.printFilter(ast, () => PRINT_WORD(')'));\n }\n } else if (F.isExpressionPatternOperation(ast)) {\n const patterns = ast.args;\n F.printFilter(ast, () => PRINT_WORD(ast.operator === 'exists' ? 'EXISTS' : 'NOT EXISTS'));\n SUBRULE(groupGraphPattern, patterns, undefined);\n } else if (F.isExpressionFunctionCall(ast)) {\n SUBRULE(iriOrFunction, ast, undefined);\n } else if (F.isExpressionAggregate(ast)) {\n SUBRULE(aggregate, ast, undefined);\n }\n },\n};\n\ntype LeftDeepBuildArgs = (left: Expression) => ExpressionOperation;\n\nfunction constructLeftDeep(\n startGenerator: () => Expression,\n restGenerator: () => LeftDeepBuildArgs,\n ACTION: ImplArgs['ACTION'],\n MANY: ImplArgs['MANY'],\n): ExpressionOperation | Expression {\n // By using iterExpression, we avoid creating unnecessary arrays\n let iterExpr = startGenerator();\n MANY(() => {\n const res = restGenerator();\n ACTION(() => {\n iterExpr = res(iterExpr);\n });\n });\n return iterExpr;\n}\n\n/**\n * [[111]](https://www.w3.org/TR/sparql11-query/#rConditionalOrExpression)\n */\nexport const conditionalOrExpression: SparqlGrammarRule<'conditionalOrExpression', ExpressionOperation | Expression> =\n <const> {\n name: 'conditionalOrExpression',\n impl: ({ ACTION, MANY, CONSUME, SUBRULE1, SUBRULE2 }) => C => constructLeftDeep(\n () => SUBRULE1(conditionalAndExpression, undefined),\n () => {\n CONSUME(l.symbols.logicOr);\n const args = SUBRULE2(conditionalAndExpression, undefined);\n return left => ACTION(() =>\n C.factory.expressionOperation('||', [ left, args ], C.factory.sourceLocation(left, args)));\n },\n ACTION,\n MANY,\n ),\n };\n\n/**\n * [[112]](https://www.w3.org/TR/sparql11-query/#rConditionalAndExpression)\n */\nexport const conditionalAndExpression: SparqlGrammarRule<'conditionalAndExpression', Expression> = <const> {\n name: 'conditionalAndExpression',\n impl: ({ ACTION, MANY, SUBRULE1, SUBRULE2, CONSUME }) => C => constructLeftDeep(\n () => SUBRULE1(valueLogical, undefined),\n () => {\n CONSUME(l.symbols.logicAnd);\n const arg = SUBRULE2(valueLogical, undefined);\n return left => ACTION(() =>\n C.factory.expressionOperation('&&', [ left, arg ], C.factory.sourceLocation(left, arg)));\n },\n ACTION,\n MANY,\n ),\n};\n\n/**\n * [[113]](https://www.w3.org/TR/sparql11-query/#rValueLogical)\n */\nexport const valueLogical: SparqlGrammarRule<'valueLogical', Expression> = <const> {\n name: 'valueLogical',\n impl: ({ SUBRULE }) => () => SUBRULE(relationalExpression, undefined),\n};\n\n/**\n * [[114]](https://www.w3.org/TR/sparql11-query/#rRelationalExpression)\n */\nexport const relationalExpression:\nSparqlGrammarRule<'relationalExpression', ExpressionOperation | Expression> = <const>{\n name: 'relationalExpression',\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, OR3 }) => (C) => {\n const args1 = SUBRULE1(numericExpression, undefined);\n const expression = OPTION<ExpressionOperation>(() =>\n OR1<ExpressionOperation>([\n { ALT: () => {\n // Stay in numeric;\n const operator = OR2([\n { ALT: () => CONSUME(l.symbols.equal) },\n { ALT: () => CONSUME(l.symbols.notEqual) },\n { ALT: () => CONSUME(l.symbols.lessThan) },\n { ALT: () => CONSUME(l.symbols.greaterThan) },\n { ALT: () => CONSUME(l.symbols.lessThanEqual) },\n { ALT: () => CONSUME(l.symbols.greaterThanEqual) },\n ]);\n const expr = SUBRULE2(numericExpression, undefined);\n return ACTION(() => C.factory.expressionOperation(\n operator.image,\n [ args1, expr ],\n C.factory.sourceLocation(args1, expr),\n ));\n } },\n { ALT: () => {\n const operator = OR3([\n { ALT: () => CONSUME(l.in_) },\n { ALT: () => CONSUME(l.notIn) },\n ]);\n const args = SUBRULE1(expressionList, undefined);\n return ACTION(() => C.factory.expressionOperation(\n operator.image,\n [ args1, ...args.val ],\n C.factory.sourceLocation(args1, args),\n ));\n } },\n ]));\n return expression ?? args1;\n },\n};\n\n/**\n * [[115]](https://www.w3.org/TR/sparql11-query/#rNumericExpression)\n */\nexport const numericExpression: SparqlGrammarRule<'numericExpression', Expression> = <const> {\n name: 'numericExpression',\n impl: ({ SUBRULE }) => () => SUBRULE(additiveExpression, undefined),\n};\n\n/**\n * [[116]](https://www.w3.org/TR/sparql11-query/#rAdditiveExpression)\n */\nexport const additiveExpression: SparqlGrammarRule<'additiveExpression', Expression> = <const> {\n name: 'additiveExpression',\n impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, MANY1, MANY2, OR1, OR2, OR3, OR4 }) => C =>\n constructLeftDeep(\n () => SUBRULE1(multiplicativeExpression, undefined),\n () => OR1<(left: Expression) => ExpressionOperation>([\n { ALT: () => {\n // Multiplicative expression as 2nd argument\n const operator = OR2([\n { ALT: () => CONSUME(l.symbols.opPlus) },\n { ALT: () => CONSUME(l.symbols.opMinus) },\n ]);\n const arg = SUBRULE2(multiplicativeExpression, undefined);\n return ACTION(() => left =>\n C.factory.expressionOperation(operator.image, [ left, arg ], C.factory.sourceLocation(left, arg)));\n } },\n { ALT: () => {\n // The operator of this alternative is actually parsed as part of the signed numeric literal. (note #6)\n const { operator, startInt } = OR3<{ operator: '+' | '-'; startInt: TermLiteral }>([\n { ALT: () => {\n // Note #6. No spaces are allowed between the sign and a number.\n // In this rule however, we do not want to care about this.\n const integer = SUBRULE(numericLiteralPositive, undefined);\n return ACTION(() => {\n integer.value = integer.value.replace(/^\\+/u, '');\n return <const> {\n operator: '+',\n startInt: integer,\n };\n });\n } },\n { ALT: () => {\n const integer = SUBRULE(numericLiteralNegative, undefined);\n return ACTION(() => {\n integer.value = integer.value.replace(/^-/u, '');\n return <const> {\n operator: '-',\n startInt: integer,\n };\n });\n } },\n ]);\n const multiplicativeExpr = constructLeftDeep(\n () => ACTION(() => startInt),\n () => {\n const innerOperator = OR4([\n { ALT: () => CONSUME(l.symbols.star) },\n { ALT: () => CONSUME(l.symbols.slash) },\n ]);\n const innerExpr = SUBRULE1(unaryExpression, undefined);\n return ACTION(() => leftInner => C.factory.expressionOperation(\n innerOperator.image,\n [ leftInner, innerExpr ],\n C.factory.sourceLocation(leftInner, innerExpr),\n ));\n },\n ACTION,\n MANY2,\n );\n return left => C.factory.expressionOperation(\n operator,\n [ left, multiplicativeExpr ],\n C.factory.sourceLocation(left, multiplicativeExpr),\n );\n } },\n ]),\n ACTION,\n MANY1,\n ),\n};\n\n/**\n * [[117]](https://www.w3.org/TR/sparql11-query/#rMultiplicativeExpression)\n */\nexport const multiplicativeExpression: SparqlGrammarRule<'multiplicativeExpression', Expression> = <const> {\n name: 'multiplicativeExpression',\n impl: ({ ACTION, CONSUME, MANY, SUBRULE1, SUBRULE2, OR }) => C => constructLeftDeep(\n () => SUBRULE1(unaryExpression, undefined),\n () => {\n const operator = OR([\n { ALT: () => CONSUME(l.symbols.star) },\n { ALT: () => CONSUME(l.symbols.slash) },\n ]);\n const expr = SUBRULE2(unaryExpression, undefined);\n return (left: Expression) => ({\n type: 'expression',\n subType: 'operation',\n operator: operator.image,\n args: [ left, expr ],\n loc: C.factory.sourceLocation(left, expr),\n });\n },\n ACTION,\n MANY,\n ),\n};\n\n/**\n * [[118]](https://www.w3.org/TR/sparql11-query/#rUnaryExpression)\n */\nexport const unaryExpression: SparqlGrammarRule<'unaryExpression', Expression> = <const> {\n name: 'unaryExpression',\n impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OR1, OR2 }) => C => OR1<Expression>([\n { ALT: () => SUBRULE1(primaryExpression, undefined) },\n { ALT: () => {\n const operator = OR2([\n { ALT: () => CONSUME(l.symbols.exclamation) },\n { ALT: () => CONSUME(l.symbols.opPlus) },\n { ALT: () => CONSUME(l.symbols.opMinus) },\n ]);\n const expr = SUBRULE2(primaryExpression, undefined);\n return ACTION(() => ({\n type: 'expression',\n subType: 'operation',\n operator: operator.image === '!' ? '!' : (operator.image === '+' ? 'UPLUS' : 'UMINUS'),\n args: [ expr ],\n loc: C.factory.sourceLocation(operator, expr),\n }));\n } },\n ]),\n};\n\n/**\n * [[119]](https://www.w3.org/TR/sparql11-query/#rPrimaryExpression)\n */\nexport const primaryExpression: SparqlGrammarRule<'primaryExpression', Expression> = <const> {\n name: 'primaryExpression',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(brackettedExpression, undefined) },\n { ALT: () => SUBRULE(builtInCall, undefined) },\n { ALT: () => SUBRULE(iriOrFunction, undefined) },\n { ALT: () => SUBRULE(rdfLiteral, undefined) },\n { ALT: () => SUBRULE(numericLiteral, undefined) },\n { ALT: () => SUBRULE(booleanLiteral, undefined) },\n { ALT: () => SUBRULE(var_, undefined) },\n ]),\n};\n\n/**\n * [[120]](https://www.w3.org/TR/sparql11-query/#rBrackettedExpression)\n */\nexport const brackettedExpression: SparqlGrammarRule<'brackettedExpression', Expression> = <const> {\n name: 'brackettedExpression',\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const open = CONSUME(l.symbols.LParen);\n const expr = SUBRULE(expression, undefined);\n const close = CONSUME(l.symbols.RParen);\n return ACTION(() => {\n expr.loc = C.factory.sourceLocation(open, close);\n return expr;\n });\n },\n};\n\n/**\n * [[128]](https://www.w3.org/TR/sparql11-query/#ririOrFunction)\n */\nexport const iriOrFunction: SparqlRule<'iriOrFunction', TermIri | ExpressionFunctionCall> = <const> {\n name: 'iriOrFunction',\n impl: ({ ACTION, SUBRULE, OPTION }) => (C) => {\n const iriVal = SUBRULE(iri, undefined);\n const functionCall = OPTION<ExpressionFunctionCall>(() => {\n const args = SUBRULE(argList, undefined);\n return ACTION(() => {\n const distinct = args.val.distinct;\n if (!C.parseMode.has('canParseAggregate') && distinct) {\n throw new Error(`DISTINCT implies that this function is an aggregated function, which is not allowed in this context.`);\n }\n return {\n type: 'expression',\n subType: 'functionCall',\n function: iriVal,\n args: args.val.args,\n distinct,\n loc: C.factory.sourceLocation(iriVal, args),\n };\n });\n });\n return functionCall ?? iriVal;\n },\n gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {\n if (F.isTermNamed(ast)) {\n SUBRULE(iri, ast, undefined);\n } else {\n SUBRULE(iri, ast.function, undefined);\n SUBRULE(argList, F.wrap({ args: ast.args, distinct: ast.distinct }, ast.loc), undefined);\n }\n },\n};\n"]}
@@ -1,23 +1,23 @@
1
- import type { GraphTerm, Term, VerbA, IriTerm, VariableTerm, BaseQuery, SparqlGrammarRule, SparqlRule } from '../Sparql11types';
1
+ import type { ContextDefinition, ContextDefinitionBase, ContextDefinitionPrefix, GraphTerm, Term, TermIri, TermVariable } from '../RoundTripTypes';
2
+ import type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';
2
3
  /**
3
4
  * [[4]](https://www.w3.org/TR/sparql11-query/#rPrologue)
4
5
  */
5
- export declare const prologue: SparqlRule<'prologue', Pick<BaseQuery, 'base' | 'prefixes'>>;
6
+ export declare const prologue: SparqlRule<'prologue', ContextDefinition[]>;
6
7
  /**
7
8
  * Registers base IRI in the context and returns it.
8
9
  * [[5]](https://www.w3.org/TR/sparql11-query/#rBaseDecl)
9
10
  */
10
- export declare const baseDecl: SparqlGrammarRule<'baseDecl', string>;
11
+ export declare const baseDecl: SparqlRule<'baseDecl', ContextDefinitionBase>;
11
12
  /**
12
13
  * Registers prefix in the context and returns registered key-value-pair.
13
14
  * [[6]](https://www.w3.org/TR/sparql11-query/#rPrefixDecl)
14
15
  */
15
- export declare const prefixDecl: SparqlGrammarRule<'prefixDecl', [string, string]>;
16
+ export declare const prefixDecl: SparqlRule<'prefixDecl', ContextDefinitionPrefix>;
16
17
  /**
17
18
  * [[78]](https://www.w3.org/TR/sparql11-query/#rVerb)
18
19
  */
19
- export declare const verb: SparqlGrammarRule<'verb', VariableTerm | IriTerm>;
20
- export declare const verbA: SparqlGrammarRule<'VerbA', VerbA>;
20
+ export declare const verb: SparqlGrammarRule<'verb', TermVariable | TermIri>;
21
21
  /**
22
22
  * [[106]](https://www.w3.org/TR/sparql11-query/#rVarOrTerm)
23
23
  */
@@ -25,11 +25,11 @@ export declare const varOrTerm: SparqlRule<'varOrTerm', Term>;
25
25
  /**
26
26
  * [[107]](https://www.w3.org/TR/sparql11-query/#rVarOrIri)
27
27
  */
28
- export declare const varOrIri: SparqlGrammarRule<'varOrIri', IriTerm | VariableTerm>;
28
+ export declare const varOrIri: SparqlGrammarRule<'varOrIri', TermIri | TermVariable>;
29
29
  /**
30
30
  * [[108]](https://www.w3.org/TR/sparql11-query/#rVar)
31
31
  */
32
- export declare const var_: SparqlRule<'var', VariableTerm>;
32
+ export declare const var_: SparqlRule<'var', TermVariable>;
33
33
  /**
34
34
  * [[109]](https://www.w3.org/TR/sparql11-query/#rGraphTerm)
35
35
  */
@@ -1,49 +1,30 @@
1
- import { CommonIRIs, resolveIRI } from '../grammar-helpers/utils';
1
+ import { CommonIRIs } from '../grammar-helpers/utils';
2
2
  import * as l from '../lexer';
3
- import { blankNode, booleanLiteral, iri, numericLiteral, rdfLiteral } from './literals';
3
+ import { blankNode, booleanLiteral, iri, iriFull, numericLiteral, rdfLiteral, verbA } from './literals';
4
4
  /**
5
5
  * [[4]](https://www.w3.org/TR/sparql11-query/#rPrologue)
6
6
  */
7
7
  export const prologue = {
8
8
  name: 'prologue',
9
- impl: ({ ACTION, SUBRULE, MANY, OR }) => (C) => {
10
- const result = ACTION(() => ({
11
- prefixes: {},
12
- ...(C.baseIRI && { base: C.baseIRI }),
13
- }));
14
- MANY(() => {
15
- OR([
16
- {
17
- ALT: () => {
18
- const base = SUBRULE(baseDecl, undefined);
19
- ACTION(() => result.base = base);
20
- },
21
- },
22
- {
23
- ALT: () => {
24
- // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
25
- // We might need to check this.
26
- const pref = SUBRULE(prefixDecl, undefined);
27
- ACTION(() => {
28
- const [name, value] = pref;
29
- result.prefixes[name] = value;
30
- });
31
- },
32
- },
33
- ]);
34
- });
9
+ impl: ({ SUBRULE, MANY, OR }) => () => {
10
+ const result = [];
11
+ MANY(() => OR([
12
+ { ALT: () => result.push(SUBRULE(baseDecl, undefined)) },
13
+ // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
14
+ // We might need to check this.
15
+ { ALT: () => result.push(SUBRULE(prefixDecl, undefined)) },
16
+ ]));
35
17
  return result;
36
18
  },
37
- gImpl: () => (ast) => {
38
- const rules = [];
39
- if (ast.base) {
40
- rules.push(`BASE <${ast.base}>`);
41
- }
42
- // eslint-disable-next-line ts/no-unnecessary-type-assertion
43
- for (const [key, value] of Object.entries(ast.prefixes)) {
44
- rules.push(`PREFIX ${key}: <${value}>`);
19
+ gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {
20
+ for (const context of ast) {
21
+ if (F.isContextDefinitionBase(context)) {
22
+ SUBRULE(baseDecl, context, undefined);
23
+ }
24
+ else if (F.isContextDefinitionPrefix(context)) {
25
+ SUBRULE(prefixDecl, context, undefined);
26
+ }
45
27
  }
46
- return rules.join('\n');
47
28
  },
48
29
  };
49
30
  /**
@@ -52,13 +33,14 @@ export const prologue = {
52
33
  */
53
34
  export const baseDecl = {
54
35
  name: 'baseDecl',
55
- impl: ({ CONSUME, ACTION }) => (C) => {
56
- CONSUME(l.baseDecl);
57
- const base = CONSUME(l.terminals.iriRef).image.slice(1, -1);
58
- return ACTION(() => {
59
- C.baseIRI = base;
60
- return base;
61
- });
36
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
37
+ const base = CONSUME(l.baseDecl);
38
+ const val = SUBRULE(iriFull, undefined);
39
+ return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));
40
+ },
41
+ gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
42
+ F.printFilter(ast, () => PRINT_WORD('BASE'));
43
+ SUBRULE(iri, ast.value, undefined);
62
44
  },
63
45
  };
64
46
  /**
@@ -67,15 +49,17 @@ export const baseDecl = {
67
49
  */
68
50
  export const prefixDecl = {
69
51
  name: 'prefixDecl',
70
- impl: ({ CONSUME, ACTION }) => (C) => {
71
- CONSUME(l.prefixDecl);
52
+ impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {
53
+ const prefix = CONSUME(l.prefixDecl);
72
54
  const name = CONSUME(l.terminals.pNameNs).image.slice(0, -1);
73
- const value = CONSUME(l.terminals.iriRef).image.slice(1, -1);
74
- return ACTION(() => {
75
- const fullIri = resolveIRI(value, C.baseIRI);
76
- C.prefixes[name] = fullIri;
77
- return [name, fullIri];
55
+ const value = SUBRULE(iriFull, undefined);
56
+ return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));
57
+ },
58
+ gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F }) => {
59
+ F.printFilter(ast, () => {
60
+ PRINT_WORDS('PREFIX', `${ast.key}:`);
78
61
  });
62
+ SUBRULE(iri, ast.value, undefined);
79
63
  },
80
64
  };
81
65
  /**
@@ -85,18 +69,9 @@ export const verb = {
85
69
  name: 'verb',
86
70
  impl: ({ SUBRULE, OR }) => () => OR([
87
71
  { ALT: () => SUBRULE(varOrIri, undefined) },
88
- {
89
- ALT: () => SUBRULE(verbA, undefined),
90
- },
72
+ { ALT: () => SUBRULE(verbA, undefined) },
91
73
  ]),
92
74
  };
93
- export const verbA = {
94
- name: 'VerbA',
95
- impl: ({ ACTION, CONSUME }) => (C) => {
96
- CONSUME(l.a);
97
- return ACTION(() => C.dataFactory.namedNode(CommonIRIs.TYPE));
98
- },
99
- };
100
75
  /**
101
76
  * [[106]](https://www.w3.org/TR/sparql11-query/#rVarOrTerm)
102
77
  */
@@ -106,17 +81,11 @@ export const varOrTerm = {
106
81
  { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(var_, undefined) },
107
82
  { ALT: () => SUBRULE(graphTerm, undefined) },
108
83
  ]),
109
- gImpl: ({ SUBRULE }) => (ast) => {
110
- if (ast.termType === 'Variable') {
84
+ gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {
85
+ if (F.isTermVariable(ast)) {
111
86
  return SUBRULE(var_, ast, undefined);
112
87
  }
113
- if (ast.termType === 'NamedNode') {
114
- return SUBRULE(iri, ast, undefined);
115
- }
116
- if (ast.termType === 'BlankNode') {
117
- return SUBRULE(blankNode, ast, undefined);
118
- }
119
- return SUBRULE(rdfLiteral, ast, undefined);
88
+ return SUBRULE(graphTerm, ast, undefined);
120
89
  },
121
90
  };
122
91
  /**
@@ -135,18 +104,15 @@ export const varOrIri = {
135
104
  export const var_ = {
136
105
  name: 'var',
137
106
  impl: ({ ACTION, CONSUME, OR }) => (C) => {
138
- const varVal = OR([
139
- { ALT: () => CONSUME(l.terminals.var1).image.slice(1) },
140
- { ALT: () => CONSUME(l.terminals.var2).image.slice(1) },
107
+ const varToken = OR([
108
+ { ALT: () => CONSUME(l.terminals.var1) },
109
+ { ALT: () => CONSUME(l.terminals.var2) },
141
110
  ]);
142
- ACTION(() => {
143
- if (!C.parseMode.has('canParseVars')) {
144
- throw new Error('Variables are not allowed here');
145
- }
146
- });
147
- return ACTION(() => C.dataFactory.variable(varVal));
111
+ return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));
112
+ },
113
+ gImpl: ({ PRINT_WORD }) => (ast, { factory: F }) => {
114
+ F.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));
148
115
  },
149
- gImpl: () => ast => `?${ast.value}`,
150
116
  };
151
117
  /**
152
118
  * [[109]](https://www.w3.org/TR/sparql11-query/#rGraphTerm)
@@ -159,21 +125,20 @@ export const graphTerm = {
159
125
  { ALT: () => SUBRULE(numericLiteral, undefined) },
160
126
  { ALT: () => SUBRULE(booleanLiteral, undefined) },
161
127
  { GATE: () => C.parseMode.has('canCreateBlankNodes'), ALT: () => SUBRULE(blankNode, undefined) },
162
- {
163
- ALT: () => {
164
- CONSUME(l.terminals.nil);
165
- return ACTION(() => C.dataFactory.namedNode(CommonIRIs.NIL));
166
- },
167
- },
128
+ { ALT: () => {
129
+ const tokenNil = CONSUME(l.terminals.nil);
130
+ return ACTION(() => C.factory.namedNode(C.factory.sourceLocation(tokenNil), CommonIRIs.NIL));
131
+ } },
168
132
  ]),
169
- gImpl: ({ SUBRULE }) => (ast) => {
170
- switch (ast.termType) {
171
- case 'BlankNode':
172
- return SUBRULE(blankNode, ast, undefined);
173
- case 'NamedNode':
174
- return SUBRULE(iri, ast, undefined);
175
- case 'Literal':
176
- return SUBRULE(rdfLiteral, ast, undefined);
133
+ gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {
134
+ if (F.isTermNamed(ast)) {
135
+ SUBRULE(iri, ast, undefined);
136
+ }
137
+ else if (F.isTermLiteral(ast)) {
138
+ SUBRULE(rdfLiteral, ast, undefined);
139
+ }
140
+ else if (F.isTermBlank(ast)) {
141
+ SUBRULE(blankNode, ast, undefined);
177
142
  }
178
143
  },
179
144
  };
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["general.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommonIRIs, resolveIRI } from '../grammar-helpers/utils';\nimport * as l from '../lexer';\nimport type {\n GraphTerm,\n Term,\n VerbA,\n IriTerm,\n VariableTerm,\n BaseQuery,\n SparqlGrammarRule,\n SparqlRule,\n} from '../Sparql11types';\nimport { blankNode, booleanLiteral, iri, numericLiteral, rdfLiteral } from './literals';\n\n/**\n * [[4]](https://www.w3.org/TR/sparql11-query/#rPrologue)\n */\nexport const prologue: SparqlRule<'prologue', Pick<BaseQuery, 'base' | 'prefixes'>> = <const> {\n name: 'prologue',\n impl: ({ ACTION, SUBRULE, MANY, OR }) => (C) => {\n const result: Pick<BaseQuery, 'base' | 'prefixes'> = ACTION(() => ({\n prefixes: {},\n ...(C.baseIRI && { base: C.baseIRI }),\n }));\n MANY(() => {\n OR([\n {\n ALT: () => {\n const base = SUBRULE(baseDecl, undefined);\n ACTION(() => result.base = base);\n },\n },\n {\n ALT: () => {\n // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.\n // We might need to check this.\n const pref = SUBRULE(prefixDecl, undefined);\n ACTION(() => {\n const [ name, value ] = pref;\n result.prefixes[name] = value;\n });\n },\n },\n ]);\n });\n return result;\n },\n gImpl: () => (ast) => {\n const rules: string[] = [];\n if (ast.base) {\n rules.push(`BASE <${ast.base}>`);\n }\n // eslint-disable-next-line ts/no-unnecessary-type-assertion\n for (const [ key, value ] of <[string, string][]> Object.entries(ast.prefixes)) {\n rules.push(`PREFIX ${key}: <${value}>`);\n }\n return rules.join('\\n');\n },\n};\n\n/**\n * Registers base IRI in the context and returns it.\n * [[5]](https://www.w3.org/TR/sparql11-query/#rBaseDecl)\n */\nexport const baseDecl: SparqlGrammarRule<'baseDecl', string> = <const> {\n name: 'baseDecl',\n impl: ({ CONSUME, ACTION }) => (C) => {\n CONSUME(l.baseDecl);\n const base = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n return ACTION(() => {\n C.baseIRI = base;\n return base;\n });\n },\n};\n\n/**\n * Registers prefix in the context and returns registered key-value-pair.\n * [[6]](https://www.w3.org/TR/sparql11-query/#rPrefixDecl)\n */\nexport const prefixDecl: SparqlGrammarRule<'prefixDecl', [string, string]> = <const> {\n name: 'prefixDecl',\n impl: ({ CONSUME, ACTION }) => (C) => {\n CONSUME(l.prefixDecl);\n const name = CONSUME(l.terminals.pNameNs).image.slice(0, -1);\n const value = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n\n return ACTION(() => {\n const fullIri = resolveIRI(value, C.baseIRI);\n C.prefixes[name] = fullIri;\n return [ name, fullIri ];\n });\n },\n};\n\n/**\n * [[78]](https://www.w3.org/TR/sparql11-query/#rVerb)\n */\nexport const verb: SparqlGrammarRule<'verb', VariableTerm | IriTerm> = <const> {\n name: 'verb',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(varOrIri, undefined) },\n {\n ALT: () => SUBRULE(verbA, undefined),\n },\n ]),\n};\n\nexport const verbA: SparqlGrammarRule<'VerbA', VerbA> = <const> {\n name: 'VerbA',\n impl: ({ ACTION, CONSUME }) => (C) => {\n CONSUME(l.a);\n return ACTION(() => C.dataFactory.namedNode(CommonIRIs.TYPE));\n },\n};\n\n/**\n * [[106]](https://www.w3.org/TR/sparql11-query/#rVarOrTerm)\n */\nexport const varOrTerm: SparqlRule<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ SUBRULE, OR }) => C => OR<Term>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(var_, undefined) },\n { ALT: () => SUBRULE(graphTerm, undefined) },\n ]),\n gImpl: ({ SUBRULE }) => (ast) => {\n if (ast.termType === 'Variable') {\n return SUBRULE(var_, ast, undefined);\n }\n if (ast.termType === 'NamedNode') {\n return SUBRULE(iri, <IriTerm> ast, undefined);\n }\n if (ast.termType === 'BlankNode') {\n return SUBRULE(blankNode, ast, undefined);\n }\n return SUBRULE(rdfLiteral, ast, undefined);\n },\n};\n\n/**\n * [[107]](https://www.w3.org/TR/sparql11-query/#rVarOrIri)\n */\nexport const varOrIri: SparqlGrammarRule<'varOrIri', IriTerm | VariableTerm> = <const> {\n name: 'varOrIri',\n impl: ({ SUBRULE, OR }) => C => OR<IriTerm | VariableTerm>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(var_, undefined) },\n { ALT: () => SUBRULE(iri, undefined) },\n ]),\n};\n\n/**\n * [[108]](https://www.w3.org/TR/sparql11-query/#rVar)\n */\nexport const var_: SparqlRule<'var', VariableTerm> = <const> {\n name: 'var',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const varVal = OR([\n { ALT: () => CONSUME(l.terminals.var1).image.slice(1) },\n { ALT: () => CONSUME(l.terminals.var2).image.slice(1) },\n ]);\n ACTION(() => {\n if (!C.parseMode.has('canParseVars')) {\n throw new Error('Variables are not allowed here');\n }\n });\n return ACTION(() => C.dataFactory.variable(varVal));\n },\n gImpl: () => ast => `?${ast.value}`,\n};\n\n/**\n * [[109]](https://www.w3.org/TR/sparql11-query/#rGraphTerm)\n */\nexport const graphTerm: SparqlRule<'graphTerm', GraphTerm> = <const> {\n name: 'graphTerm',\n impl: ({ ACTION, SUBRULE, CONSUME, OR }) => C => OR<GraphTerm>([\n { ALT: () => SUBRULE(iri, undefined) },\n { ALT: () => SUBRULE(rdfLiteral, undefined) },\n { ALT: () => SUBRULE(numericLiteral, undefined) },\n { ALT: () => SUBRULE(booleanLiteral, undefined) },\n { GATE: () => C.parseMode.has('canCreateBlankNodes'), ALT: () => SUBRULE(blankNode, undefined) },\n {\n ALT: () => {\n CONSUME(l.terminals.nil);\n return ACTION(() => C.dataFactory.namedNode(CommonIRIs.NIL));\n },\n },\n ]),\n gImpl: ({ SUBRULE }) => (ast) => {\n switch (ast.termType) {\n case 'BlankNode':\n return SUBRULE(blankNode, ast, undefined);\n case 'NamedNode':\n return SUBRULE(iri, ast, undefined);\n case 'Literal':\n return SUBRULE(rdfLiteral, ast, undefined);\n }\n },\n};\n"]}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["general.ts"],"names":[],"mappings":"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","sourcesContent":["import { CommonIRIs } from '../grammar-helpers/utils';\nimport * as l from '../lexer';\nimport type {\n ContextDefinition,\n ContextDefinitionBase,\n ContextDefinitionPrefix,\n GraphTerm,\n Term,\n TermIri,\n TermVariable,\n} from '../RoundTripTypes';\nimport type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';\nimport { blankNode, booleanLiteral, iri, iriFull, numericLiteral, rdfLiteral, verbA } from './literals';\n\n/**\n * [[4]](https://www.w3.org/TR/sparql11-query/#rPrologue)\n */\nexport const prologue: SparqlRule<'prologue', ContextDefinition[]> = <const> {\n name: 'prologue',\n impl: ({ SUBRULE, MANY, OR }) => () => {\n const result: ContextDefinition[] = [];\n MANY(() => OR([\n { ALT: () => result.push(SUBRULE(baseDecl, undefined)) },\n // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.\n // We might need to check this.\n { ALT: () => result.push(SUBRULE(prefixDecl, undefined)) },\n ]));\n return result;\n },\n gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {\n for (const context of ast) {\n if (F.isContextDefinitionBase(context)) {\n SUBRULE(baseDecl, context, undefined);\n } else if (F.isContextDefinitionPrefix(context)) {\n SUBRULE(prefixDecl, context, undefined);\n }\n }\n },\n};\n\n/**\n * Registers base IRI in the context and returns it.\n * [[5]](https://www.w3.org/TR/sparql11-query/#rBaseDecl)\n */\nexport const baseDecl: SparqlRule<'baseDecl', ContextDefinitionBase> = <const> {\n name: 'baseDecl',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const base = CONSUME(l.baseDecl);\n const val = SUBRULE(iriFull, undefined);\n return ACTION(() => C.factory.contextDefinitionBase(C.factory.sourceLocation(base, val), val));\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('BASE'));\n SUBRULE(iri, ast.value, undefined);\n },\n};\n\n/**\n * Registers prefix in the context and returns registered key-value-pair.\n * [[6]](https://www.w3.org/TR/sparql11-query/#rPrefixDecl)\n */\nexport const prefixDecl: SparqlRule<'prefixDecl', ContextDefinitionPrefix> = <const> {\n name: 'prefixDecl',\n impl: ({ ACTION, CONSUME, SUBRULE }) => (C) => {\n const prefix = CONSUME(l.prefixDecl);\n const name = CONSUME(l.terminals.pNameNs).image.slice(0, -1);\n const value = SUBRULE(iriFull, undefined);\n\n return ACTION(() => C.factory.contextDefinitionPrefix(C.factory.sourceLocation(prefix, value), name, value));\n },\n gImpl: ({ SUBRULE, PRINT_WORDS }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => {\n PRINT_WORDS('PREFIX', `${ast.key}:`);\n });\n SUBRULE(iri, ast.value, undefined);\n },\n};\n\n/**\n * [[78]](https://www.w3.org/TR/sparql11-query/#rVerb)\n */\nexport const verb: SparqlGrammarRule<'verb', TermVariable | TermIri> = <const> {\n name: 'verb',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(varOrIri, undefined) },\n { ALT: () => SUBRULE(verbA, undefined) },\n ]),\n};\n\n/**\n * [[106]](https://www.w3.org/TR/sparql11-query/#rVarOrTerm)\n */\nexport const varOrTerm: SparqlRule<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ SUBRULE, OR }) => C => OR<Term>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(var_, undefined) },\n { ALT: () => SUBRULE(graphTerm, undefined) },\n ]),\n gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {\n if (F.isTermVariable(ast)) {\n return SUBRULE(var_, ast, undefined);\n }\n return SUBRULE(graphTerm, ast, undefined);\n },\n};\n\n/**\n * [[107]](https://www.w3.org/TR/sparql11-query/#rVarOrIri)\n */\nexport const varOrIri: SparqlGrammarRule<'varOrIri', TermIri | TermVariable> = <const> {\n name: 'varOrIri',\n impl: ({ SUBRULE, OR }) => C => OR<TermIri | TermVariable>([\n { GATE: () => C.parseMode.has('canParseVars'), ALT: () => SUBRULE(var_, undefined) },\n { ALT: () => SUBRULE(iri, undefined) },\n ]),\n};\n\n/**\n * [[108]](https://www.w3.org/TR/sparql11-query/#rVar)\n */\nexport const var_: SparqlRule<'var', TermVariable> = <const> {\n name: 'var',\n impl: ({ ACTION, CONSUME, OR }) => (C) => {\n const varToken = OR([\n { ALT: () => CONSUME(l.terminals.var1) },\n { ALT: () => CONSUME(l.terminals.var2) },\n ]);\n return ACTION(() => C.factory.variable(varToken.image.slice(1), C.factory.sourceLocation(varToken)));\n },\n gImpl: ({ PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD(`?${ast.value}`));\n },\n};\n\n/**\n * [[109]](https://www.w3.org/TR/sparql11-query/#rGraphTerm)\n */\nexport const graphTerm: SparqlRule<'graphTerm', GraphTerm> = <const> {\n name: 'graphTerm',\n impl: ({ ACTION, SUBRULE, CONSUME, OR }) => C => OR<GraphTerm>([\n { ALT: () => SUBRULE(iri, undefined) },\n { ALT: () => SUBRULE(rdfLiteral, undefined) },\n { ALT: () => SUBRULE(numericLiteral, undefined) },\n { ALT: () => SUBRULE(booleanLiteral, undefined) },\n { GATE: () => C.parseMode.has('canCreateBlankNodes'), ALT: () => SUBRULE(blankNode, undefined) },\n { ALT: () => {\n const tokenNil = CONSUME(l.terminals.nil);\n return ACTION(() =>\n C.factory.namedNode(C.factory.sourceLocation(tokenNil), CommonIRIs.NIL));\n } },\n ]),\n gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {\n if (F.isTermNamed(ast)) {\n SUBRULE(iri, ast, undefined);\n } else if (F.isTermLiteral(ast)) {\n SUBRULE(rdfLiteral, ast, undefined);\n } else if (F.isTermBlank(ast)) {\n SUBRULE(blankNode, ast, undefined);\n }\n },\n};\n"]}
@@ -1,52 +1,55 @@
1
- import type { BlankTerm, IriTerm, LiteralTerm, SparqlGrammarRule, SparqlRule } from '../Sparql11types';
1
+ import type { TermBlank, TermIri, TermIriFull, TermIriPrefixed, TermLiteral, TermLiteralStr, TermLiteralTyped } from '../RoundTripTypes';
2
+ import type { SparqlGrammarRule, SparqlRule } from '../Sparql11types';
3
+ export declare function stringEscapedLexical(str: string): string;
2
4
  /**
3
- * Parses an RDF literal, in the form of {value}@{lang} or {value}^^{datatype}.
4
- * [[129]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)
5
+ * [[120]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)
5
6
  */
6
- export declare const rdfLiteral: SparqlRule<'rdfLiteral', LiteralTerm>;
7
+ export declare const rdfLiteral: SparqlRule<'rdfLiteral', TermLiteral>;
7
8
  /**
8
9
  * Parses a numeric literal.
9
10
  * [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)
10
11
  */
11
- export declare const numericLiteral: SparqlGrammarRule<'numericLiteral', LiteralTerm>;
12
+ export declare const numericLiteral: SparqlGrammarRule<'numericLiteral', TermLiteralTyped>;
12
13
  /**
13
14
  * Parses an unsigned numeric literal.
14
15
  * [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)
15
16
  */
16
- export declare const numericLiteralUnsigned: SparqlGrammarRule<'numericLiteralUnsigned', LiteralTerm>;
17
+ export declare const numericLiteralUnsigned: SparqlGrammarRule<'numericLiteralUnsigned', TermLiteralTyped>;
17
18
  /**
18
19
  * Parses a positive numeric literal.
19
20
  * [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)
20
21
  */
21
- export declare const numericLiteralPositive: SparqlGrammarRule<'numericLiteralPositive', LiteralTerm>;
22
+ export declare const numericLiteralPositive: SparqlGrammarRule<'numericLiteralPositive', TermLiteralTyped>;
22
23
  /**
23
24
  * Parses a negative numeric literal.
24
25
  * [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)
25
26
  */
26
- export declare const numericLiteralNegative: SparqlGrammarRule<'numericLiteralNegative', LiteralTerm>;
27
+ export declare const numericLiteralNegative: SparqlGrammarRule<'numericLiteralNegative', TermLiteralTyped>;
27
28
  /**
28
29
  * Parses a boolean literal.
29
30
  * [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)
30
31
  */
31
- export declare const booleanLiteral: SparqlGrammarRule<'booleanLiteral', LiteralTerm>;
32
+ export declare const booleanLiteral: SparqlGrammarRule<'booleanLiteral', TermLiteralTyped>;
32
33
  /**
33
34
  * Parses a string literal.
34
35
  * [[135]](https://www.w3.org/TR/sparql11-query/#rString)
35
36
  */
36
- export declare const string: SparqlRule<'string', string>;
37
+ export declare const string: SparqlGrammarRule<'string', TermLiteralStr>;
37
38
  /**
38
39
  * Parses a named node, either as an IRI or as a prefixed name.
39
40
  * [[136]](https://www.w3.org/TR/sparql11-query/#riri)
40
41
  */
41
- export declare const iri: SparqlRule<'iri', IriTerm>;
42
+ export declare const iri: SparqlRule<'iri', TermIri>;
43
+ export declare const iriFull: SparqlRule<'iriFull', TermIriFull>;
42
44
  /**
43
45
  * Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.
44
46
  * [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)
45
47
  */
46
- export declare const prefixedName: SparqlGrammarRule<'prefixedName', IriTerm>;
48
+ export declare const prefixedName: SparqlRule<'prefixedName', TermIriPrefixed>;
47
49
  export declare const canCreateBlankNodes: unique symbol;
48
50
  /**
49
51
  * Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.
50
52
  * [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)
51
53
  */
52
- export declare const blankNode: SparqlRule<'blankNode', BlankTerm>;
54
+ export declare const blankNode: SparqlRule<'blankNode', TermBlank>;
55
+ export declare const verbA: SparqlGrammarRule<'VerbA', TermIriFull>;