Skip to main content

Python SHACL Validator

Project description


A Python validator for SHACL.

This is a pure Python module which allows for the validation of RDF graphs against Shapes Constraint Language (SHACL) graphs. This module uses the rdflib Python library for working with RDF and is dependent on the OWL-RL Python module for OWL2 RL Profile-based expansion of data graphs.

This module is developed to adhere to the SHACL Recommendation:

Holger Knublauch; Dimitris Kontokostas. Shapes Constraint Language (SHACL). 20 July 2017. W3C Recommendation. URL: ED:


For basic use, of this module, you can just call the validate function of the pyshacl module like this:

from pyshacl import validate
validate(target_graph, shacl_graph, inference='rdfs', abort_on_error=False)


  • target_graph is an rdflib Graph object, the graph to be validated
  • shacl_graph is an rdflib Graph object, the graph containing the SHACL shapes to validate with, or None if the SHACL shapes are included in the target_graph.
  • inference is a Python string value to indicate whether or not to perform OWL inferencing expansion of the target_graph before validation. Options are 'rdfs', 'owlrl', 'both', or 'none'. The default is 'none'.
  • abort_on_error is a Python bool value to indicate whether or not the program should abort after encountering a validation error or to continue. Default is to continue. on return:
  • a tuple containing:
    • conforms a bool, indicating whether or not the target_graph conforms to the shacl_graph
    • results_graph an rdflib Graph object built according to the SHACL specification's Validation Report semantics


A features matrix is kept in the FEATURES file.


A comprehensive changelog is kept in the CHANGELOG file.


This project includes a script to measure the difference in performance of validating the same source graph that has been inferenced using each of the four different inferencing options. Run it on your computer to see how fast the validator operates for you.


This repository is licensed under Apache License, Version 2.0. See the LICENSE deed for details.




Project Lead:
Nicholas Car
Senior Experimental Scientist
CSIRO Land & Water, Environmental Informatics Group
Brisbane, Qld, Australia

Lead Developer:
Ashley Sommer
Software Engineer
CSIRO Land & Water, Environmental Informatics Group
Brisbane, Qld, Australia

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pyshacl, version 0.8.2
Filename, size File type Python version Upload date Hashes
Filename, size pyshacl-0.8.2-py3-none-any.whl (38.2 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size pyshacl-0.8.2.tar.gz (37.9 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page