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

capture domain/range correlations in "restriction" ontology #91

Open
VladimirAlexiev opened this issue Jul 13, 2021 · 4 comments
Open
Assignees
Labels
type: implementation question something needs clarified, refined or decided before the implementation can continue

Comments

@VladimirAlexiev
Copy link

I guess someone quite contravened your UML Conventions with this prop because it's wildly polymorphic:

epo:appliesTo
      rdfs:domain  [ a            owl:Class ;
                              owl:unionOf  ( epo:DesignContestRegimeTerm epo:SecurityClearanceTerm epo:FollowupContractTerm epo:FrameworkAgreementTerm epo:ReviewTerm epo:SelectionCriterion epo:ProcurementCriterionProperty epo:TenderLot epo:ContractTerm )
                            ] ;
      rdfs:range     [ a            owl:Class ;
                         owl:unionOf  ( epo:Lot epo:Document epo:LotGroup <http://www.w3.org/ns/org#Site> epo:Winner )
                       ] ;

There are desired domain-range correlations, eg: ReviewTerm appliesTo Lot, SecurityClearanceTerm appliesTo org:Site.

They are captured in "shapes" but not in "restriction". You should also emit them in "restriction" by using onProperty.

@costezki
Copy link
Collaborator

This is a nice example, how reused properties lead to semantic overloading.
One thing we were discussing doing, is to make properties more specific, hoping for consistent meaning application.

@costezki costezki added the uml label Jul 13, 2021
@VladimirAlexiev
Copy link
Author

"appliesTo" is a highly ambiguous name, even though it may make triples sound like English.

There is no problem to use polymorphic domain, as soon as the range is a single class.

And so a nice convention is to name properties by the target class. Eg
SecurityClearanceTerm site org:Site is unambiguous. You could also use
SecurityClearanceTerm appliesToSite org:Site but this slightly reduces the reusability of the prop.

@giorgialodi
Copy link

Take into account that we revised many of these properties that are general. I do not think these changes are currently applied to the OWL ontology (probably they will be in the future versions) but we have tried to be more specific in some cases or, alternatively, we use general properties but with domains and/or ranges owl:Thing. The issue that I see here, and this is a message more for @costezki :), is that in the UML is difficult to express some of these general cases, unless we introduce the class owl:Thing (that is not very UML style :) ). Then, this has an impact on the automatic translation from UML to OWL which is represented in this repo.
My2cents

@csnyulas
Copy link
Contributor

If I understand the problem correctly, the most elegant, and correct, solution for this would be that, instead of the specifying domain/ranges for the property (with possibly the union of multiple classes), to create someValuesFrom and/or allValuesFrom restrictions on the property, which can point to different classes when the property is used in the context of different classes.

With this approach, we are not inferring the type of individual that is at either end of the property (which domain/range statements would do), but rather we would state that the property, when used in context of class A, will (have to) point to a class B . E.g. ReviewTerm subClassOf appliesTo some Lot or ReviewTerm subClassOf appliesTo only Lot.

So, perhaps the best solution would be to provide flags for the model2owl tool, so that users can express their preferences about what kind of statements they would like to be generated in the restriction layer: domain/range, someValuesFrom and/or allValuesFrom.

@Dragos0000 Dragos0000 added type: implementation question something needs clarified, refined or decided before the implementation can continue act: for closing For closing and removed uml labels Aug 3, 2023
@costezki costezki removed the act: for closing For closing label Aug 4, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: implementation question something needs clarified, refined or decided before the implementation can continue
Projects
None yet
Development

No branches or pull requests

5 participants