UNPKG

@comunica/bus-rdf-update-quads

Version:

A comunica bus for rdf-update-quads events.

59 lines 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ActorRdfUpdateQuadsDestination = void 0; exports.deskolemizeStream = deskolemizeStream; exports.deskolemize = deskolemize; const actor_optimize_query_operation_query_source_skolemize_1 = require("@comunica/actor-optimize-query-operation-query-source-skolemize"); const context_entries_1 = require("@comunica/context-entries"); const core_1 = require("@comunica/core"); const ActorRdfUpdateQuads_1 = require("./ActorRdfUpdateQuads"); function deskolemizeStream(dataFactory, stream, id) { return stream?.map(quad => (0, actor_optimize_query_operation_query_source_skolemize_1.deskolemizeQuad)(dataFactory, quad, id)); } function deskolemize(action) { const dataFactory = action.context.getSafe(context_entries_1.KeysInitQuery.dataFactory); const destination = action.context.get(context_entries_1.KeysRdfUpdateQuads.destination); const id = action.context.get(context_entries_1.KeysQuerySourceIdentify.sourceIds)?.get(destination); if (!id) { return action; } return { ...action, quadStreamInsert: deskolemizeStream(dataFactory, action.quadStreamInsert, id), quadStreamDelete: deskolemizeStream(dataFactory, action.quadStreamDelete, id), }; } /** * A base implementation for rdf-update-quads events * that wraps around an {@link IQuadDestination}. * * @see IQuadDestination */ class ActorRdfUpdateQuadsDestination extends ActorRdfUpdateQuads_1.ActorRdfUpdateQuads { async test(_action) { return (0, core_1.passTestVoid)(); } async run(action) { const destination = await this.getDestination(action.context); return await this.getOutput(destination, deskolemize(action)); } /** * Get the output of the given action on a destination. * @param {IQuadDestination} destination A quad destination, possibly lazy. * @param {IActionRdfUpdateQuads} action The action. */ async getOutput(destination, action) { const execute = async () => { await destination.update({ insert: action.quadStreamInsert, delete: action.quadStreamDelete }); await (action.deleteGraphs ? destination.deleteGraphs(action.deleteGraphs.graphs, action.deleteGraphs.requireExistence, action.deleteGraphs.dropGraphs) : Promise.resolve()); await (action.createGraphs ? destination.createGraphs(action.createGraphs.graphs, action.createGraphs.requireNonExistence) : Promise.resolve()); }; return { execute }; } } exports.ActorRdfUpdateQuadsDestination = ActorRdfUpdateQuadsDestination; //# sourceMappingURL=ActorRdfUpdateQuadsDestination.js.map