-
Notifications
You must be signed in to change notification settings - Fork 315
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
oboformat: New behavior for oboedit merges, to preserve IRIs #317
Comments
Please assign this to @hdietze (I don't have permissions). We'll do this on a fork or branch first. |
I've created a team of OWLAPI contributors and added you and Heiko to it - this should enable you to assign issues. |
Still can't assign Heiko (but he knows it's on his plate) |
Did he accept the invitation? Must be on the list to be assigned issues. |
Yes he has accepted (don't know exactly when :-) ). I see Chris has assigned the issue to him, so I'm guessing all is working as expected. |
Also, is A a subclass of or equivalent to B? If so, it might be useful to add the appropriate axiom. That axiom could carry the appropriate annotations for the round-trip. |
I think after I sent the message :-)
|
@sesuncedu No, we wouldn't make them equivalent - obsolete terms have their axioms removed. For error checking purposes they may even be equated to owl:Nothing, which make it easy to expose use of them. |
@cmungall I'd like you to consider using the ontology-metadata mechanism for obsolescence, which is used by OBI (as well as some others), and doesn't need addition of new properties. In that schema we use the annotation property has_obsolescence_reason (http://purl.obolibrary.org/obo/IAO_0000231) the object of which is an instance of obsolescence reason specification (http://purl.obolibrary.org/obo/IAO_0000225). There is already an instance for merging (http://purl.obolibrary.org/obo/IAO_0000225), but the idea is that one extends the reasons by adding a new instance. In this case the annotation property term replaced by (http://purl.obolibrary.org/obo/IAO_0100001) would then correspond to oboInOwl:replacedBy. The documentation for term merging states that reasons for merging should be recorded (when present) as an editor note. If we want to distinguish the OBO merging case then we would create a new (singleton, as with the rest) instance and document it accordingly. |
Apologies, there was an error in my spec above. IAO_0100001 is used, not oboInOwl:replacedBy. Should I edit the original ticket? I support the addition of any and all other kinds of metadata including has_obsolescence_reason, but there is no cognate of this in the oboformat syntax and no way of adding this in OE so it's out of scope here. |
I think we could use IAO_0000225 to denote a merge but it's not completely clear how to do so in a way that's roundtrippable - can you elaborate? |
New 'spec':
Where obo is the prefix for http://purl.obolibrary.org/obo Where
|
what's the status of this? |
It looks like some of the changes made it into the 3.5.2 release. |
Back port missing test case for translating alt_ids to obsolete classes. Seems to be broken in 3.5.2 release. See issue #317
Looks like I missed a class. I'll fix that. |
As far as I can tell, this is now fixed |
This is not a bug as such. More of a problem with underspecification for the original behavior. Noting it here, but not sure any action should be taken. Consider the following perverse obo
We have two conditions here that should never happen in the wild:
We in the OBO Document world need to have checkers in place to ensure conditions like the above don't happen (this was always enforced by oboedit, but now we are living in a mixed obo/owl editing world strange things can happen) When these situations do occur together, then the two axioms on HP:0000611 are lost. The end result is:
What should actually happen is underspecified. |
There is a second class of perverse problem, simpler than the above one, mentioned in drseb/hpo-obo-qc#1
when converted we end up with
the root cause is the same as the above: the alt_id should always be dangling. the owlapi accepts the invalid obo but refuses to write all axioms as obo since they don't conform to the obo profile. we will put checks in downstream in robot but we may want to consider changing the owlapi writer as well to roundtrip this despite the nonconformance |
See drseb/hpo-obo-qc#1 and owlcs/owlapi#317 This is part of the robot report checks, see #205
OE allows merging of a class A into a class B. This destroys metadata about A, but this is typically copied into B.
The result of merging A into B, in .obo:
Current translation:
Disadvantage: there is no declaration or reference to the IRI for A
Proposed new translation:
Note that the new AP isMerged is necessary here for obo2owl roundtripping; replacedBy is not sufficient in itself as this is used for what OE/.obo calls "obsoletion" which is treated distinctly
For backwards compatibility we would retain one-way translation of old pattern:
The text was updated successfully, but these errors were encountered: