Support for SHACL
How can we incorporate SHACL in STH/the FIT Wizard? Think of basic SHACL constraints, but also using non-validating properties such as `sh:order` to determine the order in which elements are presented. Also see https://ci.tno.nl/gitlab/T4SMM/fit/setu-ontology/-/issues/10
**Use Case eProcurement: [Github Repo eProcurement](https://github.com/OP-TED/ePO/tree/v2.0.1/v2.0.1/02-Analysis%20and%20design/OWL)**
"The case I ran into some time ago with Wouter was the eProcurement ontology. The reason we couldn’t load this model into the fit wizard was that it does not specify a domain or range for a relation, as you would to in a rdfs/owl ontology.
Instead, it uses SHACL to define the how and where a relation may be used. As a workaround we experimented a little with creating the domain and range components from the shapes [1] which did allow us to upload the model.
This modelling approach is also used in [this recent article by Irene Polikoff (The CEO of TopQuadrant)](https://www.linkedin.com/pulse/how-model-shared-local-data-viewpoints-using-shacl-irene-polikoff/), and if I may hazard a guess, we’ll see a lot more off in upcoming ontologies as Topbraid EDG automatically generates this structure when you make an ontology through its UI.
Supporting these models may be a first step in supporting shacl?"
[1] – query to get domain – property – range based on Shacle defined properties.
```
SELECT ?domain ?property ?range
WHERE {
?shape sh:path ?property .
?shape a sh:PropertyShape .
?shape sh:class ?range .
?domain sh:property ?shape .
?property rdfs:isDefinedBy <http://data.europa.eu/a4g/ontology> .
?owlProperty rdfs:subClassOf* rdf:Property .
?property a ?owlProperty .
}
```
Counts of element tag types used in eProcurement shapes file:
```
ePO_shacl_shapes.rdf: {'{http://www.w3.org/2002/07/owl#}Ontology': 1
'{http://www.w3.org/2002/07/owl#}imports': 5
'{http://purl.org/dc/terms/}description': 1
'{http://purl.org/vocab/vann/}preferredNamespacePrefix': 1
'{http://purl.org/vocab/vann/}preferredNamespaceUri': 1
'{http://purl.org/dc/terms/}license': 1
'{http://www.w3.org/2000/01/rdf-schema#}label': 96
'{http://purl.org/dc/terms/}title': 1
'{http://www.w3.org/2002/07/owl#}versionIRI': 1
'{http://www.w3.org/2002/07/owl#}versionInfo': 1
'{http://www.w3.org/2000/01/rdf-schema#}seeAlso': 3
'{http://creativecommons.org/ns#}attributionName': 1
'{http://creativecommons.org/ns#}attributionURL': 1
'{http://purl.org/dc/terms/}date': 1
'{http://www.w3.org/ns/shacl#}NodeShape': 762
'{http://www.w3.org/ns/shacl#}targetClass': 95
'{http://www.w3.org/ns/shacl#}name': 900
'{http://www.w3.org/ns/shacl#}description': 75
'{http://www.w3.org/2000/01/rdf-schema#}comment': 75
'{http://www.w3.org/ns/shacl#}property': 805
'{http://www.w3.org/ns/shacl#}PropertyShape': 805
'{http://www.w3.org/ns/shacl#}path': 805
'{http://www.w3.org/ns/shacl#}datatype': 249
'{http://www.w3.org/ns/shacl#}maxCount': 253
'{http://www.w3.org/2000/01/rdf-schema#}isDefinedBy': 94
'{http://www.w3.org/ns/shacl#}class': 257
'{http://www.w3.org/ns/shacl#}minCount': 112
'{http://www.w3.org/ns/shacl#}sparql': 290
'{http://www.w3.org/ns/shacl#}select': 290}
```
issue