EBISPOT / OLS

Ontology Lookup Service from SPOT at EBI
http://www.ebi.ac.uk/ols
Apache License 2.0
96 stars 40 forks source link

We should not render unsatisfiable classes #430

Closed matentzn closed 3 years ago

matentzn commented 3 years ago

As you can see here: https://www.ebi.ac.uk/ols/ontologies/mondo/terms?iri=http%3A%2F%2Fpurl.obolibrary.org%2Fobo%2FMONDO_0011017&viewMode=All&siblings=false

Or here: https://github.com/monarch-initiative/mondo/issues/2147

We get some strange behaviour with the way ELK 0.5 classifies the ontology. My unverified assumption is that these 10 or so classes under Naxon disease (Naxon disease should not have children) are all unsatisfiable, so ELK 0.5 puts them under every single class.

  1. We should not allow unsatisfiable classes to be rendered at all; so there needs to be a check somewhere: if class.unsat then ignore. I would actually prefer the classes being added, but under root, with a note saying "logically inconsistent" or something.

  2. We should add this to our summary report. We need to know whether OLS is systematically removing classes that way!

I will fix the Mondo case at source, but this ticket is unaffected by that.

henrietteharmse commented 3 years ago

This is easier said than done. Chances are that users still need to be able to access these terms, which creates difficulty for figuring out how to represent these terms. This is an even bigger challenge with ontologies that are inconsistent.

matentzn commented 3 years ago

I was thinking about this; maybe we should reject incoherent ontologies outright?

henrietteharmse commented 3 years ago

This is this something I have given thought to as well. I have to admit it is rather tempting to reject incoherent ontologies. It will certainly make things easier for us. However, the greatest value of ontologies in the biomedical space is not due to the inferences that can be drawn from them, but due to enabling FAIR principles (which does not need reasoning). Hence, my suspicion is that we may see more incoherent ontologies.

To enable working with incoherent ontologies, my idea is to have a "NoReasoner" implementation and to use that when an ontology is incoherent. The NoReasoner implementation then only uses asserted knowledge and it makes no attempt whatsoever to reason over ontologies. I have implemented this. For ontologies like mondo, efo and duo it works well. However, for chebi it does not work well... it just takes forever to run. I have not gotten to the bottom of it yet.

matentzn commented 3 years ago

You could use the OWLAPI structural reasoner for these case.. Its build basically for that case; its not doing any reasoning (only the most trivial) and would definitely not find unsats..