UNPKG

rdf-dataset-fragmenter

Version:
34 lines 1.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.QuadTransformerBlankToFragment = void 0; const rdf_data_factory_1 = require("rdf-data-factory"); const DF = new rdf_data_factory_1.DataFactory(); /** * A quad transformer that maps BlankNodes to fragments on the subject URI, * based on the first subject that blank node appears with as an object. */ class QuadTransformerBlankToFragment { mappings; constructor() { this.mappings = {}; } transform(quad) { if (quad.subject.termType === 'NamedNode' && quad.object.termType === 'BlankNode' && this.mappings[quad.object.value] === undefined) { const target = DF.namedNode(`${quad.subject.value.split('#')[0]}#${quad.object.value}`); this.mappings[quad.object.value] = target; return [DF.quad(quad.subject, quad.predicate, target, quad.graph)]; } if (quad.subject.termType === 'BlankNode') { const target = this.mappings[quad.subject.value]; if (target === undefined) { throw new Error(`Unmapped blank node: ${quad.subject.value}`); } return [DF.quad(target, quad.predicate, quad.object, quad.graph)]; } return [quad]; } } exports.QuadTransformerBlankToFragment = QuadTransformerBlankToFragment; //# sourceMappingURL=QuadTransformerBlankToFragment.js.map