This document describes implementations of SHACL 1.2 Profiling's features [[shacl12-profiling]].
Within this specification, the following namespace prefix definitions are used:
| Prefix | Namespace |
|---|---|
dcterms: |
http://purl.org/dc/terms/ |
ex: |
http://example.com/ns# |
owl: |
http://www.w3.org/2002/07/owl# |
prof: |
http://www.w3.org/ns/dx/prof/ |
rdfs: |
http://www.w3.org/2000/01/rdf-schema# |
role: |
http://www.w3.org/ns/dx/prof/role/ |
sh: |
http://www.w3.org/ns/shacl# |
shpr: |
http://www.w3.org/ns/shpr# |
This section lists the implementable features of [[[shacl12-profiling]]] with a not on what form implementation is expected to take. Not all sections of that document are directly implementable, so the features listed here do not perfectly follow its sections.
| Name | How implementable |
|---|---|
| [[[shacl12-profiling#packaging]]] | |
| [[[shacl12-profiling#rec-shapesgraph]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#rec-defined]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#rec-member]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#rec-imports]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#persisting-validation]]] | Use of vocabulary term in data or a SHACL validator that can generate the elements of the SHACL Profiling Vocabulary |
| [[[shacl12-profiling#profiling-of-shacl]]] | |
|
[[[shacl12-profiling#defining-profiles]]] [[[shacl12-profiling#creating-profiles]]] |
The definition of profiles of SHACL using vocabulary elements recommended in this section |
| [[[shacl12-profiling#profiling-with-shacl]]] | |
| [[[shacl12-profiling#characterization]]] | The use of SHACL to specify profiles of data |
| [[[shacl12-profiling#reasoning]]] | Software capable of executing the rule |
| [[[shacl12-profiling#hierarchies]]] | A Shapes Graph compounded from profiles in a hierarchy |
| [[[shacl12-profiling#null-profiles]]] | The definition of null profiles of RDF specifications using SHACL |
| [[[shacl12-profiling#vocabulary]]] | |
| [[[shacl12-profiling#cls-shapesgraph]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#prop-imports]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#prop-member]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#cls-datagraph]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#cls-conformstochapesgraph]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#cls-validationreport]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#prop-conforms]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#cls-validationagent]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#cls-validationactivity]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#prop-useddatagraph]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#prop-usedshapesgraph]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#prop-generated]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#prop-wasassotiatedwith]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#cls-shape]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#prop-isdefinedby]]] | Use of vocabulary term in data |
| [[[shacl12-profiling#rule-conformsttoshapesgraph]]] | Software capable of executing the rule |
| [[[shacl12-profiling#rule-conformstospecification]]] | Software capable of executing the rule |
| [[[shacl12-profiling#prov-o-alignment]]] | Use of the alignment triples in data |
This section lists implementors of [[[shacl12-profiling]]].'s features listed in [[[#features]]].
The Australian Government Linked Data Working Group is a working group / community of practice in Australia that promotes the use of Linked Data.
The Working Group maintains a few Semantic Web assets for Australian government and wider community the VocPub Profile of SKOS which is profile of [[[skos-reference]]] created according to the [[[dx-prof-1.0]]] contains several resources that have been created using [[[shacl12-profiling]]] features.
The primary reason for VocPub's adoption of [[[shacl12-profiling]]] features is that there are three shapes graphs within the profile's resources - a main one and two extensions that build on it. By using features of [[[shacl12-profiling#packaging]]], the dependent validators can import and reuse shape definitions in the main one and then extend on them, rather than having to reiterate them.
A secondary reason for the adoption of SHACL 1.2 Profiling elements is that VocPub contains simple shapes for basic catalogue-style metadata for Concept Schemes, such as name, description, created data and so on which, when described using these elements, can be reused by other validators looking to test for the same elements, perhaps on difference classes of focus node. For example, the similar OntPub Validator targets simple metadata for OWL ontologies, and it reuses lots of VocPub property shapes to do so.
kurra is a Python package of RDF data manipulation and data management functions that can be called from the command line or other software. It is built on top of RDFLib and pySHACL.
kurra implements a SHACL validate() function that presents a number of options not (yet) available
in pySHACL. One such option which can be seen by running kurra shacl validate -h is -r
which is "What to return: the full validation results, a summary table/graph, or a PROV-O provenance graph".
The Semantic Background is a Knowledge Graph of reference Semantic Web resources used by KurrawongAI to supplement domain Knowledge Graphs and non-semantic information.
The Semantic Background contains ontologies, vocabularies and validators, many of which are organized using classes and properties defined by [[[dx-prof-1.0]]].
Some of the validators are sh:ShapesGraph instances that contain SHACL Elements
packaged
according to [[[shacl12-profiling#packaging]]].
Also implemented is a profile of the [[[shacl12-profiling#union-profile]]] which just contains additional annotation properties for SHACL Elements and several null profiles of W3C ontologies.
This section tabulates the features listed in [[[#features]]] by implementations listed in [[[#implementations]]]. Each row indicates the feature's ID - section number in the [[[shacl12-profiling]]] - the implementation(s) of it and "Evidence" indicating how the implementation of that feature is seen.
| Feature ID | Implementation | Evidence |
|---|---|---|
| [[[shacl12-profiling#packaging]]] | ||
| [[[shacl12-profiling#rec-shapesgraph]]] | VocPub | VocPub main validator: source code, line 1166 |
| [[[shacl12-profiling#rec-defined]]] | VocPub | VocPub main validator: source code, line 18 |
| [[[shacl12-profiling#rec-member]]] | VocPub | VocPub main validator: source code, line 1167 |
| [[[shacl12-profiling#rec-imports]]] | VocPub | VocPub GA variant validator: source code, line 121 |
| [[[shacl12-profiling#persisting-validation]]] | kurra |
|
| [[[shacl12-profiling#profiling-of-shacl]]] | ||
|
[[[shacl12-profiling#defining-profiles]]] [[[shacl12-profiling#creating-profiles]]] |
||
| [[[shacl12-profiling#profiling-with-shacl]]] | ||
| [[[shacl12-profiling#characterization]]] | ||
| [[[shacl12-profiling#reasoning]]] | ||
| [[[shacl12-profiling#hierarchies]]] | ||
| [[[shacl12-profiling#null-profiles]]] | ||
| [[[shacl12-profiling#vocabulary]]] | ||
| [[[shacl12-profiling#cls-shapesgraph]]] | VocPub | VocPub main validator: source code, line 1166 |
| [[[shacl12-profiling#prop-imports]]] | VocPub | VocPub GA variant validator: source code, line 121 |
| [[[shacl12-profiling#prop-member]]] | VocPub | VocPub main validator: source code, line 1167 |
| [[[shacl12-profiling#cls-datagraph]]] | kurra |
Output from kurra shacl validate -r provenance DATA-GRAPH -s SHAPES-GRAPH indicates the DATA-GRAPH inputs to the
sh:ValidationActivity is of type sh:DataGraph indicated with sh:usedDataGraph.
|
| [[[shacl12-profiling#cls-conformstochapesgraph]]] | kurra |
kurra will implement |
| [[[shacl12-profiling#cls-validationreport]]] | kurra |
Output from kurra shacl validate -r provenance DATA-GRAPH -s SHAPES-GRAPH indicates
a sh:ValidationActivity instance that prov:generated a sh:ValidationReport.
|
| [[[shacl12-profiling#prop-conforms]]] | kurra |
Output from kurra shacl validate -r provenance DATA-GRAPH -s SHAPES-GRAPH indicates
a sh:ValidationActivity instance that prov:generated a sh:ValidationReport
which indicates sh:coforms true or false.
|
| [[[shacl12-profiling#cls-validationagent]]] | kurra |
Output from kurra shacl validate -r provenance DATA-GRAPH -s SHAPES-GRAPH indicates
a sh:ValidationActivity instance that was prov:wasAssociatedWith with a sh:ValidationAgent
instance containing details of the version of kurra used.
|
| [[[shacl12-profiling#cls-validationactivity]]] | kurra |
Output from kurra shacl validate -r provenance DATA-GRAPH -s SHAPES-GRAPH indicates
a sh:ValidationActivity instance
|
| [[[shacl12-profiling#prop-useddatagraph]]] | kurra | See details for kurra's implementation of 5.2 above. |
| [[[shacl12-profiling#prop-usedshapesgraph]]] | kurra |
Output from kurra shacl validate -r provenance DATA-GRAPH -s SHAPES-GRAPH indicates the SHAPES-GRAPH inputs to the
sh:ValidationActivity is of type sh:SHAPESGraph indicated with sh:usedShapesGraph.
|
| [[[shacl12-profiling#prop-generated]]] | kurra | See details for kurra's implementation of 5.3 above. |
| [[[shacl12-profiling#prop-wasassotiatedwith]]] | kurra | See details for kurra's implementation of 5.4 above. |
| [[[shacl12-profiling#cls-shape]]] | VocPub |
VocPub main validator:
source code, line 17.
Implemented via concrete subclass sh:NodeShape
|
| [[[shacl12-profiling#prop-isdefinedby]]] | VocPub | VocPub main validator: source code, line 18 |
| [[[shacl12-profiling#rule-conformsttoshapesgraph]]] | kurra |
kurra will implement |
| [[[shacl12-profiling#rule-conformstospecification]]] | kurra |
kurra will implement |
| [[[shacl12-profiling#prov-o-alignment]]] | kurra |
kurra will implement |