UNPKG

rdf-dataset-fragmenter

Version:
30 lines 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FragmentationStrategyObject = void 0; const FragmentationBlankNodeBuffer_1 = require("./FragmentationBlankNodeBuffer"); const FragmentationStrategyStreamAdapter_1 = require("./FragmentationStrategyStreamAdapter"); /** * A fragmentation strategy that places quads into their object's document. */ class FragmentationStrategyObject extends FragmentationStrategyStreamAdapter_1.FragmentationStrategyStreamAdapter { constructor(eagerFlushing = true) { super(); this.blankNodeBuffer = new FragmentationBlankNodeBuffer_1.FragmentationBlankNodeBuffer('object', 'subject', eagerFlushing); } async handleQuad(quad, quadSink) { // Only accept IRI subjects. if (quad.object.termType === 'NamedNode') { // If the subject is a named node, add the quad to the subject's document. await quadSink.push(quad.object.value, quad); // Save the object in our blank node buffer, as it may be needed to identify documents for other quads. await this.blankNodeBuffer.materializeValueForNamedKey(quad.subject, quad.object, quadSink); } await this.blankNodeBuffer.push(quad, quadSink); } async flush(quadSink) { await super.flush(quadSink); await this.blankNodeBuffer.flush(quadSink); } } exports.FragmentationStrategyObject = FragmentationStrategyObject; //# sourceMappingURL=FragmentationStrategyObject.js.map