Package Exports
- rdf-string
- rdf-string/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rdf-string) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
RDF String
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'
,'"Tom"@en-gb--ltr'
,'"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"@en-us--ltr
console.log(RdfString.termToString(RdfDataModel.literal('abc', { language: 'en-us', direction: 'ltr' })));
// 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 language tag and direction
RdfString.stringToTerm('"abc"@en-us--ltr');
// 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.