UNPKG

@bahulneel/rdflib

Version:

an RDF library for node.js. Suitable for client and server side.

107 lines (83 loc) 3.18 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = serialize; var convert = _interopRequireWildcard(require("./convert")); var _serializer = _interopRequireDefault(require("./serializer")); var _types = require("./types"); /** * Serialize to the appropriate format */ function serialize( /** The graph or nodes that should be serialized */ target, /** The store */ kb, base, /** * The mime type. * Defaults to Turtle. */ contentType, callback, options) { base = base || target.value; var opts = options || {}; contentType = contentType || _types.TurtleContentType; // text/n3 if complex? var documentString = null; try { var sz = (0, _serializer.default)(kb); if (opts.flags) sz.setFlags(opts.flags); var newSts = kb.statementsMatching(undefined, undefined, undefined, target); var n3String; sz.suggestNamespaces(kb.namespaces); sz.setBase(base); switch (contentType) { case _types.RDFXMLContentType: documentString = sz.statementsToXML(newSts); return executeCallback(null, documentString); case _types.N3ContentType: case _types.N3LegacyContentType: documentString = sz.statementsToN3(newSts); return executeCallback(null, documentString); case _types.TurtleContentType: case _types.TurtleLegacyContentType: sz.setFlags('si'); // Suppress = for sameAs and => for implies documentString = sz.statementsToN3(newSts); return executeCallback(null, documentString); case _types.NTriplesContentType: sz.setFlags('deinprstux'); // Suppress nice parts of N3 to make ntriples documentString = sz.statementsToNTriples(newSts); return executeCallback(null, documentString); case _types.JSONLDContentType: sz.setFlags('deinprstux'); // Use adapters to connect to incmpatible parser n3String = sz.statementsToNTriples(newSts); // n3String = sz.statementsToN3(newSts) convert.convertToJson(n3String, callback); break; case _types.NQuadsContentType: case _types.NQuadsAltContentType: // @@@ just outpout the quads? Does not work for collections sz.setFlags('deinprstux q'); // Suppress nice parts of N3 to make ntriples documentString = sz.statementsToNTriples(newSts); // q in flag means actually quads return executeCallback(null, documentString); // n3String = sz.statementsToN3(newSts) // documentString = convert.convertToNQuads(n3String, callback) // break default: throw new Error('Serialize: Content-type ' + contentType + ' not supported for data write.'); } } catch (err) { if (callback) { return callback(err, undefined); } throw err; // Don't hide problems from caller in sync mode } function executeCallback(err, result) { if (callback) { callback(err, result); return; } else { return result; } } }