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