-
Notifications
You must be signed in to change notification settings - Fork 18
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
Remove inverses unless there's a compelling reason #506
Comments
We currently define 17 inverses. We have to decide which ones to keep. @uscholdm and @mdfeickert will take a pass at a proposal and present. Rebecca: use directionality guidelines in style guide. Peter: If we don't provide inverses, people will be rolling their own. We should put recommendations in place for when it's appropriate. Peter: could also have an optional import of the inverses. Michael: or add an annotation with suggestions of how to name the inverses. Rebecca: Why do we care what other people name properties in their own namespaces? Rebecca: We don't need both the annotation and the import. The latter seems better. Borislav: Remove all inverses from gist and put in a separate file. Michael: There are some inverses I use all the time that I would like to keep, but I wouldn't want to use the whole file. So each person would have to pick and choose the ones they want. This is inconvenient, and argues for keeping the commonly used ones in gistCore. Michael: May also propose bringing a few back. |
Consider in conjunction with #551. |
Glad for these decisions--especially that all of them are to be available in an imports file. And I'm glad that the special ones, used often, are being preserved in gistCore. |
I've come across another compelling reason to remove all inverses from gistCore: when running inferencing on data with a heavy use of predicates with inverses, memory can be overloaded. Therefore keeping "special" ones - whatever that might mean - is still problematic. This isn't incompatible with adding the inverses to a separate file, but I'd like to ask what the motivation would be. People can use inverse paths in SPARQL and SHACL. You can use |
It seems that with the availability of inverse paths in SPARQL and SHACL, there is limited or no need for adding inverse predicates to an ontology. My argument for keeping them in a separate file has evaporated. |
@marksem will provide a candidate list of removals and run it by the group. Probably will not make it into September release, but keeping open the possibility for now. |
The inverse issue: what is the rationale for choosing which direction to keep? I wrote this up in a blog and in my book. Whitepaper: Quantum Entanglement, Flipping Out and Inverse Properties (semanticarts.com) Look for "preferred persepctive" |
This is a high priority on one of my projects, where the Specifically, of gist predicates that have inverses, the most commonly used in this client's data are (with counts after inferencing):
Related: we should remove |
Choosing Similarly, I think that would suggest use of Now, if you really want to reduce triple explosion, get rid of those transitive/non-transitive pairs. Mostly kidding. But I do wonder how important others find them to be in their work. (warning... completely separate issue) |
Proposal:
|
Another motivation for removing inverses: I'm seeing clients generating RDF sometimes using one inverse, sometimes another. You could say this is just bad practice, but the existence of the inverse sets us up for that practice. Then if inferencing is not being run, you have to know which predicate to query for in which cases. |
Addition to above proposal: In some cases the way we think about and use concepts is in the opposite direction. So my new proposed proposal is:
|
I like the idea of no inverses to avoid confusion. I also applaud the pragmatism of letting overwhelming use modify the general consideration. |
@philblackwood offered to take a look at this. |
There are many good reasons to eliminate inverses; see Michael Uschold's document for a good discussion. His comment above is from Sep 8, and the link is: Attached is a straw proposal for which ones to keep. The three main criteria are:
In the attached, each property on the "keep" list has highlights to show which of these 3 criteria is met in most cases of expected usage. Some of these might be debatable, so let's pool our experiences to refine the attached view. |
@philblackwood We have defined a rule of thumb that the retained properties should go from "child" to "parent" for query performance and also to express the dependency relationship. These both contradict your first conclusion: (1) a subcategory generally has only one supercategory (except in polyhierarchies, which we don't often use), while a supercategory may have many subcategories. (2) The subcategory is dependent on the supercategory but not the reverse. Also, in this particular case I don't see any issue of ease of understanding. It might be useful to look at the proposals and discussion above. |
Result of gist dev team meeting discussion: Problems with inverses:
Agreed on:
Still open:
Attached is the in-progress spreadsheet, with column C indicating decisions that have been made. |
Firstly, I agree with the decision. |
Form working group to handle "still open" items from Feb 9. Spreadsheet from that meeting is the up-to-date version of what we've agreed on. Volunteers:
Dylan to call meeting. |
^^ @dylan-sa , can you put me as optional on that meeting. I'd like to weigh-in if I have time. |
Notes from working group meeting (3/28/2023):
Current proposal (updated after 4/6 working group meeting):
|
I was under the impression that this was still an open question. @dylan-sa , are you still abstaining? Also to add:
|
@rjyounes I'll go ahead and cast my vote in favor of complete removal so we've got a proper majority. |
Must be accompanied with documentation changes - see #810. |
As per the decision in #294, we should purge gist of inverse properties that don't have a compelling reason to exist. In general, the guidance is that if there's a tree-like structure, keep the property that goes up rather than down the tree, since cardinality generally will be greater going downward. If there's no tree-like structure, it's dependent on individual context.
This will be a minor change if we deprecate the inverses.
[Added]
From Issue #551
precedesDirectly
has inversefollowsDirectly
, butprecedes
has no inversefollows
. Should be consistent one way or another.The text was updated successfully, but these errors were encountered: