@inrupt/solid-client
Version:
Make your web apps work with Solid Pods.
55 lines (52 loc) • 2.37 kB
JavaScript
import { Writer, NamedNode } from 'n3';
import { prefixes } from './prefixes.mjs';
import { toRdfJsDataset } from '../rdfjs.mjs';
// Copyright Inrupt Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
// Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
// PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
/**
* A function to serialise a Solid Dataset as Turtle
*
* @param dataset The Dataset to serialize as Turtle
* @param options.prefixes The Prefixes to use for Turtle serialisation (defaulting to a set of well known prefixes)
* @param options.thing Restricts serialisation to the part of a dataset related to the thing
* @returns RDF serialised as Turtle
* @since 1.20.0
*/
async function solidDatasetAsTurtle(dataset, options) {
const { prefixes: prefixes$1 = prefixes, thing } = { ...options };
const writer = new Writer({ format: "application/turtle", prefixes: prefixes$1 });
const subject = thing ? new NamedNode(thing) : undefined;
// If the subject is undefined, all the triples match.
for (const quad of toRdfJsDataset(dataset).match(subject)) {
writer.addQuad(quad);
}
return new Promise((resolve, reject) => {
writer.end((error, result) => {
/* istanbul ignore next */
if (error) {
reject(error);
}
else {
resolve(result);
}
});
});
}
export { solidDatasetAsTurtle };