Archive for February, 2011

Closing the FHKB’s ABox of family Members

February 9, 2011

This extends earlier posts on my family history knowledgebase (FHKB). The basic version of the FHKB has an open ABox; that is, what I’ve said about the individuals is not closed. For example, for William George Bright, I say:

Individual: wiliam_george_bright

Facts:
        isFatherOf john_bright,
        isFatherOf david_bright,
                isFatherOf peter_william_bright

So, he is father of John, David and Peter, but he may be father of others; according to the OWL semantics we just don’t know. This is standard open world assumption. Just because it isn’t said, doesn’t mean it isn’t true. So, if I ask a question like

        Person
                EquivalentTo: Person
                        that isFatherOf some Man
                        and isFatherOf only Man

That is, give me Person that have a son and only sons. William George Bright wil not show up; he may have daughters that have not been mentioned. Additionally, while W.G. Bright will show up if I ask for men that are father of at least 3 sons, he won’t if I ask for men that have exactly 3 sons; I know that there are at least three sons, but not that there are exactly 3 sons, there may be others. So, we need to close the world down:

Individual: wiliam_george_bright
        types:
                isFatherOf only {john_bright, david_bright, peter_bright}
        Facts:
                isFatherOf john_bright,
                isFatherOf david_bright,
                isFatherOf peter_william_bright

We’re putting in a closure axiom that has a universal quantification on an enumerated set of the individuals concerned. The query above wil now give us the answer we’d expect.

we have the same kind of phenomenon when asking for childlessMan or ChildlessPerson. Here the FHKB’s property hierarchy needs some explanation. I have isParentOf with two sub-properties of isFatherOf and isMotherOf with the domains of Man and Woman in turn. each has the expected inverses (that are functional – I can have only one mother…). There is another property hasChild, whith two sub-properties of hasSon and hasDaughter with the expected inverses and functional characteristics. hasChild and isParentOf are equivalent properties.

If I write the class:

Class: ChildlessMan
    EquivalentTo: Man
            that not (isParentOf some Person)

the individual robert_david_bright_1965 is not a type of this class, despite my having no children. I haven’t told the FHKB that I have no children, though I haven’t said I have either. So, I have to put in an assertion such as:

Types:

            not (isParentOf some Person)

on the individual. then it works. However, if I write the class:

Class: ChildlessPerson

        EquivalentTo: Person
                that not (isParentOf some Person)

then the class ChildlessMan is not a ssubclass of it and robert David Bright is not a type of that class. this is because the definitions and assertions are not quite closed tight enough. isParentOf and hasChild are equivalent properties, but their sub-properties leave room for doubt. From our domain knowledge, we know that a Man that is not the father of someone cannot have either a son or a daughter, but it is possible from the semantics of the ontology that a not (isFatherOf some Person) may hold a hasSon or hasDaughter property to some individual. We have to close down the definition even more like:

Class: ChildlessPerson

        EquivalentTo: Person
                that not ((isParentOf some Person)
                or
                        (hasChild some Person))

and similarly for ChildlessMan. then it all works. However, if I put the assertion not (isFatherOf some Person) on robert Bright, then it doesn’t work. we know, because he is a man, that he cannot hold an isMotherOf property. However, we don’t have a mechanism for saying that isMotherOf and isFatherOf are the only sub-properties of isParentOf. there is no covering axiom for properties. So we cannot infer that robert bright holds no other parentage properties. We have to put the assertion of not (isParentOf some Person) — unless we just want to talk about men that are not fathers.

The open world is a modelling asset in the TBox; especially in the world of biology there is much we don’t know and don’t wish to state. the assumption that something not stated is untrue is dangerous. However, in the ABox, it can be painful as to ask questions like “give me all childless persons” becomes hard work. The open world is still a nice assumption, but I also want local or transitory closure when asking some questions. the K-operator or epistemic operator does this job for me. Pellet has such a facility, but it is not standard in OWL tools.