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

Why do EdgeChange operations have both an about_edge and {subject, predicate, object} slots? #53

Open
gouttegd opened this issue Feb 18, 2024 · 0 comments

Comments

@gouttegd
Copy link

The EdgeChange class has an about_edge slot of range Edge, which itself has three slots subject, predicate, and object to represent a typical RDF triple / OWL axiom / graph edge, etc.

But several of the subclasses of EdgeChange have also their own subject, predicate, object fields, in addition to the about_edge that they inherit from EdgeChange. For example EdgeCreation, PlaceUnder, EdgeDeletion

Why is that so, and what is the intended way of using those classes? For example, is the subject of the edge to be created in EdgeCreation intended to be stored in EdgeCreation.subject or in EdgeCreation.about_edge.subject?

Other subclasses of EdgeChange don’t have their own subject, predicate, object slots and have instead only the about_edge inherited from EdgeChange (for example NodeMove), suggesting that about_edge is the correct way to represent edges and that the “flattened” subject, predicate, and object slots in the other classes might be a mistake.

gouttegd added a commit to gouttegd/kgcl-java that referenced this issue Sep 27, 2024
The KGCL model is somewhat inconsistent in that the EdgeChange class has
a 'about_edge' slot intended to represent the edge (as a {subject,
predicate, object} triple) that is being changed, but several of its
subclasses (EdgeCreation, EdgeDeletion, MoveUnder, PlaceUnder) _also_
have distinct 'subject', 'predicate', and 'object' slots, which are
redundant with the fields of the 'about_edge' slot.

I believe these slots are not only useless but also harmful, since it is
unclear how the corresponding classes are supposed to be used (i.e.,
should the subject be set in change.subject or in
change.about_edge.subject?). Since I strongly suspect these slots are
actually a mistake (and got no indication of the contrary when I raised
the issue to the KGCL folks [1]), here we update our code to only deal
with the 'about_edge' slot, and completely ignore the "flattened"
subject/object/predicate slots.

[1] INCATools/kgcl#53
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

1 participant