rdf-serialize
TypeScript icon, indicating that this package has built-in type declarations

2.2.3 • Public • Published

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:

Name Content type Extensions
TriG application/trig .trig
N-Quads application/n-quads .nq, .nquads
Turtle text/turtle .ttl, .turtle
N-Triples application/n-triples .nt, .ntriples
Notation3 text/n3 .n3
JSON-LD application/ld+json .jsonld
SHACL Compact Syntax text/shaclc .shaclc, .shc
Extended SHACL Compact Syntax text/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.

Package Sidebar

Install

npm i rdf-serialize

Weekly Downloads

773

Version

2.2.3

License

MIT

Unpacked Size

35 kB

Total Files

14

Last publish

Collaborators

  • rubensworks