Graphy RDF libraries for JavaScript

One for you @happybeing, @joshuef ?

From Blake Regalia, W3 mailing list:

Dear all, I am pleased to announce a new major release of graphy, a collection of high-performance RDF libraries for JavaScript developers, see benchmarks here.

Available on npm, graphy also ships a powerful command-line interface for manipulating RDF data using limits, filters, transforms, unions, diffs, and many more .

Comparison to N3.js : graphy covers many of the same functionalities as N3.js (including N-Triples, N-Quads, Turtle and TriG streaming and non-streaming readers and writers, RDFJS Data Factory and Dataset), but graphy outperforms N3.js in all of these categories. One feature that graphy currently lacks however is a parser for the N3 language.

More information at https://graphy.link/ and https://github.com/blake-regalia/graphy.js

This update brings many new features to all the packages, with some necessary breaking changes, several fixes to the readers and writers, and performance improvements across the board. See CHANGELOG.

Some CLI examples (see documentation here for more):

  1. Count the number of distinct triples in a Turtle file:

$ graphy read -c ttl / distinct --triples < input.ttl

  1. Count the number of distinct subjects that are of type dbo:Place in an N-Quads file:

$ graphy read -c nq / filter -x ‘; a; dbo:Place’ / distinct --subjects < places.nq

  1. Compute the difference between two RDF datasets ‘a.trig’ and ‘b.trig’:

$ graphy read / diff / write --inputs a.trig b.trig > diff.trig

  1. Compute the canonicalized union of a bunch of RDF datasets in the ‘data/’ directory:

$ graphy read / union / write --inputs data/*.{nt,nq,ttl,trig} > output.trig

  1. Extract the first 2 million quads of a Turtle file:

$ graphy read -c ttl / head 2e6 / write -c ttl < in.ttl > view-2M.ttl

  1. Materialize the inverse relations for all triples with the owl:sameAs predicate, but only where the object is a node and different from the subject:

$ graphy read / filter -x ‘!$object; owl:sameAs; {node}’ / transform -j ‘t => [t.o, t.p, t.s]’ / write -c ttl < input.ttl > output.ttl

4 Likes