@comunica/actor-rdf-parse-shaclc
Version:
A shaclc rdf-parse actor
43 lines • 1.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActorRdfParseShaclc = void 0;
const bus_rdf_parse_1 = require("@comunica/bus-rdf-parse");
const stream_to_string_1 = require("@jeswr/stream-to-string");
const readable_stream_1 = require("readable-stream");
const shaclc_parse_1 = require("shaclc-parse");
const PrefixWrappingIterator_1 = require("./PrefixWrappingIterator");
/**
* A comunica SHACL Compact Syntax RDF Parse Actor.
*/
class ActorRdfParseShaclc extends bus_rdf_parse_1.ActorRdfParseFixedMediaTypes {
/**
* @param args -
* \ @defaultNested {{
* "text/shaclc": 1.0,
* "text/shaclc-ext": 0.5
* }} mediaTypePriorities
* \ @defaultNested {{
* "text/shaclc": "http://www.w3.org/ns/formats/Shaclc",
* "text/shaclc-ext": "http://www.w3.org/ns/formats/ShaclcExtended"
* }} mediaTypeFormats
*/
constructor(args) {
super(args);
}
async runHandle(action, mediaType, _context) {
const prefixIterator = new PrefixWrappingIterator_1.PrefixWrappingIterator(
// TODO: pass data factory
(0, stream_to_string_1.stringify)(action.data).then(str => (0, shaclc_parse_1.parse)(str, {
extendedSyntax: mediaType === 'text/shaclc-ext',
baseIRI: action.metadata?.baseIRI,
})));
const readable = new readable_stream_1.Readable({ objectMode: true });
prefixIterator.on('prefix', (...args) => readable.emit('prefix', ...args));
return {
data: readable.wrap(prefixIterator),
metadata: { triples: true },
};
}
}
exports.ActorRdfParseShaclc = ActorRdfParseShaclc;
//# sourceMappingURL=ActorRdfParseShaclc.js.map