@traqula/rules-sparql-1-1 0.0.3 → 0.0.5

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 (106) hide show
  1. package/README.md +0 -2
  2. package/lib/{SparqlParser.d.ts → MinimalSparqlParser.d.ts} +5 -5
  3. package/lib/{SparqlParser.js → MinimalSparqlParser.js} +6 -5
  4. package/lib/MinimalSparqlParser.js.map +1 -0
  5. package/lib/Sparql11types.d.ts +373 -62
  6. package/lib/Sparql11types.js.map +1 -1
  7. package/lib/expressionHelpers.d.ts +2 -2
  8. package/lib/expressionHelpers.js +19 -21
  9. package/lib/expressionHelpers.js.map +1 -1
  10. package/lib/factory.d.ts +66 -66
  11. package/lib/factory.js.map +1 -1
  12. package/lib/factoryMixins/ContextFactory.d.ts +1 -1
  13. package/lib/factoryMixins/ContextFactory.js.map +1 -1
  14. package/lib/factoryMixins/ExpressionFactory.d.ts +1 -1
  15. package/lib/factoryMixins/ExpressionFactory.js.map +1 -1
  16. package/lib/factoryMixins/GraphRefFactory.d.ts +1 -1
  17. package/lib/factoryMixins/GraphRefFactory.js.map +1 -1
  18. package/lib/factoryMixins/PathFactory.d.ts +1 -1
  19. package/lib/factoryMixins/PathFactory.js.map +1 -1
  20. package/lib/factoryMixins/Patternfactory.d.ts +1 -1
  21. package/lib/factoryMixins/Patternfactory.js.map +1 -1
  22. package/lib/factoryMixins/QueryFactory.d.ts +1 -1
  23. package/lib/factoryMixins/QueryFactory.js.map +1 -1
  24. package/lib/factoryMixins/SolutionModifiersFactory.d.ts +1 -1
  25. package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -1
  26. package/lib/factoryMixins/TermFactory.d.ts +1 -1
  27. package/lib/factoryMixins/TermFactory.js +1 -4
  28. package/lib/factoryMixins/TermFactory.js.map +1 -1
  29. package/lib/factoryMixins/UpdateOperationFactory.d.ts +1 -1
  30. package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -1
  31. package/lib/factoryMixins/mixins.d.ts +2 -0
  32. package/lib/factoryMixins/mixins.js +3 -0
  33. package/lib/factoryMixins/mixins.js.map +1 -1
  34. package/lib/grammar/builtIn.d.ts +2 -2
  35. package/lib/grammar/builtIn.js +66 -66
  36. package/lib/grammar/builtIn.js.map +1 -1
  37. package/lib/grammar/dataSetClause.d.ts +2 -2
  38. package/lib/grammar/dataSetClause.js +7 -7
  39. package/lib/grammar/dataSetClause.js.map +1 -1
  40. package/lib/grammar/expression.d.ts +2 -2
  41. package/lib/grammar/expression.js +47 -47
  42. package/lib/grammar/expression.js.map +1 -1
  43. package/lib/grammar/general.d.ts +2 -2
  44. package/lib/grammar/general.js +25 -25
  45. package/lib/grammar/general.js.map +1 -1
  46. package/lib/grammar/index.d.ts +9 -2
  47. package/lib/grammar/index.js +62 -2
  48. package/lib/grammar/index.js.map +1 -1
  49. package/lib/grammar/literals.d.ts +2 -2
  50. package/lib/grammar/literals.js +10 -10
  51. package/lib/grammar/literals.js.map +1 -1
  52. package/lib/grammar/propertyPaths.d.ts +3 -3
  53. package/lib/grammar/propertyPaths.js +19 -19
  54. package/lib/grammar/propertyPaths.js.map +1 -1
  55. package/lib/grammar/{queryUnit/queryUnit.d.ts → queryUnit.d.ts} +2 -2
  56. package/lib/grammar/{queryUnit/queryUnit.js → queryUnit.js} +67 -67
  57. package/lib/grammar/queryUnit.js.map +1 -0
  58. package/lib/grammar/solutionModifier.d.ts +2 -2
  59. package/lib/grammar/solutionModifier.js +29 -29
  60. package/lib/grammar/solutionModifier.js.map +1 -1
  61. package/lib/grammar/tripleBlock.d.ts +10 -10
  62. package/lib/grammar/tripleBlock.js +37 -37
  63. package/lib/grammar/tripleBlock.js.map +1 -1
  64. package/lib/grammar/{updateUnit/updateUnit.d.ts → updateUnit.d.ts} +2 -2
  65. package/lib/grammar/{updateUnit/updateUnit.js → updateUnit.js} +78 -78
  66. package/lib/grammar/updateUnit.js.map +1 -0
  67. package/lib/grammar/whereClause.d.ts +2 -2
  68. package/lib/grammar/whereClause.js +69 -69
  69. package/lib/grammar/whereClause.js.map +1 -1
  70. package/lib/index.cjs +1610 -1551
  71. package/lib/index.d.ts +2 -3
  72. package/lib/index.js +2 -3
  73. package/lib/index.js.map +1 -1
  74. package/lib/lexer/{BuildinCalls.d.ts → BuiltInCalls.d.ts} +1 -1
  75. package/lib/lexer/BuiltInCalls.js +188 -0
  76. package/lib/lexer/{BuildinCalls.js.map → BuiltInCalls.js.map} +1 -1
  77. package/lib/lexer/graph.d.ts +1 -1
  78. package/lib/lexer/index.d.ts +1 -1
  79. package/lib/lexer/index.js +1 -1
  80. package/lib/lexer/index.js.map +1 -1
  81. package/lib/lexer/lexer.d.ts +2 -2
  82. package/lib/lexer/lexer.js +2 -2
  83. package/lib/lexer/lexer.js.map +1 -1
  84. package/lib/lexer/terminals.d.ts +69 -0
  85. package/lib/lexer/terminals.js +69 -0
  86. package/lib/lexer/terminals.js.map +1 -1
  87. package/lib/sparql11HelperTypes.d.ts +68 -0
  88. package/lib/sparql11HelperTypes.js +2 -0
  89. package/lib/sparql11HelperTypes.js.map +1 -0
  90. package/lib/utils.d.ts +11 -0
  91. package/lib/utils.js +14 -0
  92. package/lib/utils.js.map +1 -1
  93. package/lib/validation/validators.d.ts +1 -1
  94. package/lib/validation/validators.js +1 -0
  95. package/lib/validation/validators.js.map +1 -1
  96. package/package.json +4 -4
  97. package/lib/RoundTripTypes.d.ts +0 -379
  98. package/lib/RoundTripTypes.js +0 -2
  99. package/lib/RoundTripTypes.js.map +0 -1
  100. package/lib/SparqlParser.js.map +0 -1
  101. package/lib/grammar/queryUnit/queryUnit.js.map +0 -1
  102. package/lib/grammar/updateUnit/updateUnit.js.map +0 -1
  103. package/lib/grammar-helpers/utils.d.ts +0 -12
  104. package/lib/grammar-helpers/utils.js +0 -16
  105. package/lib/grammar-helpers/utils.js.map +0 -1
  106. package/lib/lexer/BuildinCalls.js +0 -188
@@ -1 +1 @@
1
- {"version":3,"file":"tripleBlock.js","sourceRoot":"","sources":["tripleBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IToken } from 'chevrotain';\nimport { CommonIRIs } from '../grammar-helpers/utils';\nimport * as l from '../lexer';\nimport type {\n BasicGraphPattern,\n GraphNode,\n Path,\n PatternBgp,\n Term,\n TermVariable,\n TripleCollection,\n TripleCollectionBlankNodeProperties,\n TripleCollectionList,\n TripleNesting,\n} from '../RoundTripTypes';\nimport type {\n SparqlGrammarRule,\n SparqlRule,\n} from '../Sparql11types';\nimport { var_, varOrTerm, verb } from './general';\nimport { path, pathGenerator } from './propertyPaths';\n\nfunction triplesDotSeperated(triplesSameSubjectSubrule: SparqlGrammarRule<string, BasicGraphPattern>):\nSparqlGrammarRule<string, PatternBgp>['impl'] {\n return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => (C) => {\n const triples: BasicGraphPattern = [];\n\n let parsedDot = true;\n let dotToken: undefined | IToken;\n AT_LEAST_ONE({\n GATE: () => parsedDot,\n DEF: () => {\n parsedDot = false;\n const template = SUBRULE(triplesSameSubjectSubrule, undefined);\n ACTION(() => {\n triples.push(...template);\n });\n OPTION(() => {\n dotToken = CONSUME(l.symbols.dot);\n parsedDot = true;\n });\n },\n });\n return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));\n };\n}\n\n/**\n * [[55]](https://www.w3.org/TR/sparql11-query/#rTriplesBlock)\n */\nexport const triplesBlock: SparqlRule<'triplesBlock', PatternBgp> = <const>{\n name: 'triplesBlock',\n impl: implArgs => C => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C, undefined),\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {\n for (const [ index, triple ] of ast.triples.entries()) {\n HANDLE_LOC(triple, () => {\n const nextTriple = ast.triples.at(index);\n if (F.isTripleCollection(triple)) {\n SUBRULE(graphNodePath, triple, undefined);\n // A top level tripleCollection block means that it is not used in a triple. So you end with DOT.\n F.printFilter(triple, () => PRINT_WORD('.'));\n } else {\n // Subject\n SUBRULE(graphNodePath, triple.subject, undefined);\n // Predicate\n if (F.isTerm(triple.predicate) && F.isTermVariable(triple.predicate)) {\n SUBRULE(varOrTerm, triple.predicate, undefined);\n } else {\n SUBRULE(pathGenerator, triple.predicate, undefined);\n }\n // Object\n SUBRULE(graphNodePath, triple.object, undefined);\n\n // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT\n if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||\n !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {\n F.printFilter(ast, () => PRINT_WORD('.'));\n } else if (F.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {\n F.printFilter(ast, () => PRINT_WORD(','));\n } else {\n F.printFilter(ast, () => PRINT_WORD(';'));\n }\n }\n });\n }\n },\n};\n\n/**\n * [[75]](https://www.w3.org/TR/sparql11-query/#rTriplesSameSubject)\n * [[81]](https://www.w3.org/TR/sparql11-query/#rTriplesSameSubjectPath)\n * CONTRACT: triples generated from the subject come first, then comes the main triple,\n * and then come the triples from the object. Only the first occurrence of a term has `SourceLocationType = source`\n */\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, BasicGraphPattern> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR }) => C => OR<BasicGraphPattern>([\n { ALT: () => {\n const subject = SUBRULE(varOrTerm, undefined);\n const res = SUBRULE(\n allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,\n { subject: ACTION(() => C.factory.dematerialized(subject)) },\n );\n // Only the first occurrence of a subject is actually materialized.\n return ACTION(() => {\n if (res.length > 0) {\n res[0].subject = subject;\n res[0].loc = C.factory.sourceLocation(subject, res[0]);\n }\n return res;\n });\n } },\n { ALT: () => {\n const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode, undefined);\n const restNode = SUBRULE(\n allowPaths ? propertyListPath : propertyList,\n { subject: ACTION(() => C.factory.graphNodeIdentifier(subjectNode)) },\n );\n return ACTION(() => {\n if (restNode.length === 0) {\n return [ subjectNode ];\n }\n restNode[0].subject = subjectNode;\n restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);\n return restNode;\n });\n } },\n ]),\n };\n}\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\n\n/**\n * [[52]](https://www.w3.org/TR/sparql11-query/#rTriplesTemplate)\n */\nexport const triplesTemplate: SparqlGrammarRule<'triplesTemplate', PatternBgp> = <const> {\n name: 'triplesTemplate',\n impl: triplesDotSeperated(triplesSameSubject),\n};\n\n/**\n * [[76]](https://www.w3.org/TR/sparql11-query/#rPropertyList)\n * [[82]](https://www.w3.org/TR/sparql11-query/#rPropertyListPath)\n */\nfunction propertyListImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting[], Pick<TripleNesting, 'subject'>> {\n return {\n name,\n impl: ({ SUBRULE, OPTION }) => (_, arg) =>\n OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, arg)) ?? [],\n };\n}\nexport const propertyList = propertyListImpl('propertyList', false);\nexport const propertyListPath = propertyListImpl('propertyListPath', true);\n\n// We could use gates for this, but in that case,\n// a grammar not in need of paths would still have to include the path rules\n/**\n * [[77]](https://www.w3.org/TR/sparql11-query/#rPropertyListNotEmpty)\n * [[83]](https://www.w3.org/TR/sparql11-query/#rPropertyListPathNotEmpty)\n */\nfunction propertyListNotEmptyImplementation<T extends string>(\n name: T,\n allowPaths: boolean,\n): SparqlGrammarRule<T, TripleNesting[], Pick<TripleNesting, 'subject'>> {\n return {\n name,\n impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, arg) => {\n const result: TripleNesting[] = [];\n let parsedSemi = true;\n\n AT_LEAST_ONE({\n GATE: () => parsedSemi,\n DEF: () => {\n parsedSemi = false;\n const predicate = allowPaths ?\n OR1<TermVariable | Path>([\n { ALT: () => SUBRULE1(verbPath, undefined) },\n { ALT: () => SUBRULE1(verbSimple, undefined) },\n ]) :\n SUBRULE1(verb, undefined);\n const triples = SUBRULE1(\n allowPaths ? objectListPath : objectList,\n ACTION(() => ({ subject: arg.subject, predicate })),\n );\n\n MANY2(() => {\n CONSUME(l.symbols.semi);\n parsedSemi = true;\n });\n\n ACTION(() => {\n result.push(...triples);\n });\n },\n });\n return result;\n },\n };\n}\nexport const propertyListNotEmpty = propertyListNotEmptyImplementation('propertyListNotEmpty', false);\nexport const propertyListPathNotEmpty = propertyListNotEmptyImplementation('propertyListPathNotEmpty', true);\n\n/**\n * [[84]](https://www.w3.org/TR/sparql11-query/#rVerbPath)\n */\nexport const verbPath: SparqlGrammarRule<'verbPath', Path> = <const> {\n name: 'verbPath',\n impl: ({ SUBRULE }) => () => SUBRULE(path, undefined),\n};\n\n/**\n * [[85]](https://www.w3.org/TR/sparql11-query/#rVerbSimple)\n */\nexport const verbSimple: SparqlGrammarRule<'verbSimple', TermVariable> = <const> {\n name: 'verbSimple',\n impl: ({ SUBRULE }) => () => SUBRULE(var_, undefined),\n};\n\n/**\n * [[79]](https://www.w3.org/TR/sparql11-query/#rObjectList)\n * [[86]](https://www.w3.org/TR/sparql11-query/#rObjectListPath)\n */\nfunction objectListImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting[], Pick<TripleNesting, 'subject' | 'predicate'>> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, arg) => {\n const objects: TripleNesting[] = [];\n AT_LEAST_ONE_SEP({\n SEP: l.symbols.comma,\n DEF: () => {\n const objectTriple = SUBRULE(allowPaths ? objectPath : object, arg);\n ACTION(() => {\n objects.push(objectTriple);\n });\n },\n });\n return objects;\n },\n };\n}\nexport const objectList = objectListImpl('objectList', false);\nexport const objectListPath = objectListImpl('objectListPath', true);\n\n/**\n * [[80]](https://www.w3.org/TR/sparql11-query/#rObject)\n * [[87]](https://www.w3.org/TR/sparql11-query/#rObjectPath)\n */\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting, Pick<TripleNesting, 'subject' | 'predicate'>> {\n return {\n name,\n impl: ({ ACTION, SUBRULE }) => (C, arg) => {\n const node = SUBRULE(allowPaths ? graphNodePath : graphNode, undefined);\n return ACTION(() =>\n C.factory.triple(arg.subject, arg.predicate, node));\n },\n };\n}\nexport const object = objectImpl('object', false);\nexport const objectPath = objectImpl('objectPath', true);\n\n/**\n * [[102]](https://www.w3.org/TR/sparql11-query/#rCollection)\n * [[103]](https://www.w3.org/TR/sparql11-query/#rCollectionPath)\n */\nfunction collectionImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, TripleCollectionList> {\n return {\n name,\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {\n // Construct a [cons list](https://en.wikipedia.org/wiki/Cons#Lists),\n // here called a [RDF collection](https://www.w3.org/TR/sparql11-query/#collections).\n const terms: GraphNode[] = [];\n\n const startToken = CONSUME(l.symbols.LParen);\n\n AT_LEAST_ONE(() => {\n terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode, undefined));\n });\n const endToken = CONSUME(l.symbols.RParen);\n\n return ACTION(() => {\n const F = C.factory;\n const triples: TripleNesting[] = [];\n // The triples created in your recursion\n const predFirst = F.namedNode(F.sourceLocationNoMaterialize(), CommonIRIs.FIRST, undefined);\n const predRest = F.namedNode(F.sourceLocationNoMaterialize(), CommonIRIs.REST, undefined);\n const predNil = F.namedNode(F.sourceLocationNoMaterialize(), CommonIRIs.NIL, undefined);\n\n const listHead = F.blankNode(undefined, F.sourceLocationNoMaterialize());\n let iterHead: TripleNesting['object'] = listHead;\n for (const [ index, term ] of terms.entries()) {\n const lastInList = index === terms.length - 1;\n\n const headTriple: TripleNesting = F.triple(\n iterHead,\n predFirst,\n term,\n );\n triples.push(headTriple);\n\n // If not the last, create new iterHead, otherwise, close list\n if (lastInList) {\n const nilTriple: TripleNesting = F.triple(iterHead, predRest, predNil);\n triples.push(nilTriple);\n } else {\n const tail = F.blankNode(undefined, F.sourceLocationNoMaterialize());\n const linkTriple: TripleNesting = F.triple(iterHead, predRest, tail);\n triples.push(linkTriple);\n iterHead = tail;\n }\n }\n return F.tripleCollectionList(listHead, triples, F.sourceLocation(startToken, endToken));\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('('));\n // Only every 2 triple is relevant. The odd triples are linking triples.\n for (const [ idx, triple ] of ast.triples.entries()) {\n if (idx % 2 === 0) {\n SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object, undefined);\n }\n }\n F.printFilter(ast, () => PRINT_WORD(')'));\n },\n };\n}\nexport const collection = collectionImpl('collection', false);\nexport const collectionPath = collectionImpl('collectionPath', true);\n\n/**\n * [[98]](https://www.w3.org/TR/sparql11-query/#rTriplesNode)\n * [[100]](https://www.w3.org/TR/sparql11-query/#rTriplesNodePath)\n */\nfunction triplesNodeImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, TripleCollection> {\n return <const>{\n name,\n impl: ({ SUBRULE, OR }) => () => OR<TripleCollection>([\n { ALT: () => SUBRULE(allowPaths ? collectionPath : collection, undefined) },\n { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, undefined) },\n ]),\n gImpl: ({ SUBRULE }) => ast => ast.subType === 'list' ?\n SUBRULE(allowPaths ? collectionPath : collection, ast, undefined) :\n SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast, undefined),\n };\n}\nexport const triplesNode = triplesNodeImpl('triplesNode', false);\nexport const triplesNodePath = triplesNodeImpl('triplesNodePath', true);\n\n/**\n * [[99]](https://www.w3.org/TR/sparql11-query/#rBlankNodePropertyList)\n * [[101]](https://www.w3.org/TR/sparql11-query/#rBlankNodePropertyListPath)\n */\nfunction blankNodePropertyListImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlRule<T, TripleCollectionBlankNodeProperties> {\n const propertyPathNotEmptyImpl = allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty;\n return {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const startToken = CONSUME(l.symbols.LSquare);\n\n const blankNode = ACTION(() =>\n C.factory.blankNode(undefined, C.factory.sourceLocationNoMaterialize()));\n\n const propList = SUBRULE(propertyPathNotEmptyImpl, { subject: blankNode });\n const endToken = CONSUME(l.symbols.RSquare);\n\n return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(\n blankNode,\n propList,\n C.factory.sourceLocation(startToken, endToken),\n ));\n },\n gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT('['));\n for (const triple of ast.triples) {\n HANDLE_LOC(triple, () => {\n if (F.isTerm(triple.predicate) && F.isTermVariable(triple.predicate)) {\n SUBRULE(varOrTerm, triple.predicate, undefined);\n } else {\n SUBRULE(pathGenerator, triple.predicate, undefined);\n }\n SUBRULE(graphNodePath, triple.object, undefined);\n\n F.printFilter(ast, () => PRINT_WORD(';'));\n });\n }\n F.printFilter(ast, () => PRINT(']'));\n },\n };\n}\nexport const blankNodePropertyList = blankNodePropertyListImpl('blankNodePropertyList', false);\nexport const blankNodePropertyListPath = blankNodePropertyListImpl('blankNodePropertyListPath', true);\n\n/**\n * [[103]](https://www.w3.org/TR/sparql11-query/#rGraphNode)\n * [[105]](https://www.w3.org/TR/sparql11-query/#rGraphNodePath)\n */\nfunction graphNodeImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, Term | TripleCollection> {\n const triplesNodeRule = allowPaths ? triplesNodePath : triplesNode;\n return {\n name,\n impl: ({ SUBRULE, OR }) => C => OR<Term | TripleCollection>([\n { ALT: () => SUBRULE(varOrTerm, undefined) },\n {\n GATE: () => C.parseMode.has('canCreateBlankNodes'),\n ALT: () => SUBRULE(triplesNodeRule, undefined),\n },\n ]),\n gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {\n if (F.isTerm(ast)) {\n SUBRULE(varOrTerm, ast, undefined);\n } else {\n SUBRULE(triplesNodeRule, ast, undefined);\n }\n },\n };\n}\nexport const graphNode = graphNodeImpl('graphNode', false);\nexport const graphNodePath = graphNodeImpl('graphNodePath', true);\n"]}
1
+ {"version":3,"file":"tripleBlock.js","sourceRoot":"","sources":["tripleBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IToken } from 'chevrotain';\nimport * as l from '../lexer';\nimport type { SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes';\nimport type {\n BasicGraphPattern,\n GraphNode,\n Path,\n PatternBgp,\n Term,\n TermVariable,\n TripleCollection,\n TripleCollectionBlankNodeProperties,\n TripleCollectionList,\n TripleNesting,\n} from '../Sparql11types';\nimport { CommonIRIs } from '../utils';\nimport { var_, varOrTerm, verb } from './general';\nimport { path, pathGenerator } from './propertyPaths';\n\nfunction triplesDotSeperated(triplesSameSubjectSubrule: SparqlGrammarRule<string, BasicGraphPattern>):\nSparqlGrammarRule<string, PatternBgp>['impl'] {\n return ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, OPTION }) => (C) => {\n const triples: BasicGraphPattern = [];\n\n let parsedDot = true;\n let dotToken: undefined | IToken;\n AT_LEAST_ONE({\n GATE: () => parsedDot,\n DEF: () => {\n parsedDot = false;\n const template = SUBRULE(triplesSameSubjectSubrule);\n ACTION(() => {\n triples.push(...template);\n });\n OPTION(() => {\n dotToken = CONSUME(l.symbols.dot);\n parsedDot = true;\n });\n },\n });\n return ACTION(() => C.factory.patternBgp(triples, C.factory.sourceLocation(...triples, dotToken)));\n };\n}\n\n/**\n * [[55]](https://www.w3.org/TR/sparql11-query/#rTriplesBlock)\n */\nexport const triplesBlock: SparqlRule<'triplesBlock', PatternBgp> = <const>{\n name: 'triplesBlock',\n impl: implArgs => C => triplesDotSeperated(triplesSameSubjectPath)(implArgs)(C),\n gImpl: ({ SUBRULE, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {\n for (const [ index, triple ] of ast.triples.entries()) {\n HANDLE_LOC(triple, () => {\n const nextTriple = ast.triples.at(index);\n if (F.isTripleCollection(triple)) {\n SUBRULE(graphNodePath, triple);\n // A top level tripleCollection block means that it is not used in a triple. So you end with DOT.\n F.printFilter(triple, () => PRINT_WORD('.'));\n } else {\n // Subject\n SUBRULE(graphNodePath, triple.subject);\n // Predicate\n if (F.isTerm(triple.predicate) && F.isTermVariable(triple.predicate)) {\n SUBRULE(varOrTerm, triple.predicate);\n } else {\n SUBRULE(pathGenerator, triple.predicate, undefined);\n }\n // Object\n SUBRULE(graphNodePath, triple.object);\n\n // If no more things, or a top level collection (only possible if new block was part), or new subject: add DOT\n if (nextTriple === undefined || F.isTripleCollection(nextTriple) ||\n !F.isSourceLocationNoMaterialize(nextTriple.subject.loc)) {\n F.printFilter(ast, () => PRINT_WORD('.'));\n } else if (F.isSourceLocationNoMaterialize(nextTriple.predicate.loc)) {\n F.printFilter(ast, () => PRINT_WORD(','));\n } else {\n F.printFilter(ast, () => PRINT_WORD(';'));\n }\n }\n });\n }\n },\n};\n\n/**\n * [[75]](https://www.w3.org/TR/sparql11-query/#rTriplesSameSubject)\n * [[81]](https://www.w3.org/TR/sparql11-query/#rTriplesSameSubjectPath)\n * CONTRACT: triples generated from the subject come first, then comes the main triple,\n * and then come the triples from the object. Only the first occurrence of a term has `SourceLocationType = source`\n */\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, BasicGraphPattern> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR }) => C => OR<BasicGraphPattern>([\n { ALT: () => {\n const subject = SUBRULE(varOrTerm);\n const res = SUBRULE(\n allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,\n ACTION(() => C.factory.dematerialized(subject)),\n );\n // Only the first occurrence of a subject is actually materialized.\n return ACTION(() => {\n if (res.length > 0) {\n res[0].subject = subject;\n res[0].loc = C.factory.sourceLocation(subject, res[0]);\n }\n return res;\n });\n } },\n { ALT: () => {\n const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);\n const restNode = SUBRULE(\n allowPaths ? propertyListPath : propertyList,\n ACTION(() => C.factory.graphNodeIdentifier(subjectNode)),\n );\n return ACTION(() => {\n if (restNode.length === 0) {\n return [ subjectNode ];\n }\n restNode[0].subject = subjectNode;\n restNode[0].loc = C.factory.sourceLocation(subjectNode, restNode[0]);\n return restNode;\n });\n } },\n ]),\n };\n}\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\n\n/**\n * [[52]](https://www.w3.org/TR/sparql11-query/#rTriplesTemplate)\n */\nexport const triplesTemplate: SparqlGrammarRule<'triplesTemplate', PatternBgp> = <const> {\n name: 'triplesTemplate',\n impl: triplesDotSeperated(triplesSameSubject),\n};\n\n/**\n * [[76]](https://www.w3.org/TR/sparql11-query/#rPropertyList)\n * [[82]](https://www.w3.org/TR/sparql11-query/#rPropertyListPath)\n */\nfunction propertyListImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting[], [TripleNesting['subject']]> {\n return {\n name,\n impl: ({ SUBRULE, OPTION }) => (_, subject) =>\n OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject)) ?? [],\n };\n}\nexport const propertyList = propertyListImpl('propertyList', false);\nexport const propertyListPath = propertyListImpl('propertyListPath', true);\n\n// We could use gates for this, but in that case,\n// a grammar not in need of paths would still have to include the path rules\n/**\n * [[77]](https://www.w3.org/TR/sparql11-query/#rPropertyListNotEmpty)\n * [[83]](https://www.w3.org/TR/sparql11-query/#rPropertyListPathNotEmpty)\n */\nfunction propertyListNotEmptyImplementation<T extends string>(\n name: T,\n allowPaths: boolean,\n): SparqlGrammarRule<T, TripleNesting[], [TripleNesting['subject']]> {\n return {\n name,\n impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (_, subject) => {\n const result: TripleNesting[] = [];\n let parsedSemi = true;\n\n AT_LEAST_ONE({\n GATE: () => parsedSemi,\n DEF: () => {\n parsedSemi = false;\n const predicate = allowPaths ?\n OR1<TermVariable | Path>([\n { ALT: () => SUBRULE1(verbPath) },\n { ALT: () => SUBRULE1(verbSimple) },\n ]) :\n SUBRULE1(verb);\n const triples = SUBRULE1(\n allowPaths ? objectListPath : objectList,\n subject,\n predicate,\n );\n\n MANY2(() => {\n CONSUME(l.symbols.semi);\n parsedSemi = true;\n });\n\n ACTION(() => {\n result.push(...triples);\n });\n },\n });\n return result;\n },\n };\n}\nexport const propertyListNotEmpty = propertyListNotEmptyImplementation('propertyListNotEmpty', false);\nexport const propertyListPathNotEmpty = propertyListNotEmptyImplementation('propertyListPathNotEmpty', true);\n\n/**\n * [[84]](https://www.w3.org/TR/sparql11-query/#rVerbPath)\n */\nexport const verbPath: SparqlGrammarRule<'verbPath', Path> = <const> {\n name: 'verbPath',\n impl: ({ SUBRULE }) => () => SUBRULE(path),\n};\n\n/**\n * [[85]](https://www.w3.org/TR/sparql11-query/#rVerbSimple)\n */\nexport const verbSimple: SparqlGrammarRule<'verbSimple', TermVariable> = <const> {\n name: 'verbSimple',\n impl: ({ SUBRULE }) => () => SUBRULE(var_),\n};\n\n/**\n * [[79]](https://www.w3.org/TR/sparql11-query/#rObjectList)\n * [[86]](https://www.w3.org/TR/sparql11-query/#rObjectListPath)\n */\nfunction objectListImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting[], [TripleNesting['subject'], TripleNesting['predicate']]> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (_, subj, pred) => {\n const objects: TripleNesting[] = [];\n AT_LEAST_ONE_SEP({\n SEP: l.symbols.comma,\n DEF: () => {\n const objectTriple = SUBRULE(allowPaths ? objectPath : object, subj, pred);\n ACTION(() => {\n objects.push(objectTriple);\n });\n },\n });\n return objects;\n },\n };\n}\nexport const objectList = objectListImpl('objectList', false);\nexport const objectListPath = objectListImpl('objectListPath', true);\n\n/**\n * [[80]](https://www.w3.org/TR/sparql11-query/#rObject)\n * [[87]](https://www.w3.org/TR/sparql11-query/#rObjectPath)\n */\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlGrammarRule<T, TripleNesting, [TripleNesting['subject'], TripleNesting['predicate']]> {\n return {\n name,\n impl: ({ ACTION, SUBRULE }) => (C, subject, predicate) => {\n const node = SUBRULE(allowPaths ? graphNodePath : graphNode);\n return ACTION(() =>\n C.factory.triple(subject, predicate, node));\n },\n };\n}\nexport const object = objectImpl('object', false);\nexport const objectPath = objectImpl('objectPath', true);\n\n/**\n * [[102]](https://www.w3.org/TR/sparql11-query/#rCollection)\n * [[103]](https://www.w3.org/TR/sparql11-query/#rCollectionPath)\n */\nfunction collectionImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, TripleCollectionList> {\n return {\n name,\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME }) => (C) => {\n // Construct a [cons list](https://en.wikipedia.org/wiki/Cons#Lists),\n // here called a [RDF collection](https://www.w3.org/TR/sparql11-query/#collections).\n const terms: GraphNode[] = [];\n\n const startToken = CONSUME(l.symbols.LParen);\n\n AT_LEAST_ONE(() => {\n terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode));\n });\n const endToken = CONSUME(l.symbols.RParen);\n\n return ACTION(() => {\n const F = C.factory;\n const triples: TripleNesting[] = [];\n // The triples created in your recursion\n const predFirst = F.namedNode(F.sourceLocationNoMaterialize(), CommonIRIs.FIRST, undefined);\n const predRest = F.namedNode(F.sourceLocationNoMaterialize(), CommonIRIs.REST, undefined);\n const predNil = F.namedNode(F.sourceLocationNoMaterialize(), CommonIRIs.NIL, undefined);\n\n const listHead = F.blankNode(undefined, F.sourceLocationNoMaterialize());\n let iterHead: TripleNesting['object'] = listHead;\n for (const [ index, term ] of terms.entries()) {\n const lastInList = index === terms.length - 1;\n\n const headTriple: TripleNesting = F.triple(\n iterHead,\n predFirst,\n term,\n );\n triples.push(headTriple);\n\n // If not the last, create new iterHead, otherwise, close list\n if (lastInList) {\n const nilTriple: TripleNesting = F.triple(iterHead, predRest, predNil);\n triples.push(nilTriple);\n } else {\n const tail = F.blankNode(undefined, F.sourceLocationNoMaterialize());\n const linkTriple: TripleNesting = F.triple(iterHead, predRest, tail);\n triples.push(linkTriple);\n iterHead = tail;\n }\n }\n return F.tripleCollectionList(listHead, triples, F.sourceLocation(startToken, endToken));\n });\n },\n gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT_WORD('('));\n // Only every 2 triple is relevant. The odd triples are linking triples.\n for (const [ idx, triple ] of ast.triples.entries()) {\n if (idx % 2 === 0) {\n SUBRULE(allowPaths ? graphNodePath : graphNode, triple.object);\n }\n }\n F.printFilter(ast, () => PRINT_WORD(')'));\n },\n };\n}\nexport const collection = collectionImpl('collection', false);\nexport const collectionPath = collectionImpl('collectionPath', true);\n\n/**\n * [[98]](https://www.w3.org/TR/sparql11-query/#rTriplesNode)\n * [[100]](https://www.w3.org/TR/sparql11-query/#rTriplesNodePath)\n */\nfunction triplesNodeImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, TripleCollection> {\n return <const>{\n name,\n impl: ({ SUBRULE, OR }) => () => OR<TripleCollection>([\n { ALT: () => SUBRULE(allowPaths ? collectionPath : collection) },\n { ALT: () => SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList) },\n ]),\n gImpl: ({ SUBRULE }) => ast => ast.subType === 'list' ?\n SUBRULE(allowPaths ? collectionPath : collection, ast) :\n SUBRULE(allowPaths ? blankNodePropertyListPath : blankNodePropertyList, ast),\n };\n}\nexport const triplesNode = triplesNodeImpl('triplesNode', false);\nexport const triplesNodePath = triplesNodeImpl('triplesNodePath', true);\n\n/**\n * [[99]](https://www.w3.org/TR/sparql11-query/#rBlankNodePropertyList)\n * [[101]](https://www.w3.org/TR/sparql11-query/#rBlankNodePropertyListPath)\n */\nfunction blankNodePropertyListImpl<T extends string>(name: T, allowPaths: boolean):\nSparqlRule<T, TripleCollectionBlankNodeProperties> {\n const propertyPathNotEmptyImpl = allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty;\n return {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {\n const startToken = CONSUME(l.symbols.LSquare);\n\n const blankNode = ACTION(() =>\n C.factory.blankNode(undefined, C.factory.sourceLocationNoMaterialize()));\n\n const propList = SUBRULE(propertyPathNotEmptyImpl, blankNode);\n const endToken = CONSUME(l.symbols.RSquare);\n\n return ACTION(() => C.factory.tripleCollectionBlankNodeProperties(\n blankNode,\n propList,\n C.factory.sourceLocation(startToken, endToken),\n ));\n },\n gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC }) => (ast, { factory: F }) => {\n F.printFilter(ast, () => PRINT('['));\n for (const triple of ast.triples) {\n HANDLE_LOC(triple, () => {\n if (F.isTerm(triple.predicate) && F.isTermVariable(triple.predicate)) {\n SUBRULE(varOrTerm, triple.predicate);\n } else {\n SUBRULE(pathGenerator, triple.predicate, undefined);\n }\n SUBRULE(graphNodePath, triple.object);\n\n F.printFilter(ast, () => PRINT_WORD(';'));\n });\n }\n F.printFilter(ast, () => PRINT(']'));\n },\n };\n}\nexport const blankNodePropertyList = blankNodePropertyListImpl('blankNodePropertyList', false);\nexport const blankNodePropertyListPath = blankNodePropertyListImpl('blankNodePropertyListPath', true);\n\n/**\n * [[103]](https://www.w3.org/TR/sparql11-query/#rGraphNode)\n * [[105]](https://www.w3.org/TR/sparql11-query/#rGraphNodePath)\n */\nfunction graphNodeImpl<T extends string>(name: T, allowPaths: boolean): SparqlRule<T, Term | TripleCollection> {\n const triplesNodeRule = allowPaths ? triplesNodePath : triplesNode;\n return {\n name,\n impl: ({ SUBRULE, OR }) => C => OR<Term | TripleCollection>([\n { ALT: () => SUBRULE(varOrTerm) },\n {\n GATE: () => C.parseMode.has('canCreateBlankNodes'),\n ALT: () => SUBRULE(triplesNodeRule),\n },\n ]),\n gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {\n if (F.isTerm(ast)) {\n SUBRULE(varOrTerm, ast);\n } else {\n SUBRULE(triplesNodeRule, ast);\n }\n },\n };\n}\nexport const graphNode = graphNodeImpl('graphNode', false);\nexport const graphNodePath = graphNodeImpl('graphNodePath', true);\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { Wrap } from '@traqula/core';
2
- import type { GraphQuads, GraphRef, GraphRefDefault, GraphRefSpecific, Quads, Update, UpdateOperation, UpdateOperationAdd, UpdateOperationClear, UpdateOperationCopy, UpdateOperationCreate, UpdateOperationDeleteData, UpdateOperationDeleteWhere, UpdateOperationDrop, UpdateOperationInsertData, UpdateOperationLoad, UpdateOperationModify, UpdateOperationMove } from '../../RoundTripTypes';
3
- import type { SparqlGrammarRule, SparqlRule } from '../../Sparql11types';
2
+ import type { SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes';
3
+ import type { GraphQuads, GraphRef, GraphRefDefault, GraphRefSpecific, Quads, Update, UpdateOperation, UpdateOperationAdd, UpdateOperationClear, UpdateOperationCopy, UpdateOperationCreate, UpdateOperationDeleteData, UpdateOperationDeleteWhere, UpdateOperationDrop, UpdateOperationInsertData, UpdateOperationLoad, UpdateOperationModify, UpdateOperationMove } from '../Sparql11types';
4
4
  /**
5
5
  * [[3]](https://www.w3.org/TR/sparql11-query/#rUpdateUnit)
6
6
  */
@@ -1,17 +1,17 @@
1
1
  import { unCapitalize } from '@traqula/core';
2
- import * as l from '../../lexer';
3
- import { updateNoReuseBlankNodeLabels } from '../../validation/validators';
4
- import { usingClauseStar } from '../dataSetClause';
5
- import { prologue, varOrIri, varOrTerm } from '../general';
6
- import { iri } from '../literals';
7
- import { triplesBlock, triplesTemplate } from '../tripleBlock';
8
- import { groupGraphPattern } from '../whereClause';
2
+ import * as l from '../lexer/index';
3
+ import { updateNoReuseBlankNodeLabels } from '../validation/validators';
4
+ import { usingClauseStar } from './dataSetClause';
5
+ import { prologue, varOrIri, varOrTerm } from './general';
6
+ import { iri } from './literals';
7
+ import { triplesBlock, triplesTemplate } from './tripleBlock';
8
+ import { groupGraphPattern } from './whereClause';
9
9
  /**
10
10
  * [[3]](https://www.w3.org/TR/sparql11-query/#rUpdateUnit)
11
11
  */
12
12
  export const updateUnit = {
13
13
  name: 'updateUnit',
14
- impl: ({ SUBRULE }) => () => SUBRULE(update, undefined),
14
+ impl: ({ SUBRULE }) => () => SUBRULE(update),
15
15
  };
16
16
  /**
17
17
  * [[29]](https://www.w3.org/TR/sparql11-query/#rUpdate)
@@ -21,18 +21,18 @@ export const update = {
21
21
  impl: ({ ACTION, SUBRULE, SUBRULE1, SUBRULE2, CONSUME, OPTION1, MANY }) => (C) => {
22
22
  // Override prologueValues on new reads of prologue and sink them into updates later
23
23
  const updates = [];
24
- const prologueValues = SUBRULE1(prologue, undefined);
24
+ const prologueValues = SUBRULE1(prologue);
25
25
  updates.push({ context: prologueValues });
26
26
  let parsedSemi = true;
27
27
  MANY({
28
28
  GATE: () => parsedSemi,
29
29
  DEF: () => {
30
30
  parsedSemi = false;
31
- updates.at(-1).operation = SUBRULE(update1, undefined);
31
+ updates.at(-1).operation = SUBRULE(update1);
32
32
  OPTION1(() => {
33
33
  CONSUME(l.symbols.semi);
34
34
  parsedSemi = true;
35
- const innerPrologue = SUBRULE2(prologue, undefined);
35
+ const innerPrologue = SUBRULE2(prologue);
36
36
  updates.push({ context: innerPrologue });
37
37
  });
38
38
  },
@@ -49,9 +49,9 @@ export const update = {
49
49
  },
50
50
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
51
51
  for (const update of ast.updates) {
52
- SUBRULE(prologue, update.context, undefined);
52
+ SUBRULE(prologue, update.context);
53
53
  if (update.operation) {
54
- SUBRULE(update1, update.operation, undefined);
54
+ SUBRULE(update1, update.operation);
55
55
  F.printFilter(ast, () => PRINT_WORD(' ;\n'));
56
56
  }
57
57
  }
@@ -63,52 +63,52 @@ export const update = {
63
63
  export const update1 = {
64
64
  name: 'update1',
65
65
  impl: ({ SUBRULE, OR }) => () => OR([
66
- { ALT: () => SUBRULE(load, undefined) },
67
- { ALT: () => SUBRULE(clear, undefined) },
68
- { ALT: () => SUBRULE(drop, undefined) },
69
- { ALT: () => SUBRULE(add, undefined) },
70
- { ALT: () => SUBRULE(move, undefined) },
71
- { ALT: () => SUBRULE(copy, undefined) },
72
- { ALT: () => SUBRULE(create, undefined) },
73
- { ALT: () => SUBRULE(insertData, undefined) },
74
- { ALT: () => SUBRULE(deleteData, undefined) },
75
- { ALT: () => SUBRULE(deleteWhere, undefined) },
76
- { ALT: () => SUBRULE(modify, undefined) },
66
+ { ALT: () => SUBRULE(load) },
67
+ { ALT: () => SUBRULE(clear) },
68
+ { ALT: () => SUBRULE(drop) },
69
+ { ALT: () => SUBRULE(add) },
70
+ { ALT: () => SUBRULE(move) },
71
+ { ALT: () => SUBRULE(copy) },
72
+ { ALT: () => SUBRULE(create) },
73
+ { ALT: () => SUBRULE(insertData) },
74
+ { ALT: () => SUBRULE(deleteData) },
75
+ { ALT: () => SUBRULE(deleteWhere) },
76
+ { ALT: () => SUBRULE(modify) },
77
77
  ]),
78
78
  gImpl: ({ SUBRULE }) => (ast) => {
79
79
  switch (ast.subType) {
80
80
  case ('load'):
81
- SUBRULE(load, ast, undefined);
81
+ SUBRULE(load, ast);
82
82
  break;
83
83
  case ('clear'):
84
- SUBRULE(clear, ast, undefined);
84
+ SUBRULE(clear, ast);
85
85
  break;
86
86
  case ('drop'):
87
- SUBRULE(drop, ast, undefined);
87
+ SUBRULE(drop, ast);
88
88
  break;
89
89
  case ('add'):
90
- SUBRULE(add, ast, undefined);
90
+ SUBRULE(add, ast);
91
91
  break;
92
92
  case ('move'):
93
- SUBRULE(move, ast, undefined);
93
+ SUBRULE(move, ast);
94
94
  break;
95
95
  case ('copy'):
96
- SUBRULE(copy, ast, undefined);
96
+ SUBRULE(copy, ast);
97
97
  break;
98
98
  case ('create'):
99
- SUBRULE(create, ast, undefined);
99
+ SUBRULE(create, ast);
100
100
  break;
101
101
  case ('insertdata'):
102
- SUBRULE(insertData, ast, undefined);
102
+ SUBRULE(insertData, ast);
103
103
  break;
104
104
  case ('deletedata'):
105
- SUBRULE(deleteData, ast, undefined);
105
+ SUBRULE(deleteData, ast);
106
106
  break;
107
107
  case ('deletewhere'):
108
- SUBRULE(deleteWhere, ast, undefined);
108
+ SUBRULE(deleteWhere, ast);
109
109
  break;
110
110
  case ('modify'):
111
- SUBRULE(modify, ast, undefined);
111
+ SUBRULE(modify, ast);
112
112
  break;
113
113
  }
114
114
  },
@@ -121,10 +121,10 @@ export const load = {
121
121
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION1, OPTION2 }) => (C) => {
122
122
  const loadToken = CONSUME(l.load);
123
123
  const silent = OPTION1(() => CONSUME(l.silent));
124
- const source = SUBRULE1(iri, undefined);
124
+ const source = SUBRULE1(iri);
125
125
  const destination = OPTION2(() => {
126
126
  CONSUME(l.loadInto);
127
- return SUBRULE1(graphRef, undefined);
127
+ return SUBRULE1(graphRef);
128
128
  });
129
129
  return ACTION(() => C.factory.updateOperationLoad(C.factory.sourceLocation(loadToken, source, destination), source, Boolean(silent), destination));
130
130
  },
@@ -135,10 +135,10 @@ export const load = {
135
135
  PRINT_WORD('SILENT');
136
136
  }
137
137
  });
138
- SUBRULE(iri, ast.source, undefined);
138
+ SUBRULE(iri, ast.source);
139
139
  if (ast.destination) {
140
140
  F.printFilter(ast, () => PRINT_WORD('INTO'));
141
- SUBRULE(graphRefAll, ast.destination, undefined);
141
+ SUBRULE(graphRefAll, ast.destination);
142
142
  }
143
143
  },
144
144
  };
@@ -148,7 +148,7 @@ function clearOrDrop(operation) {
148
148
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
149
149
  const opToken = CONSUME(operation);
150
150
  const silent = OPTION(() => CONSUME(l.silent));
151
- const destination = SUBRULE1(graphRefAll, undefined);
151
+ const destination = SUBRULE1(graphRefAll);
152
152
  return ACTION(() => C.factory.updateOperationClearDrop(unCapitalize(operation.name), Boolean(silent), destination, C.factory.sourceLocation(opToken, destination)));
153
153
  },
154
154
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
@@ -158,7 +158,7 @@ function clearOrDrop(operation) {
158
158
  PRINT_WORD('SILENT');
159
159
  }
160
160
  });
161
- SUBRULE(graphRefAll, ast.destination, undefined);
161
+ SUBRULE(graphRefAll, ast.destination);
162
162
  },
163
163
  };
164
164
  }
@@ -178,7 +178,7 @@ export const create = {
178
178
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
179
179
  const createToken = CONSUME(l.create);
180
180
  const silent = OPTION(() => CONSUME(l.silent));
181
- const destination = SUBRULE1(graphRef, undefined);
181
+ const destination = SUBRULE1(graphRef);
182
182
  return ACTION(() => C.factory.updateOperationCreate(destination, Boolean(silent), C.factory.sourceLocation(createToken, destination)));
183
183
  },
184
184
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
@@ -188,7 +188,7 @@ export const create = {
188
188
  PRINT_WORD('SILENT');
189
189
  }
190
190
  });
191
- SUBRULE(graphRefAll, ast.destination, undefined);
191
+ SUBRULE(graphRefAll, ast.destination);
192
192
  },
193
193
  };
194
194
  function copyMoveAddOperation(operation) {
@@ -197,9 +197,9 @@ function copyMoveAddOperation(operation) {
197
197
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION }) => (C) => {
198
198
  const op = CONSUME(operation);
199
199
  const silent = OPTION(() => CONSUME(l.silent));
200
- const source = SUBRULE1(graphOrDefault, undefined);
200
+ const source = SUBRULE1(graphOrDefault);
201
201
  CONSUME(l.to);
202
- const destination = SUBRULE2(graphOrDefault, undefined);
202
+ const destination = SUBRULE2(graphOrDefault);
203
203
  return ACTION(() => C.factory.updateOperationAddMoveCopy(unCapitalize(operation.name), source, destination, Boolean(silent), C.factory.sourceLocation(op, destination)));
204
204
  },
205
205
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
@@ -209,9 +209,9 @@ function copyMoveAddOperation(operation) {
209
209
  PRINT_WORD('SILENT');
210
210
  }
211
211
  });
212
- SUBRULE(graphRefAll, ast.source, undefined);
212
+ SUBRULE(graphRefAll, ast.source);
213
213
  F.printFilter(ast, () => PRINT_WORD('TO'));
214
- SUBRULE(graphRefAll, ast.destination, undefined);
214
+ SUBRULE(graphRefAll, ast.destination);
215
215
  },
216
216
  };
217
217
  }
@@ -234,7 +234,7 @@ export const quadPattern = {
234
234
  name: 'quadPattern',
235
235
  impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
236
236
  const open = CONSUME(l.symbols.LCurly);
237
- const val = SUBRULE1(quads, undefined);
237
+ const val = SUBRULE1(quads);
238
238
  const close = CONSUME(l.symbols.RCurly);
239
239
  return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
240
240
  },
@@ -247,7 +247,7 @@ export const quadData = {
247
247
  impl: ({ ACTION, SUBRULE1, CONSUME }) => (C) => {
248
248
  const open = CONSUME(l.symbols.LCurly);
249
249
  const couldParseVars = ACTION(() => C.parseMode.delete('canParseVars'));
250
- const val = SUBRULE1(quads, undefined);
250
+ const val = SUBRULE1(quads);
251
251
  ACTION(() => couldParseVars && C.parseMode.add('canParseVars'));
252
252
  const close = CONSUME(l.symbols.RCurly);
253
253
  return ACTION(() => C.factory.wrap(val.val, C.factory.sourceLocation(open, close)));
@@ -263,7 +263,7 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
263
263
  if (name !== 'insertData') {
264
264
  couldCreateBlankNodes = ACTION(() => C.parseMode.delete('canCreateBlankNodes'));
265
265
  }
266
- const data = SUBRULE1(dataRule, undefined);
266
+ const data = SUBRULE1(dataRule);
267
267
  if (name !== 'insertData') {
268
268
  ACTION(() => couldCreateBlankNodes && C.parseMode.add('canCreateBlankNodes'));
269
269
  }
@@ -273,7 +273,7 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
273
273
  F.printFilter(ast, () => PRINT_WORD(subType === 'insertdata' ?
274
274
  'INSERT DATA' :
275
275
  (subType === 'deletedata' ? 'DELETE DATA' : 'DELETE WHERE'), '{'));
276
- SUBRULE(quads, F.wrap(ast.data, ast.loc), undefined);
276
+ SUBRULE(quads, F.wrap(ast.data, ast.loc));
277
277
  F.printFilter(ast, () => PRINT_WORD('}'));
278
278
  },
279
279
  };
@@ -298,43 +298,43 @@ export const modify = {
298
298
  impl: ({ ACTION, CONSUME, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => (C) => {
299
299
  const graph = OPTION1(() => {
300
300
  const withToken = CONSUME(l.modifyWith);
301
- const graph = SUBRULE1(iri, undefined);
301
+ const graph = SUBRULE1(iri);
302
302
  return { withToken, graph };
303
303
  });
304
304
  const { insert, del } = OR([
305
305
  { ALT: () => {
306
- const del = SUBRULE1(deleteClause, undefined);
307
- const insert = OPTION2(() => SUBRULE1(insertClause, undefined));
306
+ const del = SUBRULE1(deleteClause);
307
+ const insert = OPTION2(() => SUBRULE1(insertClause));
308
308
  return { del, insert };
309
309
  } },
310
310
  { ALT: () => {
311
- const insert = SUBRULE2(insertClause, undefined);
311
+ const insert = SUBRULE2(insertClause);
312
312
  return { insert, del: undefined };
313
313
  } },
314
314
  ]);
315
- const using = SUBRULE1(usingClauseStar, undefined);
315
+ const using = SUBRULE1(usingClauseStar);
316
316
  CONSUME(l.where);
317
- const where = SUBRULE1(groupGraphPattern, undefined);
317
+ const where = SUBRULE1(groupGraphPattern);
318
318
  return ACTION(() => C.factory.updateOperationModify(C.factory.sourceLocation(graph?.withToken, del, insert, where), insert?.val ?? [], del?.val ?? [], where, using, graph?.graph));
319
319
  },
320
320
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
321
321
  if (ast.graph) {
322
322
  F.printFilter(ast, () => PRINT_WORD('WITH'));
323
- SUBRULE(iri, ast.graph, undefined);
323
+ SUBRULE(iri, ast.graph);
324
324
  }
325
325
  if (ast.delete.length > 0) {
326
326
  F.printFilter(ast, () => PRINT_WORD('DELETE', '{'));
327
- SUBRULE(quads, F.wrap(ast.delete, ast.loc), undefined);
327
+ SUBRULE(quads, F.wrap(ast.delete, ast.loc));
328
328
  F.printFilter(ast, () => PRINT_WORD('}'));
329
329
  }
330
330
  if (ast.insert.length > 0) {
331
331
  F.printFilter(ast, () => PRINT_WORD('INSERT', '{'));
332
- SUBRULE(quads, F.wrap(ast.insert, ast.loc), undefined);
332
+ SUBRULE(quads, F.wrap(ast.insert, ast.loc));
333
333
  F.printFilter(ast, () => PRINT_WORD('}'));
334
334
  }
335
- SUBRULE(usingClauseStar, ast.from, undefined);
335
+ SUBRULE(usingClauseStar, ast.from);
336
336
  F.printFilter(ast, () => PRINT_WORD('WHERE'));
337
- SUBRULE(groupGraphPattern, ast.where, undefined);
337
+ SUBRULE(groupGraphPattern, ast.where);
338
338
  },
339
339
  };
340
340
  /**
@@ -345,7 +345,7 @@ export const deleteClause = {
345
345
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
346
346
  const delToken = CONSUME(l.deleteClause);
347
347
  const couldCreateBlankNodes = ACTION(() => C.parseMode.delete('canCreateBlankNodes'));
348
- const del = SUBRULE(quadPattern, undefined);
348
+ const del = SUBRULE(quadPattern);
349
349
  ACTION(() => couldCreateBlankNodes && C.parseMode.add('canCreateBlankNodes'));
350
350
  return ACTION(() => C.factory.wrap(del.val, C.factory.sourceLocation(delToken, del)));
351
351
  },
@@ -357,7 +357,7 @@ export const insertClause = {
357
357
  name: 'insertClause',
358
358
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
359
359
  const insertToken = CONSUME(l.insertClause);
360
- const insert = SUBRULE(quadPattern, undefined);
360
+ const insert = SUBRULE(quadPattern);
361
361
  return ACTION(() => C.factory.wrap(insert.val, C.factory.sourceLocation(insertToken, insert)));
362
362
  },
363
363
  };
@@ -373,7 +373,7 @@ export const graphOrDefault = {
373
373
  } },
374
374
  { ALT: () => {
375
375
  const graph = OPTION(() => CONSUME(l.graph.graph));
376
- const name = SUBRULE1(iri, undefined);
376
+ const name = SUBRULE1(iri);
377
377
  return ACTION(() => C.factory.graphRefSpecific(name, C.factory.sourceLocation(graph, name)));
378
378
  } },
379
379
  ]),
@@ -385,12 +385,12 @@ export const graphRef = {
385
385
  name: 'graphRef',
386
386
  impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
387
387
  const graph = CONSUME(l.graph.graph);
388
- const val = SUBRULE(iri, undefined);
388
+ const val = SUBRULE(iri);
389
389
  return ACTION(() => C.factory.graphRefSpecific(val, C.factory.sourceLocation(graph, val)));
390
390
  },
391
391
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
392
392
  F.printFilter(ast, () => PRINT_WORD('GRAPH'));
393
- SUBRULE(iri, ast.graph, undefined);
393
+ SUBRULE(iri, ast.graph);
394
394
  },
395
395
  };
396
396
  /**
@@ -399,7 +399,7 @@ export const graphRef = {
399
399
  export const graphRefAll = {
400
400
  name: 'graphRefAll',
401
401
  impl: ({ ACTION, SUBRULE, CONSUME, OR }) => C => OR([
402
- { ALT: () => SUBRULE(graphRef, undefined) },
402
+ { ALT: () => SUBRULE(graphRef) },
403
403
  { ALT: () => {
404
404
  const def = CONSUME(l.graph.default_);
405
405
  return ACTION(() => C.factory.graphRefDefault(C.factory.sourceLocation(def)));
@@ -415,7 +415,7 @@ export const graphRefAll = {
415
415
  ]),
416
416
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
417
417
  if (F.isGraphRefSpecific(ast)) {
418
- SUBRULE(graphRef, ast, undefined);
418
+ SUBRULE(graphRef, ast);
419
419
  }
420
420
  else if (F.isGraphRefDefault(ast)) {
421
421
  F.printFilter(ast, () => PRINT_WORD('DEFAULT'));
@@ -437,12 +437,12 @@ export const quads = {
437
437
  const quads = [];
438
438
  let last;
439
439
  OPTION1(() => {
440
- const triples = SUBRULE1(triplesTemplate, undefined);
440
+ const triples = SUBRULE1(triplesTemplate);
441
441
  last = triples;
442
442
  ACTION(() => quads.push(triples));
443
443
  });
444
444
  MANY(() => {
445
- const notTriples = SUBRULE(quadsNotTriples, undefined);
445
+ const notTriples = SUBRULE(quadsNotTriples);
446
446
  last = notTriples;
447
447
  quads.push(notTriples);
448
448
  OPTION2(() => {
@@ -451,7 +451,7 @@ export const quads = {
451
451
  return dotToken;
452
452
  });
453
453
  OPTION3(() => {
454
- const triples = SUBRULE2(triplesTemplate, undefined);
454
+ const triples = SUBRULE2(triplesTemplate);
455
455
  last = triples;
456
456
  ACTION(() => quads.push(triples));
457
457
  });
@@ -461,10 +461,10 @@ export const quads = {
461
461
  gImpl: ({ SUBRULE }) => (ast, { factory: F }) => {
462
462
  for (const quad of ast.val) {
463
463
  if (F.isPattern(quad)) {
464
- SUBRULE(triplesBlock, quad, undefined);
464
+ SUBRULE(triplesBlock, quad);
465
465
  }
466
466
  else {
467
- SUBRULE(quadsNotTriples, quad, undefined);
467
+ SUBRULE(quadsNotTriples, quad);
468
468
  }
469
469
  }
470
470
  },
@@ -476,17 +476,17 @@ export const quadsNotTriples = {
476
476
  name: 'quadsNotTriples',
477
477
  impl: ({ ACTION, SUBRULE1, CONSUME, OPTION }) => (C) => {
478
478
  const graph = CONSUME(l.graph.graph);
479
- const name = SUBRULE1(varOrIri, undefined);
479
+ const name = SUBRULE1(varOrIri);
480
480
  CONSUME(l.symbols.LCurly);
481
- const triples = OPTION(() => SUBRULE1(triplesTemplate, undefined));
481
+ const triples = OPTION(() => SUBRULE1(triplesTemplate));
482
482
  const close = CONSUME(l.symbols.RCurly);
483
483
  return ACTION(() => C.factory.graphQuads(name, triples ?? C.factory.patternBgp([], C.factory.sourceLocationNoMaterialize()), C.factory.sourceLocation(graph, close)));
484
484
  },
485
485
  gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { factory: F }) => {
486
486
  F.printFilter(ast, () => PRINT_WORD('GRAPH'));
487
- SUBRULE(varOrTerm, ast.graph, undefined);
487
+ SUBRULE(varOrTerm, ast.graph);
488
488
  F.printFilter(ast, () => PRINT_WORD('{'));
489
- SUBRULE(triplesBlock, ast.triples, undefined);
489
+ SUBRULE(triplesBlock, ast.triples);
490
490
  F.printFilter(ast, () => PRINT_WORD('}'));
491
491
  },
492
492
  };