-
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
Add class for ComplexRelationship #424
Comments
From the point of view of conceptual organization, I like the idea of a superclass of However, I don't like the properties because they're misleading. A hypothetical class I might not have defined either |
I thought we have been through this already, perhaps it was via email.
Whatever gave you the idea that Employment could reify both a property and its inverse? It could reify either. To reify both would be perverse. Which is reified is determined by
|
We have been through this already, via email, but I didn't buy it. I don't know what you mean by "to reify both is perverse." Logically, To your second point: |
Perhaps we can bring this up in a gist issues session. We use |
I am no longer in love with the generic properties to use with :ComplexRelation. At the time MarkW and I came up with them, it seemed a good way to prevent property bloat. But in practice, they are are difficult to understand. It actually takes me a second to visualize the full set of triples and make sense of it. |
Lets assume that: Here is one way to define and use a class to represent a person being employed by a company for a period of time. It reifies a property called
Here is an alternative, which reifies a property called
What happens if you define Employment to reify both properties?
To do this is perverse because doing so prevents you from being able say who is the employer vs. the employee.
Well, its clearly not perverse to want to distinguish the employer from the employed - so how do you propose to do that if you reify both properties -- other than being forced to introduce extra properties, which defeats the purpose of |
@DanCarey404 said: "I am no longer in love with the generic properties to use with :ComplexRelation. " The use of |
@uscholdm You are missing my point. The fact that that's impossible is why I don't like the properties. What I'm saying is:
Also, can you explain what this model allows you to do that you cannot do otherwise? |
I cannot answer that question until I understand your proposal. Can you spell it out in triples, using the same example I used? |
You are reifying a relationship. A relationship has a direction so you have to choose the direction. Nothing illogical so far. If you reify something that has a direction, the direction can't just vanish. The reified relationship has to faithfully maintain that direction. This seems perfectly straightforward - where is the logical inconsistency? I look forward to seeing how your proposal maintains the direction so I can tell who is the employer and who is the employee. |
Can't most of the ambiguity be solved by better class names, e.g. EmployerEmploysEmployeeRelation or OrgEmploysPerson or similar? Now the direction for :hasRelSubject and :hasRelObject is clear. And it would be further clarified given the annotation :reifiesProperty :employs. |
@marksem So if you define both properties employs and isEmployedBy you'd have two classes, EmployerEmploysEmployeeRelation and EmployeeIsEmployedByEmployer Relation, when there is really just one type of relationship? Surely no one would like that. @uscholdm We need to discuss this in person at a meeting because I've tried every way I can think of to explain my view and we're not communicating. There's one major point I apparently failed to make clear that may put everything else I'm saying in context: I am proposing that we not add this class and the related predicates. |
@rjyounes You don't have to have 2 classes. (and you don't have to have the inverse either ;) These are modeling choices that add what I'd consider mostly redundant information to the graph. |
As for an even better naming pattern, I suggest property named p implies class name pRelation. E.g. employs, and EmploysRelation. Assuming the property name is unambiguous, the class name will also be unambiguous (as to what hasRelSubject and hasRelObject point to). |
This is an interesting creative and reasonable naming convention. |
That is a proposal for what to NOT do. What to you propose TO do as an alternative to the employment example I spelled out the triples for? Can you provide an alternate set of triples? A few triples is worth a thousand words. This may help us get to the nub of the different points of view. Not just for me, but it will make it clear to everyone what options are on the table. |
@marksem @uscholdm Agreed, but the arbitrariness of which property is declared as the refied property nevertheless disturbs me. In terms of redundant information, no one has explained how the Another thing I'd like an example of: the idea of a superclass of |
@DanCarey404 may have examples at MS. We have a timeless example in Platts: https://agraph.semanticarts.com/#/catalogs/platts/repositories/platts-demo1/node/%3Chttps://ontologies.platts.com/pleo/SymbolPlacement%3E The definition needs to be improved, however, I forget what it was about. Statements with a subject of pleo:SymbolPlacement
|
Closing: Consensus is that this is a design pattern rather than a class. |
We have this at two of our clients. It looks like this:
The text was updated successfully, but these errors were encountered: