2.2.3 • Published 3 months ago

rdf-serialize v2.2.3

Weekly downloads
785
License
MIT
Repository
github
Last release
3 months ago

RDF Serialize

Build status Coverage Status npm version

This library serializes RDF/JS quad streams to RDF streams based on content type.

This is useful in situations where have a stream of RDF/JS quads, and you want to serialize them to a certain RDF serialization.

The following RDF serializations are supported:

NameContent typeExtensions
TriGapplication/trig.trig
N-Quadsapplication/n-quads.nq, .nquads
Turtletext/turtle.ttl, .turtle
N-Triplesapplication/n-triples.nt, .ntriples
Notation3text/n3.n3
JSON-LDapplication/ld+json.jsonld
SHACL Compact Syntaxtext/shaclc.shaclc, .shc
Extended SHACL Compact Syntaxtext/shaclc-ext.shaclce, .shce

Internally, this library makes use of RDF serializers from the Comunica framework, which enable streaming processing of RDF.

Internally, the following fully spec-compliant serializers are used:

Installation

$ npm install rdf-serialize

or

$ yarn add rdf-serialize

This package also works out-of-the-box in browsers via tools such as webpack and browserify.

Require

import rdfSerializer from "rdf-serialize";

or

const rdfSerializer = require("rdf-serialize").default;

Usage

Serializing by content type

The rdfSerializer.serialize method takes in an RDFJS stream emitting RDF quads, and an options object, and outputs text stream containing RDF in a certain serialization.

const streamifyArray = require('streamify-array');
const stringifyStream = require('stream-to-string');
const quad = require('rdf-quad');

const quadStream = streamifyArray([
  quad('http://ex.org/s', 'http://ex.org/p', 'http://ex.org/o1'),
  quad('http://ex.org/s', 'http://ex.org/p', 'http://ex.org/o2'),
]);

const textStream = rdfSerializer.serialize(quadStream, { contentType: 'text/turtle' });

// Handle the serialization in the streaming manner
textStream.pipe(process.stdout)
    .on('error', (error) => console.error(error))
    .on('end', () => console.log('All done!'));

// Or merge it in a single string.
console.log(await stringifyStream(textStream));

Serializing for file name

Sometimes, you know the desired path/URL of the serialized RDF document, but not the content type. For those cases, this library allows you to provide the path/URL of the RDF document, using which the content type will be determined.

For example, Turtle documents can be detected using the .ttl extension.

const quadStream = streamifyArray([
  quad('http://ex.org/s', 'http://ex.org/p', 'http://ex.org/o1'),
  quad('http://ex.org/s', 'http://ex.org/p', 'http://ex.org/o2'),
]);

const textStream = rdfSerializer.serialize(quadStream, { path: 'http://example.org/myfile.ttl' });

Getting all known content types

With rdfSerializer.getContentTypes(), you can retrieve a list of all content types for which a serializer is available. Note that this method returns a promise that can be await-ed.

rdfSerializer.getContentTypesPrioritized() returns an object instead, with content types as keys, and numerical priorities as values.

// An array of content types
console.log(await rdfSerializer.getContentTypes());

// An object of prioritized content types
console.log(await rdfSerializer.getContentTypesPrioritized());

License

This software is written by Ruben Taelman.

This code is released under the MIT license.