|
| 1 | +import { Builder } from '@traqula/core'; |
| 2 | +import type { UpdateOperation } from '@traqula/rules-sparql-1-1'; |
| 3 | +import { gram } from '@traqula/rules-sparql-1-1'; |
| 4 | +import { triplesTemplateParserBuilder } from './triplesTemplateParserBuilder'; |
| 5 | + |
| 6 | +const update1Patch: typeof gram.update1 = { |
| 7 | + name: 'update1', |
| 8 | + impl: ({ SUBRULE, OR }) => () => OR<UpdateOperation>([ |
| 9 | + { ALT: () => SUBRULE(gram.load, undefined) }, |
| 10 | + { ALT: () => SUBRULE(gram.clear, undefined) }, |
| 11 | + { ALT: () => SUBRULE(gram.drop, undefined) }, |
| 12 | + { ALT: () => SUBRULE(gram.add, undefined) }, |
| 13 | + { ALT: () => SUBRULE(gram.move, undefined) }, |
| 14 | + { ALT: () => SUBRULE(gram.copy, undefined) }, |
| 15 | + { ALT: () => SUBRULE(gram.create, undefined) }, |
| 16 | + { ALT: () => SUBRULE(gram.insertData, undefined) }, |
| 17 | + { ALT: () => SUBRULE(gram.deleteData, undefined) }, |
| 18 | + { ALT: () => SUBRULE(gram.deleteWhere, undefined) }, |
| 19 | + ]), |
| 20 | + gImpl: gram.update1.gImpl, |
| 21 | +}; |
| 22 | + |
| 23 | +const rulesNoUpdate1 = <const>[ |
| 24 | + gram.updateUnit, |
| 25 | + gram.update, |
| 26 | + gram.prologue, |
| 27 | + // Update1, |
| 28 | + gram.baseDecl, |
| 29 | + gram.prefixDecl, |
| 30 | + gram.load, |
| 31 | + gram.clear, |
| 32 | + gram.drop, |
| 33 | + gram.add, |
| 34 | + gram.move, |
| 35 | + gram.copy, |
| 36 | + gram.create, |
| 37 | + gram.insertData, |
| 38 | + gram.deleteData, |
| 39 | + gram.deleteWhere, |
| 40 | + gram.iri, |
| 41 | + gram.prefixedName, |
| 42 | + gram.graphRef, |
| 43 | + gram.graphRefAll, |
| 44 | + gram.graphOrDefault, |
| 45 | + gram.quadData, |
| 46 | + gram.quads, |
| 47 | +]; |
| 48 | + |
| 49 | +/** |
| 50 | + * Simple SPARQL 1.1 Update parser excluding MODIFY operations. |
| 51 | + * Top enable MODIFY, you need to path the update1 rule. |
| 52 | + */ |
| 53 | +export const updateNoModifyParserBuilder = Builder |
| 54 | + .createBuilder(rulesNoUpdate1) |
| 55 | + .addRule(update1Patch) |
| 56 | + .merge(triplesTemplateParserBuilder, <const> []) |
| 57 | + .addRule(gram.quadPattern) |
| 58 | + .addRule(gram.quadsNotTriples); |
0 commit comments