@traqula/rules-sparql-1-1 0.0.1-alpha.141 → 0.0.1-alpha.145

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.
@@ -14,8 +14,6 @@ export type Triple = {
14
14
  predicate: IriTerm | VariableTerm | PropertyPath;
15
15
  object: Term;
16
16
  };
17
- export type TripleCreatorS = (part: Pick<Triple, 'subject'>) => Triple;
18
- export type TripleCreatorSP = (part: Pick<Triple, 'subject' | 'predicate'>) => Triple;
19
17
  export interface IGraphNode {
20
18
  node: ITriplesNode['node'] | Term;
21
19
  triples: Triple[];
@@ -1 +1 @@
1
- {"version":3,"file":"Sparql11types.js","sourceRoot":"","sources":["Sparql11types.ts"],"names":[],"mappings":"","sourcesContent":["import type * as RdfJs from '@rdfjs/types';\nimport type { BlankNode } from 'rdf-data-factory';\nimport type { CommonIRIs } from '@traqula/core';\n\nexport type GraphTerm = IriTerm | BlankTerm | LiteralTerm;\nexport type Term = GraphTerm | VariableTerm;\nexport type VerbA = IriTerm<CommonIRIs.TYPE>;\n\nexport interface Wildcard {\n readonly termType: 'Wildcard';\n readonly value: '*';\n equals: (other: RdfJs.Term | null | undefined) => boolean;\n}\n\nexport type Triple = {\n subject: Term;\n predicate: IriTerm | VariableTerm | PropertyPath;\n object: Term;\n};\n\nexport type TripleCreatorS = (part: Pick<Triple, 'subject'>) => Triple;\nexport type TripleCreatorSP = (part: Pick<Triple, 'subject' | 'predicate'>) => Triple;\n\nexport interface IGraphNode {\n node: ITriplesNode['node'] | Term;\n triples: Triple[];\n}\n\nexport interface ITriplesNode {\n node: IriTerm | BlankNode;\n triples: Triple[];\n}\n\nexport type Pattern =\n | BgpPattern\n | BlockPattern\n | FilterPattern\n | BindPattern\n | ValuesPattern\n | Omit<SelectQuery, 'prefixes'>;\n\nexport type Expression =\n | OperationExpression\n | FunctionCallExpression\n | AggregateExpression\n // Used in `IN` operator\n | Expression[]\n | IriTerm\n | VariableTerm\n | LiteralTerm;\n\nexport interface FunctionCallExpression extends BaseExpression {\n type: 'functionCall';\n function: IriTerm;\n args: Expression[];\n}\n\n/**\n * Basic Graph Pattern\n */\nexport interface BgpPattern {\n type: 'bgp';\n triples: Triple[];\n}\n\nexport interface GraphQuads {\n type: 'graph';\n name: IriTerm | VariableTerm;\n triples: Triple[];\n}\n\n// Copied types\nexport interface SparqlParser {\n parse: (query: string) => SparqlQuery;\n _resetBlanks: () => void;\n}\n\nexport type VariableTerm = RdfJs.Variable;\nexport type IriTerm<IRI extends string = string> = RdfJs.NamedNode<IRI>;\nexport type LiteralTerm = RdfJs.Literal;\nexport type BlankTerm = RdfJs.BlankNode;\n\nexport type PropertyPath = NegatedPropertySet | {\n type: 'path';\n pathType: '|' | '/' | '^' | '+' | '*' | '?';\n items: (IriTerm | PropertyPath)[];\n};\n\nexport type SparqlQuery = Query | Update | Pick<Update, 'base' | 'prefixes'>;\n\nexport type Query = SelectQuery | ConstructQuery | AskQuery | DescribeQuery;\n\nexport interface SelectQuery extends BaseQuery {\n queryType: 'SELECT';\n variables: Variable[] | [Wildcard];\n distinct?: true | undefined;\n reduced?: true | undefined;\n group?: Grouping[] | undefined;\n having?: Expression[] | undefined;\n order?: Ordering[] | undefined;\n limit?: number | undefined;\n offset?: number | undefined;\n}\n\nexport interface Grouping {\n expression: Expression;\n variable?: VariableTerm;\n}\n\nexport interface Ordering {\n expression: Expression;\n descending?: true | undefined;\n}\n\nexport interface ConstructQuery extends BaseQuery {\n queryType: 'CONSTRUCT';\n template?: Triple[] | undefined;\n}\n\nexport interface AskQuery extends BaseQuery {\n queryType: 'ASK';\n}\n\nexport interface DescribeQuery extends BaseQuery {\n queryType: 'DESCRIBE';\n variables: (VariableTerm | IriTerm)[] | [Wildcard];\n}\n\nexport interface Update {\n type: 'update';\n base?: string | undefined;\n prefixes: Record<string, string>;\n updates: UpdateOperation[];\n}\n\nexport type UpdateOperation = InsertDeleteOperation | ManagementOperation;\n\nexport type InsertDeleteOperation =\n | {\n updateType: 'insert';\n graph?: GraphOrDefault;\n insert: Quads[];\n }\n | {\n updateType: 'delete';\n graph?: GraphOrDefault;\n delete: Quads[];\n }\n | {\n updateType: 'insertdelete';\n graph?: IriTerm;\n insert: Quads[];\n delete: Quads[];\n using?: {\n default: IriTerm[];\n named: IriTerm[];\n };\n where: Pattern[];\n }\n | {\n updateType: 'deletewhere';\n graph?: GraphOrDefault;\n delete: Quads[];\n };\n\nexport type Quads = BgpPattern | GraphQuads;\n\nexport type ManagementOperation =\n | CopyMoveAddOperation\n | LoadOperation\n | CreateOperation\n | ClearDropOperation;\n\nexport interface CopyMoveAddOperation {\n type: 'copy' | 'move' | 'add';\n silent: boolean;\n source: GraphOrDefault;\n destination: GraphOrDefault;\n}\n\nexport interface LoadOperation {\n type: 'load';\n silent: boolean;\n source: IriTerm;\n destination?: IriTerm;\n}\n\nexport interface CreateOperation {\n type: 'create';\n silent: boolean;\n graph: GraphOrDefault;\n}\n\nexport interface ClearDropOperation {\n type: 'clear' | 'drop';\n silent: boolean;\n graph: GraphReference;\n}\n\nexport interface GraphOrDefault {\n type?: 'graph';\n name?: IriTerm | undefined;\n default?: true | undefined;\n}\n\nexport interface GraphReference extends GraphOrDefault {\n named?: true | undefined;\n all?: true | undefined;\n}\n\n/**\n * Examples: '?var', '*',\n * SELECT (?a as ?b) ... ==> { expression: '?a', variable: '?b' }\n */\nexport type Variable = VariableExpression | VariableTerm;\n\nexport interface VariableExpression {\n expression: Expression;\n variable: VariableTerm;\n}\n\nexport interface BaseQuery {\n type: 'query';\n base?: string | undefined;\n prefixes: Record<string, string>;\n from?:\n | {\n default: IriTerm[];\n named: IriTerm[];\n }\n | undefined;\n where?: Pattern[] | undefined;\n values?: ValuePatternRow[] | undefined;\n}\n\nexport type IriTermOrElt = IriTerm | {\n type: 'path';\n pathType: '^';\n items: [IriTerm];\n};\n\nexport interface NegatedPropertySet {\n type: 'path';\n pathType: '!';\n items: IriTermOrElt[] | [{\n type: 'path';\n pathType: '|';\n items: (IriTermOrElt)[];\n }];\n}\n\nexport interface GroupPattern {\n type: 'group';\n patterns: Pattern[];\n}\n\nexport interface GraphPattern {\n type: 'graph';\n name: IriTerm | VariableTerm;\n patterns: Pattern[];\n}\n\nexport interface MinusPattern {\n type: 'minus';\n patterns: Pattern[];\n}\n\nexport interface ServicePattern {\n type: 'service';\n name: IriTerm | VariableTerm;\n silent: boolean;\n patterns: Pattern[];\n}\n\nexport type BlockPattern =\n | OptionalPattern\n | UnionPattern\n | GroupPattern\n | GraphPattern\n | MinusPattern\n | ServicePattern;\n\nexport interface OptionalPattern {\n type: 'optional';\n patterns: Pattern[];\n}\n\nexport interface UnionPattern {\n type: 'union';\n patterns: Pattern[];\n}\n\nexport type ValuePatternRow = Record<string, IriTerm | BlankTerm | LiteralTerm | undefined>;\n\nexport interface FilterPattern {\n type: 'filter';\n expression: Expression;\n}\n\nexport interface BindPattern {\n type: 'bind';\n expression: Expression;\n variable: VariableTerm;\n}\n\nexport interface ValuesPattern {\n type: 'values';\n values: ValuePatternRow[];\n}\n\nexport interface BaseExpression {\n type: string;\n distinct?: boolean | undefined;\n}\n\nexport interface OperationExpression extends BaseExpression {\n type: 'operation';\n operator: string;\n args: (Expression | Pattern)[];\n}\n\nexport interface AggregateExpression extends BaseExpression {\n type: 'aggregate';\n expression: Expression | Wildcard;\n aggregation: string;\n separator?: string | undefined;\n}\n"]}
1
+ {"version":3,"file":"Sparql11types.js","sourceRoot":"","sources":["Sparql11types.ts"],"names":[],"mappings":"","sourcesContent":["import type * as RdfJs from '@rdfjs/types';\nimport type { BlankNode } from 'rdf-data-factory';\nimport type { CommonIRIs } from '@traqula/core';\n\nexport type GraphTerm = IriTerm | BlankTerm | LiteralTerm;\nexport type Term = GraphTerm | VariableTerm;\nexport type VerbA = IriTerm<CommonIRIs.TYPE>;\n\nexport interface Wildcard {\n readonly termType: 'Wildcard';\n readonly value: '*';\n equals: (other: RdfJs.Term | null | undefined) => boolean;\n}\n\nexport type Triple = {\n subject: Term;\n predicate: IriTerm | VariableTerm | PropertyPath;\n object: Term;\n};\n\nexport interface IGraphNode {\n node: ITriplesNode['node'] | Term;\n triples: Triple[];\n}\n\nexport interface ITriplesNode {\n node: IriTerm | BlankNode;\n triples: Triple[];\n}\n\nexport type Pattern =\n | BgpPattern\n | BlockPattern\n | FilterPattern\n | BindPattern\n | ValuesPattern\n | Omit<SelectQuery, 'prefixes'>;\n\nexport type Expression =\n | OperationExpression\n | FunctionCallExpression\n | AggregateExpression\n // Used in `IN` operator\n | Expression[]\n | IriTerm\n | VariableTerm\n | LiteralTerm;\n\nexport interface FunctionCallExpression extends BaseExpression {\n type: 'functionCall';\n function: IriTerm;\n args: Expression[];\n}\n\n/**\n * Basic Graph Pattern\n */\nexport interface BgpPattern {\n type: 'bgp';\n triples: Triple[];\n}\n\nexport interface GraphQuads {\n type: 'graph';\n name: IriTerm | VariableTerm;\n triples: Triple[];\n}\n\n// Copied types\nexport interface SparqlParser {\n parse: (query: string) => SparqlQuery;\n _resetBlanks: () => void;\n}\n\nexport type VariableTerm = RdfJs.Variable;\nexport type IriTerm<IRI extends string = string> = RdfJs.NamedNode<IRI>;\nexport type LiteralTerm = RdfJs.Literal;\nexport type BlankTerm = RdfJs.BlankNode;\n\nexport type PropertyPath = NegatedPropertySet | {\n type: 'path';\n pathType: '|' | '/' | '^' | '+' | '*' | '?';\n items: (IriTerm | PropertyPath)[];\n};\n\nexport type SparqlQuery = Query | Update | Pick<Update, 'base' | 'prefixes'>;\n\nexport type Query = SelectQuery | ConstructQuery | AskQuery | DescribeQuery;\n\nexport interface SelectQuery extends BaseQuery {\n queryType: 'SELECT';\n variables: Variable[] | [Wildcard];\n distinct?: true | undefined;\n reduced?: true | undefined;\n group?: Grouping[] | undefined;\n having?: Expression[] | undefined;\n order?: Ordering[] | undefined;\n limit?: number | undefined;\n offset?: number | undefined;\n}\n\nexport interface Grouping {\n expression: Expression;\n variable?: VariableTerm;\n}\n\nexport interface Ordering {\n expression: Expression;\n descending?: true | undefined;\n}\n\nexport interface ConstructQuery extends BaseQuery {\n queryType: 'CONSTRUCT';\n template?: Triple[] | undefined;\n}\n\nexport interface AskQuery extends BaseQuery {\n queryType: 'ASK';\n}\n\nexport interface DescribeQuery extends BaseQuery {\n queryType: 'DESCRIBE';\n variables: (VariableTerm | IriTerm)[] | [Wildcard];\n}\n\nexport interface Update {\n type: 'update';\n base?: string | undefined;\n prefixes: Record<string, string>;\n updates: UpdateOperation[];\n}\n\nexport type UpdateOperation = InsertDeleteOperation | ManagementOperation;\n\nexport type InsertDeleteOperation =\n | {\n updateType: 'insert';\n graph?: GraphOrDefault;\n insert: Quads[];\n }\n | {\n updateType: 'delete';\n graph?: GraphOrDefault;\n delete: Quads[];\n }\n | {\n updateType: 'insertdelete';\n graph?: IriTerm;\n insert: Quads[];\n delete: Quads[];\n using?: {\n default: IriTerm[];\n named: IriTerm[];\n };\n where: Pattern[];\n }\n | {\n updateType: 'deletewhere';\n graph?: GraphOrDefault;\n delete: Quads[];\n };\n\nexport type Quads = BgpPattern | GraphQuads;\n\nexport type ManagementOperation =\n | CopyMoveAddOperation\n | LoadOperation\n | CreateOperation\n | ClearDropOperation;\n\nexport interface CopyMoveAddOperation {\n type: 'copy' | 'move' | 'add';\n silent: boolean;\n source: GraphOrDefault;\n destination: GraphOrDefault;\n}\n\nexport interface LoadOperation {\n type: 'load';\n silent: boolean;\n source: IriTerm;\n destination?: IriTerm;\n}\n\nexport interface CreateOperation {\n type: 'create';\n silent: boolean;\n graph: GraphOrDefault;\n}\n\nexport interface ClearDropOperation {\n type: 'clear' | 'drop';\n silent: boolean;\n graph: GraphReference;\n}\n\nexport interface GraphOrDefault {\n type?: 'graph';\n name?: IriTerm | undefined;\n default?: true | undefined;\n}\n\nexport interface GraphReference extends GraphOrDefault {\n named?: true | undefined;\n all?: true | undefined;\n}\n\n/**\n * Examples: '?var', '*',\n * SELECT (?a as ?b) ... ==> { expression: '?a', variable: '?b' }\n */\nexport type Variable = VariableExpression | VariableTerm;\n\nexport interface VariableExpression {\n expression: Expression;\n variable: VariableTerm;\n}\n\nexport interface BaseQuery {\n type: 'query';\n base?: string | undefined;\n prefixes: Record<string, string>;\n from?:\n | {\n default: IriTerm[];\n named: IriTerm[];\n }\n | undefined;\n where?: Pattern[] | undefined;\n values?: ValuePatternRow[] | undefined;\n}\n\nexport type IriTermOrElt = IriTerm | {\n type: 'path';\n pathType: '^';\n items: [IriTerm];\n};\n\nexport interface NegatedPropertySet {\n type: 'path';\n pathType: '!';\n items: IriTermOrElt[] | [{\n type: 'path';\n pathType: '|';\n items: (IriTermOrElt)[];\n }];\n}\n\nexport interface GroupPattern {\n type: 'group';\n patterns: Pattern[];\n}\n\nexport interface GraphPattern {\n type: 'graph';\n name: IriTerm | VariableTerm;\n patterns: Pattern[];\n}\n\nexport interface MinusPattern {\n type: 'minus';\n patterns: Pattern[];\n}\n\nexport interface ServicePattern {\n type: 'service';\n name: IriTerm | VariableTerm;\n silent: boolean;\n patterns: Pattern[];\n}\n\nexport type BlockPattern =\n | OptionalPattern\n | UnionPattern\n | GroupPattern\n | GraphPattern\n | MinusPattern\n | ServicePattern;\n\nexport interface OptionalPattern {\n type: 'optional';\n patterns: Pattern[];\n}\n\nexport interface UnionPattern {\n type: 'union';\n patterns: Pattern[];\n}\n\nexport type ValuePatternRow = Record<string, IriTerm | BlankTerm | LiteralTerm | undefined>;\n\nexport interface FilterPattern {\n type: 'filter';\n expression: Expression;\n}\n\nexport interface BindPattern {\n type: 'bind';\n expression: Expression;\n variable: VariableTerm;\n}\n\nexport interface ValuesPattern {\n type: 'values';\n values: ValuePatternRow[];\n}\n\nexport interface BaseExpression {\n type: string;\n distinct?: boolean | undefined;\n}\n\nexport interface OperationExpression extends BaseExpression {\n type: 'operation';\n operator: string;\n args: (Expression | Pattern)[];\n}\n\nexport interface AggregateExpression extends BaseExpression {\n type: 'aggregate';\n expression: Expression | Wildcard;\n aggregation: string;\n separator?: string | undefined;\n}\n"]}
@@ -21,6 +21,8 @@ export const prologue = {
21
21
  },
22
22
  {
23
23
  ALT: () => {
24
+ // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.
25
+ // We might need to check this.
24
26
  const pref = SUBRULE(prefixDecl);
25
27
  ACTION(() => {
26
28
  const [name, value] = pref;
@@ -70,16 +72,24 @@ export const prefixDecl = {
70
72
  */
71
73
  export const triplesTemplate = {
72
74
  name: 'triplesTemplate',
73
- impl: ({ SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {
75
+ impl: ({ ACTION, AT_LEAST_ONE, AT_LEAST_ONE_SEP, SUBRULE, CONSUME, OPTION }) => () => {
74
76
  const triples = [];
75
- triples.push(SUBRULE(triplesSameSubject));
76
- OPTION1(() => {
77
- CONSUME(l.symbols.dot);
78
- OPTION2(() => {
79
- triples.push(SUBRULE(triplesTemplate));
80
- });
77
+ let parsedDot = true;
78
+ AT_LEAST_ONE({
79
+ GATE: () => parsedDot,
80
+ DEF: () => {
81
+ parsedDot = false;
82
+ const template = SUBRULE(triplesSameSubject);
83
+ ACTION(() => {
84
+ triples.push(...template);
85
+ });
86
+ OPTION(() => {
87
+ CONSUME(l.symbols.dot);
88
+ parsedDot = true;
89
+ });
90
+ }
81
91
  });
82
- return triples.flat(1);
92
+ return triples;
83
93
  },
84
94
  };
85
95
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"general.js","sourceRoot":"","sources":["general.ts"],"names":[],"mappings":"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","sourcesContent":["import * as l from '../lexer';\nimport type { RuleDef } from '@traqula/core';\nimport { CommonIRIs, resolveIRI } from '@traqula/core';\nimport { blankNode, booleanLiteral, canCreateBlankNodes, iri, numericLiteral, rdfLiteral } from './literals';\nimport type { GraphTerm, Term, Triple, VerbA, IriTerm, VariableTerm, BaseQuery } from '../Sparql11types';\nimport { triplesSameSubject } from './tripleBlock';\n\n/**\n * [[4]](https://www.w3.org/TR/sparql11-query/#rPrologue)\n */\nexport const prologue: RuleDef<'prologue', Pick<BaseQuery, 'base' | 'prefixes'>> = <const> {\n name: 'prologue',\n impl: ({ ACTION, SUBRULE, MANY, OR, context }) => () => {\n const result: Pick<BaseQuery, 'base' | 'prefixes'> = {\n prefixes: {},\n ...(context.baseIRI && { base: context.baseIRI }),\n };\n MANY(() => {\n OR([\n {\n ALT: () => {\n result.base = SUBRULE(baseDecl);\n },\n },\n {\n ALT: () => {\n const pref = SUBRULE(prefixDecl);\n ACTION(() => {\n const [ name, value ] = pref;\n result.prefixes[name] = value;\n });\n },\n },\n ]);\n });\n return result;\n },\n};\n\n/**\n * Registers base IRI in the context and returns it.\n * [[5]](https://www.w3.org/TR/sparql11-query/#rBaseDecl)\n */\nexport const baseDecl: RuleDef<'baseDecl', string> = <const> {\n name: 'baseDecl',\n impl: ({ CONSUME, ACTION, context }) => () => {\n CONSUME(l.baseDecl);\n const base = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n return ACTION(() => {\n context.baseIRI = base;\n return base;\n });\n },\n};\n\n/**\n * Registers prefix in the context and returns registered key-value-pair.\n * [[6]](https://www.w3.org/TR/sparql11-query/#rPrefixDecl)\n */\nexport const prefixDecl: RuleDef<'prefixDecl', [string, string]> = <const> {\n name: 'prefixDecl',\n impl: ({ CONSUME, ACTION, context }) => () => {\n CONSUME(l.prefixDecl);\n const name = CONSUME(l.terminals.pNameNs).image.slice(0, -1);\n const value = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n\n return ACTION(() => {\n const fullIri = resolveIRI(value, context.baseIRI);\n context.prefixes[name] = fullIri;\n return [ name, fullIri ];\n });\n },\n};\n\n/**\n * [[52]](https://www.w3.org/TR/sparql11-query/#rTriplesTemplate)\n */\nexport const triplesTemplate: RuleDef<'triplesTemplate', Triple[]> = <const> {\n name: 'triplesTemplate',\n impl: ({ SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {\n const triples: Triple[][] = [];\n\n triples.push(SUBRULE(triplesSameSubject));\n OPTION1(() => {\n CONSUME(l.symbols.dot);\n OPTION2(() => {\n triples.push(SUBRULE(triplesTemplate));\n });\n });\n\n return triples.flat(1);\n },\n};\n\n/**\n * [[78]](https://www.w3.org/TR/sparql11-query/#rVerb)\n */\nexport const verb: RuleDef<'verb', VariableTerm | IriTerm> = <const> {\n name: 'verb',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(varOrIri) },\n {\n ALT: () => SUBRULE(verbA),\n },\n ]),\n};\n\nexport const verbA: RuleDef<'VerbA', VerbA> = <const> {\n name: 'VerbA',\n impl: ({ CONSUME, context }) => () => {\n CONSUME(l.a);\n return context.dataFactory.namedNode(CommonIRIs.TYPE);\n },\n};\n\n/**\n * [[106]](https://www.w3.org/TR/sparql11-query/#rVarOrTerm)\n */\nexport const varOrTerm: RuleDef<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ SUBRULE, OR, context }) => () => OR<Term>([\n { GATE: () => context.parseMode.has(canParseVars), ALT: () => SUBRULE(var_) },\n { ALT: () => SUBRULE(graphTerm) },\n ]),\n};\n\n/**\n * [[107]](https://www.w3.org/TR/sparql11-query/#rVarOrIri)\n */\nexport const varOrIri: RuleDef<'varOrIri', IriTerm | VariableTerm> = <const> {\n name: 'varOrIri',\n impl: ({ SUBRULE, OR, context }) => () => OR<IriTerm | VariableTerm>([\n { GATE: () => context.parseMode.has(canParseVars), ALT: () => SUBRULE(var_) },\n { ALT: () => SUBRULE(iri) },\n ]),\n};\n\nexport const canParseVars = Symbol('canParseVars');\n\n/**\n * [[108]](https://www.w3.org/TR/sparql11-query/#rVar)\n */\nexport const var_: RuleDef<'var', VariableTerm> = <const> {\n name: 'var',\n impl: ({ ACTION, CONSUME, OR, context }) => () => {\n const result = OR([\n { ALT: () => context.dataFactory.variable(CONSUME(l.terminals.var1).image.slice(1)) },\n { ALT: () => context.dataFactory.variable(CONSUME(l.terminals.var2).image.slice(1)) },\n ]);\n ACTION(() => {\n if (!context.parseMode.has(canParseVars)) {\n throw new Error('Variables are not allowed here');\n }\n });\n return result;\n },\n};\n\n/**\n * [[109]](https://www.w3.org/TR/sparql11-query/#rGraphTerm)\n */\nexport const graphTerm: RuleDef<'graphTerm', GraphTerm> = <const> {\n name: 'graphTerm',\n impl: ({ SUBRULE, CONSUME, OR, context }) => () => OR<GraphTerm>([\n { ALT: () => SUBRULE(iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(numericLiteral) },\n { ALT: () => SUBRULE(booleanLiteral) },\n { GATE: () => context.parseMode.has(canCreateBlankNodes), ALT: () => SUBRULE(blankNode) },\n {\n ALT: () => {\n CONSUME(l.terminals.nil);\n return context.dataFactory.namedNode(CommonIRIs.NIL);\n },\n },\n ]),\n};\n"]}
1
+ {"version":3,"file":"general.js","sourceRoot":"","sources":["general.ts"],"names":[],"mappings":"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","sourcesContent":["import * as l from '../lexer';\nimport type { RuleDef } from '@traqula/core';\nimport { CommonIRIs, resolveIRI } from '@traqula/core';\nimport { blankNode, booleanLiteral, canCreateBlankNodes, iri, numericLiteral, rdfLiteral } from './literals';\nimport type { GraphTerm, Term, Triple, VerbA, IriTerm, VariableTerm, BaseQuery } from '../Sparql11types';\nimport { triplesSameSubject } from './tripleBlock';\n\n/**\n * [[4]](https://www.w3.org/TR/sparql11-query/#rPrologue)\n */\nexport const prologue: RuleDef<'prologue', Pick<BaseQuery, 'base' | 'prefixes'>> = <const> {\n name: 'prologue',\n impl: ({ ACTION, SUBRULE, MANY, OR, context }) => () => {\n const result: Pick<BaseQuery, 'base' | 'prefixes'> = {\n prefixes: {},\n ...(context.baseIRI && { base: context.baseIRI }),\n };\n MANY(() => {\n OR([\n {\n ALT: () => {\n result.base = SUBRULE(baseDecl);\n },\n },\n {\n ALT: () => {\n // TODO: the [spec](https://www.w3.org/TR/sparql11-query/#iriRefs) says you cannot redefine prefixes.\n // We might need to check this.\n const pref = SUBRULE(prefixDecl);\n ACTION(() => {\n const [ name, value ] = pref;\n result.prefixes[name] = value;\n });\n },\n },\n ]);\n });\n return result;\n },\n};\n\n/**\n * Registers base IRI in the context and returns it.\n * [[5]](https://www.w3.org/TR/sparql11-query/#rBaseDecl)\n */\nexport const baseDecl: RuleDef<'baseDecl', string> = <const> {\n name: 'baseDecl',\n impl: ({ CONSUME, ACTION, context }) => () => {\n CONSUME(l.baseDecl);\n const base = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n return ACTION(() => {\n context.baseIRI = base;\n return base;\n });\n },\n};\n\n/**\n * Registers prefix in the context and returns registered key-value-pair.\n * [[6]](https://www.w3.org/TR/sparql11-query/#rPrefixDecl)\n */\nexport const prefixDecl: RuleDef<'prefixDecl', [string, string]> = <const> {\n name: 'prefixDecl',\n impl: ({ CONSUME, ACTION, context }) => () => {\n CONSUME(l.prefixDecl);\n const name = CONSUME(l.terminals.pNameNs).image.slice(0, -1);\n const value = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n\n return ACTION(() => {\n const fullIri = resolveIRI(value, context.baseIRI);\n context.prefixes[name] = fullIri;\n return [ name, fullIri ];\n });\n },\n};\n\n\n/**\n * [[52]](https://www.w3.org/TR/sparql11-query/#rTriplesTemplate)\n */\nexport const triplesTemplate: RuleDef<'triplesTemplate', Triple[]> = <const> {\n name: 'triplesTemplate',\n impl: ({ ACTION, AT_LEAST_ONE, AT_LEAST_ONE_SEP, SUBRULE, CONSUME, OPTION }) => () => {\n const triples: Triple[] = [];\n\n let parsedDot = true;\n AT_LEAST_ONE({\n GATE: () => parsedDot,\n DEF: () => {\n parsedDot = false;\n const template = SUBRULE(triplesSameSubject)\n ACTION(() => {\n triples.push(...template);\n });\n OPTION(() => {\n CONSUME(l.symbols.dot);\n parsedDot = true;\n });\n }\n });\n\n return triples;\n },\n};\n\n/**\n * [[78]](https://www.w3.org/TR/sparql11-query/#rVerb)\n */\nexport const verb: RuleDef<'verb', VariableTerm | IriTerm> = <const> {\n name: 'verb',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(varOrIri) },\n {\n ALT: () => SUBRULE(verbA),\n },\n ]),\n};\n\nexport const verbA: RuleDef<'VerbA', VerbA> = <const> {\n name: 'VerbA',\n impl: ({ CONSUME, context }) => () => {\n CONSUME(l.a);\n return context.dataFactory.namedNode(CommonIRIs.TYPE);\n },\n};\n\n/**\n * [[106]](https://www.w3.org/TR/sparql11-query/#rVarOrTerm)\n */\nexport const varOrTerm: RuleDef<'varOrTerm', Term> = <const> {\n name: 'varOrTerm',\n impl: ({ SUBRULE, OR, context }) => () => OR<Term>([\n { GATE: () => context.parseMode.has(canParseVars), ALT: () => SUBRULE(var_) },\n { ALT: () => SUBRULE(graphTerm) },\n ]),\n};\n\n/**\n * [[107]](https://www.w3.org/TR/sparql11-query/#rVarOrIri)\n */\nexport const varOrIri: RuleDef<'varOrIri', IriTerm | VariableTerm> = <const> {\n name: 'varOrIri',\n impl: ({ SUBRULE, OR, context }) => () => OR<IriTerm | VariableTerm>([\n { GATE: () => context.parseMode.has(canParseVars), ALT: () => SUBRULE(var_) },\n { ALT: () => SUBRULE(iri) },\n ]),\n};\n\nexport const canParseVars = Symbol('canParseVars');\n\n/**\n * [[108]](https://www.w3.org/TR/sparql11-query/#rVar)\n */\nexport const var_: RuleDef<'var', VariableTerm> = <const> {\n name: 'var',\n impl: ({ ACTION, CONSUME, OR, context }) => () => {\n const result = OR([\n { ALT: () => context.dataFactory.variable(CONSUME(l.terminals.var1).image.slice(1)) },\n { ALT: () => context.dataFactory.variable(CONSUME(l.terminals.var2).image.slice(1)) },\n ]);\n ACTION(() => {\n if (!context.parseMode.has(canParseVars)) {\n throw new Error('Variables are not allowed here');\n }\n });\n return result;\n },\n};\n\n/**\n * [[109]](https://www.w3.org/TR/sparql11-query/#rGraphTerm)\n */\nexport const graphTerm: RuleDef<'graphTerm', GraphTerm> = <const> {\n name: 'graphTerm',\n impl: ({ SUBRULE, CONSUME, OR, context }) => () => OR<GraphTerm>([\n { ALT: () => SUBRULE(iri) },\n { ALT: () => SUBRULE(rdfLiteral) },\n { ALT: () => SUBRULE(numericLiteral) },\n { ALT: () => SUBRULE(booleanLiteral) },\n { GATE: () => context.parseMode.has(canCreateBlankNodes), ALT: () => SUBRULE(blankNode) },\n {\n ALT: () => {\n CONSUME(l.terminals.nil);\n return context.dataFactory.namedNode(CommonIRIs.NIL);\n },\n },\n ]),\n};\n"]}
@@ -152,12 +152,6 @@ export const blankNode = {
152
152
  {
153
153
  ALT: () => {
154
154
  const label = CONSUME(l.terminals.blankNodeLabel).image;
155
- ACTION(() => {
156
- if (context.flushedBlankNodeLabels.has(label)) {
157
- throw new Error('Detected reuse blank node across different request string.');
158
- }
159
- context.usedBlankNodeLabels.add(label);
160
- });
161
155
  return ACTION(() => context.dataFactory.blankNode(label.replace('_:', 'e_')));
162
156
  },
163
157
  },
@@ -1 +1 @@
1
- {"version":3,"file":"literals.js","sourceRoot":"","sources":["literals.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NamedNode } from 'rdf-data-factory';\nimport * as l from '../lexer';\nimport type { RuleDef } from '@traqula/core';\nimport { CommonIRIs, resolveIRI } from '@traqula/core';\nimport type { BlankTerm, IriTerm, LiteralTerm } from '../Sparql11types';\n\n/**\n * Parses an RDF literal, in the form of {value}@{lang} or {value}^^{datatype}.\n * [[129]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)\n */\nexport const rdfLiteral: RuleDef<'rdfLiteral', LiteralTerm> = <const> {\n name: 'rdfLiteral',\n impl: ({ SUBRULE, CONSUME, OPTION, OR, context }) => () => {\n const value = SUBRULE(string);\n const languageOrDatatype = OPTION(() => OR<string | NamedNode>([\n { ALT: () => CONSUME(l.terminals.langTag).image.slice(1) },\n {\n ALT: () => {\n CONSUME(l.symbols.hathat);\n return SUBRULE(iri);\n },\n },\n ]));\n return context.dataFactory.literal(value, languageOrDatatype);\n },\n};\n\n/**\n * Parses a numeric literal.\n * [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)\n */\nexport const numericLiteral: RuleDef<'numericLiteral', LiteralTerm> = <const> {\n name: 'numericLiteral',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(numericLiteralUnsigned) },\n { ALT: () => SUBRULE(numericLiteralPositive) },\n { ALT: () => SUBRULE(numericLiteralNegative) },\n ]),\n};\n\n/**\n * Parses an unsigned numeric literal.\n * [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)\n */\nexport const numericLiteralUnsigned: RuleDef<'numericLiteralUnsigned', LiteralTerm> = <const> {\n name: 'numericLiteralUnsigned',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.integer).image,\n context.dataFactory.namedNode(CommonIRIs.INTEGER),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.decimal).image,\n context.dataFactory.namedNode(CommonIRIs.DECIMAL),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.double).image,\n context.dataFactory.namedNode(CommonIRIs.DOUBLE),\n ) },\n ]),\n};\n\n/**\n * Parses a positive numeric literal.\n * [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)\n */\nexport const numericLiteralPositive: RuleDef<'numericLiteralPositive', LiteralTerm> = <const> {\n name: 'numericLiteralPositive',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.interferePositive).image,\n context.dataFactory.namedNode(CommonIRIs.INTEGER),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.decimalPositive).image,\n context.dataFactory.namedNode(CommonIRIs.DECIMAL),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.doublePositive).image,\n context.dataFactory.namedNode(CommonIRIs.DOUBLE),\n ) },\n ]),\n};\n\n/**\n * Parses a negative numeric literal.\n * [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)\n */\nexport const numericLiteralNegative: RuleDef<'numericLiteralNegative', LiteralTerm> = <const> {\n name: 'numericLiteralNegative',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.integerNegative).image,\n context.dataFactory.namedNode(CommonIRIs.INTEGER),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.decimalNegative).image,\n context.dataFactory.namedNode(CommonIRIs.DECIMAL),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.doubleNegative).image,\n context.dataFactory.namedNode(CommonIRIs.DOUBLE),\n ) },\n ]),\n};\n\n/**\n * Parses a boolean literal.\n * [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)\n */\nexport const booleanLiteral: RuleDef<'booleanLiteral', LiteralTerm> = <const> {\n name: 'booleanLiteral',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.true_).image.toLowerCase(),\n context.dataFactory.namedNode(CommonIRIs.BOOLEAN),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.false_).image.toLowerCase(),\n context.dataFactory.namedNode(CommonIRIs.BOOLEAN),\n ) },\n ]),\n};\n\n/**\n * Parses a string literal.\n * [[135]](https://www.w3.org/TR/sparql11-query/#rString)\n */\nexport const string: RuleDef<'string', string> = <const> {\n name: 'string',\n impl: ({ ACTION, CONSUME, OR }) => () => {\n const rawString = OR([\n { ALT: () => CONSUME(l.terminals.stringLiteral1).image.slice(1, -1) },\n { ALT: () => CONSUME(l.terminals.stringLiteral2).image.slice(1, -1) },\n { ALT: () => CONSUME(l.terminals.stringLiteralLong1).image.slice(3, -3) },\n { ALT: () => CONSUME(l.terminals.stringLiteralLong2).image.slice(3, -3) },\n ]);\n // Handle string escapes (19.7). (19.2 is handled at input level.)\n return ACTION(() => rawString.replaceAll(/\\\\([tnrbf\"'\\\\])/gu, (_, char: string) => {\n switch (char) {\n case 't': return '\\t';\n case 'n': return '\\n';\n case 'r': return '\\r';\n case 'b': return '\\b';\n case 'f': return '\\f';\n default: return char;\n }\n }));\n },\n};\n\n/**\n * Parses a named node, either as an IRI or as a prefixed name.\n * [[136]](https://www.w3.org/TR/sparql11-query/#riri)\n */\nexport const iri: RuleDef<'iri', IriTerm> = <const> {\n name: 'iri',\n impl: ({ ACTION, SUBRULE, CONSUME, OR, context }) => () => OR([\n { ALT: () => {\n const iriVal = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n return ACTION(() => context.dataFactory.namedNode(resolveIRI(iriVal, context.baseIRI)));\n } },\n { ALT: () => SUBRULE(prefixedName) },\n ]),\n};\n\n/**\n * Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.\n * [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)\n */\nexport const prefixedName: RuleDef<'prefixedName', IriTerm> = <const> {\n name: 'prefixedName',\n impl: ({ ACTION, CONSUME, OR, context }) => () => {\n const fullStr = OR([\n { ALT: () => CONSUME(l.terminals.pNameLn).image },\n { ALT: () => CONSUME(l.terminals.pNameNs).image },\n ]);\n return ACTION(() => {\n const [ prefix, localName ] = fullStr.split(':');\n const value = context.prefixes[prefix];\n if (value === undefined) {\n throw new Error(`Unknown prefix: ${prefix}`);\n }\n return context.dataFactory.namedNode(resolveIRI(value + localName, context.baseIRI));\n });\n },\n};\n\nexport const canCreateBlankNodes = Symbol('canCreateBlankNodes');\n\n/**\n * Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.\n * [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)\n */\nexport const blankNode: RuleDef<'blankNode', BlankTerm> = <const> {\n name: 'blankNode',\n impl: ({ ACTION, CONSUME, OR, context }) => () => {\n const result = OR([\n {\n ALT: () => {\n const label = CONSUME(l.terminals.blankNodeLabel).image;\n ACTION(() => {\n if (context.flushedBlankNodeLabels.has(label)) {\n throw new Error('Detected reuse blank node across different request string.');\n }\n context.usedBlankNodeLabels.add(label);\n });\n return ACTION(() => context.dataFactory.blankNode(label.replace('_:', 'e_')));\n },\n },\n {\n ALT: () => {\n CONSUME(l.terminals.anon);\n return ACTION(() => context.dataFactory.blankNode());\n },\n },\n ]);\n ACTION(() => {\n if (!context.parseMode.has(canCreateBlankNodes)) {\n throw new Error('Blank nodes are not allowed in this context');\n }\n });\n return result;\n },\n};\n"]}
1
+ {"version":3,"file":"literals.js","sourceRoot":"","sources":["literals.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NamedNode } from 'rdf-data-factory';\nimport * as l from '../lexer';\nimport type { RuleDef } from '@traqula/core';\nimport { CommonIRIs, resolveIRI } from '@traqula/core';\nimport type { BlankTerm, IriTerm, LiteralTerm } from '../Sparql11types';\n\n/**\n * Parses an RDF literal, in the form of {value}@{lang} or {value}^^{datatype}.\n * [[129]](https://www.w3.org/TR/sparql11-query/#rRDFLiteral)\n */\nexport const rdfLiteral: RuleDef<'rdfLiteral', LiteralTerm> = <const> {\n name: 'rdfLiteral',\n impl: ({ SUBRULE, CONSUME, OPTION, OR, context }) => () => {\n const value = SUBRULE(string);\n const languageOrDatatype = OPTION(() => OR<string | NamedNode>([\n { ALT: () => CONSUME(l.terminals.langTag).image.slice(1) },\n {\n ALT: () => {\n CONSUME(l.symbols.hathat);\n return SUBRULE(iri);\n },\n },\n ]));\n return context.dataFactory.literal(value, languageOrDatatype);\n },\n};\n\n/**\n * Parses a numeric literal.\n * [[130]](https://www.w3.org/TR/sparql11-query/#rNumericLiteral)\n */\nexport const numericLiteral: RuleDef<'numericLiteral', LiteralTerm> = <const> {\n name: 'numericLiteral',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(numericLiteralUnsigned) },\n { ALT: () => SUBRULE(numericLiteralPositive) },\n { ALT: () => SUBRULE(numericLiteralNegative) },\n ]),\n};\n\n/**\n * Parses an unsigned numeric literal.\n * [[131]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralUnsigned)\n */\nexport const numericLiteralUnsigned: RuleDef<'numericLiteralUnsigned', LiteralTerm> = <const> {\n name: 'numericLiteralUnsigned',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.integer).image,\n context.dataFactory.namedNode(CommonIRIs.INTEGER),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.decimal).image,\n context.dataFactory.namedNode(CommonIRIs.DECIMAL),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.double).image,\n context.dataFactory.namedNode(CommonIRIs.DOUBLE),\n ) },\n ]),\n};\n\n/**\n * Parses a positive numeric literal.\n * [[132]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralPositive)\n */\nexport const numericLiteralPositive: RuleDef<'numericLiteralPositive', LiteralTerm> = <const> {\n name: 'numericLiteralPositive',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.interferePositive).image,\n context.dataFactory.namedNode(CommonIRIs.INTEGER),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.decimalPositive).image,\n context.dataFactory.namedNode(CommonIRIs.DECIMAL),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.doublePositive).image,\n context.dataFactory.namedNode(CommonIRIs.DOUBLE),\n ) },\n ]),\n};\n\n/**\n * Parses a negative numeric literal.\n * [[133]](https://www.w3.org/TR/sparql11-query/#rNumericLiteralNegative)\n */\nexport const numericLiteralNegative: RuleDef<'numericLiteralNegative', LiteralTerm> = <const> {\n name: 'numericLiteralNegative',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.integerNegative).image,\n context.dataFactory.namedNode(CommonIRIs.INTEGER),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.decimalNegative).image,\n context.dataFactory.namedNode(CommonIRIs.DECIMAL),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.terminals.doubleNegative).image,\n context.dataFactory.namedNode(CommonIRIs.DOUBLE),\n ) },\n ]),\n};\n\n/**\n * Parses a boolean literal.\n * [[134]](https://www.w3.org/TR/sparql11-query/#rBooleanLiteral)\n */\nexport const booleanLiteral: RuleDef<'booleanLiteral', LiteralTerm> = <const> {\n name: 'booleanLiteral',\n impl: ({ CONSUME, OR, context }) => () => OR([\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.true_).image.toLowerCase(),\n context.dataFactory.namedNode(CommonIRIs.BOOLEAN),\n ) },\n { ALT: () => context.dataFactory.literal(\n CONSUME(l.false_).image.toLowerCase(),\n context.dataFactory.namedNode(CommonIRIs.BOOLEAN),\n ) },\n ]),\n};\n\n/**\n * Parses a string literal.\n * [[135]](https://www.w3.org/TR/sparql11-query/#rString)\n */\nexport const string: RuleDef<'string', string> = <const> {\n name: 'string',\n impl: ({ ACTION, CONSUME, OR }) => () => {\n const rawString = OR([\n { ALT: () => CONSUME(l.terminals.stringLiteral1).image.slice(1, -1) },\n { ALT: () => CONSUME(l.terminals.stringLiteral2).image.slice(1, -1) },\n { ALT: () => CONSUME(l.terminals.stringLiteralLong1).image.slice(3, -3) },\n { ALT: () => CONSUME(l.terminals.stringLiteralLong2).image.slice(3, -3) },\n ]);\n // Handle string escapes (19.7). (19.2 is handled at input level.)\n return ACTION(() => rawString.replaceAll(/\\\\([tnrbf\"'\\\\])/gu, (_, char: string) => {\n switch (char) {\n case 't': return '\\t';\n case 'n': return '\\n';\n case 'r': return '\\r';\n case 'b': return '\\b';\n case 'f': return '\\f';\n default: return char;\n }\n }));\n },\n};\n\n/**\n * Parses a named node, either as an IRI or as a prefixed name.\n * [[136]](https://www.w3.org/TR/sparql11-query/#riri)\n */\nexport const iri: RuleDef<'iri', IriTerm> = <const> {\n name: 'iri',\n impl: ({ ACTION, SUBRULE, CONSUME, OR, context }) => () => OR([\n { ALT: () => {\n const iriVal = CONSUME(l.terminals.iriRef).image.slice(1, -1);\n return ACTION(() => context.dataFactory.namedNode(resolveIRI(iriVal, context.baseIRI)));\n } },\n { ALT: () => SUBRULE(prefixedName) },\n ]),\n};\n\n/**\n * Parses a named node with a prefix. Looks up the prefix in the context and returns the full IRI.\n * [[137]](https://www.w3.org/TR/sparql11-query/#rPrefixedName)\n */\nexport const prefixedName: RuleDef<'prefixedName', IriTerm> = <const> {\n name: 'prefixedName',\n impl: ({ ACTION, CONSUME, OR, context }) => () => {\n const fullStr = OR([\n { ALT: () => CONSUME(l.terminals.pNameLn).image },\n { ALT: () => CONSUME(l.terminals.pNameNs).image },\n ]);\n return ACTION(() => {\n const [ prefix, localName ] = fullStr.split(':');\n const value = context.prefixes[prefix];\n if (value === undefined) {\n throw new Error(`Unknown prefix: ${prefix}`);\n }\n return context.dataFactory.namedNode(resolveIRI(value + localName, context.baseIRI));\n });\n },\n};\n\nexport const canCreateBlankNodes = Symbol('canCreateBlankNodes');\n\n/**\n * Parses blank note and throws an error if 'canCreateBlankNodes' is not in the current parserMode.\n * [[138]](https://www.w3.org/TR/sparql11-query/#rBlankNode)\n */\nexport const blankNode: RuleDef<'blankNode', BlankTerm> = <const> {\n name: 'blankNode',\n impl: ({ ACTION, CONSUME, OR, context }) => () => {\n const result = OR([\n {\n ALT: () => {\n const label = CONSUME(l.terminals.blankNodeLabel).image;\n return ACTION(() => context.dataFactory.blankNode(label.replace('_:', 'e_')));\n },\n },\n {\n ALT: () => {\n CONSUME(l.terminals.anon);\n return ACTION(() => context.dataFactory.blankNode());\n },\n },\n ]);\n ACTION(() => {\n if (!context.parseMode.has(canCreateBlankNodes)) {\n throw new Error('Blank nodes are not allowed in this context');\n }\n });\n return result;\n },\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"queryUnit.js","sourceRoot":"","sources":["queryUnit.ts"],"names":[],"mappings":"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","sourcesContent":["import * as l from '../../lexer';\nimport { Wildcard } from '@traqula/core';\nimport type { RuleDef, ImplArgs } from '@traqula/core';\nimport { canParseAggregate } from '../builtIn';\nimport { datasetClause, type IDatasetClause } from '../dataSetClause';\nimport { expression } from '../expression';\nimport { prologue, triplesTemplate, var_, varOrIri } from '../general';\nimport { solutionModifier } from '../solutionModifier';\nimport type {\n AggregateExpression,\n AskQuery,\n ConstructQuery,\n DescribeQuery,\n Expression,\n Grouping,\n IriTerm,\n Pattern,\n Query,\n SelectQuery,\n Triple,\n ValuePatternRow,\n Variable,\n VariableExpression,\n VariableTerm,\n} from '../../Sparql11types';\nimport { triplesSameSubject } from '../tripleBlock';\nimport { dataBlock, whereClause } from '../whereClause';\n\n/**\n * [[1]](https://www.w3.org/TR/sparql11-query/#rQueryUnit)\n */\nexport const queryUnit: RuleDef<'queryUnit', Query> = <const> {\n name: 'queryUnit',\n impl: ({ SUBRULE }) => () => SUBRULE(query),\n};\n\n/**\n * [[2]](https://www.w3.org/TR/sparql11-query/#rQuery)\n */\nexport const query: RuleDef<'query', Query> = <const> {\n name: 'query',\n impl: ({ ACTION, SUBRULE, OR }) => () => {\n const prologueValues = SUBRULE(prologue);\n const queryType = OR<Omit<Query, HandledByBase>>([\n { ALT: () => SUBRULE(selectQuery) },\n { ALT: () => SUBRULE(constructQuery) },\n { ALT: () => SUBRULE(describeQuery) },\n { ALT: () => SUBRULE(askQuery) },\n ]);\n const values = SUBRULE(valuesClause);\n\n return ACTION(() => (<Query>{\n ...prologueValues,\n ...queryType,\n type: 'query',\n ...(values && { values }),\n }));\n },\n};\n\nexport type HandledByBase = 'values' | 'type' | 'base' | 'prefixes';\n\nfunction extractFromOfDataSetClauses(ACTION: ImplArgs['ACTION'], MANY: ImplArgs['MANY'], SUBRULE: ImplArgs['SUBRULE']):\n{ default: IriTerm[]; named: IriTerm[] } | undefined {\n const datasetClauses: IDatasetClause[] = [];\n MANY(() => {\n datasetClauses.push(SUBRULE(datasetClause));\n });\n return ACTION(() => {\n const from: { default: IriTerm[]; named: IriTerm[] } = {\n default: [],\n named: [],\n };\n for (const datasetClause of datasetClauses) {\n if (datasetClause.type === 'default') {\n from.default.push(datasetClause.value);\n } else {\n from.named.push(datasetClause.value);\n }\n }\n return (from.default.length === 0 && from.named.length === 0) ? undefined : from;\n });\n}\n\n/**\n * Get all 'aggregate' rules from an expression\n */\nfunction getAggregatesOfExpression(expression: Expression | Pattern): AggregateExpression[] {\n if ('type' in expression) {\n if (expression.type === 'aggregate') {\n return [ expression ];\n }\n if (expression.type === 'operation') {\n const aggregates: AggregateExpression[] = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n }\n return [];\n}\n\n/**\n * Return the id of an expression\n */\nfunction getExpressionId(expression: Grouping | VariableTerm | VariableExpression): string | undefined {\n // Check if grouping\n if ('variable' in expression && expression.variable) {\n return expression.variable.value;\n }\n if ('value' in expression) {\n return expression.value;\n }\n return 'value' in expression.expression ? expression.expression.value : undefined;\n}\n/**\n * Get all variables used in an expression\n */\nfunction getVariablesFromExpression(expression: Expression): Set<VariableTerm> {\n const variables = new Set<VariableTerm>();\n const visitExpression = (expr: Expression | Pattern | undefined): void => {\n if (!expr) {\n return;\n }\n if ('termType' in expr && expr.termType === 'Variable') {\n variables.add(expr);\n } else if ('type' in expr && expr.type === 'operation') {\n for (const rec of expr.args) {\n visitExpression(rec);\n }\n }\n };\n visitExpression(expression);\n return variables;\n}\n\n/**\n * [[7]](https://www.w3.org/TR/sparql11-query/#rSelectQuery)\n */\nexport const selectQuery: RuleDef<'selectQuery', Omit<SelectQuery, HandledByBase>> = <const> {\n name: 'selectQuery',\n impl: ({ ACTION, SUBRULE, MANY, context }) => () => {\n const selectVal = SUBRULE(selectClause);\n const from = extractFromOfDataSetClauses(ACTION, MANY, SUBRULE);\n const where = SUBRULE(whereClause);\n const modifier = SUBRULE(solutionModifier);\n\n ACTION(() => {\n if (selectVal.variables.length === 1 && selectVal.variables[0] instanceof Wildcard) {\n if (modifier.group !== undefined) {\n throw new Error('GROUP BY not allowed with wildcard');\n }\n return;\n }\n const variables = <Variable[]> selectVal.variables;\n // Check for projection of ungrouped variable\n // Check can be skipped in case of wildcard select.\n if (!context.skipValidation) {\n const hasCountAggregate = variables.flatMap(\n varVal => 'termType' in varVal ? [] : getAggregatesOfExpression(varVal.expression),\n ).some(agg => agg.aggregation === 'count' && !(agg.expression instanceof Wildcard));\n if (hasCountAggregate || modifier.group) {\n // We have to check whether\n // 1. Variables used in projection are usable given the group by clause\n // 2. A selectCount will create an implicit group by clause.\n for (const selectVar of variables) {\n if ('termType' in selectVar) {\n if (!modifier.group || !modifier.group.map(groupvar => getExpressionId(groupvar))\n .includes((getExpressionId(selectVar)))) {\n throw new Error('Variable not allowed in projection');\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n const usedvars = getVariablesFromExpression(selectVar.expression);\n for (const usedvar of usedvars) {\n if (!modifier.group || !modifier.group.map || !modifier.group.map(groupVar => getExpressionId(groupVar))\n .includes(getExpressionId(usedvar))) {\n throw new Error(`Use of ungrouped variable in projection of operation (?${getExpressionId(usedvar)})`);\n }\n }\n }\n }\n }\n }\n // Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = where.filter(pattern => pattern.type === 'query');\n if (subqueries.length > 0) {\n const selectedVarIds: string[] = [];\n for (const selectedVar of variables) {\n if ('variable' in selectedVar) {\n selectedVarIds.push(selectedVar.variable.value);\n }\n }\n const vars = subqueries.flatMap(sub => <(Variable | Wildcard)[]>sub.variables)\n .map(v => 'value' in v ? v.value : v.variable.value);\n const subqueryIds = new Set(vars);\n for (const selectedVarId of selectedVarIds) {\n if (subqueryIds.has(selectedVarId)) {\n throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);\n }\n }\n }\n });\n\n return {\n ...selectVal,\n queryType: 'SELECT',\n ...(from && { from }),\n where,\n ...modifier,\n };\n },\n};\n\n/**\n * [[8]](https://www.w3.org/TR/sparql11-query/#rSubSelect)\n */\nexport const subSelect: RuleDef<'subSelect', Omit<SelectQuery, 'prefixes'>> = <const> {\n name: 'subSelect',\n impl: ({ ACTION, SUBRULE }) => () => {\n const clause = SUBRULE(selectClause);\n const where = SUBRULE(whereClause);\n const modifiers = SUBRULE(solutionModifier);\n const values = SUBRULE(valuesClause);\n\n return ACTION(() => ({\n ...modifiers,\n ...clause,\n type: 'query',\n queryType: 'SELECT',\n where,\n ...(values && { values }),\n }));\n },\n};\n\n/**\n * [[9]](https://www.w3.org/TR/sparql11-query/#rSelectClause)\n */\nexport interface ISelectClause {\n variables: Variable[] | [Wildcard];\n distinct?: true;\n reduced?: true;\n}\nexport const selectClause: RuleDef<'selectClause', ISelectClause> = <const> {\n name: 'selectClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, OR3, context }) => () => {\n CONSUME(l.select);\n const couldParseAgg = ACTION(() =>\n context.parseMode.has(canParseAggregate) || !context.parseMode.add(canParseAggregate));\n\n const distinctOrReduced = OPTION(() => OR1<Partial<{ distinct: true; reduced: true }>>([\n { ALT: () => {\n CONSUME(l.distinct);\n return { distinct: true };\n } },\n { ALT: () => {\n CONSUME(l.reduced);\n return { reduced: true };\n } },\n ]));\n const variables = OR2<ISelectClause['variables']>([\n { ALT: () => {\n CONSUME(l.symbols.star);\n return [ new Wildcard() ];\n } },\n { ALT: () => {\n const usedVars: VariableTerm[] = [];\n const result: Variable[] = [];\n AT_LEAST_ONE(() => OR3([\n { ALT: () => {\n const raw = SUBRULE1(var_);\n ACTION(() => {\n if (usedVars.some(v => v.equals(raw))) {\n throw new Error(`Variable ${raw.value} used more than once in SELECT clause`);\n }\n usedVars.push(raw);\n result.push(raw);\n });\n } },\n { ALT: () => {\n CONSUME(l.symbols.LParen);\n const expr = SUBRULE(expression);\n CONSUME(l.as);\n const variable = SUBRULE2(var_);\n CONSUME(l.symbols.RParen);\n ACTION(() => {\n if (usedVars.some(v => v.equals(variable))) {\n throw new Error(`Variable ${variable.value} used more than once in SELECT clause`);\n }\n usedVars.push(variable);\n result.push({\n expression: expr,\n variable,\n } satisfies VariableExpression);\n });\n } },\n ]));\n return result;\n } },\n ]);\n ACTION(() => !couldParseAgg && context.parseMode.delete(canParseAggregate));\n return ACTION(() => ({\n ...distinctOrReduced,\n variables,\n }));\n },\n};\n\n/**\n * [[10]](https://www.w3.org/TR/sparql11-query/#rConstructQuery)\n */\nexport const constructQuery: RuleDef<'constructQuery', Omit<ConstructQuery, HandledByBase>> = <const> {\n name: 'constructQuery',\n impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, MANY1, MANY2, OPTION, OR }) => () => {\n CONSUME(l.construct);\n return OR<Omit<ConstructQuery, HandledByBase>>([\n {\n ALT: () => {\n const template = SUBRULE(constructTemplate);\n const from = extractFromOfDataSetClauses(ACTION, MANY1, SUBRULE1);\n const where = SUBRULE(whereClause);\n const modifiers = SUBRULE1(solutionModifier);\n return ACTION(() => ({\n ...modifiers,\n queryType: 'CONSTRUCT',\n template,\n from,\n where,\n }));\n },\n },\n {\n ALT: () => {\n const from = extractFromOfDataSetClauses(ACTION, MANY2, SUBRULE2);\n CONSUME(l.where);\n CONSUME(l.symbols.LCurly);\n const template = OPTION(() => SUBRULE(triplesTemplate));\n CONSUME(l.symbols.RCurly);\n const modifiers = SUBRULE2(solutionModifier);\n const where: Pattern[] = template ?\n [{\n type: 'bgp',\n triples: template,\n }] :\n [];\n\n return ACTION(() => ({\n ...modifiers,\n queryType: 'CONSTRUCT',\n from,\n template,\n where,\n }));\n },\n },\n ]);\n },\n};\n\n/**\n * [[11]](https://www.w3.org/TR/sparql11-query/#rDescribeQuery)\n */\nexport const describeQuery: RuleDef<'describeQuery', Omit<DescribeQuery, HandledByBase>> = <const> {\n name: 'describeQuery',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, MANY, OPTION, OR }) => () => {\n CONSUME(l.describe);\n const variables = OR<DescribeQuery['variables']>([\n { ALT: () => {\n const variables: (VariableTerm | IriTerm)[] = [];\n AT_LEAST_ONE(() => {\n variables.push(SUBRULE(varOrIri));\n });\n return variables;\n } },\n { ALT: () => {\n CONSUME(l.symbols.star);\n return [ new Wildcard() ];\n } },\n ]);\n const from = extractFromOfDataSetClauses(ACTION, MANY, SUBRULE);\n const where = OPTION(() => SUBRULE(whereClause));\n const modifiers = SUBRULE(solutionModifier);\n return ACTION(() => ({\n ...modifiers,\n queryType: 'DESCRIBE',\n variables,\n from,\n where,\n }));\n },\n};\n\n/**\n * [[12]](https://www.w3.org/TR/sparql11-query/#rAskQuery)\n */\nexport const askQuery: RuleDef<'askQuery', Omit<AskQuery, HandledByBase>> = <const> {\n name: 'askQuery',\n impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => () => {\n CONSUME(l.ask);\n const from = extractFromOfDataSetClauses(ACTION, MANY, SUBRULE);\n const where = SUBRULE(whereClause);\n const modifiers = SUBRULE(solutionModifier);\n return ACTION(() => ({\n ...modifiers,\n queryType: 'ASK',\n from,\n where,\n }));\n },\n};\n\n/**\n * [[28]](https://www.w3.org/TR/sparql11-query/#rValuesClause)\n */\nexport const valuesClause: RuleDef<'valuesClause', ValuePatternRow[] | undefined> = <const> {\n name: 'valuesClause',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => OPTION(() => {\n CONSUME(l.values);\n return SUBRULE(dataBlock);\n }),\n};\n\n/**\n * [[73]](https://www.w3.org/TR/sparql11-query/#ConstructTemplate)\n */\nexport const constructTemplate: RuleDef<'constructTemplate', Triple[] | undefined> = <const> {\n name: 'constructTemplate',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.symbols.LCurly);\n const triples = OPTION(() => SUBRULE(constructTriples));\n CONSUME(l.symbols.RCurly);\n return triples;\n },\n};\n\n/**\n * [[12]](https://www.w3.org/TR/sparql11-query/#rConstructTriples)\n */\nexport const constructTriples: RuleDef<'constructTriples', Triple[]> = <const> {\n name: 'constructTriples',\n impl: ({ SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {\n const triples: Triple[][] = [];\n triples.push(SUBRULE(triplesSameSubject));\n OPTION1(() => {\n CONSUME(l.symbols.dot);\n OPTION2(() => {\n triples.push(SUBRULE(constructTriples));\n });\n });\n return triples.flat(1);\n },\n};\n"]}
1
+ {"version":3,"file":"queryUnit.js","sourceRoot":"","sources":["queryUnit.ts"],"names":[],"mappings":"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","sourcesContent":["import * as l from '../../lexer';\nimport { Wildcard } from '@traqula/core';\nimport type { RuleDef, ImplArgs } from '@traqula/core';\nimport { canParseAggregate } from '../builtIn';\nimport { datasetClause, type IDatasetClause } from '../dataSetClause';\nimport { expression } from '../expression';\nimport { prologue, triplesTemplate, var_, varOrIri } from '../general';\nimport { solutionModifier } from '../solutionModifier';\nimport type {\n AggregateExpression,\n AskQuery,\n ConstructQuery,\n DescribeQuery,\n Expression,\n Grouping,\n IriTerm,\n Pattern,\n Query,\n SelectQuery,\n Triple,\n ValuePatternRow,\n Variable,\n VariableExpression,\n VariableTerm,\n} from '../../Sparql11types';\nimport { triplesSameSubject } from '../tripleBlock';\nimport { dataBlock, whereClause } from '../whereClause';\n\n/**\n * [[1]](https://www.w3.org/TR/sparql11-query/#rQueryUnit)\n */\nexport const queryUnit: RuleDef<'queryUnit', Query> = <const> {\n name: 'queryUnit',\n impl: ({ SUBRULE }) => () => SUBRULE(query),\n};\n\n/**\n * [[2]](https://www.w3.org/TR/sparql11-query/#rQuery)\n */\nexport const query: RuleDef<'query', Query> = <const> {\n name: 'query',\n impl: ({ ACTION, SUBRULE, OR }) => () => {\n const prologueValues = SUBRULE(prologue);\n const queryType = OR<Omit<Query, HandledByBase>>([\n { ALT: () => SUBRULE(selectQuery) },\n { ALT: () => SUBRULE(constructQuery) },\n { ALT: () => SUBRULE(describeQuery) },\n { ALT: () => SUBRULE(askQuery) },\n ]);\n const values = SUBRULE(valuesClause);\n\n return ACTION(() => (<Query>{\n ...prologueValues,\n ...queryType,\n type: 'query',\n ...(values && { values }),\n }));\n },\n};\n\nexport type HandledByBase = 'values' | 'type' | 'base' | 'prefixes';\n\nfunction extractFromOfDataSetClauses(ACTION: ImplArgs['ACTION'], MANY: ImplArgs['MANY'], SUBRULE: ImplArgs['SUBRULE']):\n{ default: IriTerm[]; named: IriTerm[] } | undefined {\n const datasetClauses: IDatasetClause[] = [];\n MANY(() => {\n datasetClauses.push(SUBRULE(datasetClause));\n });\n return ACTION(() => {\n const from: { default: IriTerm[]; named: IriTerm[] } = {\n default: [],\n named: [],\n };\n for (const datasetClause of datasetClauses) {\n if (datasetClause.type === 'default') {\n from.default.push(datasetClause.value);\n } else {\n from.named.push(datasetClause.value);\n }\n }\n return (from.default.length === 0 && from.named.length === 0) ? undefined : from;\n });\n}\n\n/**\n * Get all 'aggregate' rules from an expression\n */\nfunction getAggregatesOfExpression(expression: Expression | Pattern): AggregateExpression[] {\n if ('type' in expression) {\n if (expression.type === 'aggregate') {\n return [ expression ];\n }\n if (expression.type === 'operation') {\n const aggregates: AggregateExpression[] = [];\n for (const arg of expression.args) {\n aggregates.push(...getAggregatesOfExpression(arg));\n }\n return aggregates;\n }\n }\n return [];\n}\n\n/**\n * Return the id of an expression\n */\nfunction getExpressionId(expression: Grouping | VariableTerm | VariableExpression): string | undefined {\n // Check if grouping\n if ('variable' in expression && expression.variable) {\n return expression.variable.value;\n }\n if ('value' in expression) {\n return expression.value;\n }\n return 'value' in expression.expression ? expression.expression.value : undefined;\n}\n/**\n * Get all variables used in an expression\n */\nfunction getVariablesFromExpression(expression: Expression): Set<VariableTerm> {\n const variables = new Set<VariableTerm>();\n const visitExpression = (expr: Expression | Pattern | undefined): void => {\n if (!expr) {\n return;\n }\n if ('termType' in expr && expr.termType === 'Variable') {\n variables.add(expr);\n } else if ('type' in expr && expr.type === 'operation') {\n for (const rec of expr.args) {\n visitExpression(rec);\n }\n }\n };\n visitExpression(expression);\n return variables;\n}\n\n/**\n * [[7]](https://www.w3.org/TR/sparql11-query/#rSelectQuery)\n */\nexport const selectQuery: RuleDef<'selectQuery', Omit<SelectQuery, HandledByBase>> = <const> {\n name: 'selectQuery',\n impl: ({ ACTION, SUBRULE, MANY, context }) => () => {\n const selectVal = SUBRULE(selectClause);\n const from = extractFromOfDataSetClauses(ACTION, MANY, SUBRULE);\n const where = SUBRULE(whereClause);\n const modifier = SUBRULE(solutionModifier);\n\n ACTION(() => {\n if (selectVal.variables.length === 1 && selectVal.variables[0] instanceof Wildcard) {\n if (modifier.group !== undefined) {\n throw new Error('GROUP BY not allowed with wildcard');\n }\n return;\n }\n const variables = <Variable[]> selectVal.variables;\n // Check for projection of ungrouped variable\n // Check can be skipped in case of wildcard select.\n if (!context.skipValidation) {\n const hasCountAggregate = variables.flatMap(\n varVal => 'termType' in varVal ? [] : getAggregatesOfExpression(varVal.expression),\n ).some(agg => agg.aggregation === 'count' && !(agg.expression instanceof Wildcard));\n if (hasCountAggregate || modifier.group) {\n // We have to check whether\n // 1. Variables used in projection are usable given the group by clause\n // 2. A selectCount will create an implicit group by clause.\n for (const selectVar of variables) {\n if ('termType' in selectVar) {\n if (!modifier.group || !modifier.group.map(groupvar => getExpressionId(groupvar))\n .includes((getExpressionId(selectVar)))) {\n throw new Error('Variable not allowed in projection');\n }\n } else if (getAggregatesOfExpression(selectVar.expression).length === 0) {\n const usedvars = getVariablesFromExpression(selectVar.expression);\n for (const usedvar of usedvars) {\n if (!modifier.group || !modifier.group.map || !modifier.group.map(groupVar => getExpressionId(groupVar))\n .includes(getExpressionId(usedvar))) {\n throw new Error(`Use of ungrouped variable in projection of operation (?${getExpressionId(usedvar)})`);\n }\n }\n }\n }\n }\n }\n // Check if id of each AS-selected column is not yet bound by subquery\n const subqueries = <Omit<SelectQuery, \"prefixes\">[]> where.filter(pattern => pattern.type === 'query');\n if (subqueries.length > 0) {\n const selectedVarIds: string[] = [];\n for (const selectedVar of variables) {\n if ('variable' in selectedVar) {\n selectedVarIds.push(selectedVar.variable.value);\n }\n }\n const vars = subqueries.flatMap(sub => <(Variable | Wildcard)[]>sub.variables)\n .map(v => 'value' in v ? v.value : v.variable.value);\n const subqueryIds = new Set(vars);\n for (const selectedVarId of selectedVarIds) {\n if (subqueryIds.has(selectedVarId)) {\n throw new Error(`Target id of 'AS' (?${selectedVarId}) already used in subquery`);\n }\n }\n }\n });\n\n return {\n ...selectVal,\n queryType: 'SELECT',\n ...(from && { from }),\n where,\n ...modifier,\n };\n },\n};\n\n/**\n * [[8]](https://www.w3.org/TR/sparql11-query/#rSubSelect)\n */\nexport const subSelect: RuleDef<'subSelect', Omit<SelectQuery, 'prefixes'>> = <const> {\n name: 'subSelect',\n impl: ({ ACTION, SUBRULE }) => () => {\n const clause = SUBRULE(selectClause);\n const where = SUBRULE(whereClause);\n const modifiers = SUBRULE(solutionModifier);\n const values = SUBRULE(valuesClause);\n\n return ACTION(() => ({\n ...modifiers,\n ...clause,\n type: 'query',\n queryType: 'SELECT',\n where,\n ...(values && { values }),\n }));\n },\n};\n\n/**\n * [[9]](https://www.w3.org/TR/sparql11-query/#rSelectClause)\n */\nexport interface ISelectClause {\n variables: Variable[] | [Wildcard];\n distinct?: true;\n reduced?: true;\n}\nexport const selectClause: RuleDef<'selectClause', ISelectClause> = <const> {\n name: 'selectClause',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, OR3, context }) => () => {\n CONSUME(l.select);\n const couldParseAgg = ACTION(() =>\n context.parseMode.has(canParseAggregate) || !context.parseMode.add(canParseAggregate));\n\n const distinctOrReduced = OPTION(() => OR1<Partial<{ distinct: true; reduced: true }>>([\n { ALT: () => {\n CONSUME(l.distinct);\n return { distinct: true };\n } },\n { ALT: () => {\n CONSUME(l.reduced);\n return { reduced: true };\n } },\n ]));\n const variables = OR2<ISelectClause['variables']>([\n { ALT: () => {\n CONSUME(l.symbols.star);\n return [ new Wildcard() ];\n } },\n { ALT: () => {\n const usedVars: VariableTerm[] = [];\n const result: Variable[] = [];\n AT_LEAST_ONE(() => OR3([\n { ALT: () => {\n const raw = SUBRULE1(var_);\n ACTION(() => {\n if (usedVars.some(v => v.equals(raw))) {\n throw new Error(`Variable ${raw.value} used more than once in SELECT clause`);\n }\n usedVars.push(raw);\n result.push(raw);\n });\n } },\n { ALT: () => {\n CONSUME(l.symbols.LParen);\n const expr = SUBRULE(expression);\n CONSUME(l.as);\n const variable = SUBRULE2(var_);\n CONSUME(l.symbols.RParen);\n ACTION(() => {\n if (usedVars.some(v => v.equals(variable))) {\n throw new Error(`Variable ${variable.value} used more than once in SELECT clause`);\n }\n usedVars.push(variable);\n result.push({\n expression: expr,\n variable,\n } satisfies VariableExpression);\n });\n } },\n ]));\n return result;\n } },\n ]);\n ACTION(() => !couldParseAgg && context.parseMode.delete(canParseAggregate));\n return ACTION(() => ({\n ...distinctOrReduced,\n variables,\n }));\n },\n};\n\n/**\n * [[10]](https://www.w3.org/TR/sparql11-query/#rConstructQuery)\n */\nexport const constructQuery: RuleDef<'constructQuery', Omit<ConstructQuery, HandledByBase>> = <const> {\n name: 'constructQuery',\n impl: ({ ACTION, SUBRULE, CONSUME, SUBRULE1, SUBRULE2, MANY1, MANY2, OPTION, OR }) => () => {\n CONSUME(l.construct);\n return OR<Omit<ConstructQuery, HandledByBase>>([\n {\n ALT: () => {\n const template = SUBRULE(constructTemplate);\n const from = extractFromOfDataSetClauses(ACTION, MANY1, SUBRULE1);\n const where = SUBRULE(whereClause);\n const modifiers = SUBRULE1(solutionModifier);\n return ACTION(() => ({\n ...modifiers,\n queryType: 'CONSTRUCT',\n template,\n from,\n where,\n }));\n },\n },\n {\n ALT: () => {\n const from = extractFromOfDataSetClauses(ACTION, MANY2, SUBRULE2);\n CONSUME(l.where);\n CONSUME(l.symbols.LCurly);\n const template = OPTION(() => SUBRULE(triplesTemplate));\n CONSUME(l.symbols.RCurly);\n const modifiers = SUBRULE2(solutionModifier);\n const where: Pattern[] = template ?\n [{\n type: 'bgp',\n triples: template,\n }] :\n [];\n\n return ACTION(() => ({\n ...modifiers,\n queryType: 'CONSTRUCT',\n from,\n template,\n where,\n }));\n },\n },\n ]);\n },\n};\n\n/**\n * [[11]](https://www.w3.org/TR/sparql11-query/#rDescribeQuery)\n */\nexport const describeQuery: RuleDef<'describeQuery', Omit<DescribeQuery, HandledByBase>> = <const> {\n name: 'describeQuery',\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, MANY, OPTION, OR }) => () => {\n CONSUME(l.describe);\n const variables = OR<DescribeQuery['variables']>([\n { ALT: () => {\n const variables: (VariableTerm | IriTerm)[] = [];\n AT_LEAST_ONE(() => {\n variables.push(SUBRULE(varOrIri));\n });\n return variables;\n } },\n { ALT: () => {\n CONSUME(l.symbols.star);\n return [ new Wildcard() ];\n } },\n ]);\n const from = extractFromOfDataSetClauses(ACTION, MANY, SUBRULE);\n const where = OPTION(() => SUBRULE(whereClause));\n const modifiers = SUBRULE(solutionModifier);\n return ACTION(() => ({\n ...modifiers,\n queryType: 'DESCRIBE',\n variables,\n from,\n where,\n }));\n },\n};\n\n/**\n * [[12]](https://www.w3.org/TR/sparql11-query/#rAskQuery)\n */\nexport const askQuery: RuleDef<'askQuery', Omit<AskQuery, HandledByBase>> = <const> {\n name: 'askQuery',\n impl: ({ ACTION, SUBRULE, CONSUME, MANY }) => () => {\n CONSUME(l.ask);\n const from = extractFromOfDataSetClauses(ACTION, MANY, SUBRULE);\n const where = SUBRULE(whereClause);\n const modifiers = SUBRULE(solutionModifier);\n return ACTION(() => ({\n ...modifiers,\n queryType: 'ASK',\n from,\n where,\n }));\n },\n};\n\n/**\n * [[28]](https://www.w3.org/TR/sparql11-query/#rValuesClause)\n */\nexport const valuesClause: RuleDef<'valuesClause', ValuePatternRow[] | undefined> = <const> {\n name: 'valuesClause',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => OPTION(() => {\n CONSUME(l.values);\n return SUBRULE(dataBlock);\n }),\n};\n\n/**\n * [[73]](https://www.w3.org/TR/sparql11-query/#ConstructTemplate)\n */\nexport const constructTemplate: RuleDef<'constructTemplate', Triple[] | undefined> = <const> {\n name: 'constructTemplate',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.symbols.LCurly);\n const triples = OPTION(() => SUBRULE(constructTriples));\n CONSUME(l.symbols.RCurly);\n return triples;\n },\n};\n\n/**\n * [[12]](https://www.w3.org/TR/sparql11-query/#rConstructTriples)\n */\nexport const constructTriples: RuleDef<'constructTriples', Triple[]> = <const> {\n name: 'constructTriples',\n impl: ({ SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {\n const triples: Triple[][] = [];\n triples.push(SUBRULE(triplesSameSubject));\n OPTION1(() => {\n CONSUME(l.symbols.dot);\n OPTION2(() => {\n triples.push(SUBRULE(constructTriples));\n });\n });\n return triples.flat(1);\n },\n};\n"]}
@@ -1,15 +1,15 @@
1
1
  import type { RuleDef } from '@traqula/core';
2
- import type { BgpPattern, IGraphNode, IriTerm, ITriplesNode, PropertyPath, Triple, TripleCreatorS, TripleCreatorSP, VariableTerm } from '../Sparql11types';
2
+ import type { BgpPattern, IGraphNode, IriTerm, ITriplesNode, PropertyPath, Triple, VariableTerm } from '../Sparql11types';
3
3
  /**
4
4
  * [[55]](https://www.w3.org/TR/sparql11-query/#rTriplesBlock)
5
5
  */
6
6
  export declare const triplesBlock: RuleDef<'triplesBlock', BgpPattern>;
7
7
  export declare const triplesSameSubject: RuleDef<"triplesSameSubject", Triple[]>;
8
8
  export declare const triplesSameSubjectPath: RuleDef<"triplesSameSubjectPath", Triple[]>;
9
- export declare const propertyList: RuleDef<"propertyList", TripleCreatorS[]>;
10
- export declare const propertyListPath: RuleDef<"propertyListPath", TripleCreatorS[]>;
11
- export declare const propertyListNotEmpty: RuleDef<"propertyListNotEmpty", TripleCreatorS[]>;
12
- export declare const propertyListPathNotEmpty: RuleDef<"propertyListPathNotEmpty", TripleCreatorS[]>;
9
+ export declare const propertyList: RuleDef<"propertyList", Triple[], [import("..").Term]>;
10
+ export declare const propertyListPath: RuleDef<"propertyListPath", Triple[], [import("..").Term]>;
11
+ export declare const propertyListNotEmpty: RuleDef<"propertyListNotEmpty", Triple[], [import("..").Term]>;
12
+ export declare const propertyListPathNotEmpty: RuleDef<"propertyListPathNotEmpty", Triple[], [import("..").Term]>;
13
13
  /**
14
14
  * [[84]](https://www.w3.org/TR/sparql11-query/#rVerbPath)
15
15
  */
@@ -18,16 +18,16 @@ export declare const verbPath: RuleDef<'verbPath', PropertyPath | IriTerm>;
18
18
  * [[85]](https://www.w3.org/TR/sparql11-query/#rVerbSimple)
19
19
  */
20
20
  export declare const verbSimple: RuleDef<'verbSimple', VariableTerm>;
21
- export declare const objectList: RuleDef<"objectList", TripleCreatorSP[]>;
22
- export declare const objectListPath: RuleDef<"objectListPath", TripleCreatorSP[]>;
21
+ export declare const objectList: RuleDef<"objectList", Triple[], [import("..").Term, import("@rdfjs/types").Variable | IriTerm<string> | PropertyPath]>;
22
+ export declare const objectListPath: RuleDef<"objectListPath", Triple[], [import("..").Term, import("@rdfjs/types").Variable | IriTerm<string> | PropertyPath]>;
23
23
  /**
24
24
  * [[80]](https://www.w3.org/TR/sparql11-query/#rObject)
25
25
  */
26
- export declare const object: RuleDef<"object", TripleCreatorSP[]>;
26
+ export declare const object: RuleDef<"object", Triple[], [import("..").Term, import("@rdfjs/types").Variable | IriTerm<string> | PropertyPath]>;
27
27
  /**
28
28
  * [[87]](https://www.w3.org/TR/sparql11-query/#rObjectPath)
29
29
  */
30
- export declare const objectPath: RuleDef<"objectPath", TripleCreatorSP[]>;
30
+ export declare const objectPath: RuleDef<"objectPath", Triple[], [import("..").Term, import("@rdfjs/types").Variable | IriTerm<string> | PropertyPath]>;
31
31
  /**
32
32
  * [[98]](https://www.w3.org/TR/sparql11-query/#rTriplesNode)
33
33
  * [[100]](https://www.w3.org/TR/sparql11-query/#rTriplesNodePath)
@@ -31,16 +31,15 @@ function triplesSameSubjectImpl(name, allowPaths) {
31
31
  {
32
32
  ALT: () => {
33
33
  const subject = SUBRULE(varOrTerm);
34
- const propNotEmpty = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty);
35
- return ACTION(() => propNotEmpty.map(partial => partial({ subject })));
34
+ return SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject);
36
35
  },
37
36
  },
38
37
  {
39
38
  ALT: () => {
40
39
  const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);
41
- const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList);
40
+ const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, subjectNode.node);
42
41
  return ACTION(() => [
43
- ...restNode.map(partial => partial({ subject: subjectNode.node })),
42
+ ...restNode,
44
43
  ...subjectNode.triples,
45
44
  ]);
46
45
  },
@@ -57,7 +56,7 @@ export const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubject
57
56
  function propertyListImpl(name, allowPaths) {
58
57
  return {
59
58
  name,
60
- impl: ({ SUBRULE, OPTION }) => () => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty)) ?? [],
59
+ impl: ({ SUBRULE, OPTION }) => (subject) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject)) ?? [],
61
60
  };
62
61
  }
63
62
  export const propertyList = propertyListImpl('propertyList', false);
@@ -71,51 +70,28 @@ export const propertyListPath = propertyListImpl('propertyListPath', true);
71
70
  function propertyListNotEmptyImplementation(name, allowPaths) {
72
71
  return {
73
72
  name,
74
- impl: ({ ACTION, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, context }) => () => {
73
+ impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (subject) => {
75
74
  const result = [];
76
- const resultAppendage = [];
77
- // Generates predicate and objectList
78
- const firstProperty = allowPaths ?
79
- OR1([
80
- { ALT: () => SUBRULE1(verbPath) },
81
- { ALT: () => SUBRULE1(verbSimple) },
82
- ]) :
83
- SUBRULE1(verb);
84
- const firstObjects = SUBRULE1(allowPaths ? objectListPath : objectList);
85
- ACTION(() => {
86
- // TODO: this filter is only here to be compliant with sparqlJS and is quite arbitrary.
87
- // For the first predicate,
88
- // additionally generated triples (like from collections) are shoved to the back of the result.
89
- const filterSubject = context.dataFactory.namedNode('internal:filterSubject');
90
- for (const cObject of firstObjects) {
91
- const triple = cObject({ subject: filterSubject, predicate: firstProperty });
92
- const generator = rest => cObject({ ...rest, predicate: firstProperty });
93
- if (triple.subject === filterSubject) {
94
- result.push(generator);
95
- }
96
- else {
97
- resultAppendage.push(generator);
98
- }
99
- }
100
- });
101
- MANY(() => {
102
- CONSUME(l.symbols.semi);
103
- OPTION(() => {
75
+ let parsedSemi = true;
76
+ AT_LEAST_ONE({
77
+ GATE: () => parsedSemi,
78
+ DEF: () => {
79
+ parsedSemi = false;
104
80
  const predicate = allowPaths ?
105
- OR2([
106
- { ALT: () => SUBRULE2(verbPath) },
107
- { ALT: () => SUBRULE2(verbSimple) },
81
+ OR1([
82
+ { ALT: () => SUBRULE1(verbPath) },
83
+ { ALT: () => SUBRULE1(verbSimple) },
108
84
  ]) :
109
- SUBRULE2(verb);
110
- // https://www.w3.org/2013/sparql-errata#errata-query-3
111
- const objects = SUBRULE2(allowPaths ? objectListPath : objectList);
112
- ACTION(() => {
113
- result.push(...objects
114
- .map(object => (partS) => object({ ...partS, predicate })));
85
+ SUBRULE1(verb);
86
+ const triples = SUBRULE1(allowPaths ? objectListPath : objectList, subject, predicate);
87
+ ACTION(() => result.push(...triples));
88
+ MANY2(() => {
89
+ CONSUME(l.symbols.semi);
90
+ parsedSemi = true;
115
91
  });
116
- });
92
+ }
117
93
  });
118
- return [...result, ...resultAppendage];
94
+ return result;
119
95
  },
120
96
  };
121
97
  }
@@ -142,11 +118,11 @@ export const verbSimple = {
142
118
  function objectListImpl(name, allowPaths) {
143
119
  return {
144
120
  name,
145
- impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => () => {
121
+ impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (subject, predicate) => {
146
122
  const objects = [];
147
123
  AT_LEAST_ONE_SEP({
148
124
  DEF: () => {
149
- const objectTriples = SUBRULE(allowPaths ? objectPath : object);
125
+ const objectTriples = SUBRULE(allowPaths ? objectPath : object, subject, predicate);
150
126
  ACTION(() => objects.push(...objectTriples));
151
127
  },
152
128
  SEP: l.symbols.comma,
@@ -160,11 +136,11 @@ export const objectListPath = objectListImpl('objectListPath', true);
160
136
  function objectImpl(name, allowPaths) {
161
137
  return {
162
138
  name,
163
- impl: ({ ACTION, SUBRULE }) => () => {
139
+ impl: ({ ACTION, SUBRULE }) => (subject, predicate) => {
164
140
  const node = SUBRULE(allowPaths ? graphNodePath : graphNode);
165
141
  return ACTION(() => [
166
- part => ({ ...part, object: node.node }),
167
- ...node.triples.map(val => () => val),
142
+ { subject, predicate, object: node.node },
143
+ ...node.triples,
168
144
  ]);
169
145
  },
170
146
  };
@@ -204,13 +180,13 @@ function blankNodePropertyListImpl(name, allowPaths) {
204
180
  name,
205
181
  impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {
206
182
  CONSUME(l.symbols.LSquare);
207
- const propList = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty);
183
+ let blankNode;
184
+ const propList = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, ACTION(() => blankNode = context.dataFactory.blankNode()));
208
185
  CONSUME(l.symbols.RSquare);
209
186
  return ACTION(() => {
210
- const subject = context.dataFactory.blankNode();
211
187
  return {
212
- node: subject,
213
- triples: propList.map(part => part({ subject })),
188
+ node: blankNode,
189
+ triples: propList,
214
190
  };
215
191
  });
216
192
  },
@@ -1 +1 @@
1
- {"version":3,"file":"tripleBlock.js","sourceRoot":"","sources":["tripleBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import * as l from '../lexer';\nimport type { RuleDef } from '@traqula/core';\nimport { CommonIRIs } from '@traqula/core';\nimport { var_, varOrTerm, verb } from './general';\nimport { canCreateBlankNodes } from './literals';\nimport { path } from './propertyPaths';\nimport type {\n BgpPattern,\n IGraphNode,\n IriTerm,\n ITriplesNode,\n PropertyPath,\n Triple,\n TripleCreatorS,\n TripleCreatorSP,\n VariableTerm,\n} from '../Sparql11types';\n\n/**\n * [[55]](https://www.w3.org/TR/sparql11-query/#rTriplesBlock)\n */\nexport const triplesBlock: RuleDef<'triplesBlock', BgpPattern> = <const> {\n name: 'triplesBlock',\n impl: ({ ACTION, SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {\n const triples = SUBRULE(triplesSameSubjectPath);\n const pattern = OPTION1(() => {\n CONSUME(l.symbols.dot);\n return OPTION2(() => SUBRULE(triplesBlock));\n });\n return ACTION(() => ({\n type: 'bgp',\n triples: [ ...triples, ...(pattern?.triples ?? []) ],\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 */\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean): RuleDef<T, Triple[]> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR }) => () => OR<Triple[]>([\n {\n ALT: () => {\n const subject = SUBRULE(varOrTerm);\n const propNotEmpty = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty);\n\n return ACTION(() =>\n propNotEmpty.map(partial => partial({ subject })));\n },\n },\n {\n ALT: () => {\n const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);\n const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList);\n return ACTION(() => [\n ...restNode.map(partial => partial({ subject: subjectNode.node })),\n ...subjectNode.triples,\n ]);\n },\n },\n ]),\n };\n}\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\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): RuleDef<T, TripleCreatorS[]> {\n return {\n name,\n impl: ({ SUBRULE, OPTION }) => () =>\n OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty)) ?? [],\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): RuleDef<T, TripleCreatorS[]> {\n return {\n name,\n impl: ({ ACTION, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, context }) => () => {\n const result: TripleCreatorS[] = [];\n const resultAppendage: typeof result = [];\n\n // Generates predicate and objectList\n const firstProperty = allowPaths ?\n OR1<IriTerm | VariableTerm | PropertyPath>([\n { ALT: () => SUBRULE1(verbPath) },\n { ALT: () => SUBRULE1(verbSimple) },\n ]) :\n SUBRULE1(verb);\n const firstObjects = SUBRULE1(allowPaths ? objectListPath : objectList);\n ACTION(() => {\n // TODO: this filter is only here to be compliant with sparqlJS and is quite arbitrary.\n // For the first predicate,\n // additionally generated triples (like from collections) are shoved to the back of the result.\n const filterSubject = context.dataFactory.namedNode('internal:filterSubject');\n for (const cObject of firstObjects) {\n const triple = cObject({ subject: filterSubject, predicate: firstProperty });\n const generator: TripleCreatorS = rest => cObject({ ...rest, predicate: firstProperty });\n if (triple.subject === filterSubject) {\n result.push(generator);\n } else {\n resultAppendage.push(generator);\n }\n }\n });\n\n MANY(() => {\n CONSUME(l.symbols.semi);\n OPTION(() => {\n const predicate = allowPaths ?\n OR2<IriTerm | VariableTerm | PropertyPath>([\n { ALT: () => SUBRULE2(verbPath) },\n { ALT: () => SUBRULE2(verbSimple) },\n ]) :\n SUBRULE2(verb);\n // https://www.w3.org/2013/sparql-errata#errata-query-3\n const objects = SUBRULE2(allowPaths ? objectListPath : objectList);\n\n ACTION(() => {\n result.push(\n ...objects\n .map(object => (partS: Pick<Triple, 'subject'>) => object({ ...partS, predicate })),\n );\n });\n });\n });\n return [ ...result, ...resultAppendage ];\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: RuleDef<'verbPath', PropertyPath | IriTerm> = <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: RuleDef<'verbSimple', VariableTerm> = <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): RuleDef<T, TripleCreatorSP[]> {\n return {\n name,\n impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => () => {\n const objects: TripleCreatorSP[] = [];\n AT_LEAST_ONE_SEP({\n DEF: () => {\n const objectTriples = SUBRULE(allowPaths ? objectPath : object);\n ACTION(() => objects.push(...objectTriples));\n },\n SEP: l.symbols.comma,\n });\n return objects;\n },\n };\n}\nexport const objectList = objectListImpl('objectList', false);\nexport const objectListPath = objectListImpl('objectListPath', true);\n\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean): RuleDef<T, TripleCreatorSP[]> {\n return {\n name,\n impl: ({ ACTION, SUBRULE }) => () => {\n const node = SUBRULE(allowPaths ? graphNodePath : graphNode);\n return ACTION(() => [\n part => ({ ...part, object: node.node }),\n ...node.triples.map(val => () => val),\n ] satisfies TripleCreatorSP[]);\n },\n };\n}\n/**\n * [[80]](https://www.w3.org/TR/sparql11-query/#rObject)\n */\nexport const object = objectImpl('object', false);\n/**\n * [[87]](https://www.w3.org/TR/sparql11-query/#rObjectPath)\n */\nexport const objectPath = objectImpl('objectPath', true);\n/**\n * [[98]](https://www.w3.org/TR/sparql11-query/#rTriplesNode)\n * [[100]](https://www.w3.org/TR/sparql11-query/#rTriplesNodePath)\n */\nexport const triplesNode: RuleDef<'triplesNode', ITriplesNode> = <const> {\n name: 'triplesNode',\n impl: ({ SUBRULE, OR }) => () => OR<ITriplesNode>([\n { ALT: () => SUBRULE(collection) },\n { ALT: () => SUBRULE(blankNodePropertyList) },\n ]),\n};\nexport const triplesNodePath: RuleDef<'triplesNodePath', ITriplesNode> = <const> {\n name: 'triplesNodePath',\n impl: ({ SUBRULE, OR }) => () => OR<ITriplesNode>([\n { ALT: () => SUBRULE(collectionPath) },\n { ALT: () => SUBRULE(blankNodePropertyListPath) },\n ]),\n};\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): RuleDef<T, ITriplesNode> {\n return {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.symbols.LSquare);\n const propList = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty);\n CONSUME(l.symbols.RSquare);\n\n return ACTION(() => {\n const subject = context.dataFactory.blankNode();\n return {\n node: subject,\n triples: propList.map(part => part({ subject })),\n };\n });\n },\n };\n}\nexport const blankNodePropertyList = blankNodePropertyListImpl('blankNodePropertyList', false);\nexport const blankNodePropertyListPath = blankNodePropertyListImpl('blankNodePropertyListPath', 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): RuleDef<T, ITriplesNode> {\n return {\n name,\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, context }) => () => {\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: IGraphNode[] = [];\n const dataFactory = context.dataFactory;\n CONSUME(l.symbols.LParen);\n AT_LEAST_ONE(() => {\n terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode));\n });\n CONSUME(l.symbols.RParen);\n\n return ACTION(() => {\n const triples: Triple[] = [];\n const appendTriples: Triple[] = [];\n\n const listHead = dataFactory.blankNode();\n let iterHead = listHead;\n const predFirst = dataFactory.namedNode(CommonIRIs.FIRST);\n const predRest = dataFactory.namedNode(CommonIRIs.REST);\n for (const [ index, term ] of terms.entries()) {\n const headTriple: Triple = {\n subject: iterHead,\n predicate: predFirst,\n object: term.node,\n };\n triples.push(headTriple);\n appendTriples.push(...term.triples);\n\n // If not the last, create new iterHead, otherwise, close list\n if (index === terms.length - 1) {\n const nilTriple: Triple = {\n subject: iterHead,\n predicate: predRest,\n object: dataFactory.namedNode(CommonIRIs.NIL),\n };\n triples.push(nilTriple);\n } else {\n const tail = dataFactory.blankNode();\n const linkTriple: Triple = {\n subject: iterHead,\n predicate: predRest,\n object: tail,\n };\n triples.push(linkTriple);\n iterHead = tail;\n }\n }\n return {\n node: listHead,\n triples: [ ...triples, ...appendTriples ],\n };\n });\n },\n };\n}\nexport const collection = collectionImpl('collection', false);\nexport const collectionPath = collectionImpl('collectionPath', 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): RuleDef<T, IGraphNode> {\n return {\n name,\n impl: ({ SUBRULE, OR, context }) => () => OR<IGraphNode>([\n {\n ALT: () => {\n const val = SUBRULE(varOrTerm);\n return {\n node: val,\n triples: [],\n };\n },\n },\n {\n GATE: () => context.parseMode.has(canCreateBlankNodes),\n ALT: () => SUBRULE(allowPaths ? triplesNodePath : triplesNode),\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 * as l from '../lexer';\nimport type { RuleDef } from '@traqula/core';\nimport { CommonIRIs } from '@traqula/core';\nimport { var_, varOrTerm, verb } from './general';\nimport { canCreateBlankNodes } from './literals';\nimport { path } from './propertyPaths';\nimport type {\n BgpPattern, BlankTerm,\n IGraphNode,\n IriTerm,\n ITriplesNode,\n PropertyPath,\n Triple,\n VariableTerm,\n} from '../Sparql11types';\n\n/**\n * [[55]](https://www.w3.org/TR/sparql11-query/#rTriplesBlock)\n */\nexport const triplesBlock: RuleDef<'triplesBlock', BgpPattern> = <const> {\n name: 'triplesBlock',\n impl: ({ ACTION, SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {\n const triples = SUBRULE(triplesSameSubjectPath);\n const pattern = OPTION1(() => {\n CONSUME(l.symbols.dot);\n return OPTION2(() => SUBRULE(triplesBlock));\n });\n return ACTION(() => ({\n type: 'bgp',\n triples: [ ...triples, ...(pattern?.triples ?? []) ],\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 */\nfunction triplesSameSubjectImpl<T extends string>(name: T, allowPaths: boolean): RuleDef<T, Triple[]> {\n return <const> {\n name,\n impl: ({ ACTION, SUBRULE, OR }) => () => OR<Triple[]>([\n {\n ALT: () => {\n const subject = SUBRULE(varOrTerm);\n return SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject);\n },\n },\n {\n ALT: () => {\n const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);\n const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, subjectNode.node);\n return ACTION(() => [\n ...restNode,\n ...subjectNode.triples,\n ]);\n },\n },\n ]),\n };\n}\nexport const triplesSameSubject = triplesSameSubjectImpl('triplesSameSubject', false);\nexport const triplesSameSubjectPath = triplesSameSubjectImpl('triplesSameSubjectPath', true);\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): RuleDef<T, Triple[], [Triple['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): RuleDef<T, Triple[], [Triple['subject']]> {\n return {\n name,\n impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (subject) => {\n const result: Triple[] = [];\n\n let parsedSemi = true;\n AT_LEAST_ONE({\n GATE: () => parsedSemi,\n DEF: () => {\n parsedSemi = false;\n const predicate = allowPaths ?\n OR1<IriTerm | VariableTerm | PropertyPath>([\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 ACTION(() => result.push(...triples));\n\n MANY2(() => {\n CONSUME(l.symbols.semi);\n parsedSemi = true;\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: RuleDef<'verbPath', PropertyPath | IriTerm> = <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: RuleDef<'verbSimple', VariableTerm> = <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): RuleDef<T, Triple[], [Triple['subject'], Triple['predicate']]> {\n return {\n name,\n impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (subject, predicate) => {\n const objects: Triple[] = [];\n AT_LEAST_ONE_SEP({\n DEF: () => {\n const objectTriples = SUBRULE(allowPaths ? objectPath : object, subject, predicate);\n ACTION(() => objects.push(...objectTriples));\n },\n SEP: l.symbols.comma,\n });\n return objects;\n },\n };\n}\nexport const objectList = objectListImpl('objectList', false);\nexport const objectListPath = objectListImpl('objectListPath', true);\n\nfunction objectImpl<T extends string>(name: T, allowPaths: boolean): RuleDef<T, Triple[], [Triple['subject'], Triple['predicate']]> {\n return {\n name,\n impl: ({ ACTION, SUBRULE }) => (subject, predicate) => {\n const node = SUBRULE(allowPaths ? graphNodePath : graphNode);\n return ACTION(() => [\n { subject, predicate, object: node.node },\n ...node.triples,\n ]);\n },\n };\n}\n/**\n * [[80]](https://www.w3.org/TR/sparql11-query/#rObject)\n */\nexport const object = objectImpl('object', false);\n/**\n * [[87]](https://www.w3.org/TR/sparql11-query/#rObjectPath)\n */\nexport const objectPath = objectImpl('objectPath', true);\n/**\n * [[98]](https://www.w3.org/TR/sparql11-query/#rTriplesNode)\n * [[100]](https://www.w3.org/TR/sparql11-query/#rTriplesNodePath)\n */\nexport const triplesNode: RuleDef<'triplesNode', ITriplesNode> = <const> {\n name: 'triplesNode',\n impl: ({ SUBRULE, OR }) => () => OR<ITriplesNode>([\n { ALT: () => SUBRULE(collection) },\n { ALT: () => SUBRULE(blankNodePropertyList) },\n ]),\n};\nexport const triplesNodePath: RuleDef<'triplesNodePath', ITriplesNode> = <const> {\n name: 'triplesNodePath',\n impl: ({ SUBRULE, OR }) => () => OR<ITriplesNode>([\n { ALT: () => SUBRULE(collectionPath) },\n { ALT: () => SUBRULE(blankNodePropertyListPath) },\n ]),\n};\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): RuleDef<T, ITriplesNode> {\n return {\n name,\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.symbols.LSquare);\n let blankNode: BlankTerm;\n const propList = SUBRULE(\n allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,\n ACTION(() => blankNode = context.dataFactory.blankNode()),\n );\n CONSUME(l.symbols.RSquare);\n\n return ACTION(() => {\n return {\n node: blankNode,\n triples: propList,\n };\n });\n },\n };\n}\nexport const blankNodePropertyList = blankNodePropertyListImpl('blankNodePropertyList', false);\nexport const blankNodePropertyListPath = blankNodePropertyListImpl('blankNodePropertyListPath', 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): RuleDef<T, ITriplesNode> {\n return {\n name,\n impl: ({ ACTION, AT_LEAST_ONE, SUBRULE, CONSUME, context }) => () => {\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: IGraphNode[] = [];\n const dataFactory = context.dataFactory;\n CONSUME(l.symbols.LParen);\n AT_LEAST_ONE(() => {\n terms.push(SUBRULE(allowPaths ? graphNodePath : graphNode));\n });\n CONSUME(l.symbols.RParen);\n\n return ACTION(() => {\n const triples: Triple[] = [];\n const appendTriples: Triple[] = [];\n\n const listHead = dataFactory.blankNode();\n let iterHead = listHead;\n const predFirst = dataFactory.namedNode(CommonIRIs.FIRST);\n const predRest = dataFactory.namedNode(CommonIRIs.REST);\n for (const [ index, term ] of terms.entries()) {\n const headTriple: Triple = {\n subject: iterHead,\n predicate: predFirst,\n object: term.node,\n };\n triples.push(headTriple);\n appendTriples.push(...term.triples);\n\n // If not the last, create new iterHead, otherwise, close list\n if (index === terms.length - 1) {\n const nilTriple: Triple = {\n subject: iterHead,\n predicate: predRest,\n object: dataFactory.namedNode(CommonIRIs.NIL),\n };\n triples.push(nilTriple);\n } else {\n const tail = dataFactory.blankNode();\n const linkTriple: Triple = {\n subject: iterHead,\n predicate: predRest,\n object: tail,\n };\n triples.push(linkTriple);\n iterHead = tail;\n }\n }\n return {\n node: listHead,\n triples: [ ...triples, ...appendTriples ],\n };\n });\n },\n };\n}\nexport const collection = collectionImpl('collection', false);\nexport const collectionPath = collectionImpl('collectionPath', 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): RuleDef<T, IGraphNode> {\n return {\n name,\n impl: ({ SUBRULE, OR, context }) => () => OR<IGraphNode>([\n {\n ALT: () => {\n const val = SUBRULE(varOrTerm);\n return {\n node: val,\n triples: [],\n };\n },\n },\n {\n GATE: () => context.parseMode.has(canCreateBlankNodes),\n ALT: () => SUBRULE(allowPaths ? triplesNodePath : triplesNode),\n },\n ]),\n };\n}\nexport const graphNode = graphNodeImpl('graphNode', false);\nexport const graphNodePath = graphNodeImpl('graphNodePath', true);\n"]}
@@ -20,6 +20,7 @@ export const updateUnit = {
20
20
  export const update = {
21
21
  name: 'update',
22
22
  impl: ({ ACTION, SUBRULE, CONSUME, OPTION1, OPTION2, context }) => () => {
23
+ const blankLabelsUsedInInsertData = new Set();
23
24
  const prologueValues = SUBRULE(prologue);
24
25
  const result = {
25
26
  type: 'update',
@@ -29,12 +30,6 @@ export const update = {
29
30
  };
30
31
  OPTION1(() => {
31
32
  const updateOperation = SUBRULE(update1);
32
- ACTION(() => {
33
- for (const label of context.usedBlankNodeLabels) {
34
- context.flushedBlankNodeLabels.add(label);
35
- }
36
- context.usedBlankNodeLabels.clear();
37
- });
38
33
  const recursiveRes = OPTION2(() => {
39
34
  CONSUME(l.symbols.semi);
40
35
  return SUBRULE(update);
@@ -1 +1 @@
1
- {"version":3,"file":"updateUnit.js","sourceRoot":"","sources":["updateUnit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TokenType } from 'chevrotain';\nimport * as l from '../../lexer';\nimport type { RuleDef, RuleDefReturn } from '@traqula/core';\nimport { unCapitalize } from '@traqula/core';\nimport { canParseVars, prologue, triplesTemplate, varOrIri } from '../general';\nimport { canCreateBlankNodes, iri } from '../literals';\nimport type {\n ClearDropOperation,\n GraphOrDefault,\n GraphQuads,\n GraphReference,\n InsertDeleteOperation,\n IriTerm,\n LoadOperation,\n Quads,\n Update,\n UpdateOperation,\n} from '../../Sparql11types';\nimport { groupGraphPattern } from '../whereClause';\n\n/**\n * [[3]](https://www.w3.org/TR/sparql11-query/#rUpdateUnit)\n */\nexport const updateUnit: RuleDef<'updateUnit', Update> = <const> {\n name: 'updateUnit',\n impl: ({ ACTION, SUBRULE }) => () => {\n const data = SUBRULE(update);\n\n ACTION(() => data.updates.reverse());\n return data;\n },\n};\n\n/**\n * [[29]](https://www.w3.org/TR/sparql11-query/#rUpdate)\n */\nexport const update: RuleDef<'update', Update> = <const> {\n name: 'update',\n impl: ({ ACTION, SUBRULE, CONSUME, OPTION1, OPTION2, context }) => () => {\n const prologueValues = SUBRULE(prologue);\n const result: Update = {\n type: 'update',\n base: prologueValues.base,\n prefixes: prologueValues.prefixes,\n updates: [],\n };\n OPTION1(() => {\n const updateOperation = SUBRULE(update1);\n\n ACTION(() => {\n for (const label of context.usedBlankNodeLabels) {\n context.flushedBlankNodeLabels.add(label);\n }\n context.usedBlankNodeLabels.clear();\n });\n\n const recursiveRes = OPTION2(() => {\n CONSUME(l.symbols.semi);\n return SUBRULE(update);\n });\n\n return ACTION(() => {\n result.updates.push(updateOperation);\n if (recursiveRes) {\n result.updates.push(...recursiveRes.updates);\n result.base = recursiveRes.base ?? result.base;\n result.prefixes = recursiveRes.prefixes ? { ...result.prefixes, ...recursiveRes.prefixes } : result.prefixes;\n }\n });\n });\n return result;\n },\n};\n\n/**\n * [[30]](https://www.w3.org/TR/sparql11-query/#rUpdate1)\n */\nexport const update1: RuleDef<'update1', UpdateOperation> = <const> {\n name: 'update1',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(load) },\n { ALT: () => SUBRULE(clear) },\n { ALT: () => SUBRULE(drop) },\n { ALT: () => SUBRULE(add) },\n { ALT: () => SUBRULE(move) },\n { ALT: () => SUBRULE(copy) },\n { ALT: () => SUBRULE(create) },\n { ALT: () => SUBRULE(insertData) },\n { ALT: () => SUBRULE(deleteData) },\n { ALT: () => SUBRULE(deleteWhere) },\n { ALT: () => SUBRULE(modify) },\n ]),\n};\n\n/**\n * [[31]](https://www.w3.org/TR/sparql11-query/#rLoad)\n */\nexport const load: RuleDef<'load', LoadOperation> = <const> {\n name: 'load',\n impl: ({ SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {\n CONSUME(l.load);\n const silent = Boolean(OPTION1(() => CONSUME(l.silent)));\n const source = SUBRULE(iri);\n const destination = OPTION2(() => {\n CONSUME(l.loadInto);\n return SUBRULE(graphRef);\n });\n return {\n type: 'load',\n silent,\n source,\n ...(destination && { destination }),\n };\n },\n};\n\n/**\n * [[32]](https://www.w3.org/TR/sparql11-query/#rClear)\n */\nexport const clear: RuleDef<'clear', ClearDropOperation> = <const> {\n name: 'clear',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.clear);\n const silent = Boolean(OPTION(() => CONSUME(l.silent)));\n const graph = SUBRULE(graphRefAll);\n return {\n type: 'clear',\n silent,\n graph,\n };\n },\n};\n\n/**\n * [[33]](https://www.w3.org/TR/sparql11-query/#rDrop)\n */\nexport const drop: RuleDef<'drop', UpdateOperation> = <const> {\n name: 'drop',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.drop);\n const silent = Boolean(OPTION(() => CONSUME(l.silent)));\n const graph = SUBRULE(graphRefAll);\n return {\n type: 'drop',\n silent,\n graph,\n };\n },\n};\n\n/**\n * [[34]](https://www.w3.org/TR/sparql11-query/#rCreate)\n */\nexport const create: RuleDef<'create', UpdateOperation> = <const> {\n name: 'create',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.create);\n const silent = Boolean(OPTION(() => CONSUME(l.silent)));\n const graph = SUBRULE(graphRef);\n return {\n type: 'create',\n silent,\n graph: {\n type: 'graph',\n name: graph,\n },\n };\n },\n};\n\nfunction copyMoveAddOperation<T extends 'Copy' | 'Move' | 'Add'>(operation: TokenType & { name: T }):\nRuleDef<Uncapitalize<T>, UpdateOperation> {\n return {\n name: unCapitalize(operation.name),\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, OPTION }) => () => {\n CONSUME(operation);\n const silent = Boolean(OPTION(() => CONSUME(l.silent)));\n const source = SUBRULE1(graphOrDefault);\n CONSUME(l.to);\n const destination = SUBRULE2(graphOrDefault);\n return {\n type: unCapitalize(operation.name),\n silent,\n source,\n destination,\n };\n },\n };\n}\n\n/**\n * [[35]](https://www.w3.org/TR/sparql11-query/#rAdd)\n */\nexport const add = copyMoveAddOperation(l.add);\n\n/**\n * [[36]](https://www.w3.org/TR/sparql11-query/#rMove)\n */\nexport const move = copyMoveAddOperation(l.move);\n\n/**\n * [[37]](https://www.w3.org/TR/sparql11-query/#rCopy)\n */\nexport const copy = copyMoveAddOperation(l.copy);\n\n/**\n * [[38]](https://www.w3.org/TR/sparql11-query/#rInsertData)\n */\nexport const insertData: RuleDef<'insertData', InsertDeleteOperation> = <const> {\n name: 'insertData',\n impl: ({ SUBRULE, CONSUME }) => () => {\n CONSUME(l.insertClause);\n CONSUME(l.dataClause);\n const insert = SUBRULE(quadData);\n return {\n updateType: 'insert',\n insert,\n };\n },\n};\n\n/**\n * [[39]](https://www.w3.org/TR/sparql11-query/#rDeleteData)\n */\nexport const deleteData: RuleDef<'deleteData', InsertDeleteOperation> = <const> {\n name: 'deleteData',\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.deleteClause);\n CONSUME(l.dataClause);\n\n const couldCreateBlankNodes = ACTION(() => context.parseMode.delete(canCreateBlankNodes));\n const del = SUBRULE(quadData);\n ACTION(() => couldCreateBlankNodes && context.parseMode.add(canCreateBlankNodes));\n\n return {\n updateType: 'delete',\n delete: del,\n };\n },\n};\n\n/**\n * [[40]](https://www.w3.org/TR/sparql11-query/#rDeleteWhere)\n */\nexport const deleteWhere: RuleDef<'deleteWhere', InsertDeleteOperation> = <const> {\n name: 'deleteWhere',\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.deleteClause);\n CONSUME(l.where);\n\n const couldCreateBlankNodes = ACTION(() => context.parseMode.delete(canCreateBlankNodes));\n const del = SUBRULE(quadPattern);\n ACTION(() => couldCreateBlankNodes && context.parseMode.add(canCreateBlankNodes));\n\n return {\n updateType: 'deletewhere',\n delete: del,\n };\n },\n};\n\n/**\n * [[41]](https://www.w3.org/TR/sparql11-query/#rModify)\n */\nexport const modify: RuleDef<'modify', UpdateOperation> = <const> {\n name: 'modify',\n impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => () => {\n const graph = OPTION1(() => {\n CONSUME(l.modifyWith);\n return SUBRULE(iri);\n });\n const { insert, delete: del } = OR([\n {\n ALT: () => {\n const del = SUBRULE(deleteClause);\n const insert = OPTION2(() => SUBRULE1(insertClause)) ?? [];\n return { delete: del, insert };\n },\n },\n { ALT: () => {\n const insert = SUBRULE2(insertClause);\n return { insert, delete: []};\n } },\n ]);\n const usingArr: RuleDefReturn<typeof usingClause>[] = [];\n MANY(() => {\n usingArr.push(SUBRULE(usingClause));\n });\n CONSUME(l.where);\n const where = SUBRULE(groupGraphPattern);\n\n return ACTION(() => {\n const def: IriTerm[] = [];\n const named: IriTerm[] = [];\n for (const { value, type } of usingArr) {\n if (type === 'default') {\n def.push(value);\n } else {\n named.push(value);\n }\n }\n return {\n updateType: 'insertdelete',\n graph,\n insert,\n delete: del,\n using: usingArr.length > 0 ? { default: def, named } : undefined,\n where: where.patterns,\n };\n });\n },\n};\n\n/**\n * [[42]](https://www.w3.org/TR/sparql11-query/#rDeleteClause)\n */\nexport const deleteClause: RuleDef<'deleteClause', Quads[]> = <const> {\n name: 'deleteClause',\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.deleteClause);\n\n const couldCreateBlankNodes = ACTION(() => context.parseMode.delete(canCreateBlankNodes));\n const del = SUBRULE(quadPattern);\n ACTION(() => couldCreateBlankNodes && context.parseMode.add(canCreateBlankNodes));\n\n return del;\n },\n};\n\n/**\n * [[43]](https://www.w3.org/TR/sparql11-query/#rInsertClause)\n */\nexport const insertClause: RuleDef<'insertClause', Quads[]> = <const> {\n name: 'insertClause',\n impl: ({ SUBRULE, CONSUME }) => () => {\n CONSUME(l.insertClause);\n return SUBRULE(quadPattern);\n },\n};\n\n/**\n * [[44]](https://www.w3.org/TR/sparql11-query/#rUsingClause)\n */\nexport const usingClause: RuleDef<'usingClause', { value: IriTerm; type: 'default' | 'named' }> = <const> {\n name: 'usingClause',\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, OR }) => () => {\n CONSUME(l.usingClause);\n return OR<RuleDefReturn<typeof usingClause>>([\n { ALT: () => {\n const value = SUBRULE1(iri);\n return { value, type: 'default' };\n } },\n {\n ALT: () => {\n CONSUME(l.graph.named);\n const value = SUBRULE2(iri);\n return { value, type: 'named' };\n },\n },\n ]);\n },\n};\n\n/**\n * [[45]](https://www.w3.org/TR/sparql11-query/#rGraphOrDefault)\n */\nexport const graphOrDefault: RuleDef<'graphOrDefault', GraphOrDefault> = <const> {\n name: 'graphOrDefault',\n impl: ({ SUBRULE, CONSUME, OPTION, OR }) => () => OR<GraphOrDefault>([\n { ALT: () => {\n CONSUME(l.graph.default_);\n return { type: 'graph', default: true };\n } },\n {\n ALT: () => {\n OPTION(() => CONSUME(l.graph.graph));\n const name = SUBRULE(iri);\n return {\n type: 'graph',\n name,\n };\n },\n },\n ]),\n};\n\n/**\n * [[46]](https://www.w3.org/TR/sparql11-query/#rGraphRef)\n */\nexport const graphRef: RuleDef<'graphRef', IriTerm> = <const> {\n name: 'graphRef',\n impl: ({ SUBRULE, CONSUME }) => () => {\n CONSUME(l.graph.graph);\n return SUBRULE(iri);\n },\n};\n\n/**\n * [[47]](https://www.w3.org/TR/sparql11-query/#rGraphRefAll)\n */\nexport const graphRefAll: RuleDef<'graphRefAll', GraphReference> = <const> {\n name: 'graphRefAll',\n impl: ({ SUBRULE, CONSUME, OR }) => () => OR<GraphReference>([\n { ALT: () => {\n const name = SUBRULE(graphRef);\n return { type: 'graph', name };\n } },\n { ALT: () => {\n CONSUME(l.graph.default_);\n return { default: true };\n } },\n { ALT: () => {\n CONSUME(l.graph.named);\n return { named: true };\n } },\n { ALT: () => {\n CONSUME(l.graph.graphAll);\n return { all: true };\n } },\n ]),\n};\n\n/**\n * [[48]](https://www.w3.org/TR/sparql11-query/#rQuadPattern)\n */\nexport const quadPattern: RuleDef<'quadPattern', Quads[]> = <const> {\n name: 'quadPattern',\n impl: ({ SUBRULE, CONSUME }) => () => {\n CONSUME(l.symbols.LCurly);\n const val = SUBRULE(quads);\n CONSUME(l.symbols.RCurly);\n return val;\n },\n};\n\n/**\n * [[49]](https://www.w3.org/TR/sparql11-query/#rQuadData)\n */\nexport const quadData: RuleDef<'quadData', Quads[]> = <const> {\n name: 'quadData',\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.symbols.LCurly);\n\n const couldParseVars = ACTION(() => context.parseMode.delete(canParseVars));\n const val = SUBRULE(quads);\n ACTION(() => couldParseVars && context.parseMode.add(canParseVars));\n\n CONSUME(l.symbols.RCurly);\n return val;\n },\n};\n\n/**\n * [[50]](https://www.w3.org/TR/sparql11-query/#rQuads)\n */\nexport const quads: RuleDef<'quads', Quads[]> = <const> {\n name: 'quads',\n impl: ({ SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {\n const quads: Quads[] = [];\n\n OPTION1(() => {\n const triples = SUBRULE1(triplesTemplate);\n quads.push({\n type: 'bgp',\n triples,\n });\n });\n\n MANY(() => {\n quads.push(SUBRULE(quadsNotTriples));\n OPTION2(() => CONSUME(l.symbols.dot));\n OPTION3(() => {\n const triples = SUBRULE2(triplesTemplate);\n quads.push({\n type: 'bgp',\n triples,\n });\n });\n });\n\n return quads;\n },\n};\n\n/**\n * [[51]](https://www.w3.org/TR/sparql11-query/#rQuadsNotTriples)\n */\nexport const quadsNotTriples: RuleDef<'quadsNotTriples', GraphQuads> = <const> {\n name: 'quadsNotTriples',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.graph.graph);\n const name = SUBRULE(varOrIri);\n CONSUME(l.symbols.LCurly);\n const triples = OPTION(() => SUBRULE(triplesTemplate)) ?? [];\n CONSUME(l.symbols.RCurly);\n\n return {\n type: 'graph',\n name,\n triples,\n };\n },\n};\n"]}
1
+ {"version":3,"file":"updateUnit.js","sourceRoot":"","sources":["updateUnit.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TokenType } from 'chevrotain';\nimport * as l from '../../lexer';\nimport type { RuleDef, RuleDefReturn } from '@traqula/core';\nimport { unCapitalize } from '@traqula/core';\nimport { canParseVars, prologue, triplesTemplate, varOrIri } from '../general';\nimport { canCreateBlankNodes, iri } from '../literals';\nimport type {\n ClearDropOperation,\n GraphOrDefault,\n GraphQuads,\n GraphReference,\n InsertDeleteOperation,\n IriTerm,\n LoadOperation,\n Quads,\n Update,\n UpdateOperation,\n} from '../../Sparql11types';\nimport { groupGraphPattern } from '../whereClause';\n\n/**\n * [[3]](https://www.w3.org/TR/sparql11-query/#rUpdateUnit)\n */\nexport const updateUnit: RuleDef<'updateUnit', Update> = <const> {\n name: 'updateUnit',\n impl: ({ ACTION, SUBRULE }) => () => {\n const data = SUBRULE(update);\n\n ACTION(() => data.updates.reverse());\n return data;\n },\n};\n\n/**\n * [[29]](https://www.w3.org/TR/sparql11-query/#rUpdate)\n */\nexport const update: RuleDef<'update', Update> = <const> {\n name: 'update',\n impl: ({ ACTION, SUBRULE, CONSUME, OPTION1, OPTION2, context }) => () => {\n const blankLabelsUsedInInsertData = new Set<string>();\n const prologueValues = SUBRULE(prologue);\n const result: Update = {\n type: 'update',\n base: prologueValues.base,\n prefixes: prologueValues.prefixes,\n updates: [],\n };\n OPTION1(() => {\n const updateOperation = SUBRULE(update1);\n\n const recursiveRes = OPTION2(() => {\n CONSUME(l.symbols.semi);\n return SUBRULE(update);\n });\n\n return ACTION(() => {\n result.updates.push(updateOperation);\n if (recursiveRes) {\n result.updates.push(...recursiveRes.updates);\n result.base = recursiveRes.base ?? result.base;\n result.prefixes = recursiveRes.prefixes ? { ...result.prefixes, ...recursiveRes.prefixes } : result.prefixes;\n }\n });\n });\n return result;\n },\n};\n\n/**\n * [[30]](https://www.w3.org/TR/sparql11-query/#rUpdate1)\n */\nexport const update1: RuleDef<'update1', UpdateOperation> = <const> {\n name: 'update1',\n impl: ({ SUBRULE, OR }) => () => OR([\n { ALT: () => SUBRULE(load) },\n { ALT: () => SUBRULE(clear) },\n { ALT: () => SUBRULE(drop) },\n { ALT: () => SUBRULE(add) },\n { ALT: () => SUBRULE(move) },\n { ALT: () => SUBRULE(copy) },\n { ALT: () => SUBRULE(create) },\n { ALT: () => SUBRULE(insertData) },\n { ALT: () => SUBRULE(deleteData) },\n { ALT: () => SUBRULE(deleteWhere) },\n { ALT: () => SUBRULE(modify) },\n ]),\n};\n\n/**\n * [[31]](https://www.w3.org/TR/sparql11-query/#rLoad)\n */\nexport const load: RuleDef<'load', LoadOperation> = <const> {\n name: 'load',\n impl: ({ SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {\n CONSUME(l.load);\n const silent = Boolean(OPTION1(() => CONSUME(l.silent)));\n const source = SUBRULE(iri);\n const destination = OPTION2(() => {\n CONSUME(l.loadInto);\n return SUBRULE(graphRef);\n });\n return {\n type: 'load',\n silent,\n source,\n ...(destination && { destination }),\n };\n },\n};\n\n/**\n * [[32]](https://www.w3.org/TR/sparql11-query/#rClear)\n */\nexport const clear: RuleDef<'clear', ClearDropOperation> = <const> {\n name: 'clear',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.clear);\n const silent = Boolean(OPTION(() => CONSUME(l.silent)));\n const graph = SUBRULE(graphRefAll);\n return {\n type: 'clear',\n silent,\n graph,\n };\n },\n};\n\n/**\n * [[33]](https://www.w3.org/TR/sparql11-query/#rDrop)\n */\nexport const drop: RuleDef<'drop', UpdateOperation> = <const> {\n name: 'drop',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.drop);\n const silent = Boolean(OPTION(() => CONSUME(l.silent)));\n const graph = SUBRULE(graphRefAll);\n return {\n type: 'drop',\n silent,\n graph,\n };\n },\n};\n\n/**\n * [[34]](https://www.w3.org/TR/sparql11-query/#rCreate)\n */\nexport const create: RuleDef<'create', UpdateOperation> = <const> {\n name: 'create',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.create);\n const silent = Boolean(OPTION(() => CONSUME(l.silent)));\n const graph = SUBRULE(graphRef);\n return {\n type: 'create',\n silent,\n graph: {\n type: 'graph',\n name: graph,\n },\n };\n },\n};\n\nfunction copyMoveAddOperation<T extends 'Copy' | 'Move' | 'Add'>(operation: TokenType & { name: T }):\nRuleDef<Uncapitalize<T>, UpdateOperation> {\n return {\n name: unCapitalize(operation.name),\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, OPTION }) => () => {\n CONSUME(operation);\n const silent = Boolean(OPTION(() => CONSUME(l.silent)));\n const source = SUBRULE1(graphOrDefault);\n CONSUME(l.to);\n const destination = SUBRULE2(graphOrDefault);\n return {\n type: unCapitalize(operation.name),\n silent,\n source,\n destination,\n };\n },\n };\n}\n\n/**\n * [[35]](https://www.w3.org/TR/sparql11-query/#rAdd)\n */\nexport const add = copyMoveAddOperation(l.add);\n\n/**\n * [[36]](https://www.w3.org/TR/sparql11-query/#rMove)\n */\nexport const move = copyMoveAddOperation(l.move);\n\n/**\n * [[37]](https://www.w3.org/TR/sparql11-query/#rCopy)\n */\nexport const copy = copyMoveAddOperation(l.copy);\n\n/**\n * [[38]](https://www.w3.org/TR/sparql11-query/#rInsertData)\n */\nexport const insertData: RuleDef<'insertData', InsertDeleteOperation> = <const> {\n name: 'insertData',\n impl: ({ SUBRULE, CONSUME }) => () => {\n CONSUME(l.insertClause);\n CONSUME(l.dataClause);\n const insert = SUBRULE(quadData);\n return {\n updateType: 'insert',\n insert,\n };\n },\n};\n\n/**\n * [[39]](https://www.w3.org/TR/sparql11-query/#rDeleteData)\n */\nexport const deleteData: RuleDef<'deleteData', InsertDeleteOperation> = <const> {\n name: 'deleteData',\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.deleteClause);\n CONSUME(l.dataClause);\n\n const couldCreateBlankNodes = ACTION(() => context.parseMode.delete(canCreateBlankNodes));\n const del = SUBRULE(quadData);\n ACTION(() => couldCreateBlankNodes && context.parseMode.add(canCreateBlankNodes));\n\n return {\n updateType: 'delete',\n delete: del,\n };\n },\n};\n\n/**\n * [[40]](https://www.w3.org/TR/sparql11-query/#rDeleteWhere)\n */\nexport const deleteWhere: RuleDef<'deleteWhere', InsertDeleteOperation> = <const> {\n name: 'deleteWhere',\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.deleteClause);\n CONSUME(l.where);\n\n const couldCreateBlankNodes = ACTION(() => context.parseMode.delete(canCreateBlankNodes));\n const del = SUBRULE(quadPattern);\n ACTION(() => couldCreateBlankNodes && context.parseMode.add(canCreateBlankNodes));\n\n return {\n updateType: 'deletewhere',\n delete: del,\n };\n },\n};\n\n/**\n * [[41]](https://www.w3.org/TR/sparql11-query/#rModify)\n */\nexport const modify: RuleDef<'modify', UpdateOperation> = <const> {\n name: 'modify',\n impl: ({ ACTION, SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OR }) => () => {\n const graph = OPTION1(() => {\n CONSUME(l.modifyWith);\n return SUBRULE(iri);\n });\n const { insert, delete: del } = OR([\n {\n ALT: () => {\n const del = SUBRULE(deleteClause);\n const insert = OPTION2(() => SUBRULE1(insertClause)) ?? [];\n return { delete: del, insert };\n },\n },\n { ALT: () => {\n const insert = SUBRULE2(insertClause);\n return { insert, delete: []};\n } },\n ]);\n const usingArr: RuleDefReturn<typeof usingClause>[] = [];\n MANY(() => {\n usingArr.push(SUBRULE(usingClause));\n });\n CONSUME(l.where);\n const where = SUBRULE(groupGraphPattern);\n\n return ACTION(() => {\n const def: IriTerm[] = [];\n const named: IriTerm[] = [];\n for (const { value, type } of usingArr) {\n if (type === 'default') {\n def.push(value);\n } else {\n named.push(value);\n }\n }\n return {\n updateType: 'insertdelete',\n graph,\n insert,\n delete: del,\n using: usingArr.length > 0 ? { default: def, named } : undefined,\n where: where.patterns,\n };\n });\n },\n};\n\n/**\n * [[42]](https://www.w3.org/TR/sparql11-query/#rDeleteClause)\n */\nexport const deleteClause: RuleDef<'deleteClause', Quads[]> = <const> {\n name: 'deleteClause',\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.deleteClause);\n\n const couldCreateBlankNodes = ACTION(() => context.parseMode.delete(canCreateBlankNodes));\n const del = SUBRULE(quadPattern);\n ACTION(() => couldCreateBlankNodes && context.parseMode.add(canCreateBlankNodes));\n\n return del;\n },\n};\n\n/**\n * [[43]](https://www.w3.org/TR/sparql11-query/#rInsertClause)\n */\nexport const insertClause: RuleDef<'insertClause', Quads[]> = <const> {\n name: 'insertClause',\n impl: ({ SUBRULE, CONSUME }) => () => {\n CONSUME(l.insertClause);\n return SUBRULE(quadPattern);\n },\n};\n\n/**\n * [[44]](https://www.w3.org/TR/sparql11-query/#rUsingClause)\n */\nexport const usingClause: RuleDef<'usingClause', { value: IriTerm; type: 'default' | 'named' }> = <const> {\n name: 'usingClause',\n impl: ({ CONSUME, SUBRULE1, SUBRULE2, OR }) => () => {\n CONSUME(l.usingClause);\n return OR<RuleDefReturn<typeof usingClause>>([\n { ALT: () => {\n const value = SUBRULE1(iri);\n return { value, type: 'default' };\n } },\n {\n ALT: () => {\n CONSUME(l.graph.named);\n const value = SUBRULE2(iri);\n return { value, type: 'named' };\n },\n },\n ]);\n },\n};\n\n/**\n * [[45]](https://www.w3.org/TR/sparql11-query/#rGraphOrDefault)\n */\nexport const graphOrDefault: RuleDef<'graphOrDefault', GraphOrDefault> = <const> {\n name: 'graphOrDefault',\n impl: ({ SUBRULE, CONSUME, OPTION, OR }) => () => OR<GraphOrDefault>([\n { ALT: () => {\n CONSUME(l.graph.default_);\n return { type: 'graph', default: true };\n } },\n {\n ALT: () => {\n OPTION(() => CONSUME(l.graph.graph));\n const name = SUBRULE(iri);\n return {\n type: 'graph',\n name,\n };\n },\n },\n ]),\n};\n\n/**\n * [[46]](https://www.w3.org/TR/sparql11-query/#rGraphRef)\n */\nexport const graphRef: RuleDef<'graphRef', IriTerm> = <const> {\n name: 'graphRef',\n impl: ({ SUBRULE, CONSUME }) => () => {\n CONSUME(l.graph.graph);\n return SUBRULE(iri);\n },\n};\n\n/**\n * [[47]](https://www.w3.org/TR/sparql11-query/#rGraphRefAll)\n */\nexport const graphRefAll: RuleDef<'graphRefAll', GraphReference> = <const> {\n name: 'graphRefAll',\n impl: ({ SUBRULE, CONSUME, OR }) => () => OR<GraphReference>([\n { ALT: () => {\n const name = SUBRULE(graphRef);\n return { type: 'graph', name };\n } },\n { ALT: () => {\n CONSUME(l.graph.default_);\n return { default: true };\n } },\n { ALT: () => {\n CONSUME(l.graph.named);\n return { named: true };\n } },\n { ALT: () => {\n CONSUME(l.graph.graphAll);\n return { all: true };\n } },\n ]),\n};\n\n/**\n * [[48]](https://www.w3.org/TR/sparql11-query/#rQuadPattern)\n */\nexport const quadPattern: RuleDef<'quadPattern', Quads[]> = <const> {\n name: 'quadPattern',\n impl: ({ SUBRULE, CONSUME }) => () => {\n CONSUME(l.symbols.LCurly);\n const val = SUBRULE(quads);\n CONSUME(l.symbols.RCurly);\n return val;\n },\n};\n\n/**\n * [[49]](https://www.w3.org/TR/sparql11-query/#rQuadData)\n */\nexport const quadData: RuleDef<'quadData', Quads[]> = <const> {\n name: 'quadData',\n impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {\n CONSUME(l.symbols.LCurly);\n\n const couldParseVars = ACTION(() => context.parseMode.delete(canParseVars));\n const val = SUBRULE(quads);\n ACTION(() => couldParseVars && context.parseMode.add(canParseVars));\n\n CONSUME(l.symbols.RCurly);\n return val;\n },\n};\n\n/**\n * [[50]](https://www.w3.org/TR/sparql11-query/#rQuads)\n */\nexport const quads: RuleDef<'quads', Quads[]> = <const> {\n name: 'quads',\n impl: ({ SUBRULE, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION1, OPTION2, OPTION3 }) => () => {\n const quads: Quads[] = [];\n\n OPTION1(() => {\n const triples = SUBRULE1(triplesTemplate);\n quads.push({\n type: 'bgp',\n triples,\n });\n });\n\n MANY(() => {\n quads.push(SUBRULE(quadsNotTriples));\n OPTION2(() => CONSUME(l.symbols.dot));\n OPTION3(() => {\n const triples = SUBRULE2(triplesTemplate);\n quads.push({\n type: 'bgp',\n triples,\n });\n });\n });\n\n return quads;\n },\n};\n\n/**\n * [[51]](https://www.w3.org/TR/sparql11-query/#rQuadsNotTriples)\n */\nexport const quadsNotTriples: RuleDef<'quadsNotTriples', GraphQuads> = <const> {\n name: 'quadsNotTriples',\n impl: ({ SUBRULE, CONSUME, OPTION }) => () => {\n CONSUME(l.graph.graph);\n const name = SUBRULE(varOrIri);\n CONSUME(l.symbols.LCurly);\n const triples = OPTION(() => SUBRULE(triplesTemplate)) ?? [];\n CONSUME(l.symbols.RCurly);\n\n return {\n type: 'graph',\n name,\n triples,\n };\n },\n};\n"]}
package/lib/index.cjs CHANGED
@@ -9614,10 +9614,16 @@ function resolveIRI(iri3, base) {
9614
9614
  return base.replace(/(?:\?.*)?$/u, iri3);
9615
9615
  // Resolve root relative IRIs at the root of the base IRI
9616
9616
  case "/":
9617
- return base + iri3;
9617
+ const baseMatch = base.match(/^(?:[a-z]+:\/*)?[^\/]*/);
9618
+ if (!baseMatch) {
9619
+ throw new Error(`Could not determine relative IRI using base: ${base}`);
9620
+ }
9621
+ const baseRoot = baseMatch[0];
9622
+ return baseRoot + iri3;
9618
9623
  // Resolve all other IRIs at the base IRI's path
9619
9624
  default:
9620
- return base + iri3;
9625
+ const basePath = base.replace(/[^\/:]*$/, "");
9626
+ return basePath + iri3;
9621
9627
  }
9622
9628
  }
9623
9629
 
@@ -10482,12 +10488,6 @@ var blankNode = {
10482
10488
  {
10483
10489
  ALT: () => {
10484
10490
  const label = CONSUME(terminals_exports.blankNodeLabel).image;
10485
- ACTION(() => {
10486
- if (context.flushedBlankNodeLabels.has(label)) {
10487
- throw new Error("Detected reuse blank node across different request string.");
10488
- }
10489
- context.usedBlankNodeLabels.add(label);
10490
- });
10491
10491
  return ACTION(() => context.dataFactory.blankNode(label.replace("_:", "e_")));
10492
10492
  }
10493
10493
  },
@@ -10687,16 +10687,15 @@ function triplesSameSubjectImpl(name, allowPaths) {
10687
10687
  {
10688
10688
  ALT: () => {
10689
10689
  const subject = SUBRULE(varOrTerm);
10690
- const propNotEmpty = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty);
10691
- return ACTION(() => propNotEmpty.map((partial) => partial({ subject })));
10690
+ return SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject);
10692
10691
  }
10693
10692
  },
10694
10693
  {
10695
10694
  ALT: () => {
10696
10695
  const subjectNode = SUBRULE(allowPaths ? triplesNodePath : triplesNode);
10697
- const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList);
10696
+ const restNode = SUBRULE(allowPaths ? propertyListPath : propertyList, subjectNode.node);
10698
10697
  return ACTION(() => [
10699
- ...restNode.map((partial) => partial({ subject: subjectNode.node })),
10698
+ ...restNode,
10700
10699
  ...subjectNode.triples
10701
10700
  ]);
10702
10701
  }
@@ -10709,7 +10708,7 @@ var triplesSameSubjectPath = triplesSameSubjectImpl("triplesSameSubjectPath", tr
10709
10708
  function propertyListImpl(name, allowPaths) {
10710
10709
  return {
10711
10710
  name,
10712
- impl: ({ SUBRULE, OPTION }) => () => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty)) ?? []
10711
+ impl: ({ SUBRULE, OPTION }) => (subject) => OPTION(() => SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty, subject)) ?? []
10713
10712
  };
10714
10713
  }
10715
10714
  var propertyList = propertyListImpl("propertyList", false);
@@ -10717,42 +10716,30 @@ var propertyListPath = propertyListImpl("propertyListPath", true);
10717
10716
  function propertyListNotEmptyImplementation(name, allowPaths) {
10718
10717
  return {
10719
10718
  name,
10720
- impl: ({ ACTION, CONSUME, MANY, SUBRULE1, SUBRULE2, OPTION, OR1, OR2, context }) => () => {
10719
+ impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (subject) => {
10721
10720
  const result = [];
10722
- const resultAppendage = [];
10723
- const firstProperty = allowPaths ? OR1([
10724
- { ALT: () => SUBRULE1(verbPath) },
10725
- { ALT: () => SUBRULE1(verbSimple) }
10726
- ]) : SUBRULE1(verb);
10727
- const firstObjects = SUBRULE1(allowPaths ? objectListPath : objectList);
10728
- ACTION(() => {
10729
- const filterSubject = context.dataFactory.namedNode("internal:filterSubject");
10730
- for (const cObject of firstObjects) {
10731
- const triple = cObject({ subject: filterSubject, predicate: firstProperty });
10732
- const generator = (rest) => cObject({ ...rest, predicate: firstProperty });
10733
- if (triple.subject === filterSubject) {
10734
- result.push(generator);
10735
- } else {
10736
- resultAppendage.push(generator);
10737
- }
10738
- }
10739
- });
10740
- MANY(() => {
10741
- CONSUME(symbols_exports.semi);
10742
- OPTION(() => {
10743
- const predicate = allowPaths ? OR2([
10744
- { ALT: () => SUBRULE2(verbPath) },
10745
- { ALT: () => SUBRULE2(verbSimple) }
10746
- ]) : SUBRULE2(verb);
10747
- const objects = SUBRULE2(allowPaths ? objectListPath : objectList);
10748
- ACTION(() => {
10749
- result.push(
10750
- ...objects.map((object2) => (partS) => object2({ ...partS, predicate }))
10751
- );
10721
+ let parsedSemi = true;
10722
+ AT_LEAST_ONE({
10723
+ GATE: () => parsedSemi,
10724
+ DEF: () => {
10725
+ parsedSemi = false;
10726
+ const predicate = allowPaths ? OR1([
10727
+ { ALT: () => SUBRULE1(verbPath) },
10728
+ { ALT: () => SUBRULE1(verbSimple) }
10729
+ ]) : SUBRULE1(verb);
10730
+ const triples = SUBRULE1(
10731
+ allowPaths ? objectListPath : objectList,
10732
+ subject,
10733
+ predicate
10734
+ );
10735
+ ACTION(() => result.push(...triples));
10736
+ MANY2(() => {
10737
+ CONSUME(symbols_exports.semi);
10738
+ parsedSemi = true;
10752
10739
  });
10753
- });
10740
+ }
10754
10741
  });
10755
- return [...result, ...resultAppendage];
10742
+ return result;
10756
10743
  }
10757
10744
  };
10758
10745
  }
@@ -10769,11 +10756,11 @@ var verbSimple = {
10769
10756
  function objectListImpl(name, allowPaths) {
10770
10757
  return {
10771
10758
  name,
10772
- impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => () => {
10759
+ impl: ({ ACTION, SUBRULE, AT_LEAST_ONE_SEP }) => (subject, predicate) => {
10773
10760
  const objects = [];
10774
10761
  AT_LEAST_ONE_SEP({
10775
10762
  DEF: () => {
10776
- const objectTriples = SUBRULE(allowPaths ? objectPath : object);
10763
+ const objectTriples = SUBRULE(allowPaths ? objectPath : object, subject, predicate);
10777
10764
  ACTION(() => objects.push(...objectTriples));
10778
10765
  },
10779
10766
  SEP: symbols_exports.comma
@@ -10787,11 +10774,11 @@ var objectListPath = objectListImpl("objectListPath", true);
10787
10774
  function objectImpl(name, allowPaths) {
10788
10775
  return {
10789
10776
  name,
10790
- impl: ({ ACTION, SUBRULE }) => () => {
10777
+ impl: ({ ACTION, SUBRULE }) => (subject, predicate) => {
10791
10778
  const node = SUBRULE(allowPaths ? graphNodePath : graphNode);
10792
10779
  return ACTION(() => [
10793
- (part) => ({ ...part, object: node.node }),
10794
- ...node.triples.map((val) => () => val)
10780
+ { subject, predicate, object: node.node },
10781
+ ...node.triples
10795
10782
  ]);
10796
10783
  }
10797
10784
  };
@@ -10817,13 +10804,16 @@ function blankNodePropertyListImpl(name, allowPaths) {
10817
10804
  name,
10818
10805
  impl: ({ ACTION, SUBRULE, CONSUME, context }) => () => {
10819
10806
  CONSUME(symbols_exports.LSquare);
10820
- const propList = SUBRULE(allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty);
10807
+ let blankNode2;
10808
+ const propList = SUBRULE(
10809
+ allowPaths ? propertyListPathNotEmpty : propertyListNotEmpty,
10810
+ ACTION(() => blankNode2 = context.dataFactory.blankNode())
10811
+ );
10821
10812
  CONSUME(symbols_exports.RSquare);
10822
10813
  return ACTION(() => {
10823
- const subject = context.dataFactory.blankNode();
10824
10814
  return {
10825
- node: subject,
10826
- triples: propList.map((part) => part({ subject }))
10815
+ node: blankNode2,
10816
+ triples: propList
10827
10817
  };
10828
10818
  });
10829
10819
  }
@@ -10963,16 +10953,24 @@ var prefixDecl2 = {
10963
10953
  };
10964
10954
  var triplesTemplate = {
10965
10955
  name: "triplesTemplate",
10966
- impl: ({ SUBRULE, CONSUME, OPTION1, OPTION2 }) => () => {
10956
+ impl: ({ ACTION, AT_LEAST_ONE, AT_LEAST_ONE_SEP, SUBRULE, CONSUME, OPTION }) => () => {
10967
10957
  const triples = [];
10968
- triples.push(SUBRULE(triplesSameSubject));
10969
- OPTION1(() => {
10970
- CONSUME(symbols_exports.dot);
10971
- OPTION2(() => {
10972
- triples.push(SUBRULE(triplesTemplate));
10973
- });
10958
+ let parsedDot = true;
10959
+ AT_LEAST_ONE({
10960
+ GATE: () => parsedDot,
10961
+ DEF: () => {
10962
+ parsedDot = false;
10963
+ const template = SUBRULE(triplesSameSubject);
10964
+ ACTION(() => {
10965
+ triples.push(...template);
10966
+ });
10967
+ OPTION(() => {
10968
+ CONSUME(symbols_exports.dot);
10969
+ parsedDot = true;
10970
+ });
10971
+ }
10974
10972
  });
10975
- return triples.flat(1);
10973
+ return triples;
10976
10974
  }
10977
10975
  };
10978
10976
  var verb = {
@@ -12716,6 +12714,7 @@ var updateUnit = {
12716
12714
  var update = {
12717
12715
  name: "update",
12718
12716
  impl: ({ ACTION, SUBRULE, CONSUME, OPTION1, OPTION2, context }) => () => {
12717
+ const blankLabelsUsedInInsertData = /* @__PURE__ */ new Set();
12719
12718
  const prologueValues = SUBRULE(prologue);
12720
12719
  const result = {
12721
12720
  type: "update",
@@ -12725,12 +12724,6 @@ var update = {
12725
12724
  };
12726
12725
  OPTION1(() => {
12727
12726
  const updateOperation = SUBRULE(update1);
12728
- ACTION(() => {
12729
- for (const label of context.usedBlankNodeLabels) {
12730
- context.flushedBlankNodeLabels.add(label);
12731
- }
12732
- context.usedBlankNodeLabels.clear();
12733
- });
12734
12727
  const recursiveRes = OPTION2(() => {
12735
12728
  CONSUME(symbols_exports.semi);
12736
12729
  return SUBRULE(update);
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,KAAmB;IAC/C,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAyB;IAClD,OAAO,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC;AAC5D,CAAC","sourcesContent":["import type {GroupPattern, Pattern, PropertyPath, Term, VariableTerm} from \"./Sparql11types\";\n\nexport function deGroupSingle(group: GroupPattern): Pattern {\n return group.patterns.length === 1 ? group.patterns[0] : group;\n}\n\nexport function isVariable(term: Term | PropertyPath): term is VariableTerm {\n return 'termType' in term && term.termType === 'Variable';\n}"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,aAAa,CAAC,KAAmB;IAC/C,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAyB;IAClD,OAAO,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC;AAC5D,CAAC","sourcesContent":["import type {\n GroupPattern,\n Pattern,\n PropertyPath,\n Term,\n VariableTerm\n} from \"./Sparql11types\";\n\nexport function deGroupSingle(group: GroupPattern): Pattern {\n return group.patterns.length === 1 ? group.patterns[0] : group;\n}\n\nexport function isVariable(term: Term | PropertyPath): term is VariableTerm {\n return 'termType' in term && term.termType === 'Variable';\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@traqula/rules-sparql-1-1",
3
- "version": "0.0.1-alpha.141+caaf4c7",
3
+ "version": "0.0.1-alpha.145+b7fd73e",
4
4
  "description": "TRAQULA Lexer and Grammar Rules for sparql 1.1",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -38,7 +38,7 @@
38
38
  "build:transpile": " node \"../../node_modules/esbuild/bin/esbuild\" --format=cjs --bundle --log-level=error --outfile=lib/index.cjs lib/index.ts"
39
39
  },
40
40
  "dependencies": {
41
- "@traqula/core": "^0.0.1-alpha.141+caaf4c7",
41
+ "@traqula/core": "^0.0.1-alpha.145+b7fd73e",
42
42
  "chevrotain": "^11.0.3",
43
43
  "rdf-data-factory": "^2.0.1"
44
44
  },
@@ -46,5 +46,5 @@
46
46
  "@chevrotain/types": "^11.0.3",
47
47
  "@rdfjs/types": "^2.0.0"
48
48
  },
49
- "gitHead": "caaf4c71153d27f8fa113b51efb1dae91e182960"
49
+ "gitHead": "b7fd73efdfc32dec46beaa040431ba031a723b53"
50
50
  }