SHACL Play!

Validate RDF data

This utility validates the conformity of an RDF dataset against a SHACL specification. You need to provide the RDF data to be validated, either by uploading it, providing its URL, or copy-pasting inline RDF. You also need to provide the SHACL shapes in the same ways, or by selecting them from the shapes catalog.
For an example, you can try validating the Shapes catalog data against the Shape "SHACL Play! Catalog Shapes" in the list below.

Documentation

If the RDF dataset to be validated is online, and if and only if the SHACL shapes are registered in SHACL Play shapes catalog, you can provide direct links to a validation report with the following URL : https://shacl-play.sparna.fr/play/{shapes-catalog-entry-id}/report?url={URL of the RDF data file to validate}

For example : https://shacl-play.sparna.fr/play/shaclplay-catalog/report?url=https://raw.githubusercontent.com/sparna-git/SHACL-Catalog/master/shacl-catalog.ttl

Generate shields.io validation badges

This validation utility is available as an API to generate shields validation badges for dataset. The API URL will return a JSON data that can be tunneled to https://img.shields.io/endpoint?url=.

This works if and only if the SHACL shapes are registered in SHACL Play shapes catalog.

The API general synopsis is https://shacl-play.sparna.fr/play/{shapes-catalog-entry-id}/badge?url={URL of the RDF data file to validate}

For example : https://shacl-play.sparna.fr/play/shaclplay-catalog/badge?url=https://raw.githubusercontent.com/sparna-git/SHACL-Catalog/master/shacl-catalog.ttl

The full badge URL is then https://img.shields.io/endpoint?url=https%3a%2f%2fshacl-play.sparna.fr%2fplay%2fshaclplay-catalog%2fbadge%3furl%3dhttps%3a%2f%2fraw.githubusercontent.com%2fsparna-git%2fSHACL-Catalog%2fmaster%2fshacl-catalog.ttl

When you insert the badge on your Github repository, you can use it to link to the "/report" URL (see above). See the Shapes catalog repository README for an example

Extra target resolutions (support of sh:minCount and sh:maxCount on Node Shapes)

By default, SHACL Play! will resolve the targets of the shapes in the SHACL file. This means that all targets specifications found in the shapes graph are explicitely resolved, and an extra triple is generated for each target found : https://shacl-play.sparna.fr/ontology#hasFocusNode, with the node shape as subject and the target resource as object. Based on this extra target resolution triple, 2 extra checks are applied:

  • "Data coverage": SHACL Play! will check that every resource in the input data graph has been targeted by at least one shape. Resources not targeted by any shape will be returned as Warnings in the validation report. This is useful to check that the input data graph does not contain resources that should not be present. It is similar to "unit tests coverage" in software testing, where you want to make sure that all your code is covered by tests.
  • "Shapes coverage": SHACL Play! supports sh:minCount and sh:maxCount on Node Shapes. If sh:minCount 1 is set on a Node Shape, and no target was found for it, a Violation will be returned in the validation report. Conversely, If sh:maxCount X is set on a Node Shape, and more than X targets were found for it, a Violation will be returned. This is useful to make sure that the target specifications of each shape resolved correctly, and to avoid situations where no violations are returned, not because the data is valid, but because the initial target specification was wrong (like a typo in a sh:targetClass URI).
    In particular if no shapes at all matched a target, the validation report will contain a specific title and status : "Shapes did not match anything !"

You can disable this extra target resolution by checking the "Avoid resolving targets" checkbox in the options above. When this option is checked, SHACL Play! will not resolve the targets of the shapes in the SHACL file, will not generate the extra triples, and will not apply the extra checks.

archive