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

    1.6.0 • Public • Published

    RDF String

    Build status Coverage Status npm version

    This package contains utility functions to convert between the string-based and RDFJS representations of RDF terms, quads and triples.

    If you are looking for a Turtle-based string syntax, have a look at RDF String Turtle

    This allows for convenient and compact interaction with RDF terms and quads, as they can be serialized as plain JSON.

    This string-based representation is based on the old triple representation of N3.js. Namely, quads are represented as follows:

    {
      subject:   'http://example.org/cartoons#Tom',
      predicate: 'http://www.w3.org/1999/02/22-rdf-syntax-ns#type',
      object:    'http://example.org/cartoons#Cat'
      graph:     'http://example.org/myGraph'
    }
    

    Different terms types in quads are represented as follows:

    • URLs, URIs and IRIs are simple strings: 'http://example.org/cartoons#Tom'
    • Literals are represented as double quoted strings: '"Tom"', '"Tom"@en-gb', '"1"^^http://www.w3.org/2001/XMLSchema#integer'
    • Variables are prefixed by ?: '?variableName'

    Usage

    The following examples assume the following imports:

    import * as RdfDataModel from "rdf-data-model";
    import * as RdfString from "rdf-string";

    Term to string

    Convert an RDFJS term to the string-based representation.

    // Prints http://example.org
    console.log(RdfString.termToString(RdfDataModel.namedNode('http://example.org')));
    
    // Prints _:b1
    console.log(RdfString.termToString(RdfDataModel.blankNode('b1')));
    
    // Prints "abc"
    console.log(RdfString.termToString(RdfDataModel.literal('abc')));
    
    // Prints "abc"@en-us
    console.log(RdfString.termToString(RdfDataModel.literal('abc', 'en-us')));
    
    // Prints "abc"^^http://example.org/
    console.log(RdfString.termToString(RdfDataModel.literal('abc', namedNode('http://example.org/'))));
    
    // Prints ?v1
    console.log(RdfString.termToString(RdfDataModel.variable('v1')));
    
    // Prints empty string
    console.log(RdfString.termToString(RdfDataModel.defaultGraph()));

    String to term

    Convert an string-based term to the RDFJS representation.

    Optionally, a custom RDFJS DataFactory can be provided as second argument to create terms instead of the built-in DataFactory.

    // Outputs a named node
    RdfString.stringToTerm('http://example.org');
    
    // Outputs a blank node
    RdfString.stringToTerm('_:b1');
    
    // Outputs a literal
    RdfString.stringToTerm('"abc"');
    
    // Outputs a literal with a language tag
    RdfString.stringToTerm('"abc"@en-us');
    
    // Outputs a literal with a datatype
    RdfString.stringToTerm('"abc"^^http://example.org/');
    
    // Outputs a variable
    RdfString.stringToTerm('?v1');
    
    // Outputs a default graph
    RdfString.stringToTerm('');

    Quad to string-based quad

    Convert an RDFJS quad to a string-based quad.

    // Prints { subject: 'http://example.org', predicate: 'http://example.org', object: '"abc"', graph: '' }
    console.log(RdfString.quadToStringQuad(RdfDataModel.triple(
      namedNode('http://example.org'),
      namedNode('http://example.org'),
      literal('abc'),
    )));

    String-based quad to quad

    Converts a string-based quad to an RDFJS quad.

    Optionally, a custom RDFJS DataFactory can be provided as second argument to create quads and terms instead of the built-in DataFactory.

    // Outputs a quad
    RdfString.stringQuadToQuad({
      subject: 'http://example.org',
      predicate: 'http://example.org',
      object: '"abc"',
      graph: '',
    });

    License

    This software is written by Ruben Taelman. These utility functions are inspired by the implementation of N3.js.

    This code is released under the MIT license.

    Install

    npm i rdf-string

    DownloadsWeekly Downloads

    6,240

    Version

    1.6.0

    License

    MIT

    Unpacked Size

    19.1 kB

    Total Files

    7

    Last publish

    Collaborators

    • rubensworks