Validation POC

This is a proof of concept for validation / filtering of rdf data based on shacl shapes.

This POC allows to validate / generate a report (in turtle) and filter invalid properties.

HOW TO

  • cd example
  • Optionally, change the default application profile in ./example/config
  • docker-compose up

Request examples:

1. Input data

@prefix ex: <http://example.com/ns#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:Alice
    a ex:Person ;
    ex:ssn "987-65-432A" .

ex:Bob
    a ex:Person ;
    ex:ssn "123-45-6789" ;
    ex:ssn "124-35-6789" .

ex:Calvin
    a ex:Person ;
    ex:birthDate "1971-07-07"^^xsd:date ;
    ex:ssn "987-65-4321";
    ex:www "kekee";
    ex:worksFor ex:UntypedCompany .

ex:Momo
    a ex:Person ;
    ex:ssn "987-65-4321" .

1. Validate (default application profile):

POST http://localhost:8090/validate

Content-Type: text/turtle

Body: (input data)

2. Validate file (default application profile):

POST http://localhost:8090/validate/file

Content-Type: multipart/form-data

Form data: data => data-to-validate.ttl

3. Validate file using a custom application profile file:

POST http://localhost:8090/validate/file-with-shacl

Content-Type: multipart/form-data

Form data: shapes=> shapes-file.ttl, data => data-to-validate.ttl

4. Filter (default application profile):

POST http://localhost:8090/filter

Content-Type: text/turtle

Body: (input data)

5. Filter file (default application profile):

POST http://localhost:8090/filter/file

Content-Type: multipart/form-data

Form data: data => data-to-filter.ttl

6. Filter file using a custom application profile file:

POST http://localhost:8090/filter/file-with-shacl

Content-Type: multipart/form-data

Form data: shapes=> shapes-file.ttl, data => data-to-validate.ttl

7. Difference between two rdf files:

POST http://localhost:8090/compare/difference

Content-Type: multipart/form-data

Form data: first=> first.ttl, second => second.ttl

8. Intersection between two rdf files:

POST http://localhost:8090/compare/intersection

Content-Type: multipart/form-data

Form data: first=> first.ttl, second => second.ttl

9. Equality between two rdf files:

POST http://localhost:8090/compare/equals

Content-Type: multipart/form-data

Form data: first=> first.ttl, second => second.ttl