Skip to content
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

Non-obvious side-effects of KGCL changes should be explicitly specified #52

Open
gouttegd opened this issue Feb 15, 2024 · 0 comments
Open
Milestone

Comments

@gouttegd
Copy link

(This is a follow-up to this issue in KGCL-Java, itself a follow-up to another issue in ENVO.)

There is apparently an expectation that some KGCL change operations should have some kind of “side effects” that go beyond the strict application of the change itself.

In the case at hand, it is seemingly expected that obsoleting a class should result in the automatic removal of any axiom that refers to that class. If so, that expected behaviour should be explicitly specified somewhere.

I can imagine at least 3 different ways of dealing with axioms referring to a to-be-obsoleted class:

  • Silently and automatically removing them. That’s apparently with KGCL-Python does.
  • Leave them in place for an editor to decide what to do with them. That’s what KGCL-Java does.
  • Refusing to perform the operation and warn the user (“This class is referred to by several other classes, obsoleting it would have cascading effects. I’m sorry Dave, but I’m afraid I can’t do that.”).

I have no strong opinion on which behaviour is best, and I have no objection to amending KGCL-Java to implement the first one if it is indeed the behaviour intended by KGCL’s authors. But my point is that all those possible behaviours are arguably equally reasonable, and that implementers cannot be expected to guess which was the “intended one”. Right now, the spec in effect leaves this kind of decision at the discretion of implementations, so unsurprisingly, different implementations make different decisions. If a consistent behaviour is desired, the spec must says so.


For node obsoletions, do we agree that the expected behaviours are as follows:

  • For node obsoletion without replacement or alternative (i.e. NodeObsoletion proper): remove any axiom referring to the to-be-obsoleted entity.
  • For node obsoletion with direct replacement: rewrite any axiom referring to the to-be-obsoleted entity to make it refer to the replacement entity instead (in this case, the spec does say that it can be done, but does not say it has to be done; my interpration was that the replacement was again left for the editors to do, and that the only expectation from KGCL was to set the replaced_by annotation).
  • For node obsoletion with non-direct replacement(s): presumably remove any referring axiom (as in the case of obsoletion without replacement at all)? Though I would think it is more useful to leave them in place so that editors are aware of the fact they need to manually rewrite them with one of the suggested alternative terms.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants