Skip to content

dcat-r/dcatr-ex

Repository files navigation

Hex.pm Hex Docs License

ExUnit Tests Dialyzer Quality Checks


DCAT-R Logo

DCAT-R.ex

A framework for building data services over RDF repositories
Explore the docs »

Changelog · Report Bug · Request Feature · Discussions

About the Project

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.

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"}
  ]
end

Further 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 concepts
  • DCATR.Service.Type - Behaviour for defining custom services
  • DCATR.Repository.Type - Behaviour for extending repositories with custom SystemGraphs
  • DCATR.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

NLnet Foundation Logo NGI Zero Core Logo JetBrains Logo

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.

About

A framework for DCAT-R-based applications in Elixir

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages