obophenotype / cell-ontology

An ontology of cell types
https://obophenotype.github.io/cell-ontology/
Creative Commons Attribution 4.0 International
146 stars 49 forks source link

Break down SubClassOf axioms with an intersection as the superclass. #2703

Closed gouttegd closed 1 month ago

gouttegd commented 1 month ago

We have a handful of classes that are at least partially defined with SubClassOf axioms where the superclass is an object intersection, as in the following example:

CL:0000104 SubClassOf: CL:0000540 and (RO:0000053 some PATO:0070026)

This is logically equivalent to individual SubClassOf axioms for each member of the intersection:

CL:0000104 SubClassOf: CL:0000540 CL:0000104 SubClassOf: RO:0000053 some PATO:0070026

but the first form may not always be handled correctly and is therefore best avoided. In particular, the OboGraphs JSON converter does not know how to handle those axioms, and simply drops them, resulting in those classifications being absent from the JSON artifacts.

So here, we replace known cases of SubClassOf axioms where the superclass is an object intersection (7 found) by equivalent individual SubClassOf axioms.

closes #2692

gouttegd commented 1 month ago

Extend ROBOT relax to split SubClassOf intersections into separate SubClassOf axioms

ROBOT’s relax command already has an option to do that (--include-subclass-of). :) It’s just not enabled by default.

Arguably the standard ODK pipelines could enable that option.