Overview

rudof is a library that implements Shape Expressions, SHACL, DCTAP and other technologies in the RDF ecosystem. The library is implemented in Rust and it also provides Python bindings.

rudof can be used as a command line tool or can be embedded as a library using cargo. It can be used to validate RDF data represented with different syntaxes like Turtle, NTriples, to name a few. As well as RDF data available through SPARQL endpoints like Wikidata. rudof can also be used to convert between different RDF data validation technologies (like ShEx, SHACL, or DCTAP), and to generate UML like visualizations and HTML views.

The main contributions of rudof are:

Modules

rudof has been implemented using a modular structure and the different modules are available as Rust crates:

graph TD;
 user((Person)) --> rudof_cli;
 application(application);
 application -->|Rust| rudof_lib ;
 application --> |Python| pyrudof ;
 iri_s --> oxigraph;
 iri_s --> reqwest ;
 dctap --> calamine ;
 dctap --> csv ;
 sparql_service --> oxigraph ;
subgraph rudof
    rudof_lib[<a href='https://crates.io/crates/rudof_lib'>rudof_lib</a>];
    rudof_cli[<a href='https://crates.io/crates/rudof_cli'>rudof_cli</a>];
    pyrudof[<a href='https://pypi.org/project/pyrudof/'>pyrudof</a>];
    shex_ast[<a href='https://crates.io/crates/shex_ast'>shex_ast</a>];
    srdf[<a href='https://crates.io/crates/srdf'>srdf</a>];
    shex_compact[<a href='https://crates.io/crates/shex_compact'>shex_compact</a>];
    shex_validation[<a href='https://crates.io/crates/shex_validation'>shex_validation</a>];
    shacl_validation[<a href='https://crates.io/crates/shacl_validation'>shacl_validation</a>];
    shacl_ast[<a href='https://crates.io/crates/shacl_ast'>shacl_ast</a>];
    iri_s[<a href='https://crates.io/crates/iri_s'>iri_s</a>];
    prefixmap[<a href='https://crates.io/crates/prefixmap'>prefixmap</a>];
    shapemap[<a href='https://crates.io/crates/shapemap'>shapemap</a>];
    rbe[<a href='https://crates.io/crates/rbe'>rbe</a>];
    shapes_converter[<a href='https://crates.io/crates/shapes_converter'>shapes_converter</a>];
 dctap[<a href='https://crates.io/crates/dctap'>dctap</a>];
 sparql_service[<a href='https://crates.io/crates/sparql_service'>sparql_service</a>];

 pyrudof --> rudof_lib ;
 rudof_cli --> rudof_lib ;
 shex_ast --> srdf ;
 shex_compact-->shex_ast;
 shex_validation-->shex_ast;
 srdf-->iri_s;
 shacl_ast-->srdf;
 shacl_validation-->shacl_ast;
 shex_validation-->shapemap;
 shapemap-->prefixmap;
 shex_ast-->prefixmap;
 srdf-->prefixmap;
 shex_validation-->rbe;
 dctap-->prefixmap;
 dctap --> iri_s;
 shapes_converter-->shacl_ast;
 shapes_converter-->shex_ast;
 shapes_converter-->dctap;
 prefixmap --> iri_s ;
 shex_validation --> shex_compact
 sparql_service --> iri_s ;
 rudof_lib --> shex_validation ;
 rudof_lib --> shacl_validation ;
 rudof_lib --> shapes_converter ;
end
subgraph external dependencies
 oxigraph[<a href='https://crates.io/crates/oxigraph'>oxigraph</a>] ;
 calamine[<a href='https://docs.rs/calamine/latest/calamine/'>calamine</a>] ;
 reqwest[<a href='https://docs.rs/reqwest/latest/reqwest/'>reqwest</a>] ;
 csv[<a href='https://docs.rs/csv/latest/csv/'>csv</a>] 
end

An incomplete list of projects which are related to rudof is the following:

  • ShEx-s, a Scala implementation of ShEx (This project started as a re-implementation of ShEx-s in Rust).
  • SHACL-s, a Scala implementation of SHACL.
  • ShEx.js, a Javascript implementation of ShEx.
  • Oxigraph, a SPARQL implementation in Rust that also contains RDF libraries.
  • Nemo, an in-memory rule engine that also contains some nom parsers.

Contributors

Funding and sponsors

The project has been partially funded by some grants or institutions like:

In case you want to help the project, please contact Jose E. Labra Gayo.

Supporters and adopters

The following is a list of rudof adopters and supporters:

If you are using rudof and want to be listed, please contact us or add a Pull Request.