@traqula/rules-sparql-1-1 0.0.15 → 0.0.17
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.
- package/lib/MinimalSparqlParser.d.ts +3 -3
- package/lib/MinimalSparqlParser.js +6 -3
- package/lib/MinimalSparqlParser.js.map +1 -1
- package/lib/Sparql11types.d.ts +1 -1
- package/lib/Sparql11types.js.map +1 -1
- package/lib/{factory.d.ts → astFactory.d.ts} +4 -4
- package/lib/{factory.js → astFactory.js} +3 -3
- package/lib/astFactory.js.map +1 -0
- package/lib/expressionHelpers.js +12 -12
- package/lib/expressionHelpers.js.map +1 -1
- package/lib/factoryMixins/ContextFactory.d.ts +2 -2
- package/lib/factoryMixins/ContextFactory.js.map +1 -1
- package/lib/factoryMixins/ExpressionFactory.d.ts +2 -2
- package/lib/factoryMixins/ExpressionFactory.js.map +1 -1
- package/lib/factoryMixins/GraphRefFactory.d.ts +2 -2
- package/lib/factoryMixins/GraphRefFactory.js.map +1 -1
- package/lib/factoryMixins/PathFactory.d.ts +2 -2
- package/lib/factoryMixins/PathFactory.js.map +1 -1
- package/lib/factoryMixins/Patternfactory.d.ts +2 -2
- package/lib/factoryMixins/Patternfactory.js.map +1 -1
- package/lib/factoryMixins/QueryFactory.d.ts +2 -2
- package/lib/factoryMixins/QueryFactory.js.map +1 -1
- package/lib/factoryMixins/SolutionModifiersFactory.d.ts +2 -2
- package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -1
- package/lib/factoryMixins/TermFactory.d.ts +2 -2
- package/lib/factoryMixins/TermFactory.js.map +1 -1
- package/lib/factoryMixins/UpdateOperationFactory.d.ts +2 -2
- package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -1
- package/lib/grammar/builtIn.d.ts +1 -1
- package/lib/grammar/builtIn.js +7 -7
- package/lib/grammar/builtIn.js.map +1 -1
- package/lib/grammar/dataSetClause.js +6 -6
- package/lib/grammar/dataSetClause.js.map +1 -1
- package/lib/grammar/expression.js +18 -18
- package/lib/grammar/expression.js.map +1 -1
- package/lib/grammar/general.js +12 -10
- package/lib/grammar/general.js.map +1 -1
- package/lib/grammar/index.js +3 -3
- package/lib/grammar/index.js.map +1 -1
- package/lib/grammar/literals.js +24 -24
- package/lib/grammar/literals.js.map +1 -1
- package/lib/grammar/propertyPaths.d.ts +2 -2
- package/lib/grammar/propertyPaths.js +7 -7
- package/lib/grammar/propertyPaths.js.map +1 -1
- package/lib/grammar/queryUnit.js +31 -23
- package/lib/grammar/queryUnit.js.map +1 -1
- package/lib/grammar/solutionModifier.js +26 -16
- package/lib/grammar/solutionModifier.js.map +1 -1
- package/lib/grammar/tripleBlock.d.ts +4 -4
- package/lib/grammar/tripleBlock.js +33 -20
- package/lib/grammar/tripleBlock.js.map +1 -1
- package/lib/grammar/updateUnit.js +75 -41
- package/lib/grammar/updateUnit.js.map +1 -1
- package/lib/grammar/whereClause.d.ts +1 -1
- package/lib/grammar/whereClause.js +46 -32
- package/lib/grammar/whereClause.js.map +1 -1
- package/lib/index.cjs +568 -383
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/lexer/BuiltInCalls.d.ts +1 -1
- package/lib/lexer/lexer.d.ts +2 -2
- package/lib/lexer/symbols.d.ts +1 -1
- package/lib/lexer/terminals.d.ts +1 -1
- package/lib/sparql11HelperTypes.d.ts +9 -6
- package/lib/sparql11HelperTypes.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/lib/utils.js +1 -1
- package/lib/utils.js.map +1 -1
- package/lib/validation/validators.js +63 -81
- package/lib/validation/validators.js.map +1 -1
- package/package.json +3 -3
- package/lib/factory.js.map +0 -1
|
@@ -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 * as l from '../lexer/index.js';\nimport type { SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes.js';\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.js';\nimport { CommonIRIs } from '../utils.js';\nimport { var_, varOrTerm, verb } from './general.js';\nimport { path, pathGenerator } from './propertyPaths.js';\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
|
+
{"version":3,"file":"tripleBlock.js","sourceRoot":"","sources":["tripleBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { traqulaIndentation } from '@traqula/core';\nimport type { IToken } from 'chevrotain';\nimport * as l from '../lexer/index.js';\nimport type { SparqlGrammarRule, SparqlRule } from '../sparql11HelperTypes.js';\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.js';\nimport { CommonIRIs } from '../utils.js';\nimport { var_, varOrTerm, verb } from './general.js';\nimport { path, pathGenerator } from './propertyPaths.js';\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.astFactory.patternBgp(triples, C.astFactory.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, { astFactory: 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 endf with DOT.\n F.printFilter(triple, () => PRINT_WORD('.\\n'));\n } else {\n // Subject\n SUBRULE(graphNodePath, triple.subject);\n F.printFilter(triple, () => PRINT_WORD(''));\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 F.printFilter(triple, () => PRINT_WORD(''));\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'));\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/**\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.astFactory.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.astFactory.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.astFactory.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.astFactory.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.astFactory.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.astFactory;\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, { astFactory: 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.astFactory.blankNode(undefined, C.astFactory.sourceLocationNoMaterialize()));\n\n const propList = SUBRULE(propertyPathNotEmptyImpl, blankNode);\n const endToken = CONSUME(l.symbols.RSquare);\n\n return ACTION(() => C.astFactory.tripleCollectionBlankNodeProperties(\n blankNode,\n propList,\n C.astFactory.sourceLocation(startToken, endToken),\n ));\n },\n gImpl: ({ SUBRULE, PRINT, PRINT_WORD, HANDLE_LOC, PRINT_ON_EMPTY }) => (ast, c) => {\n const { astFactory: F, indentInc } = c;\n F.printFilter(ast, () => {\n c[traqulaIndentation] += indentInc;\n PRINT('[\\n');\n });\n for (const triple of ast.triples) {\n HANDLE_LOC(triple, () => {\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 F.printFilter(triple, () => PRINT_WORD(''));\n // Object\n SUBRULE(graphNodePath, triple.object);\n\n F.printFilter(ast, () => PRINT_WORD(';\\n'));\n });\n }\n F.printFilter(ast, () => {\n c[traqulaIndentation] -= indentInc;\n PRINT_ON_EMPTY(']');\n });\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, { astFactory: 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,4 +1,4 @@
|
|
|
1
|
-
import { unCapitalize } from '@traqula/core';
|
|
1
|
+
import { traqulaIndentation, unCapitalize } from '@traqula/core';
|
|
2
2
|
import * as l from '../lexer/index.js';
|
|
3
3
|
import { updateNoReuseBlankNodeLabels } from '../validation/validators.js';
|
|
4
4
|
import { usingClauseStar } from './dataSetClause.js';
|
|
@@ -41,13 +41,13 @@ export const update = {
|
|
|
41
41
|
const update = {
|
|
42
42
|
type: 'update',
|
|
43
43
|
updates,
|
|
44
|
-
loc: C.
|
|
44
|
+
loc: C.astFactory.sourceLocation(...updates[0].context, updates[0].operation, ...updates.at(-1).context, updates.at(-1)?.operation),
|
|
45
45
|
};
|
|
46
46
|
updateNoReuseBlankNodeLabels(update);
|
|
47
47
|
return update;
|
|
48
48
|
});
|
|
49
49
|
},
|
|
50
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, {
|
|
50
|
+
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
|
|
51
51
|
const [head, ...tail] = ast.updates;
|
|
52
52
|
if (head) {
|
|
53
53
|
SUBRULE(prologue, head.context);
|
|
@@ -133,9 +133,9 @@ export const load = {
|
|
|
133
133
|
CONSUME(l.loadInto);
|
|
134
134
|
return SUBRULE1(graphRef);
|
|
135
135
|
});
|
|
136
|
-
return ACTION(() => C.
|
|
136
|
+
return ACTION(() => C.astFactory.updateOperationLoad(C.astFactory.sourceLocation(loadToken, source, destination), source, Boolean(silent), destination));
|
|
137
137
|
},
|
|
138
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, {
|
|
138
|
+
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
|
|
139
139
|
F.printFilter(ast, () => {
|
|
140
140
|
PRINT_WORD('LOAD');
|
|
141
141
|
if (ast.silent) {
|
|
@@ -156,9 +156,9 @@ function clearOrDrop(operation) {
|
|
|
156
156
|
const opToken = CONSUME(operation);
|
|
157
157
|
const silent = OPTION(() => CONSUME(l.silent));
|
|
158
158
|
const destination = SUBRULE1(graphRefAll);
|
|
159
|
-
return ACTION(() => C.
|
|
159
|
+
return ACTION(() => C.astFactory.updateOperationClearDrop(unCapitalize(operation.name), Boolean(silent), destination, C.astFactory.sourceLocation(opToken, destination)));
|
|
160
160
|
},
|
|
161
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, {
|
|
161
|
+
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
|
|
162
162
|
F.printFilter(ast, () => {
|
|
163
163
|
PRINT_WORD(operation.name.toUpperCase());
|
|
164
164
|
if (ast.silent) {
|
|
@@ -186,9 +186,9 @@ export const create = {
|
|
|
186
186
|
const createToken = CONSUME(l.create);
|
|
187
187
|
const silent = OPTION(() => CONSUME(l.silent));
|
|
188
188
|
const destination = SUBRULE1(graphRef);
|
|
189
|
-
return ACTION(() => C.
|
|
189
|
+
return ACTION(() => C.astFactory.updateOperationCreate(destination, Boolean(silent), C.astFactory.sourceLocation(createToken, destination)));
|
|
190
190
|
},
|
|
191
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, {
|
|
191
|
+
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
|
|
192
192
|
F.printFilter(ast, () => {
|
|
193
193
|
PRINT_WORD('CREATE');
|
|
194
194
|
if (ast.silent) {
|
|
@@ -207,9 +207,9 @@ function copyMoveAddOperation(operation) {
|
|
|
207
207
|
const source = SUBRULE1(graphOrDefault);
|
|
208
208
|
CONSUME(l.to);
|
|
209
209
|
const destination = SUBRULE2(graphOrDefault);
|
|
210
|
-
return ACTION(() => C.
|
|
210
|
+
return ACTION(() => C.astFactory.updateOperationAddMoveCopy(unCapitalize(operation.name), source, destination, Boolean(silent), C.astFactory.sourceLocation(op, destination)));
|
|
211
211
|
},
|
|
212
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, {
|
|
212
|
+
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
|
|
213
213
|
F.printFilter(ast, () => {
|
|
214
214
|
PRINT_WORD(operation.name.toUpperCase());
|
|
215
215
|
if (ast.silent) {
|
|
@@ -243,7 +243,7 @@ export const quadPattern = {
|
|
|
243
243
|
const open = CONSUME(l.symbols.LCurly);
|
|
244
244
|
const val = SUBRULE1(quads);
|
|
245
245
|
const close = CONSUME(l.symbols.RCurly);
|
|
246
|
-
return ACTION(() => C.
|
|
246
|
+
return ACTION(() => C.astFactory.wrap(val.val, C.astFactory.sourceLocation(open, close)));
|
|
247
247
|
},
|
|
248
248
|
};
|
|
249
249
|
/**
|
|
@@ -257,7 +257,7 @@ export const quadData = {
|
|
|
257
257
|
const val = SUBRULE1(quads);
|
|
258
258
|
ACTION(() => couldParseVars && C.parseMode.add('canParseVars'));
|
|
259
259
|
const close = CONSUME(l.symbols.RCurly);
|
|
260
|
-
return ACTION(() => C.
|
|
260
|
+
return ACTION(() => C.astFactory.wrap(val.val, C.astFactory.sourceLocation(open, close)));
|
|
261
261
|
},
|
|
262
262
|
};
|
|
263
263
|
function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
|
|
@@ -274,14 +274,28 @@ function insertDeleteDelWhere(name, subType, cons1, cons2, dataRule) {
|
|
|
274
274
|
if (name !== 'insertData') {
|
|
275
275
|
ACTION(() => couldCreateBlankNodes && C.parseMode.add('canCreateBlankNodes'));
|
|
276
276
|
}
|
|
277
|
-
return ACTION(() => C.
|
|
277
|
+
return ACTION(() => C.astFactory.updateOperationInsDelDataWhere(subType, data.val, C.astFactory.sourceLocation(insDelToken, data)));
|
|
278
278
|
},
|
|
279
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast,
|
|
280
|
-
F
|
|
281
|
-
|
|
282
|
-
|
|
279
|
+
gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
|
|
280
|
+
const { astFactory: F, indentInc } = C;
|
|
281
|
+
F.printFilter(ast, () => {
|
|
282
|
+
C[traqulaIndentation] += indentInc;
|
|
283
|
+
if (subType === 'insertdata') {
|
|
284
|
+
PRINT_WORD('INSERT DATA');
|
|
285
|
+
}
|
|
286
|
+
else if (subType === 'deletedata') {
|
|
287
|
+
PRINT_WORD('DELETE DATA');
|
|
288
|
+
}
|
|
289
|
+
else if (subType === 'deletewhere') {
|
|
290
|
+
PRINT_WORD('DELETE WHERE');
|
|
291
|
+
}
|
|
292
|
+
PRINT_WORD('{\n');
|
|
293
|
+
});
|
|
283
294
|
SUBRULE(quads, F.wrap(ast.data, ast.loc));
|
|
284
|
-
F.printFilter(ast, () =>
|
|
295
|
+
F.printFilter(ast, () => {
|
|
296
|
+
C[traqulaIndentation] -= indentInc;
|
|
297
|
+
PRINT_ON_EMPTY('}\n');
|
|
298
|
+
});
|
|
285
299
|
},
|
|
286
300
|
};
|
|
287
301
|
}
|
|
@@ -322,22 +336,35 @@ export const modify = {
|
|
|
322
336
|
const using = SUBRULE1(usingClauseStar);
|
|
323
337
|
CONSUME(l.where);
|
|
324
338
|
const where = SUBRULE1(groupGraphPattern);
|
|
325
|
-
return ACTION(() => C.
|
|
339
|
+
return ACTION(() => C.astFactory.updateOperationModify(C.astFactory.sourceLocation(graph?.withToken, del, insert, where), insert?.val ?? [], del?.val ?? [], where, using, graph?.graph));
|
|
326
340
|
},
|
|
327
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast,
|
|
341
|
+
gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
|
|
342
|
+
const { astFactory: F, indentInc } = C;
|
|
328
343
|
if (ast.graph) {
|
|
329
344
|
F.printFilter(ast, () => PRINT_WORD('WITH'));
|
|
330
345
|
SUBRULE(iri, ast.graph);
|
|
331
346
|
}
|
|
332
347
|
if (ast.delete.length > 0) {
|
|
333
|
-
F.printFilter(ast, () =>
|
|
348
|
+
F.printFilter(ast, () => {
|
|
349
|
+
C[traqulaIndentation] += indentInc;
|
|
350
|
+
PRINT_WORD('DELETE', '{\n');
|
|
351
|
+
});
|
|
334
352
|
SUBRULE(quads, F.wrap(ast.delete, ast.loc));
|
|
335
|
-
F.printFilter(ast, () =>
|
|
353
|
+
F.printFilter(ast, () => {
|
|
354
|
+
C[traqulaIndentation] -= indentInc;
|
|
355
|
+
PRINT_ON_EMPTY('}\n');
|
|
356
|
+
});
|
|
336
357
|
}
|
|
337
358
|
if (ast.insert.length > 0) {
|
|
338
|
-
F.printFilter(ast, () =>
|
|
359
|
+
F.printFilter(ast, () => {
|
|
360
|
+
C[traqulaIndentation] += indentInc;
|
|
361
|
+
PRINT_WORD('INSERT', '{\n');
|
|
362
|
+
});
|
|
339
363
|
SUBRULE(quads, F.wrap(ast.insert, ast.loc));
|
|
340
|
-
F.printFilter(ast, () =>
|
|
364
|
+
F.printFilter(ast, () => {
|
|
365
|
+
C[traqulaIndentation] -= indentInc;
|
|
366
|
+
PRINT_ON_EMPTY('}\n');
|
|
367
|
+
});
|
|
341
368
|
}
|
|
342
369
|
SUBRULE(usingClauseStar, ast.from);
|
|
343
370
|
F.printFilter(ast, () => PRINT_WORD('WHERE'));
|
|
@@ -354,7 +381,7 @@ export const deleteClause = {
|
|
|
354
381
|
const couldCreateBlankNodes = ACTION(() => C.parseMode.delete('canCreateBlankNodes'));
|
|
355
382
|
const del = SUBRULE(quadPattern);
|
|
356
383
|
ACTION(() => couldCreateBlankNodes && C.parseMode.add('canCreateBlankNodes'));
|
|
357
|
-
return ACTION(() => C.
|
|
384
|
+
return ACTION(() => C.astFactory.wrap(del.val, C.astFactory.sourceLocation(delToken, del)));
|
|
358
385
|
},
|
|
359
386
|
};
|
|
360
387
|
/**
|
|
@@ -365,7 +392,7 @@ export const insertClause = {
|
|
|
365
392
|
impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
|
|
366
393
|
const insertToken = CONSUME(l.insertClause);
|
|
367
394
|
const insert = SUBRULE(quadPattern);
|
|
368
|
-
return ACTION(() => C.
|
|
395
|
+
return ACTION(() => C.astFactory.wrap(insert.val, C.astFactory.sourceLocation(insertToken, insert)));
|
|
369
396
|
},
|
|
370
397
|
};
|
|
371
398
|
/**
|
|
@@ -376,12 +403,12 @@ export const graphOrDefault = {
|
|
|
376
403
|
impl: ({ ACTION, SUBRULE1, CONSUME, OPTION, OR }) => C => OR([
|
|
377
404
|
{ ALT: () => {
|
|
378
405
|
const def = CONSUME(l.graph.default_);
|
|
379
|
-
return ACTION(() => C.
|
|
406
|
+
return ACTION(() => C.astFactory.graphRefDefault(C.astFactory.sourceLocation(def)));
|
|
380
407
|
} },
|
|
381
408
|
{ ALT: () => {
|
|
382
409
|
const graph = OPTION(() => CONSUME(l.graph.graph));
|
|
383
410
|
const name = SUBRULE1(iri);
|
|
384
|
-
return ACTION(() => C.
|
|
411
|
+
return ACTION(() => C.astFactory.graphRefSpecific(name, C.astFactory.sourceLocation(graph, name)));
|
|
385
412
|
} },
|
|
386
413
|
]),
|
|
387
414
|
};
|
|
@@ -393,9 +420,9 @@ export const graphRef = {
|
|
|
393
420
|
impl: ({ ACTION, SUBRULE, CONSUME }) => (C) => {
|
|
394
421
|
const graph = CONSUME(l.graph.graph);
|
|
395
422
|
const val = SUBRULE(iri);
|
|
396
|
-
return ACTION(() => C.
|
|
423
|
+
return ACTION(() => C.astFactory.graphRefSpecific(val, C.astFactory.sourceLocation(graph, val)));
|
|
397
424
|
},
|
|
398
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, {
|
|
425
|
+
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
|
|
399
426
|
F.printFilter(ast, () => PRINT_WORD('GRAPH'));
|
|
400
427
|
SUBRULE(iri, ast.graph);
|
|
401
428
|
},
|
|
@@ -409,18 +436,18 @@ export const graphRefAll = {
|
|
|
409
436
|
{ ALT: () => SUBRULE(graphRef) },
|
|
410
437
|
{ ALT: () => {
|
|
411
438
|
const def = CONSUME(l.graph.default_);
|
|
412
|
-
return ACTION(() => C.
|
|
439
|
+
return ACTION(() => C.astFactory.graphRefDefault(C.astFactory.sourceLocation(def)));
|
|
413
440
|
} },
|
|
414
441
|
{ ALT: () => {
|
|
415
442
|
const named = CONSUME(l.graph.named);
|
|
416
|
-
return ACTION(() => C.
|
|
443
|
+
return ACTION(() => C.astFactory.graphRefNamed(C.astFactory.sourceLocation(named)));
|
|
417
444
|
} },
|
|
418
445
|
{ ALT: () => {
|
|
419
446
|
const graphAll = CONSUME(l.graph.graphAll);
|
|
420
|
-
return ACTION(() => C.
|
|
447
|
+
return ACTION(() => C.astFactory.graphRefAll(C.astFactory.sourceLocation(graphAll)));
|
|
421
448
|
} },
|
|
422
449
|
]),
|
|
423
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, {
|
|
450
|
+
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast, { astFactory: F }) => {
|
|
424
451
|
if (F.isGraphRefSpecific(ast)) {
|
|
425
452
|
SUBRULE(graphRef, ast);
|
|
426
453
|
}
|
|
@@ -463,9 +490,9 @@ export const quads = {
|
|
|
463
490
|
ACTION(() => quads.push(triples));
|
|
464
491
|
});
|
|
465
492
|
});
|
|
466
|
-
return ACTION(() => C.
|
|
493
|
+
return ACTION(() => C.astFactory.wrap(quads, C.astFactory.sourceLocation(quads.at(0), last)));
|
|
467
494
|
},
|
|
468
|
-
gImpl: ({ SUBRULE }) => (ast, {
|
|
495
|
+
gImpl: ({ SUBRULE }) => (ast, { astFactory: F }) => {
|
|
469
496
|
for (const quad of ast.val) {
|
|
470
497
|
if (F.isPattern(quad)) {
|
|
471
498
|
SUBRULE(triplesBlock, quad);
|
|
@@ -487,14 +514,21 @@ export const quadsNotTriples = {
|
|
|
487
514
|
CONSUME(l.symbols.LCurly);
|
|
488
515
|
const triples = OPTION(() => SUBRULE1(triplesTemplate));
|
|
489
516
|
const close = CONSUME(l.symbols.RCurly);
|
|
490
|
-
return ACTION(() => C.
|
|
517
|
+
return ACTION(() => C.astFactory.graphQuads(name, triples ?? C.astFactory.patternBgp([], C.astFactory.sourceLocationNoMaterialize()), C.astFactory.sourceLocation(graph, close)));
|
|
491
518
|
},
|
|
492
|
-
gImpl: ({ SUBRULE, PRINT_WORD }) => (ast,
|
|
519
|
+
gImpl: ({ SUBRULE, PRINT_WORD, PRINT_ON_EMPTY }) => (ast, C) => {
|
|
520
|
+
const { astFactory: F, indentInc } = C;
|
|
493
521
|
F.printFilter(ast, () => PRINT_WORD('GRAPH'));
|
|
494
522
|
SUBRULE(varOrTerm, ast.graph);
|
|
495
|
-
F.printFilter(ast, () =>
|
|
523
|
+
F.printFilter(ast, () => {
|
|
524
|
+
C[traqulaIndentation] += indentInc;
|
|
525
|
+
PRINT_WORD('{\n');
|
|
526
|
+
});
|
|
496
527
|
SUBRULE(triplesBlock, ast.triples);
|
|
497
|
-
F.printFilter(ast, () =>
|
|
528
|
+
F.printFilter(ast, () => {
|
|
529
|
+
C[traqulaIndentation] -= indentInc;
|
|
530
|
+
PRINT_ON_EMPTY('}\n');
|
|
531
|
+
});
|
|
498
532
|
},
|
|
499
533
|
};
|
|
500
534
|
//# sourceMappingURL=updateUnit.js.map
|