# RDF.ex

[![Inline docs](](

An implementation of the [RDF]( data model in Elixir.

For more about RDF.ex and it's related projects, go to <>.

## Features

- fully compatible with the RDF 1.1 specification
- in-memory data structures for RDF descriptions, RDF graphs and RDF datasets
- ability to execute SPARQL queries against the in-memory data structures via the [SPARQL.ex] package or against any SPARQL endpoint via the [SPARQL.Client] package
- support for RDF vocabularies via Elixir modules for safe, i.e. compile-time checked and concise usage of IRIs
- XML schema datatypes for RDF literals (not yet all supported)
- sigils for the most common types of nodes, i.e. IRIs, literals, blank nodes and lists
- a description DSL resembling Turtle in Elixir
- implementations for the [N-Triples], [N-Quads] and [Turtle] serialization formats
    - [JSON-LD] is implemented in the separate [JSON-LD.ex] package

## Upgrading to RDF.ex 0.6

#### `` and ``

The arguments of the constructor functions of `RDF.Graph` and `RDF.Dataset` have changed. They now take the name of the graph resp. dataset as a `name` option. So, for example this

```elixir, data)

now has to be written like this

```elixir, name: EX.GraphName)

An option argument was needed for the new `prefixes` option and was impossible to provide in a maintainable way with the old interface.

See [this section of the guide]( for more on the new prefix management features.

#### Equality of graphs and datasets

With prefixes being added to the `RDF.Graph` data structure, you can no longer rely on `==` for equality comparisons between graphs and datasets, since graphs with the same data but different prefixes will be unequal in terms of `==`. You should use the new `RDF.Graph.equal?/2` and `RDF.Dataset.equal?/2` functions instead. 

See [this section of the guide]( for more on that.

## Contributing

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

- more serialization formats
    - [RDFa]
    - [RDF-XML]
    - [N3]
    - et al.
- more XSD datatypes
- improve documentation

see [CONTRIBUTING]( for details.

## Consulting and Partnership

If you need help with your Elixir and Linked Data projects, just contact: <> or <>

## License and Copyright

(c) 2017-2018 Marcel Otto. MIT Licensed, see [LICENSE]( for details.