UNPKG

@comunica/actor-rdf-join-entries-sort-selectivity

Version:

A selectivity rdf-join-entries-sort actor

39 lines 1.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ActorRdfJoinEntriesSortSelectivity = void 0; const bus_rdf_join_entries_sort_1 = require("@comunica/bus-rdf-join-entries-sort"); const core_1 = require("@comunica/core"); /** * A comunica Selectivity RDF Join Entries Sort Actor. */ class ActorRdfJoinEntriesSortSelectivity extends bus_rdf_join_entries_sort_1.ActorRdfJoinEntriesSort { constructor(args) { super(args); } async test(_action) { return (0, core_1.passTest)({ accuracy: 0.501 }); } async run(action) { const remainingEntries = [...action.entries]; const finalEntries = []; while (remainingEntries.length > 0) { let minSelectivity = Number.MAX_VALUE; let minEntryIndex = -1; for (const [remainingEntryIndex, remainingEntry] of remainingEntries.entries()) { const { selectivity } = await this.mediatorJoinSelectivity.mediate({ entries: [remainingEntry, ...finalEntries], context: action.context, }); if (selectivity < minSelectivity) { minSelectivity = selectivity; minEntryIndex = remainingEntryIndex; } } finalEntries.push(remainingEntries[minEntryIndex]); remainingEntries.splice(minEntryIndex, 1); } return { entries: finalEntries }; } } exports.ActorRdfJoinEntriesSortSelectivity = ActorRdfJoinEntriesSortSelectivity; //# sourceMappingURL=ActorRdfJoinEntriesSortSelectivity.js.map