-
Notifications
You must be signed in to change notification settings - Fork 53
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
Revise stripping of annotation properties in imports #1093
Comments
My current preference:
I am slightly critical of this as it
I am not totally opposed to (2), but I currently doubt the effort is worth it. |
I am stating the desired behaviour. Whether it is easy or not comes after. And I am not sure about it being “not that easy”. ROBOT’s That can even be an explicitly documented requirement for the feature to work: ”To preserve an annotation property, list it in the So for example, if you want to preserve all properties below RO’s
|
What if you for some reason do not want the children to be included? |
What’s the likelihood of that? Until 6 months ago, all annotations were kept. Removing all annotations except those listed in If you really, really need to preserve only one specific AP and specifically exclude all its children, just add a custom step in your workflow to remove the children. |
Examples:
If we go this way I would advocate for a |
Still unconvinced that this is a real need, but I’d have no objection to that. :) |
The ODK 1.5 forcefully introduced a new feature in which almost all annotation properties, except
rdfs:label
andIAO:0000115
, are forcibly removed from the import modules.I say “forcefully” because, unless I missed something, that feature is not deactivatable. The only thing a user can do is amend the list of annotation properties that are not removed, to preserve more properties than just
rdfs:label
andIAO:0000115
.This was intended to reduce the size of the import modules, and based on the premise that annotation properties are never “significant” (especially from a reasoner’s point of view) anyway.
However that premise is blatantly false, as annotation properties loaded with a “logical meaning“ are certainly not unheard of. (One can argue about whether this is a good idea or not, but that’d be beside the point.)
In particular, it is a relatively common practice to use annotation properties as “shortcuts” to be replaced by more complex logical axioms. That idea has been around for example with OWLTools’ macros for more than a decade (Mungall, Ruttenberg, and Osumi-Sutherland, 2010), and while the use of OWLTools is being phased out, ROBOT’s expand command merely continues on the same principle, the only difference with OWLTools being the language used to express the expanded form of the “macro” (OWL Manchester for
owltools --expand-macros
, SPARQL forrobot expand
).Examples of annotation properties with a “logical meaning” include:
All that to say that removing almost all annotation properties from imports is not something that should be done lightly because it can definitely have drastic consequences for the ontologies that use the ODK to manage their imports. As an example, the entire check for violation of taxon constraints in Uberon has been completely neutralised by this “feature” (obophenotype/uberon#3336).
So what should the ODK do now?
A. Nothing. It’s up to the users to know that they depend on some specific annotations in the ontologies that they import, and to declare said annotations in the
import_group.annotation_properties
option of their ODK configuration file so that they are not removed.Why not, but then this needs to be thoroughly documented somewhere. As far as I know, the only “documentation” for now is this line in the description of the ODK Project Configuration Schema:
I believe this is woefully insufficient. At no point do we actually explain that the ODK does not “pull” all annotation properties from imports, only those that are listed here. Combined with the fact that the feature was introduced without any announcement in the release notes, users have had no chance at all to know that from now on they should declare the annotation properties they need.
B. Revert the feature entirely.
That’d probably be too much. There is no doubt the feature is useful.
C. Leave the feature as it is, but make it optional.
Simply add an option to enable it (if disabled by default) or disable it (if enabled by default).
D. Leave the feature as it is, but preserve more annotation properties by default than just
rdfs:label
andIAO:0000115
.At the very least, we should preserve:
--expand-macros
command);expand
command);Also, I believe that preserving a given annotation property should automatically preserve all its subproperties. That is, users should not have to declare that they want to preserve both present in taxon and always present in taxon – just declaring the former should automatically preserve the latter.
The text was updated successfully, but these errors were encountered: