@comunica/actor-optimize-query-operation-join-bgp
Version:
A join-bgp optimize-query-operation actor
33 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActorOptimizeQueryOperationJoinBgp = void 0;
const bus_optimize_query_operation_1 = require("@comunica/bus-optimize-query-operation");
const context_entries_1 = require("@comunica/context-entries");
const core_1 = require("@comunica/core");
const utils_algebra_1 = require("@comunica/utils-algebra");
/**
* A comunica Join BGP Optimize Query Operation Actor.
*/
class ActorOptimizeQueryOperationJoinBgp extends bus_optimize_query_operation_1.ActorOptimizeQueryOperation {
async test(_action) {
return (0, core_1.passTestVoid)();
}
async run(action) {
const dataFactory = action.context.getSafe(context_entries_1.KeysInitQuery.dataFactory);
const algebraFactory = new utils_algebra_1.AlgebraFactory(dataFactory);
const operation = utils_algebra_1.algebraUtils.mapOperation(action.operation, {
[utils_algebra_1.Algebra.Types.JOIN]: {
preVisitor: () => ({ continue: false }),
transform: (op) => {
if (op.input.every(subInput => subInput.type === 'bgp')) {
return algebraFactory.createBgp(op.input.flatMap(subInput => subInput.patterns));
}
return op;
},
},
});
return { operation, context: action.context };
}
}
exports.ActorOptimizeQueryOperationJoinBgp = ActorOptimizeQueryOperationJoinBgp;
//# sourceMappingURL=ActorOptimizeQueryOperationJoinBgp.js.map