Closed dallemang closed 3 years ago
@dallemang
Its almost as easy. You merely use an expression that means hasSubsidiary
using owl:inverseOf
. Specifically:
hasSubsidiary
in your example restriction with[owl:inversOf :isSubsidiaryOf]
[ a owl:Restriction ; owl:onProperty [owl:inversOf :isSubsidiaryOf] ; owl:someValuesFrom :PharmaceuticalCompany ]
This is the same approach we used to define Patient in the middle of page 90 (using Manchester syntax).
Class: doe:Patient
EquivalentTo:
doe:Person and
((owl:inverseOf doe:careRecipient) some doe:PatientVisit)
Suppose I explicitly defined (as you have in this chapter) isSubsidiaryOf, but not hasSubsidiary (its inverse).
Let's also suppose I have subclasses of Corporation for various industries: PharmaceuticalCompany, EntertainmentCompany, Bank, ManufacturingCompany, etc.
How would I express the restriction that means, "the set of all companies that have a subsidiary in the Pharmaceutical industry?" (this is a pretty real-life example; if there is a boom or bust expected in some industry, then an investment in a holding company that has such a company as a subsidiary could be highly recommended or discouraged)
If I have defined hasSubsidiary, then it is easy:
[ a owl:Restriction ; owl:onProperty :hasSubsidiary ; owl:someValuesFrom :PharmaceuticalCompany ]
If I don't define :hasSubsidiary, how do I do this?