@traqula/rules-sparql-1-1 0.0.3 → 0.0.4
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/README.md +0 -2
- package/lib/Sparql11types.d.ts +373 -62
- package/lib/Sparql11types.js.map +1 -1
- package/lib/SparqlParser.d.ts +4 -4
- package/lib/SparqlParser.js +2 -2
- package/lib/SparqlParser.js.map +1 -1
- package/lib/expressionHelpers.d.ts +2 -2
- package/lib/expressionHelpers.js +19 -21
- package/lib/expressionHelpers.js.map +1 -1
- package/lib/factory.d.ts +66 -66
- package/lib/factory.js.map +1 -1
- package/lib/factoryMixins/ContextFactory.d.ts +1 -1
- package/lib/factoryMixins/ContextFactory.js.map +1 -1
- package/lib/factoryMixins/ExpressionFactory.d.ts +1 -1
- package/lib/factoryMixins/ExpressionFactory.js.map +1 -1
- package/lib/factoryMixins/GraphRefFactory.d.ts +1 -1
- package/lib/factoryMixins/GraphRefFactory.js.map +1 -1
- package/lib/factoryMixins/PathFactory.d.ts +1 -1
- package/lib/factoryMixins/PathFactory.js.map +1 -1
- package/lib/factoryMixins/Patternfactory.d.ts +1 -1
- package/lib/factoryMixins/Patternfactory.js.map +1 -1
- package/lib/factoryMixins/QueryFactory.d.ts +1 -1
- package/lib/factoryMixins/QueryFactory.js.map +1 -1
- package/lib/factoryMixins/SolutionModifiersFactory.d.ts +1 -1
- package/lib/factoryMixins/SolutionModifiersFactory.js.map +1 -1
- package/lib/factoryMixins/TermFactory.d.ts +1 -1
- package/lib/factoryMixins/TermFactory.js.map +1 -1
- package/lib/factoryMixins/UpdateOperationFactory.d.ts +1 -1
- package/lib/factoryMixins/UpdateOperationFactory.js.map +1 -1
- package/lib/grammar/builtIn.d.ts +2 -2
- package/lib/grammar/builtIn.js +66 -66
- package/lib/grammar/builtIn.js.map +1 -1
- package/lib/grammar/dataSetClause.d.ts +2 -2
- package/lib/grammar/dataSetClause.js +7 -7
- package/lib/grammar/dataSetClause.js.map +1 -1
- package/lib/grammar/expression.d.ts +2 -2
- package/lib/grammar/expression.js +47 -47
- package/lib/grammar/expression.js.map +1 -1
- package/lib/grammar/general.d.ts +2 -2
- package/lib/grammar/general.js +25 -25
- package/lib/grammar/general.js.map +1 -1
- package/lib/grammar/index.d.ts +2 -2
- package/lib/grammar/index.js +2 -2
- package/lib/grammar/index.js.map +1 -1
- package/lib/grammar/literals.d.ts +2 -2
- package/lib/grammar/literals.js +10 -10
- package/lib/grammar/literals.js.map +1 -1
- package/lib/grammar/propertyPaths.d.ts +3 -3
- package/lib/grammar/propertyPaths.js +19 -19
- package/lib/grammar/propertyPaths.js.map +1 -1
- package/lib/grammar/{queryUnit/queryUnit.d.ts → queryUnit.d.ts} +2 -2
- package/lib/grammar/{queryUnit/queryUnit.js → queryUnit.js} +67 -67
- package/lib/grammar/queryUnit.js.map +1 -0
- package/lib/grammar/solutionModifier.d.ts +2 -2
- package/lib/grammar/solutionModifier.js +29 -29
- package/lib/grammar/solutionModifier.js.map +1 -1
- package/lib/grammar/tripleBlock.d.ts +10 -10
- package/lib/grammar/tripleBlock.js +37 -37
- package/lib/grammar/tripleBlock.js.map +1 -1
- package/lib/grammar/{updateUnit/updateUnit.d.ts → updateUnit.d.ts} +2 -2
- package/lib/grammar/{updateUnit/updateUnit.js → updateUnit.js} +78 -78
- package/lib/grammar/updateUnit.js.map +1 -0
- package/lib/grammar/whereClause.d.ts +2 -2
- package/lib/grammar/whereClause.js +69 -69
- package/lib/grammar/whereClause.js.map +1 -1
- package/lib/index.cjs +1485 -1487
- package/lib/index.d.ts +1 -2
- package/lib/index.js +1 -2
- package/lib/index.js.map +1 -1
- package/lib/lexer/graph.d.ts +1 -1
- package/lib/lexer/lexer.d.ts +1 -1
- package/lib/lexer/terminals.d.ts +69 -0
- package/lib/lexer/terminals.js +69 -0
- package/lib/lexer/terminals.js.map +1 -1
- package/lib/sparql11HelperTypes.d.ts +68 -0
- package/lib/sparql11HelperTypes.js +2 -0
- package/lib/sparql11HelperTypes.js.map +1 -0
- package/lib/utils.d.ts +11 -0
- package/lib/utils.js +14 -0
- package/lib/utils.js.map +1 -1
- package/lib/validation/validators.d.ts +1 -1
- package/lib/validation/validators.js.map +1 -1
- package/package.json +3 -3
- package/lib/RoundTripTypes.d.ts +0 -379
- package/lib/RoundTripTypes.js +0 -2
- package/lib/RoundTripTypes.js.map +0 -1
- package/lib/grammar/queryUnit/queryUnit.js.map +0 -1
- package/lib/grammar/updateUnit/updateUnit.js.map +0 -1
- package/lib/grammar-helpers/utils.d.ts +0 -12
- package/lib/grammar-helpers/utils.js +0 -16
- package/lib/grammar-helpers/utils.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 { 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 {
|
|
3
|
-
import type {
|
|
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 '
|
|
3
|
-
import { updateNoReuseBlankNodeLabels } from '
|
|
4
|
-
import { usingClauseStar } from '
|
|
5
|
-
import { prologue, varOrIri, varOrTerm } from '
|
|
6
|
-
import { iri } from '
|
|
7
|
-
import { triplesBlock, triplesTemplate } from '
|
|
8
|
-
import { groupGraphPattern } from '
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
52
|
+
SUBRULE(prologue, update.context);
|
|
53
53
|
if (update.operation) {
|
|
54
|
-
SUBRULE(update1, update.operation
|
|
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
|
|
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
|
|
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
|
|
81
|
+
SUBRULE(load, ast);
|
|
82
82
|
break;
|
|
83
83
|
case ('clear'):
|
|
84
|
-
SUBRULE(clear, ast
|
|
84
|
+
SUBRULE(clear, ast);
|
|
85
85
|
break;
|
|
86
86
|
case ('drop'):
|
|
87
|
-
SUBRULE(drop, ast
|
|
87
|
+
SUBRULE(drop, ast);
|
|
88
88
|
break;
|
|
89
89
|
case ('add'):
|
|
90
|
-
SUBRULE(add, ast
|
|
90
|
+
SUBRULE(add, ast);
|
|
91
91
|
break;
|
|
92
92
|
case ('move'):
|
|
93
|
-
SUBRULE(move, ast
|
|
93
|
+
SUBRULE(move, ast);
|
|
94
94
|
break;
|
|
95
95
|
case ('copy'):
|
|
96
|
-
SUBRULE(copy, ast
|
|
96
|
+
SUBRULE(copy, ast);
|
|
97
97
|
break;
|
|
98
98
|
case ('create'):
|
|
99
|
-
SUBRULE(create, ast
|
|
99
|
+
SUBRULE(create, ast);
|
|
100
100
|
break;
|
|
101
101
|
case ('insertdata'):
|
|
102
|
-
SUBRULE(insertData, ast
|
|
102
|
+
SUBRULE(insertData, ast);
|
|
103
103
|
break;
|
|
104
104
|
case ('deletedata'):
|
|
105
|
-
SUBRULE(deleteData, ast
|
|
105
|
+
SUBRULE(deleteData, ast);
|
|
106
106
|
break;
|
|
107
107
|
case ('deletewhere'):
|
|
108
|
-
SUBRULE(deleteWhere, ast
|
|
108
|
+
SUBRULE(deleteWhere, ast);
|
|
109
109
|
break;
|
|
110
110
|
case ('modify'):
|
|
111
|
-
SUBRULE(modify, ast
|
|
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
|
|
124
|
+
const source = SUBRULE1(iri);
|
|
125
125
|
const destination = OPTION2(() => {
|
|
126
126
|
CONSUME(l.loadInto);
|
|
127
|
-
return SUBRULE1(graphRef
|
|
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
|
|
138
|
+
SUBRULE(iri, ast.source);
|
|
139
139
|
if (ast.destination) {
|
|
140
140
|
F.printFilter(ast, () => PRINT_WORD('INTO'));
|
|
141
|
-
SUBRULE(graphRefAll, ast.destination
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
200
|
+
const source = SUBRULE1(graphOrDefault);
|
|
201
201
|
CONSUME(l.to);
|
|
202
|
-
const destination = SUBRULE2(graphOrDefault
|
|
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
|
|
212
|
+
SUBRULE(graphRefAll, ast.source);
|
|
213
213
|
F.printFilter(ast, () => PRINT_WORD('TO'));
|
|
214
|
-
SUBRULE(graphRefAll, ast.destination
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
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
|
|
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
|
|
307
|
-
const insert = OPTION2(() => SUBRULE1(insertClause
|
|
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
|
|
311
|
+
const insert = SUBRULE2(insertClause);
|
|
312
312
|
return { insert, del: undefined };
|
|
313
313
|
} },
|
|
314
314
|
]);
|
|
315
|
-
const using = SUBRULE1(usingClauseStar
|
|
315
|
+
const using = SUBRULE1(usingClauseStar);
|
|
316
316
|
CONSUME(l.where);
|
|
317
|
-
const where = SUBRULE1(groupGraphPattern
|
|
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
|
|
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)
|
|
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)
|
|
332
|
+
SUBRULE(quads, F.wrap(ast.insert, ast.loc));
|
|
333
333
|
F.printFilter(ast, () => PRINT_WORD('}'));
|
|
334
334
|
}
|
|
335
|
-
SUBRULE(usingClauseStar, ast.from
|
|
335
|
+
SUBRULE(usingClauseStar, ast.from);
|
|
336
336
|
F.printFilter(ast, () => PRINT_WORD('WHERE'));
|
|
337
|
-
SUBRULE(groupGraphPattern, ast.where
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
464
|
+
SUBRULE(triplesBlock, quad);
|
|
465
465
|
}
|
|
466
466
|
else {
|
|
467
|
-
SUBRULE(quadsNotTriples, quad
|
|
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
|
|
479
|
+
const name = SUBRULE1(varOrIri);
|
|
480
480
|
CONSUME(l.symbols.LCurly);
|
|
481
|
-
const triples = OPTION(() => SUBRULE1(triplesTemplate
|
|
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
|
|
487
|
+
SUBRULE(varOrTerm, ast.graph);
|
|
488
488
|
F.printFilter(ast, () => PRINT_WORD('{'));
|
|
489
|
-
SUBRULE(triplesBlock, ast.triples
|
|
489
|
+
SUBRULE(triplesBlock, ast.triples);
|
|
490
490
|
F.printFilter(ast, () => PRINT_WORD('}'));
|
|
491
491
|
},
|
|
492
492
|
};
|