Neutered Paranoid Meerkat

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

    2.0.1 • 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

    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.

    Install

    npm i rdf-serialize

    DownloadsWeekly Downloads

    892

    Version

    2.0.1

    License

    MIT

    Unpacked Size

    33.2 kB

    Total Files

    14

    Last publish

    Collaborators

    • rubensworks