DCAT-R.ex
A framework for building data services over RDF repositories
DCAT-R.ex is an Elixir library implementing the DCAT-R vocabulary - an OWL extension of DCAT 3 for describing and operating RDF repositories. It provides Grax schemas, a manifest-based configuration system, and extension points for building specialized services over RDF datasets.
What is DCAT-R?
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.
Getting Started
Installation
Add dcatr to your dependencies in mix.exs:
def deps do
[
{:dcatr, "~> 0.1"}
]
endFurther Reading
For 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
Consulting
If you need help with your Elixir and Linked Data projects, just contact NinjaConcept via contact@ninjaconcept.com.
Acknowledgements
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.
License and Copyright
(c) 2026 Marcel Otto. MIT Licensed, see LICENSE for details.