You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
Ontologies often need validation checks for basic issues such as missing values, invalid references and cardinality violations.
The full power of a reasoner is often not needed and can also provide unintuitive messages.
For example, if you model a horse as having 4 legs, and you forget to model one, than a reasoner may tell you that your individual is not a horse, when the user expects to be told to add the missing leg.
SHACL shapes with validators such as PySHACL provide an easily automatable validation with messages that are intuitive to domain experts.
However SHACL shape target instances of classes, not subclasses of classes.
:Elefant rdf:type owl:Class;
rdfs:subClassOf :Elephantidae.
a :AnimalClass.
Where :AnimalClass is a meta class.
This allows one to immediately see without going through the whole hierarchy that :Elefant is an :Animal and crucially allows tools like PySHACL to function.
This also allows easier development and more resource-efficient tooling because SPARQL 1.1. property paths, which can be performance intensive, are not required to identify which subclass belongs to which core class.
I estimate this to be easy to implement in SMOG and could be gated behind a parameter.
Describe alternatives you've considered
I will investigate whether a metaclass could also be entered as a relation in the tabular source, which would then need to be repeated for each value.
Is your feature request related to a problem? Please describe.
Ontologies often need validation checks for basic issues such as missing values, invalid references and cardinality violations.
The full power of a reasoner is often not needed and can also provide unintuitive messages.
For example, if you model a horse as having 4 legs, and you forget to model one, than a reasoner may tell you that your individual is not a horse, when the user expects to be told to add the missing leg.
SHACL shapes with validators such as PySHACL provide an easily automatable validation with messages that are intuitive to domain experts.
However SHACL shape target instances of classes, not subclasses of classes.
Describe the solution you'd like
As described at https://stackoverflow.com/questions/70756167/how-to-apply-shacl-to-subclasses-instead-of-instances and already successfully used in SNIK, metaclasses solve this problem.
So on top of this:
You would add:
Where :AnimalClass is a meta class.
This allows one to immediately see without going through the whole hierarchy that :Elefant is an :Animal and crucially allows tools like PySHACL to function.
This also allows easier development and more resource-efficient tooling because SPARQL 1.1. property paths, which can be performance intensive, are not required to identify which subclass belongs to which core class.
I estimate this to be easy to implement in SMOG and could be gated behind a parameter.
Describe alternatives you've considered
The text was updated successfully, but these errors were encountered: