ISA-tools / stato

This is the development repository for the STATistics Ontology (STATO). For more information and demonstration on the ontology content, please visit its website:
http://stato-ontology.org/
30 stars 8 forks source link

Stato does not conform to OWL-DL profile #88

Closed cmungall closed 6 months ago

cmungall commented 8 months ago
robot validate-profile -p DL -i download/stato.owl
OWL 2 DL Profile Report: Ontology and imports closure NOT in profile. The following violations are present:
Use of reserved vocabulary for annotation property IRI: rdf:type [Declaration(AnnotationProperty(rdf:type)) in OntologyID(OntologyIRI(<http://purl.obolibrary.org/obo/stato.owl>) VersionIRI(<null>))]
Use of non-simple property in a restriction: ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> <http://purl.obolibrary.org/obo/STATO_0000470>) [SubClassOf(<http://purl.obolibrary.org/obo/STATO_0000099> ObjectIntersectionOf(ObjectIntersectionOf(ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> <http://purl.obolibrary.org/obo/STATO_0000470>) ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000467> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000750>)))) ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000751>))) in OntologyID(OntologyIRI(<http://purl.obolibrary.org/obo/stato.owl>) VersionIRI(<null>))]
Use of non-simple property in a restriction: ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000467> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000750>))) [SubClassOf(<http://purl.obolibrary.org/obo/STATO_0000099> ObjectIntersectionOf(ObjectIntersectionOf(ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> <http://purl.obolibrary.org/obo/STATO_0000470>) ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000467> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000750>)))) ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000751>))) in OntologyID(OntologyIRI(<http://purl.obolibrary.org/obo/stato.owl>) VersionIRI(<null>))]
Use of non-simple property in a restriction: ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000082> <http://purl.obolibrary.org/obo/STATO_0000099>)) [SubClassOf(<http://purl.obolibrary.org/obo/STATO_0000189> ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000082> <http://purl.obolibrary.org/obo/STATO_0000099>))) in OntologyID(OntologyIRI(<http://purl.obolibrary.org/obo/stato.owl>) VersionIRI(<null>))]
Use of non-simple property in a restriction: ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> <http://purl.obolibrary.org/obo/STATO_0000470>) [SubClassOf(<http://purl.obolibrary.org/obo/STATO_0000082> ObjectIntersectionOf(ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000469> ObjectExactCardinality(2 <http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000750>))) ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> <http://purl.obolibrary.org/obo/STATO_0000470>) ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000468> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000750>))))) in OntologyID(OntologyIRI(<http://purl.obolibrary.org/obo/stato.owl>) VersionIRI(<null>))]
Use of non-simple property in a restriction: ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000468> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000750>))) [SubClassOf(<http://purl.obolibrary.org/obo/STATO_0000082> ObjectIntersectionOf(ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000469> ObjectExactCardinality(2 <http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000750>))) ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> <http://purl.obolibrary.org/obo/STATO_0000470>) ObjectMinCardinality(1 <http://purl.obolibrary.org/obo/BFO_0000051> ObjectIntersectionOf(<http://purl.obolibrary.org/obo/STATO_0000468> ObjectSomeValuesFrom(<http://purl.obolibrary.org/obo/IAO_0000136> <http://purl.obolibrary.org/obo/OBI_0000750>))))) in OntologyID(OntologyIRI(<http://purl.obolibrary.org/obo/stato.owl>) VersionIRI(<null>))]

PROFILE VIOLATION ERROR http://purl.obolibrary.org/obo/stato.owl violates profile DL
For details see: http://robot.obolibrary.org/validate-profile#profile-violation-error
cmungall commented 8 months ago

random effect model

(('has part' min 1 'model error term') and ('has part' min 1 ('model random effect term' and ('is about' some 'study design independent variable')))) and ('is about' some 'study design dependent variable')

IMO this is a rococo axiom and oculd be removed

StroemPhi commented 8 months ago

I came across this issue when building a STATO import module using the Ontology Development Kit, which has OWL 2 DL as the default profile. As I do not want to change the expressivity profile of my ontology project, I'd second the proposal by @cmungall to drop or at least weaken the above mentioned axioms.

Unfortunately, the build pipeline of STATO is not well enough documented to allow a drive-by PR. It seems that the edit file is the /dev/ontology/stato.owl. If this is correct, I suggest to do the following edits on it, to get rid of all the "non-simple property in a restriction" errors:

Regarding the "reserved vocabulary for annotation property IRI" error, I have not found where this axiom comes from. It is in none of the owl files that live in the dev folder. So I assume it was added manually to the release files living in 1.4 and latest_release. But to fix it one would have to delete the axiom annotation highlighted in the below screen shot and then delete the rdf:type annotation property declaration.

grafik

grafik

proccaserra commented 8 months ago

@cmungall @StroemPhi working on it