@comunica/actor-query-operation-path-one-or-more 4.4.2-alpha.49.0 → 4.5.0

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.
File without changes
File without changes
@@ -2,7 +2,7 @@ import { ActorAbstractPath } from '@comunica/actor-abstract-path';
2
2
  import type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';
3
3
  import type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';
4
4
  import type { IQueryOperationResult, IActionContext } from '@comunica/types';
5
- import { Algebra } from '@comunica/utils-algebra';
5
+ import { Algebra } from 'sparqlalgebrajs';
6
6
  /**
7
7
  * A comunica Path OneOrMore Query Operation Actor.
8
8
  */
@@ -3,20 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ActorQueryOperationPathOneOrMore = void 0;
4
4
  const actor_abstract_path_1 = require("@comunica/actor-abstract-path");
5
5
  const context_entries_1 = require("@comunica/context-entries");
6
- const utils_algebra_1 = require("@comunica/utils-algebra");
7
6
  const utils_bindings_factory_1 = require("@comunica/utils-bindings-factory");
8
7
  const utils_query_operation_1 = require("@comunica/utils-query-operation");
9
8
  const asynciterator_1 = require("asynciterator");
9
+ const sparqlalgebrajs_1 = require("sparqlalgebrajs");
10
10
  /**
11
11
  * A comunica Path OneOrMore Query Operation Actor.
12
12
  */
13
13
  class ActorQueryOperationPathOneOrMore extends actor_abstract_path_1.ActorAbstractPath {
14
14
  constructor(args) {
15
- super(args, utils_algebra_1.Algebra.Types.ONE_OR_MORE_PATH);
15
+ super(args, sparqlalgebrajs_1.Algebra.types.ONE_OR_MORE_PATH);
16
16
  }
17
17
  async runOperation(operation, context) {
18
18
  const dataFactory = context.getSafe(context_entries_1.KeysInitQuery.dataFactory);
19
- const algebraFactory = new utils_algebra_1.AlgebraFactory(dataFactory);
19
+ const algebraFactory = new sparqlalgebrajs_1.Factory(dataFactory);
20
20
  const bindingsFactory = await utils_bindings_factory_1.BindingsFactory.create(this.mediatorMergeBindingsContext, context, dataFactory);
21
21
  const distinct = await this.isPathArbitraryLengthDistinct(algebraFactory, context, operation);
22
22
  if (distinct.operation) {
@@ -37,7 +37,7 @@ class ActorQueryOperationPathOneOrMore extends actor_abstract_path_1.ActorAbstra
37
37
  }
38
38
  if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {
39
39
  // Get all the results of subjects with same predicate, but once, then fill in first variable for those
40
- const single = algebraFactory.createDistinct(algebraFactory.createPath(operation.subject, predicate.path, operation.object, operation.graph));
40
+ const single = algebraFactory.createDistinct(algebraFactory.createPath(operation.subject, operation.predicate.path, operation.object, operation.graph));
41
41
  const results = (0, utils_query_operation_1.getSafeBindings)(await this.mediatorQueryOperation.mediate({ context, operation: single }));
42
42
  const subjectVar = operation.subject;
43
43
  const objectVar = operation.object;
@@ -1 +1 @@
1
- {"version":3,"file":"ActorQueryOperationPathOneOrMore.js","sourceRoot":"","sources":["ActorQueryOperationPathOneOrMore.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type {\n IQueryOperationResultBindings,\n Bindings,\n IQueryOperationResult,\n IActionContext,\n ComunicaDataFactory,\n} from '@comunica/types';\nimport { Algebra, AlgebraFactory } from '@comunica/utils-algebra';\nimport { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport { getSafeBindings } from '@comunica/utils-query-operation';\nimport { BufferedIterator, MultiTransformIterator, TransformIterator } from 'asynciterator';\n\n/**\n * A comunica Path OneOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathOneOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathOneOrMoreArgs) {\n super(args, Algebra.Types.ONE_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise<IQueryOperationResult> {\n const dataFactory: ComunicaDataFactory = context.getSafe(KeysInitQuery.dataFactory);\n const algebraFactory = new AlgebraFactory(dataFactory);\n const bindingsFactory = await BindingsFactory.create(\n this.mediatorMergeBindingsContext,\n context,\n dataFactory,\n );\n\n const distinct = await this.isPathArbitraryLengthDistinct(algebraFactory, context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = <Algebra.OneOrMorePath> operation.predicate;\n\n if (operation.subject.termType !== 'Variable' && operation.object.termType === 'Variable') {\n const objectVar = operation.object;\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n objectVar,\n operation.graph,\n context,\n false,\n algebraFactory,\n bindingsFactory,\n );\n const variables = (operation.graph.termType === 'Variable' ? [ objectVar, operation.graph ] : [ objectVar ])\n .map(variable => ({ variable, canBeUndef: false }));\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Get all the results of subjects with same predicate, but once, then fill in first variable for those\n const single = algebraFactory.createDistinct(\n algebraFactory.createPath(operation.subject, predicate.path, operation.object, operation.graph),\n );\n const results = getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator<Bindings, Bindings> = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n const subject = bindings.get(subjectVar);\n const object = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ? bindings.get(operation.graph) : operation.graph;\n return new TransformIterator<Bindings>(\n async() => {\n const it = new BufferedIterator<Bindings>();\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject!,\n object!,\n predicate.path,\n graph!,\n context,\n termHashes,\n {},\n it,\n { count: 0 },\n algebraFactory,\n bindingsFactory,\n );\n return it.map<Bindings>((item) => {\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph!);\n }\n return item;\n });\n },\n { autoStart: false, maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n const variables = (operation.graph.termType === 'Variable' ?\n [ subjectVar, objectVar, operation.graph ] :\n [ subjectVar, objectVar ])\n .map(variable => ({ variable, canBeUndef: false }));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType !== 'Variable') {\n return <Promise<IQueryOperationResultBindings>> this.mediatorQueryOperation.mediate({\n context,\n operation: algebraFactory.createPath(\n operation.object,\n algebraFactory.createOneOrMorePath(algebraFactory.createInv(predicate.path)),\n operation.subject,\n operation.graph,\n ),\n });\n }\n // If (!sVar && !oVar)\n const variable = this.generateVariable(dataFactory);\n const results = getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: algebraFactory.createPath(operation.subject, predicate, variable, operation.graph),\n }));\n const bindingsStream = results.bindingsStream.map<Bindings>((item) => {\n if (operation.object.equals(item.get(variable))) {\n return operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n }\n return null;\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await results.metadata(),\n variables: (operation.graph.termType === 'Variable' ? [ operation.graph ] : [])\n .map(variable => ({ variable, canBeUndef: false })),\n }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathOneOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n"]}
1
+ {"version":3,"file":"ActorQueryOperationPathOneOrMore.js","sourceRoot":"","sources":["ActorQueryOperationPathOneOrMore.ts"],"names":[],"mappings":"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","sourcesContent":["import { ActorAbstractPath } from '@comunica/actor-abstract-path';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type { IActorQueryOperationTypedMediatedArgs } from '@comunica/bus-query-operation';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type {\n IQueryOperationResultBindings,\n Bindings,\n IQueryOperationResult,\n IActionContext,\n ComunicaDataFactory,\n} from '@comunica/types';\nimport { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport { getSafeBindings } from '@comunica/utils-query-operation';\nimport { BufferedIterator, MultiTransformIterator, TransformIterator } from 'asynciterator';\nimport { Algebra, Factory } from 'sparqlalgebrajs';\n\n/**\n * A comunica Path OneOrMore Query Operation Actor.\n */\nexport class ActorQueryOperationPathOneOrMore extends ActorAbstractPath {\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n\n public constructor(args: IActorQueryOperationPathOneOrMoreArgs) {\n super(args, Algebra.types.ONE_OR_MORE_PATH);\n }\n\n public async runOperation(operation: Algebra.Path, context: IActionContext): Promise<IQueryOperationResult> {\n const dataFactory: ComunicaDataFactory = context.getSafe(KeysInitQuery.dataFactory);\n const algebraFactory = new Factory(dataFactory);\n const bindingsFactory = await BindingsFactory.create(\n this.mediatorMergeBindingsContext,\n context,\n dataFactory,\n );\n\n const distinct = await this.isPathArbitraryLengthDistinct(algebraFactory, context, operation);\n if (distinct.operation) {\n return distinct.operation;\n }\n\n context = distinct.context;\n\n const predicate = <Algebra.OneOrMorePath> operation.predicate;\n\n if (operation.subject.termType !== 'Variable' && operation.object.termType === 'Variable') {\n const objectVar = operation.object;\n const starEval = await this.getObjectsPredicateStarEval(\n operation.subject,\n predicate.path,\n objectVar,\n operation.graph,\n context,\n false,\n algebraFactory,\n bindingsFactory,\n );\n const variables = (operation.graph.termType === 'Variable' ? [ objectVar, operation.graph ] : [ objectVar ])\n .map(variable => ({ variable, canBeUndef: false }));\n return {\n type: 'bindings',\n bindingsStream: starEval.bindingsStream,\n metadata: async() => ({ ...await starEval.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType === 'Variable') {\n // Get all the results of subjects with same predicate, but once, then fill in first variable for those\n const single = algebraFactory.createDistinct(\n algebraFactory.createPath(operation.subject, operation.predicate.path, operation.object, operation.graph),\n );\n const results = getSafeBindings(\n await this.mediatorQueryOperation.mediate({ context, operation: single }),\n );\n const subjectVar = operation.subject;\n const objectVar = operation.object;\n\n const termHashes = {};\n\n const bindingsStream: MultiTransformIterator<Bindings, Bindings> = new MultiTransformIterator(\n results.bindingsStream,\n {\n multiTransform: (bindings: Bindings) => {\n const subject = bindings.get(subjectVar);\n const object = bindings.get(objectVar);\n const graph = operation.graph.termType === 'Variable' ? bindings.get(operation.graph) : operation.graph;\n return new TransformIterator<Bindings>(\n async() => {\n const it = new BufferedIterator<Bindings>();\n await this.getSubjectAndObjectBindingsPredicateStar(\n subjectVar,\n objectVar,\n subject!,\n object!,\n predicate.path,\n graph!,\n context,\n termHashes,\n {},\n it,\n { count: 0 },\n algebraFactory,\n bindingsFactory,\n );\n return it.map<Bindings>((item) => {\n if (operation.graph.termType === 'Variable') {\n item = item.set(operation.graph, graph!);\n }\n return item;\n });\n },\n { autoStart: false, maxBufferSize: 128 },\n );\n },\n autoStart: false,\n },\n );\n const variables = (operation.graph.termType === 'Variable' ?\n [ subjectVar, objectVar, operation.graph ] :\n [ subjectVar, objectVar ])\n .map(variable => ({ variable, canBeUndef: false }));\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({ ...await results.metadata(), variables }),\n };\n }\n if (operation.subject.termType === 'Variable' && operation.object.termType !== 'Variable') {\n return <Promise<IQueryOperationResultBindings>> this.mediatorQueryOperation.mediate({\n context,\n operation: algebraFactory.createPath(\n operation.object,\n algebraFactory.createOneOrMorePath(algebraFactory.createInv(predicate.path)),\n operation.subject,\n operation.graph,\n ),\n });\n }\n // If (!sVar && !oVar)\n const variable = this.generateVariable(dataFactory);\n const results = getSafeBindings(await this.mediatorQueryOperation.mediate({\n context,\n operation: algebraFactory.createPath(operation.subject, predicate, variable, operation.graph),\n }));\n const bindingsStream = results.bindingsStream.map<Bindings>((item) => {\n if (operation.object.equals(item.get(variable))) {\n return operation.graph.termType === 'Variable' ?\n bindingsFactory.bindings([[ operation.graph, item.get(operation.graph)! ]]) :\n bindingsFactory.bindings();\n }\n return null;\n });\n return {\n type: 'bindings',\n bindingsStream,\n metadata: async() => ({\n ...await results.metadata(),\n variables: (operation.graph.termType === 'Variable' ? [ operation.graph ] : [])\n .map(variable => ({ variable, canBeUndef: false })),\n }),\n };\n }\n}\n\nexport interface IActorQueryOperationPathOneOrMoreArgs extends IActorQueryOperationTypedMediatedArgs {\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n}\n"]}
package/lib/index.d.ts CHANGED
File without changes
package/lib/index.js CHANGED
File without changes
package/lib/index.js.map CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@comunica/actor-query-operation-path-one-or-more",
3
- "version": "4.4.2-alpha.49.0",
3
+ "version": "4.5.0",
4
4
  "description": "A path-one-or-more query-operation actor",
5
5
  "lsd:module": true,
6
6
  "license": "MIT",
@@ -41,15 +41,15 @@
41
41
  "build:components": "componentsjs-generator"
42
42
  },
43
43
  "dependencies": {
44
- "@comunica/actor-abstract-path": "4.4.2-alpha.49.0",
45
- "@comunica/bus-merge-bindings-context": "4.4.2-alpha.49.0",
46
- "@comunica/bus-query-operation": "4.4.2-alpha.49.0",
47
- "@comunica/context-entries": "4.4.2-alpha.49.0",
48
- "@comunica/types": "4.4.2-alpha.49.0",
49
- "@comunica/utils-algebra": "4.4.2-alpha.49.0",
50
- "@comunica/utils-bindings-factory": "4.4.2-alpha.49.0",
51
- "@comunica/utils-query-operation": "4.4.2-alpha.49.0",
52
- "asynciterator": "^3.10.0"
44
+ "@comunica/actor-abstract-path": "^4.5.0",
45
+ "@comunica/bus-merge-bindings-context": "^4.5.0",
46
+ "@comunica/bus-query-operation": "^4.5.0",
47
+ "@comunica/context-entries": "^4.5.0",
48
+ "@comunica/types": "^4.5.0",
49
+ "@comunica/utils-bindings-factory": "^4.5.0",
50
+ "@comunica/utils-query-operation": "^4.5.0",
51
+ "asynciterator": "^3.9.0",
52
+ "sparqlalgebrajs": "^5.0.2"
53
53
  },
54
- "gitHead": "ef6f96cfd8faf7c37955bb7e0fe9f6fc6a994bdf"
54
+ "gitHead": "2bcd98c387a021fc5c08d375793c205ca3d1bf0d"
55
55
  }