Shapes Constraint Language (SHACL)
Shapes Constraint Language (SHACL) is a standard for describing Resource Description Framework (RDF) graphs and validating them against a set of conditions, provided in the form of an RDF graph and referred to as shapes graphs. RDF graphs that are validated against a shapes graph are referred to as data graphs. SHACL uses SPARQL to validate data graphs against shapes graphs.
Examples
-
Cagle (2016) “Meet SHACL, the Next OWL”: The following instance describes a User shape requiring two properties: the presence of a single foaf:name as a string and of at least one foaf:mbox that is a valid email address.
SHACL "User" shape:ex:UserShapea sh:Shape ;sh:property [sh:predicate foaf:name ;sh:datatype xsd:string ;sh:minCount 1 ;sh:maxCount 1 ;] ;sh:property [sh:predicate foaf:mbox ;sh:nodeKind sh:IRI ;sh:minCount 1 ;] . -
Cagle (2016) “Meet SHACL, the Next OWL”: The following instance would satisfy the SHACL statement. It passes because it meets the conditions laid out by the shape: one (and only one) foaf:name that is a string, and at least one foaf:mbox that is a web resource.
inst:User1a foaf:Person ;foaf:name "Jane Doe" ;foaf:mbox mailto:jd@example.org> ;foaf:mbox mailto:janedoe@gmail.com> . -
Cagle (2016) “Meet SHACL, the Next OWL”: The following instance would fail to satisfy the SHACL statement. This instance fails because there are two entries for foaf:name instead of one, thus breaking the sh:maxCount 1 rule.
inst:User2a foaf:Person ;foaf:name "Sarah Doe", "Sara Doe" ;foaf:mbox mailto:sd@example.org> ;foaf:mbox mailto:sarahdoe@gmail.com> .
Further Resources
- SHACL (Wikipedia)
- TopQuadrant (2017) “An Overview of SHACL Shapes Constraint Language” [Video]
- W3C (2017) Shapes Constraint Language (SHACL)