@comunica/actor-query-source-identify-rdfjs 4.3.0 → 4.4.1

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.
@@ -9,14 +9,20 @@
9
9
  "@type": "Class",
10
10
  "requireElement": "QuerySourceRdfJs",
11
11
  "parameters": [
12
- {
13
- "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs_source",
14
- "range": "urn:npm:@rdfjs/types:Source"
15
- },
16
12
  {
17
13
  "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs_bindingsFactory",
18
14
  "range": "urn:npm:@comunica/utils-bindings-factory:BindingsFactory"
19
15
  },
16
+ {
17
+ "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs_source",
18
+ "range": {
19
+ "@type": "ParameterRangeUnion",
20
+ "parameterRangeElements": [
21
+ "urn:npm:@rdfjs/types:Source",
22
+ "urn:npm:@rdfjs/types:DatasetCore"
23
+ ]
24
+ }
25
+ },
20
26
  {
21
27
  "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs_dataFactory",
22
28
  "range": {
@@ -45,14 +51,21 @@
45
51
  "@type": "ParameterRangeUnion",
46
52
  "parameterRangeElements": [
47
53
  "xsd:string",
48
- "urn:npm:@rdfjs/types:Source"
54
+ "urn:npm:@rdfjs/types:Source",
55
+ "urn:npm:@rdfjs/types:DatasetCore"
49
56
  ]
50
57
  }
51
58
  },
52
59
  {
53
60
  "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs__member_source",
54
61
  "memberFieldName": "source",
55
- "range": "caqsir:components/IRdfJsSourceExtended.jsonld#IRdfJsSourceExtended"
62
+ "range": {
63
+ "@type": "ParameterRangeUnion",
64
+ "parameterRangeElements": [
65
+ "caqsir:components/IRdfJsSourceExtended.jsonld#IRdfJsSourceExtended",
66
+ "urn:npm:@rdfjs/types:DatasetCore"
67
+ ]
68
+ }
56
69
  },
57
70
  {
58
71
  "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs__member_dataFactory",
@@ -56,12 +56,12 @@
56
56
  "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs",
57
57
  "@prefix": true,
58
58
  "@context": {
59
- "source": {
60
- "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs_source"
61
- },
62
59
  "bindingsFactory": {
63
60
  "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs_bindingsFactory"
64
61
  },
62
+ "source": {
63
+ "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs_source"
64
+ },
65
65
  "dataFactory": {
66
66
  "@id": "caqsir:components/QuerySourceRdfJs.jsonld#QuerySourceRdfJs_dataFactory"
67
67
  },
@@ -1 +1 @@
1
- {"version":3,"file":"ActorQuerySourceIdentifyRdfJs.js","sourceRoot":"","sources":["ActorQuerySourceIdentifyRdfJs.ts"],"names":[],"mappings":";;;AAMA,mFAA+E;AAC/E,+DAA0D;AAE1D,yCAAuE;AAEvE,6EAAmE;AAEnE,yDAAsD;AAEtD;;GAEG;AACH,MAAa,6BAA8B,SAAQ,oDAAwB;IAGzE,YAAmB,IAAwC;QACzD,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAkC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzD,OAAO,IAAA,eAAQ,EAAC,GAAG,IAAI,CAAC,IAAI,+EAA+E,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,IAAA,eAAQ,EAAC,GAAG,IAAI,CAAC,IAAI,0CAA0C,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAA,mBAAY,GAAE,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,MAAkC;QACjD,MAAM,WAAW,GAAwB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,+BAAa,CAAC,WAAW,CAAC,CAAC;QAC3F,OAAO;YACL,WAAW,EAAE;gBACX,MAAM,EAAE,IAAI,mCAAgB,CACb,MAAM,CAAC,uBAAuB,CAAC,KAAK,EACjD,WAAW,EACX,MAAM,wCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAC7F;gBACD,OAAO,EAAE,MAAM,CAAC,uBAAuB,CAAC,OAAO,IAAI,IAAI,oBAAa,EAAE;aACvE;SACF,CAAC;IACJ,CAAC;CACF;AA/BD,sEA+BC","sourcesContent":["import type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest, TestResult } from '@comunica/core';\nimport { failTest, passTestVoid, ActionContext } from '@comunica/core';\nimport type { ComunicaDataFactory } from '@comunica/types';\nimport { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport type * as RDF from '@rdfjs/types';\nimport { QuerySourceRdfJs } from './QuerySourceRdfJs';\n\n/**\n * A comunica RDFJS Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyRdfJs extends ActorQuerySourceIdentify {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQuerySourceIdentifyRdfJsArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise<TestResult<IActorTest>> {\n const source = action.querySourceUnidentified;\n if (source.type !== undefined && source.type !== 'rdfjs') {\n return failTest(`${this.name} requires a single query source with rdfjs type to be present in the context.`);\n }\n if (typeof source.value === 'string' || !('match' in source.value)) {\n return failTest(`${this.name} received an invalid rdfjs query source.`);\n }\n return passTestVoid();\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise<IActorQuerySourceIdentifyOutput> {\n const dataFactory: ComunicaDataFactory = action.context.getSafe(KeysInitQuery.dataFactory);\n return {\n querySource: {\n source: new QuerySourceRdfJs(\n <RDF.Source> action.querySourceUnidentified.value,\n dataFactory,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context, dataFactory),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyRdfJsArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n"]}
1
+ {"version":3,"file":"ActorQuerySourceIdentifyRdfJs.js","sourceRoot":"","sources":["ActorQuerySourceIdentifyRdfJs.ts"],"names":[],"mappings":";;;AAMA,mFAA+E;AAC/E,+DAA0D;AAE1D,yCAAuE;AAEvE,6EAAmE;AAEnE,yDAAsD;AAEtD;;GAEG;AACH,MAAa,6BAA8B,SAAQ,oDAAwB;IAGzE,YAAmB,IAAwC;QACzD,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,MAAkC;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAC9C,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzD,OAAO,IAAA,eAAQ,EAAC,GAAG,IAAI,CAAC,IAAI,+EAA+E,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACnE,OAAO,IAAA,eAAQ,EAAC,GAAG,IAAI,CAAC,IAAI,0CAA0C,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAA,mBAAY,GAAE,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,MAAkC;QACjD,MAAM,WAAW,GAAwB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,+BAAa,CAAC,WAAW,CAAC,CAAC;QAC3F,OAAO;YACL,WAAW,EAAE;gBACX,MAAM,EAAE,IAAI,mCAAgB,CACK,MAAM,CAAC,uBAAuB,CAAC,KAAK,EACnE,WAAW,EACX,MAAM,wCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAC7F;gBACD,OAAO,EAAE,MAAM,CAAC,uBAAuB,CAAC,OAAO,IAAI,IAAI,oBAAa,EAAE;aACvE;SACF,CAAC;IACJ,CAAC;CACF;AA/BD,sEA+BC","sourcesContent":["import type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentify,\n IActorQuerySourceIdentifyOutput,\n IActorQuerySourceIdentifyArgs,\n} from '@comunica/bus-query-source-identify';\nimport { ActorQuerySourceIdentify } from '@comunica/bus-query-source-identify';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { IActorTest, TestResult } from '@comunica/core';\nimport { failTest, passTestVoid, ActionContext } from '@comunica/core';\nimport type { ComunicaDataFactory } from '@comunica/types';\nimport { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport type * as RDF from '@rdfjs/types';\nimport { QuerySourceRdfJs } from './QuerySourceRdfJs';\n\n/**\n * A comunica RDFJS Query Source Identify Actor.\n */\nexport class ActorQuerySourceIdentifyRdfJs extends ActorQuerySourceIdentify {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQuerySourceIdentifyRdfJsArgs) {\n super(args);\n }\n\n public async test(action: IActionQuerySourceIdentify): Promise<TestResult<IActorTest>> {\n const source = action.querySourceUnidentified;\n if (source.type !== undefined && source.type !== 'rdfjs') {\n return failTest(`${this.name} requires a single query source with rdfjs type to be present in the context.`);\n }\n if (typeof source.value === 'string' || !('match' in source.value)) {\n return failTest(`${this.name} received an invalid rdfjs query source.`);\n }\n return passTestVoid();\n }\n\n public async run(action: IActionQuerySourceIdentify): Promise<IActorQuerySourceIdentifyOutput> {\n const dataFactory: ComunicaDataFactory = action.context.getSafe(KeysInitQuery.dataFactory);\n return {\n querySource: {\n source: new QuerySourceRdfJs(\n <RDF.Source | RDF.DatasetCore> action.querySourceUnidentified.value,\n dataFactory,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, action.context, dataFactory),\n ),\n context: action.querySourceUnidentified.context ?? new ActionContext(),\n },\n };\n }\n}\n\nexport interface IActorQuerySourceIdentifyRdfJsArgs extends IActorQuerySourceIdentifyArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { IQuerySource, BindingsStream, IActionContext, FragmentSelectorShape, ComunicaDataFactory } from '@comunica/types';
1
+ import type { IQuerySource, BindingsStream, IActionContext, FragmentSelectorShape, ComunicaDataFactory, QuerySourceReference } from '@comunica/types';
2
2
  import type { BindingsFactory } from '@comunica/utils-bindings-factory';
3
3
  import type * as RDF from '@rdfjs/types';
4
4
  import { AsyncIterator } from 'asynciterator';
@@ -6,12 +6,12 @@ import type { Algebra } from 'sparqlalgebrajs';
6
6
  import type { IRdfJsSourceExtended } from './IRdfJsSourceExtended';
7
7
  export declare class QuerySourceRdfJs implements IQuerySource {
8
8
  protected readonly selectorShape: FragmentSelectorShape;
9
- referenceValue: string | RDF.Source;
10
- protected readonly source: IRdfJsSourceExtended;
9
+ referenceValue: QuerySourceReference;
10
+ protected readonly source: IRdfJsSourceExtended | RDF.DatasetCore;
11
11
  private readonly dataFactory;
12
12
  private readonly bindingsFactory;
13
13
  private readonly dummyDefaultGraph;
14
- constructor(source: RDF.Source, dataFactory: ComunicaDataFactory, bindingsFactory: BindingsFactory);
14
+ constructor(source: RDF.Source | RDF.DatasetCore, dataFactory: ComunicaDataFactory, bindingsFactory: BindingsFactory);
15
15
  static nullifyVariables(term: RDF.Term | undefined, quotedTripleFiltering: boolean): RDF.Term | undefined;
16
16
  static hasDuplicateVariables(pattern: RDF.BaseQuad): boolean;
17
17
  getSelectorShape(): Promise<FragmentSelectorShape>;
@@ -52,7 +52,7 @@ class QuerySourceRdfJs {
52
52
  }
53
53
  // Get bindings directly if the source allows it
54
54
  // This will be more efficient, as it avoids the intermediary quads translation and representation.
55
- if (this.source.matchBindings) {
55
+ if ('matchBindings' in this.source && this.source.matchBindings) {
56
56
  const rawStream = this.source.matchBindings(this.bindingsFactory, operation.subject, operation.predicate, operation.object, operation.graph);
57
57
  let it = rawStream instanceof asynciterator_1.AsyncIterator ?
58
58
  rawStream :
@@ -81,7 +81,7 @@ class QuerySourceRdfJs {
81
81
  return it;
82
82
  }
83
83
  // Check if the source supports quoted triple filtering
84
- const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);
84
+ const quotedTripleFiltering = Boolean('features' in this.source && this.source.features?.quotedTripleFiltering);
85
85
  // Create an async iterator from the matched quad stream
86
86
  const rawStream = this.source.match(QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering));
87
87
  let it = rawStream instanceof asynciterator_1.AsyncIterator ?
@@ -104,14 +104,14 @@ class QuerySourceRdfJs {
104
104
  }
105
105
  async setMetadata(it, operation, context, forceEstimateCardinality = false, extraMetadata = {}) {
106
106
  // Check if the source supports quoted triple filtering
107
- const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);
107
+ const quotedTripleFiltering = Boolean('features' in this.source && this.source.features?.quotedTripleFiltering);
108
108
  // Check if we're running in union default graph mode
109
109
  const unionDefaultGraph = Boolean(context.get(context_entries_1.KeysQueryOperation.unionDefaultGraph));
110
110
  if (operation.graph.termType === 'DefaultGraph' && unionDefaultGraph) {
111
111
  operation.graph = this.dummyDefaultGraph;
112
112
  }
113
113
  let cardinality;
114
- if (this.source.countQuads) {
114
+ if ('countQuads' in this.source && this.source.countQuads) {
115
115
  // If the source provides a dedicated method for determining cardinality, use that.
116
116
  cardinality = await this.source.countQuads(QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering));
117
117
  }
@@ -121,7 +121,11 @@ class QuerySourceRdfJs {
121
121
  // because we may lose data elements due to things happening async.
122
122
  let i = 0;
123
123
  cardinality = await new Promise((resolve, reject) => {
124
- const matches = this.source.match(QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering));
124
+ let matches = this.source.match(QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering), QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering));
125
+ // If it's not a stream, turn it into one
126
+ if (typeof matches.on !== 'function') {
127
+ matches = (new asynciterator_1.ArrayIterator(matches));
128
+ }
125
129
  matches.on('error', reject);
126
130
  matches.on('end', () => resolve(i));
127
131
  matches.on('data', () => i++);
@@ -1 +1 @@
1
- {"version":3,"file":"QuerySourceRdfJs.js","sourceRoot":"","sources":["QuerySourceRdfJs.ts"],"names":[],"mappings":";;;AAAA,mFAA+G;AAC/G,+DAA+D;AAS/D,6DAAmE;AAEnE,iDAAyE;AACzE,yCAAqF;AAErF,qDAA0C;AAG1C,MAAa,gBAAgB;IAQ3B,YAAmB,MAAkB,EAAE,WAAgC,EAAE,eAAgC;QACvG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,MAAM,EAAE,GAAG,IAAI,yBAAO,CAAmB,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG;YACnB,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE;gBACT,aAAa,EAAE,SAAS;gBACxB,OAAO,EAAE,EAAE,CAAC,aAAa,CACvB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAC/B;aACF;YACD,iBAAiB,EAAE;gBACjB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;aAC/B;SACF,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;IAChF,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,IAA0B,EAAE,qBAA8B;QACvF,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,CAAC,qBAAqB;YACrE,IAAI,CAAC,QAAQ,KAAK,MAAM,IAAI,IAAA,2BAAe,EAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC;YAC5F,SAAS,CAAC,CAAC;YACX,IAAI,CAAC;IACT,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAAC,OAAqB;QACvD,MAAM,SAAS,GAAG,IAAA,6BAAiB,EAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;QACnF,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,IAAA,qBAAS,EAAC,SAAS,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAChF,CAAC;IAEM,KAAK,CAAC,gBAAgB;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAEM,aAAa,CAAC,SAA4B,EAAE,OAAuB;QACxE,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,4CAA4C,SAAS,CAAC,IAAI,uBAAuB,CAAC,CAAC;QACrG,CAAC;QAED,qDAAqD;QACrD,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACrF,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,IAAI,iBAAiB,EAAE,CAAC;YACrE,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3C,CAAC;QAED,gDAAgD;QAChD,mGAAmG;QACnG,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CACzC,IAAI,CAAC,eAAe,EACpB,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,KAAK,CAChB,CAAC;YACF,IAAI,EAAE,GAAgC,SAAS,YAAY,6BAAa,CAAC,CAAC;gBACxE,SAAS,CAAC,CAAC;gBACX,IAAA,oBAAiB,EAAe,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAEnE,8DAA8D;YAC9D,4GAA4G;YAC5G,oEAAoE;YACpE,IAAI,wBAAwB,GAAG,KAAK,CAAC;YACrC,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAClE,wBAAwB,GAAG,IAAI,CAAC;gBAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;gBACjC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,QAAQ,KAAK,cAAc,CAAC,CAAC;YAClF,CAAC;YAED,0EAA0E;YAC1E,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnD,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACjE,kDAAkD;gBAClD,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YACpD,CAAC;YAED,qBAAqB;YACrB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,IAAA,wCAAY,EAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7F,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,SAAS,EAAE,CAAC;qBAC9E,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACvC,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,uDAAuD;QACvD,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAEnF,wDAAwD;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CACjC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,qBAAqB,CAAC,EAC3E,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAC7E,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1E,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAC1E,CAAC;QACF,IAAI,EAAE,GAA4B,SAAS,YAAY,6BAAa,CAAC,CAAC;YACpE,SAAS,CAAC,CAAC;YACX,IAAA,oBAAiB,EAAW,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAE/D,uFAAuF;QACvF,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC3B,EAAE,GAAG,IAAA,qDAAyB,EAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC;iBACrC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,kDAAkD;QAClD,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACnD,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACpD,CAAC;QAED,OAAO,IAAA,2CAAe,EACpB,EAAE,EACF,SAAS,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,eAAe,EACpB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAkB,CAAC,iBAAiB,CAAC,CAAC,CAC3D,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,WAAW,CACzB,EAAsB,EACtB,SAA0B,EAC1B,OAAuB,EACvB,wBAAwB,GAAG,KAAK,EAChC,gBAAqC,EAAE;QAEvC,uDAAuD;QACvD,MAAM,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QAEnF,qDAAqD;QACrD,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,oCAAkB,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACrF,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,IAAI,iBAAiB,EAAE,CAAC;YACrE,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3C,CAAC;QAED,IAAI,WAAmB,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,mFAAmF;YACnF,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CACxC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,qBAAqB,CAAC,EAC3E,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAC7E,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1E,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAC1E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,sGAAsG;YACtG,2DAA2D;YAC3D,mEAAmE;YACnE,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,WAAW,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAC/B,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,OAAO,EAAE,qBAAqB,CAAC,EAC3E,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAC7E,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC1E,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAC1E,CAAC;gBACF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,qFAAqF;QACrF,MAAM,yBAAyB,GAAG,CAAC,CAAC,qBAAqB;YACrD,IAAA,qBAAS,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;YACzD,gBAAgB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEpD,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE;YACzB,KAAK,EAAE,IAAI,wCAAuB,EAAE;YACpC,WAAW,EAAE;gBACX,IAAI,EAAE,yBAAyB,IAAI,wBAAwB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;gBAClF,KAAK,EAAE,WAAW;aACnB;YACD,6GAA6G;YAC7G,WAAW,EAAE,CAAC;YACd,GAAG,aAAa;SACjB,CAAC,CAAC;IACL,CAAC;IAEM,UAAU,CACf,UAA6B,EAC7B,QAAwB;QAExB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAEM,YAAY,CACjB,UAAuB,EACvB,QAAwB;QAExB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAEM,SAAS,CACd,UAA0B,EAC1B,QAAwB;QAExB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAEM,QAAQ;QACb,OAAO,oBAAoB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC;IAC7D,CAAC;CACF;AAhOD,4CAgOC","sourcesContent":["import { filterMatchingQuotedQuads, getVariables, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type {\n IQuerySource,\n BindingsStream,\n IActionContext,\n FragmentSelectorShape,\n ComunicaDataFactory,\n} from '@comunica/types';\nimport type { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport { MetadataValidationState } from '@comunica/utils-metadata';\nimport type * as RDF from '@rdfjs/types';\nimport { AsyncIterator, wrap as wrapAsyncIterator } from 'asynciterator';\nimport { someTermsNested, filterTermsNested, someTerms, uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { IRdfJsSourceExtended } from './IRdfJsSourceExtended';\n\nexport class QuerySourceRdfJs implements IQuerySource {\n protected readonly selectorShape: FragmentSelectorShape;\n public referenceValue: string | RDF.Source;\n protected readonly source: IRdfJsSourceExtended;\n private readonly dataFactory: ComunicaDataFactory;\n private readonly bindingsFactory: BindingsFactory;\n private readonly dummyDefaultGraph: RDF.Variable;\n\n public constructor(source: RDF.Source, dataFactory: ComunicaDataFactory, bindingsFactory: BindingsFactory) {\n this.source = source;\n this.referenceValue = source;\n this.dataFactory = dataFactory;\n this.bindingsFactory = bindingsFactory;\n const AF = new Factory(<RDF.DataFactory> this.dataFactory);\n this.selectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(\n this.dataFactory.variable('s'),\n this.dataFactory.variable('p'),\n this.dataFactory.variable('o'),\n ),\n },\n variablesOptional: [\n this.dataFactory.variable('s'),\n this.dataFactory.variable('p'),\n this.dataFactory.variable('o'),\n ],\n };\n this.dummyDefaultGraph = this.dataFactory.variable('__comunica:defaultGraph');\n }\n\n public static nullifyVariables(term: RDF.Term | undefined, quotedTripleFiltering: boolean): RDF.Term | undefined {\n return !term || term.termType === 'Variable' || (!quotedTripleFiltering &&\n term.termType === 'Quad' && someTermsNested(term, value => value.termType === 'Variable')) ?\n undefined :\n term;\n }\n\n public static hasDuplicateVariables(pattern: RDF.BaseQuad): boolean {\n const variables = filterTermsNested(pattern, term => term.termType === 'Variable');\n return variables.length > 1 && uniqTerms(variables).length < variables.length;\n }\n\n public async getSelectorShape(): Promise<FragmentSelectorShape> {\n return this.selectorShape;\n }\n\n public queryBindings(operation: Algebra.Operation, context: IActionContext): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceRdfJs`);\n }\n\n // Check if we're running in union default graph mode\n const unionDefaultGraph = Boolean(context.get(KeysQueryOperation.unionDefaultGraph));\n if (operation.graph.termType === 'DefaultGraph' && unionDefaultGraph) {\n operation.graph = this.dummyDefaultGraph;\n }\n\n // Get bindings directly if the source allows it\n // This will be more efficient, as it avoids the intermediary quads translation and representation.\n if (this.source.matchBindings) {\n const rawStream = this.source.matchBindings(\n this.bindingsFactory,\n operation.subject,\n operation.predicate,\n operation.object,\n operation.graph,\n );\n let it: AsyncIterator<RDF.Bindings> = rawStream instanceof AsyncIterator ?\n rawStream :\n wrapAsyncIterator<RDF.Bindings>(rawStream, { autoStart: false });\n\n // Check if non-default-graph triples need to be filtered out.\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n // But this is not the case when using union default graph semantics\n let forceEstimateCardinality = false;\n if (operation.graph.termType === 'Variable' && !unionDefaultGraph) {\n forceEstimateCardinality = true;\n const variable = operation.graph;\n it = it.filter(bindings => bindings.get(variable)!.termType !== 'DefaultGraph');\n }\n\n // Remove bindings to the dummy __comunica:defaultGraph variable if needed\n if (operation.graph.equals(this.dummyDefaultGraph)) {\n it = it.map(bindings => bindings.delete(this.dummyDefaultGraph));\n // Restore graph for determining variable metadata\n operation.graph = this.dataFactory.defaultGraph();\n }\n\n // Determine metadata\n if (!it.getProperty('metadata')) {\n const variables = getVariables(operation).map(variable => ({ variable, canBeUndef: false }));\n this.setMetadata(it, operation, context, forceEstimateCardinality, { variables })\n .catch(error => it.destroy(error));\n }\n\n return it;\n }\n\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n let it: AsyncIterator<RDF.Quad> = rawStream instanceof AsyncIterator ?\n rawStream :\n wrapAsyncIterator<RDF.Quad>(rawStream, { autoStart: false });\n\n // Perform post-match-filtering if the source does not support quoted triple filtering.\n if (!quotedTripleFiltering) {\n it = filterMatchingQuotedQuads(operation, it);\n }\n\n // Determine metadata\n if (!it.getProperty('metadata')) {\n this.setMetadata(it, operation, context)\n .catch(error => it.destroy(error));\n }\n\n // Restore graph for determining variable metadata\n if (operation.graph.equals(this.dummyDefaultGraph)) {\n operation.graph = this.dataFactory.defaultGraph();\n }\n\n return quadsToBindings(\n it,\n operation,\n this.dataFactory,\n this.bindingsFactory,\n Boolean(context.get(KeysQueryOperation.unionDefaultGraph)),\n );\n }\n\n protected async setMetadata(\n it: AsyncIterator<any>,\n operation: Algebra.Pattern,\n context: IActionContext,\n forceEstimateCardinality = false,\n extraMetadata: Record<string, any> = {},\n ): Promise<void> {\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean(this.source.features?.quotedTripleFiltering);\n\n // Check if we're running in union default graph mode\n const unionDefaultGraph = Boolean(context.get(KeysQueryOperation.unionDefaultGraph));\n if (operation.graph.termType === 'DefaultGraph' && unionDefaultGraph) {\n operation.graph = this.dummyDefaultGraph;\n }\n\n let cardinality: number;\n if (this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n } else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may lose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n const matches = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n matches.on('error', reject);\n matches.on('end', () => resolve(i));\n matches.on('data', () => i++);\n });\n }\n\n // If `match` would require filtering afterwards, our count will be an over-estimate.\n const wouldRequirePostFiltering = (!quotedTripleFiltering &&\n someTerms(operation, term => term.termType === 'Quad')) ||\n QuerySourceRdfJs.hasDuplicateVariables(operation);\n\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: {\n type: wouldRequirePostFiltering || forceEstimateCardinality ? 'estimate' : 'exact',\n value: cardinality,\n },\n // Force requestTime to zero, since this will be free for future calls, as we're fully indexed at this stage.\n requestTime: 0,\n ...extraMetadata,\n });\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator<RDF.Quad> {\n throw new Error('queryQuads is not implemented in QuerySourceRdfJs');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise<boolean> {\n throw new Error('queryBoolean is not implemented in QuerySourceRdfJs');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise<void> {\n throw new Error('queryVoid is not implemented in QuerySourceRdfJs');\n }\n\n public toString(): string {\n return `QuerySourceRdfJs(${this.source.constructor.name})`;\n }\n}\n"]}
1
+ {"version":3,"file":"QuerySourceRdfJs.js","sourceRoot":"","sources":["QuerySourceRdfJs.ts"],"names":[],"mappings":"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","sourcesContent":["import { filterMatchingQuotedQuads, getVariables, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type {\n IQuerySource,\n BindingsStream,\n IActionContext,\n FragmentSelectorShape,\n ComunicaDataFactory,\n QuerySourceReference,\n} from '@comunica/types';\nimport type { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport { MetadataValidationState } from '@comunica/utils-metadata';\nimport type * as RDF from '@rdfjs/types';\nimport { ArrayIterator, AsyncIterator, wrap as wrapAsyncIterator } from 'asynciterator';\nimport { someTermsNested, filterTermsNested, someTerms, uniqTerms } from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\nimport type { IRdfJsSourceExtended } from './IRdfJsSourceExtended';\n\nexport class QuerySourceRdfJs implements IQuerySource {\n protected readonly selectorShape: FragmentSelectorShape;\n public referenceValue: QuerySourceReference;\n protected readonly source: IRdfJsSourceExtended | RDF.DatasetCore;\n private readonly dataFactory: ComunicaDataFactory;\n private readonly bindingsFactory: BindingsFactory;\n private readonly dummyDefaultGraph: RDF.Variable;\n\n public constructor(\n source: RDF.Source | RDF.DatasetCore,\n dataFactory: ComunicaDataFactory,\n bindingsFactory: BindingsFactory,\n ) {\n this.source = source;\n this.referenceValue = source;\n this.dataFactory = dataFactory;\n this.bindingsFactory = bindingsFactory;\n const AF = new Factory(<RDF.DataFactory> this.dataFactory);\n this.selectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(\n this.dataFactory.variable('s'),\n this.dataFactory.variable('p'),\n this.dataFactory.variable('o'),\n ),\n },\n variablesOptional: [\n this.dataFactory.variable('s'),\n this.dataFactory.variable('p'),\n this.dataFactory.variable('o'),\n ],\n };\n this.dummyDefaultGraph = this.dataFactory.variable('__comunica:defaultGraph');\n }\n\n public static nullifyVariables(term: RDF.Term | undefined, quotedTripleFiltering: boolean): RDF.Term | undefined {\n return !term || term.termType === 'Variable' || (!quotedTripleFiltering &&\n term.termType === 'Quad' && someTermsNested(term, value => value.termType === 'Variable')) ?\n undefined :\n term;\n }\n\n public static hasDuplicateVariables(pattern: RDF.BaseQuad): boolean {\n const variables = filterTermsNested(pattern, term => term.termType === 'Variable');\n return variables.length > 1 && uniqTerms(variables).length < variables.length;\n }\n\n public async getSelectorShape(): Promise<FragmentSelectorShape> {\n return this.selectorShape;\n }\n\n public queryBindings(operation: Algebra.Operation, context: IActionContext): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceRdfJs`);\n }\n\n // Check if we're running in union default graph mode\n const unionDefaultGraph = Boolean(context.get(KeysQueryOperation.unionDefaultGraph));\n if (operation.graph.termType === 'DefaultGraph' && unionDefaultGraph) {\n operation.graph = this.dummyDefaultGraph;\n }\n\n // Get bindings directly if the source allows it\n // This will be more efficient, as it avoids the intermediary quads translation and representation.\n if ('matchBindings' in this.source && this.source.matchBindings) {\n const rawStream = this.source.matchBindings(\n this.bindingsFactory,\n operation.subject,\n operation.predicate,\n operation.object,\n operation.graph,\n );\n let it: AsyncIterator<RDF.Bindings> = rawStream instanceof AsyncIterator ?\n rawStream :\n wrapAsyncIterator<RDF.Bindings>(rawStream, { autoStart: false });\n\n // Check if non-default-graph triples need to be filtered out.\n // SPARQL query semantics allow graph variables to only match with named graphs, excluding the default graph\n // But this is not the case when using union default graph semantics\n let forceEstimateCardinality = false;\n if (operation.graph.termType === 'Variable' && !unionDefaultGraph) {\n forceEstimateCardinality = true;\n const variable = operation.graph;\n it = it.filter(bindings => bindings.get(variable)!.termType !== 'DefaultGraph');\n }\n\n // Remove bindings to the dummy __comunica:defaultGraph variable if needed\n if (operation.graph.equals(this.dummyDefaultGraph)) {\n it = it.map(bindings => bindings.delete(this.dummyDefaultGraph));\n // Restore graph for determining variable metadata\n operation.graph = this.dataFactory.defaultGraph();\n }\n\n // Determine metadata\n if (!it.getProperty('metadata')) {\n const variables = getVariables(operation).map(variable => ({ variable, canBeUndef: false }));\n this.setMetadata(it, operation, context, forceEstimateCardinality, { variables })\n .catch(error => it.destroy(error));\n }\n\n return it;\n }\n\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean('features' in this.source && this.source.features?.quotedTripleFiltering);\n\n // Create an async iterator from the matched quad stream\n const rawStream = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n let it: AsyncIterator<RDF.Quad> = rawStream instanceof AsyncIterator ?\n rawStream :\n wrapAsyncIterator<RDF.Quad>(rawStream, { autoStart: false });\n\n // Perform post-match-filtering if the source does not support quoted triple filtering.\n if (!quotedTripleFiltering) {\n it = filterMatchingQuotedQuads(operation, it);\n }\n\n // Determine metadata\n if (!it.getProperty('metadata')) {\n this.setMetadata(it, operation, context)\n .catch(error => it.destroy(error));\n }\n\n // Restore graph for determining variable metadata\n if (operation.graph.equals(this.dummyDefaultGraph)) {\n operation.graph = this.dataFactory.defaultGraph();\n }\n\n return quadsToBindings(\n it,\n operation,\n this.dataFactory,\n this.bindingsFactory,\n Boolean(context.get(KeysQueryOperation.unionDefaultGraph)),\n );\n }\n\n protected async setMetadata(\n it: AsyncIterator<any>,\n operation: Algebra.Pattern,\n context: IActionContext,\n forceEstimateCardinality = false,\n extraMetadata: Record<string, any> = {},\n ): Promise<void> {\n // Check if the source supports quoted triple filtering\n const quotedTripleFiltering = Boolean('features' in this.source && this.source.features?.quotedTripleFiltering);\n\n // Check if we're running in union default graph mode\n const unionDefaultGraph = Boolean(context.get(KeysQueryOperation.unionDefaultGraph));\n if (operation.graph.termType === 'DefaultGraph' && unionDefaultGraph) {\n operation.graph = this.dummyDefaultGraph;\n }\n\n let cardinality: number;\n if ('countQuads' in this.source && this.source.countQuads) {\n // If the source provides a dedicated method for determining cardinality, use that.\n cardinality = await this.source.countQuads(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n } else {\n // Otherwise, fallback to a sub-optimal alternative where we just call match again to count the quads.\n // WARNING: we can NOT reuse the original data stream here,\n // because we may lose data elements due to things happening async.\n let i = 0;\n cardinality = await new Promise((resolve, reject) => {\n let matches = this.source.match(\n QuerySourceRdfJs.nullifyVariables(operation.subject, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.predicate, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.object, quotedTripleFiltering),\n QuerySourceRdfJs.nullifyVariables(operation.graph, quotedTripleFiltering),\n );\n\n // If it's not a stream, turn it into one\n if (typeof (<any> matches).on !== 'function') {\n matches = <RDF.Stream>(new ArrayIterator(<RDF.DatasetCore> matches));\n }\n\n (<RDF.Stream>matches).on('error', reject);\n (<RDF.Stream>matches).on('end', () => resolve(i));\n (<RDF.Stream>matches).on('data', () => i++);\n });\n }\n\n // If `match` would require filtering afterwards, our count will be an over-estimate.\n const wouldRequirePostFiltering = (!quotedTripleFiltering &&\n someTerms(operation, term => term.termType === 'Quad')) ||\n QuerySourceRdfJs.hasDuplicateVariables(operation);\n\n it.setProperty('metadata', {\n state: new MetadataValidationState(),\n cardinality: {\n type: wouldRequirePostFiltering || forceEstimateCardinality ? 'estimate' : 'exact',\n value: cardinality,\n },\n // Force requestTime to zero, since this will be free for future calls, as we're fully indexed at this stage.\n requestTime: 0,\n ...extraMetadata,\n });\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator<RDF.Quad> {\n throw new Error('queryQuads is not implemented in QuerySourceRdfJs');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise<boolean> {\n throw new Error('queryBoolean is not implemented in QuerySourceRdfJs');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise<void> {\n throw new Error('queryVoid is not implemented in QuerySourceRdfJs');\n }\n\n public toString(): string {\n return `QuerySourceRdfJs(${this.source.constructor.name})`;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comunica/actor-query-source-identify-rdfjs",
3
- "version": "4.3.0",
3
+ "version": "4.4.1",
4
4
  "description": "A rdfjs query-source-identify actor",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -41,17 +41,17 @@
41
41
  "build:components": "componentsjs-generator"
42
42
  },
43
43
  "dependencies": {
44
- "@comunica/bus-merge-bindings-context": "^4.2.0",
45
- "@comunica/bus-query-source-identify": "^4.2.0",
46
- "@comunica/context-entries": "^4.2.0",
47
- "@comunica/core": "^4.2.0",
48
- "@comunica/types": "^4.2.0",
49
- "@comunica/utils-bindings-factory": "^4.2.0",
50
- "@comunica/utils-metadata": "^4.2.0",
44
+ "@comunica/bus-merge-bindings-context": "^4.4.0",
45
+ "@comunica/bus-query-source-identify": "^4.4.0",
46
+ "@comunica/context-entries": "^4.4.1",
47
+ "@comunica/core": "^4.4.0",
48
+ "@comunica/types": "^4.4.0",
49
+ "@comunica/utils-bindings-factory": "^4.4.0",
50
+ "@comunica/utils-metadata": "^4.4.0",
51
51
  "@rdfjs/types": "*",
52
52
  "asynciterator": "^3.9.0",
53
53
  "rdf-terms": "^1.11.0",
54
54
  "sparqlalgebrajs": "^4.3.8"
55
55
  },
56
- "gitHead": "1e53e7a688be2bdb428a8c46e45f7a3c5c64a2aa"
56
+ "gitHead": "c5cc36caf88da31173a0969a7da88cadb7f469ac"
57
57
  }