@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.
- package/lib/Sparql11types.d.ts +0 -2
- package/lib/Sparql11types.js.map +1 -1
- package/lib/grammar/general.js +18 -8
- package/lib/grammar/general.js.map +1 -1
- package/lib/grammar/literals.js +0 -6
- package/lib/grammar/literals.js.map +1 -1
- package/lib/grammar/queryUnit/queryUnit.js.map +1 -1
- package/lib/grammar/tripleBlock.d.ts +9 -9
- package/lib/grammar/tripleBlock.js +30 -54
- package/lib/grammar/tripleBlock.js.map +1 -1
- package/lib/grammar/updateUnit/updateUnit.js +1 -6
- package/lib/grammar/updateUnit/updateUnit.js.map +1 -1
- package/lib/index.cjs +62 -69
- package/lib/utils.js.map +1 -1
- package/package.json +3 -3
package/lib/Sparql11types.d.ts
CHANGED
|
@@ -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[];
|
package/lib/Sparql11types.js.map
CHANGED
|
@@ -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
|
|
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"]}
|
package/lib/grammar/general.js
CHANGED
|
@@ -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,
|
|
75
|
+
impl: ({ ACTION, AT_LEAST_ONE, AT_LEAST_ONE_SEP, SUBRULE, CONSUME, OPTION }) => () => {
|
|
74
76
|
const triples = [];
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
|
92
|
+
return triples;
|
|
83
93
|
},
|
|
84
94
|
};
|
|
85
95
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general.js","sourceRoot":"","sources":["general.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAsE;IACzF,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;QACrD,MAAM,MAAM,GAAyC;YACnD,QAAQ,EAAE,EAAE;YACZ,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;SAClD,CAAC;QACF,IAAI,CAAC,GAAG,EAAE;YACR,EAAE,CAAC;gBACD;oBACE,GAAG,EAAE,GAAG,EAAE;wBACR,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAClC,CAAC;iBACF;gBACD;oBACE,GAAG,EAAE,GAAG,EAAE;wBACR,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;wBACjC,MAAM,CAAC,GAAG,EAAE;4BACV,MAAM,CAAE,IAAI,EAAE,KAAK,CAAE,GAAG,IAAI,CAAC;4BAC7B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;wBAChC,CAAC,CAAC,CAAC;oBACL,CAAC;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAwC;IAC3D,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;QAC3C,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC,GAAG,EAAE;YACjB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAoD;IACzE,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;QAC3C,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7D,OAAO,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YACjC,OAAO,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAiD;IAC3E,IAAI,EAAE,iBAAiB;IACvB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;QACrD,MAAM,OAAO,GAAe,EAAE,CAAC;QAE/B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,EAAE;YACX,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,EAAE;gBACX,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAoD;IACnE,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QAClC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAChC;YACE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;SAC1B;KACF,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAoC;IACpD,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;QACnC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAuC;IAC3D,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAO;QACjD,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC7E,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;KAClC,CAAC;CACH,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAwD;IAC3E,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAyB;QACnE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC7E,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;KAC5B,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,MAAM,IAAI,GAAyC;IACxD,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,EAAE,CAAC;YAChB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACrF,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;SACtF,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAA4C;IAChE,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAY;QAC/D,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC3B,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAClC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;QACtC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;QACtC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QACzF;YACE,GAAG,EAAE,GAAG,EAAE;gBACR,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACzB,OAAO,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACvD,CAAC;SACF;KACF,CAAC;CACH,CAAC","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"]}
|
package/lib/grammar/literals.js
CHANGED
|
@@ -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,
|
|
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",
|
|
10
|
-
export declare const propertyListPath: RuleDef<"propertyListPath",
|
|
11
|
-
export declare const propertyListNotEmpty: RuleDef<"propertyListNotEmpty",
|
|
12
|
-
export declare const propertyListPathNotEmpty: RuleDef<"propertyListPathNotEmpty",
|
|
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",
|
|
22
|
-
export declare const objectListPath: RuleDef<"objectListPath",
|
|
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",
|
|
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",
|
|
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
|
-
|
|
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
|
|
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,
|
|
73
|
+
impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (subject) => {
|
|
75
74
|
const result = [];
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
106
|
-
{ ALT: () =>
|
|
107
|
-
{ ALT: () =>
|
|
81
|
+
OR1([
|
|
82
|
+
{ ALT: () => SUBRULE1(verbPath) },
|
|
83
|
+
{ ALT: () => SUBRULE1(verbSimple) },
|
|
108
84
|
]) :
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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
|
|
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
|
-
|
|
167
|
-
...node.triples
|
|
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
|
-
|
|
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:
|
|
213
|
-
triples: propList
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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,
|
|
10719
|
+
impl: ({ ACTION, CONSUME, AT_LEAST_ONE, SUBRULE1, MANY2, OR1 }) => (subject) => {
|
|
10721
10720
|
const result = [];
|
|
10722
|
-
|
|
10723
|
-
|
|
10724
|
-
|
|
10725
|
-
|
|
10726
|
-
|
|
10727
|
-
|
|
10728
|
-
|
|
10729
|
-
|
|
10730
|
-
|
|
10731
|
-
const
|
|
10732
|
-
|
|
10733
|
-
|
|
10734
|
-
|
|
10735
|
-
|
|
10736
|
-
|
|
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
|
|
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
|
-
|
|
10794
|
-
...node.triples
|
|
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
|
-
|
|
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:
|
|
10826
|
-
triples: propList
|
|
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,
|
|
10956
|
+
impl: ({ ACTION, AT_LEAST_ONE, AT_LEAST_ONE_SEP, SUBRULE, CONSUME, OPTION }) => () => {
|
|
10967
10957
|
const triples = [];
|
|
10968
|
-
|
|
10969
|
-
|
|
10970
|
-
|
|
10971
|
-
|
|
10972
|
-
|
|
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
|
|
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":"
|
|
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.
|
|
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.
|
|
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": "
|
|
49
|
+
"gitHead": "b7fd73efdfc32dec46beaa040431ba031a723b53"
|
|
50
50
|
}
|