SHACL implementation on RDFUnit

There was a question from Peter yesterday on details about my (draft)
implementation but I wanted to share this with the group anyway.

the current status can be tracked here:
Most of the core constructs are covered and tested with my own test cases
but the implementation is quite fragile right now.
Meaning validation might break if something deviates from standard
(supported) definitions.

As you already probably figured out, I use code generation to build up the
queries and everything that is supported so far is integrated to the
RDFUnit philosophy and operations, meaning
- can be executed on SPARQL Endpoints
- has different levels of result reporting (status, aggregated, simplified
shacl & shacl)
- one can mix owl, shacl, RS & DSP constraints all together and execute them

some differences with Holger's (current) implementation
- sh:valueShape implementation is evaluated using a bottom-up approach and
creates separate checks for every sub-shape/facet. IIRC Holger's does the
same thing but delegates this the SPARQL engine with sh:hasShape while I
keep the logic in RDFUnit.
- I plan to do the same with sh:and / sh:or / sh:not but to support that I
need some major refactoring on my test execution engine
- recursion is not supported atm, (actually the current code might get in
an endless loop is some recursion cases)

Other minors:
- severity is supported but atm I use the RDFUnit severity levels, I plan
to move to shacl severities soon
- custom sparql queries are not supported yet, I need to align them with my
SPARQL definitions
- the shacl validation report are implemented but I need some more work on
metadata like sh:sourceShape/Constraint etc

If you want to test it, use the command line
<> or code directly
<>, the webdemo is not updated  yet
(ping me if you get into trouble).

Dimitris Kontokostas
Department of Computer Science, University of Leipzig & DBpedia Association
Projects:,, http://
Research Group: AKSW/KILT

Received on Friday, 26 February 2016 09:26:20 UTC