KGConf / Bookclub-DemystifyingOWL

Notes and material for the DemistifyingOWL bookclub
7 stars 1 forks source link

Chapter 4 - explicit inverses in restrictions #25

Closed dallemang closed 3 years ago

dallemang commented 3 years ago

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?

uscholdm commented 3 years ago

@dallemang Its almost as easy. You merely use an expression that means hasSubsidiary using owl:inverseOf. Specifically:

[ 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)