An implementation of RDF for Elixir.


Keywords
elixir, graph, knowledge-graph, linked-data, rdf, semantic-web
License
Other

Documentation

RDF.ex

Hex.pm Hex Docs Total Download License

ExUnit Tests Dialyzer Quality Checks

An implementation of the RDF data model in Elixir.

The API documentation can be found here. For a guide and more information about RDF.ex and it's related projects, go to https://rdf-elixir.dev.

Migration guides for the various versions can be found in the Wiki.

Features

  • fully compatible with the RDF 1.1 specification
  • support of the RDF-star extension
  • in-memory data structures for RDF descriptions, RDF graphs and RDF datasets
  • basic graph pattern matching against the in-memory data structures with streaming-support
  • execution of SPARQL queries against the in-memory data structures with the SPARQL.ex package or against any SPARQL endpoint with the SPARQL.Client package
  • RDF vocabularies as Elixir modules for safe, i.e. compile-time checked and concise usage of IRIs
  • most of the important XML schema datatypes for RDF literals
  • support for custom datatypes for RDF literals, incl. as derivations of XSD datatypes via facets
  • sigils for the most common types of nodes, i.e. IRIs, literals, blank nodes and lists
  • a DSL resembling Turtle to build RDF descriptions or full RDF graphs in Elixir
  • implementations for the N-Triples, N-Quads and Turtle serialization formats (including the respective RDF-star extensions); JSON-LD and RDF-XML are available with the separate JSON-LD.ex and RDF-XML.ex packages
  • implementation of the RDF Dataset Canonicalization algorithm
  • validation of RDF data against ShEx schemas with the ShEx.ex package
  • mapping of RDF data structures to Elixir structs and back with Grax

Contributing

There's still much to do for a complete RDF ecosystem for Elixir, which means there are plenty of opportunities to contribute. Here are some suggestions:

  • more serialization formats, like RDFa, N3, CSVW, HDT etc.
  • more XSD datatypes
  • improving the documentation

See CONTRIBUTING for details.

Consulting

If you need help with your Elixir and Linked Data projects, just contact NinjaConcept via contact@ninjaconcept.com.

Acknowledgements

The development of this project was partly sponsored by NetzeBW for NETZlive.

JetBrains supports the project with complimentary access to its development environments.

License and Copyright

(c) 2016-present Marcel Otto. MIT Licensed, see LICENSE for details.