rdf-serialize
v4.0.1
Published
Serializes to any RDF serialization
Downloads
3,812
Maintainers
Readme
RDF Serialize
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");
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.