Skip to content

Newly introduced disjointness axioms cause OBO serialisation issue #3651

@gouttegd

Description

@gouttegd

PR #3374 introduced the two following disjoint_from tags:

[Term]
id: UBERON:0000001
disjoint_from: GO:0005623 ! cell
disjoint_from: GO:0110165 ! cellular anatomical entity

Nothing wrong with that addition per se, except that, whenever the edit file is written back by any OWLAPI-based application (e.g. Protégé or ROBOT), those tags will become:

[Term]
id: GO:0005623
disjoint_from: UBERON:0000001

[Term]
id: GO:0110165
disjoint_from: UBERON:0000001

Semantically, from a OWL point of view, this does not change anything: both forms represent the following disjointness axioms:

DisjointClasses(GO:0005623 UBERON:0000001)
DisjointClasses(GO:0110165 UBERON:0000001)

because the order of the operands of a DisjointClasses axiom is not significant. And since it is not significant, there is no way for the OBO serializer to know that it should attach the corresponding tags to the UBERON:0000001 term frame, rather than creating new term frames for GO:0005623 and GO:0110165 – when it has to translate DisjointClasses(GO:0005623 UBERON:0000001) into OBO, the OBO serializer simply adds the tag to the frame for the operand that comes first in lexicographical order (so in this case, GO:0005623 rather than UBERON:0000001, since G < U).

But from a OBO point of view, the two forms are not equivalent, because in the second form we now have two new term frames that do not have a label. And missing labels is an error.

Possible solutions:

(A) Finally admit that the OBO format is not worth the trouble, and switch the edit file to OWL Functional Syntax. I am mentioning that for completeness, I know there is no hope of that happening in my lifetime.

(B) Move the disjointness axioms to an separate component in OWL Functional Syntax.

(C) Add labels to the disjoint GO terms.

Since (A) will never happen, the second best solution is (B) in my opinion.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions