2.3.3 • Published 3 months ago

rdf-parse v2.3.3

Weekly downloads
2,271
License
MIT
Repository
github
Last release
3 months ago

RDF Parse

Build status Coverage Status npm version

This library parses RDF streams based on content type (or file name) and outputs RDF/JS-compliant quads as a stream.

This is useful in situations where you have RDF in some serialization, and you just need the parsed triples/quads, without having to concern yourself with picking the correct parser.

The following RDF serializations are supported:

NameContent typeExtensions
TriGapplication/trig.trig
N-Quadsapplication/n-quads.nq, .nquads
Turtletext/turtle.ttl, .turtle
N-Triplesapplication/n-triples.nt, .ntriples
Notation3text/n3.n3
JSON-LDapplication/ld+json, application/json.json, .jsonld
RDF/XMLapplication/rdf+xml.rdf, .rdfxml, .owl
RDFa and script RDF data tags HTML/XHTMLtext/html, application/xhtml+xml.html, .htm, .xhtml, .xht
Microdatatext/html, application/xhtml+xml.html, .htm, .xhtml, .xht
RDFa in SVG/XMLimage/svg+xml,application/xml.xml, .svg, .svgz
SHACL Compact Syntaxtext/shaclc.shaclc, .shc
Extended SHACL Compact Syntaxtext/shaclc-ext.shaclce, .shce

Internally, this library makes use of RDF parsers from the Comunica framework, which enable streaming processing of RDF.

Internally, the following fully spec-compliant parsers are used:

Installation

$ npm install rdf-parse

or

$ yarn add rdf-parse

This package also works out-of-the-box in browsers via tools such as webpack and browserify.

Require

import rdfParser from "rdf-parse";

or

const rdfParser = require("rdf-parse").default;

Usage

Parsing by content type

The rdfParser.parse method takes in a text stream containing RDF in any serialization, and an options object, and outputs an RDFJS stream that emits RDF quads.

const textStream = require('streamify-string')(`
<http://ex.org/s> <http://ex.org/p> <http://ex.org/o1>, <http://ex.org/o2>.
`);

rdfParser.parse(textStream, { contentType: 'text/turtle', baseIRI: 'http://example.org' })
    .on('data', (quad) => console.log(quad))
    .on('error', (error) => console.error(error))
    .on('end', () => console.log('All done!'));

Parsing by file name

Sometimes, the content type of an RDF document may be unknown, for those cases, this library allows you to provide the path/URL of the RDF document, using which the extension will be determined.

For example, Turtle documents can be detected using the .ttl extension.

const textStream = require('streamify-string')(`
<http://ex.org/s> <http://ex.org/p> <http://ex.org/o1>, <http://ex.org/o2>.
`);

rdfParser.parse(textStream, { path: 'http://example.org/myfile.ttl', baseIRI: 'http://example.org' })
    .on('data', (quad) => console.log(quad))
    .on('error', (error) => console.error(error))
    .on('end', () => console.log('All done!'));

Getting all known content types

With rdfParser.getContentTypes(), you can retrieve a list of all content types for which a parser is available. Note that this method returns a promise that can be await-ed.

rdfParser.getContentTypesPrioritized() returns an object instead, with content types as keys, and numerical priorities as values.

// An array of content types
console.log(await rdfParser.getContentTypes());

// An object of prioritized content types
console.log(await rdfParser.getContentTypesPrioritized());

Obtaining prefixes

Using the 'prefix' event, you can obtain the prefixes that were available when parsing from documents in formats such as Turtle and TriG.

rdfParser.parse(textStream, { contentType: 'text/turtle' })
    .on('prefix', (prefix, iri) => console.log(prefix + ':' + iri))

Obtaining contexts

Using the 'context' event, you can obtain all contexts (@context) when parsing JSON-LD documents.

Multiple contexts can be found, and the context values that are emitted correspond exactly to the context value as included in the JSON-LD document.

rdfParser.parse(textStream, { contentType: 'application/ld+json' })
    .on('context', (context) => console.log(context))

License

This software is written by Ruben Taelman.

This code is released under the MIT license.

2.3.3

3 months ago

2.3.0

1 year ago

2.2.0

1 year ago

2.3.2

1 year ago

2.3.1

1 year ago

2.1.1

1 year ago

2.1.0

2 years ago

2.0.0

2 years ago

1.9.1

3 years ago

1.9.0

3 years ago

1.8.1

3 years ago

1.8.0

3 years ago

1.7.0

3 years ago

1.6.1

3 years ago

1.6.0

3 years ago

1.5.0

4 years ago

1.4.0

4 years ago

1.3.1

4 years ago

1.3.0

4 years ago

1.2.2

4 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.0

5 years ago