A framework for building data services over RDF repositories
Explore the docs »
Changelog
·
Report Bug
·
Request Feature
·
Discussions
DCAT-R.ex is an Elixir library implementing the DCAT-R vocabulary. It provides Grax schemas, a manifest-based configuration system, and extension points for building specialized services over RDF datasets.
DCAT-R (DCAT for RDF Repositories) extends DCAT 3 with vocabulary for the internal structure of services that operate over RDF datasets. It organizes repositories through a four-level hierarchy:
Service (what you can do - operations layer)
└── Repository (what you have - distributable data bundle)
└── Dataset (user data - catalog of graphs)
└── Graph (individual RDF graphs)
Every graph belongs to exactly one of four disjoint types:
- DataGraph - user data forming the dataset content
- ManifestGraph - DCAT-R configuration and catalog metadata
- SystemGraph - application-specific operational data (history, provenance, indexes)
- WorkingGraph - temporary, service-local working areas
DCAT-R provides the structural vocabulary; applications extend it by defining specialized service types with domain-specific operations and SystemGraphs.
For the full specification, see the DCAT-R specification.
Add dcatr to your dependencies in mix.exs:
def deps do
[
{:dcatr, "~> 0.1"}
]
endFor detailed API documentation, including complete explanations of core concepts (Service, Repository, Dataset, Graph types, SystemGraphs, Manifests), see the HexDocs documentation.
For the formal vocabulary specification (RDF/OWL definitions, properties, constraints), see the DCAT-R specification.
For Elixir developers building service types, start with the module documentation for:
DCATR- Overview and core conceptsDCATR.Service.Type- Behaviour for defining custom servicesDCATR.Repository.Type- Behaviour for extending repositories with custom SystemGraphsDCATR.Manifest- Configuration and loading system
If you need help with your Elixir and Linked Data projects, just contact NinjaConcept via contact@ninjaconcept.com.
This project is funded through NGI Zero Core, a fund established by NLnet with financial support from the European Commission's Next Generation Internet program.
JetBrains supports the project with complimentary access to its development environments.
(c) 2026 Marcel Otto. MIT Licensed, see LICENSE for details.