Search code examples
rdfowlprotege

protege reasoner not report error for violation of GCI


My main goal with Protege an ontology building at present is consistency checking. To that end I'm starting with small tests.

In this case I want to insist that any "instance" of a class with a certain property necessarily has another property.

Following this thread from a long time ago I wrote the following GCI:

expression and (structureType value structureItem) SubClassOf hasAuthor min 1 person

By this I mean to state that: any class that is an expression that has the property structureType whose value is structureItem must have or necessarily has at least one property hasAuthor

But when I run the reasoner in Protege with such an expression WITHOUT a hasAuthor property I don't get any error.

Is there something wrong with my rule or am I expecting something from the reasoner that it is not designed to do.


Solution

  • What happens has nothing to do with Open World Assumption. More on that later.


    In order to show how normal the reasoner is behaving, let me simplify a bit your GCI. Let's consider the class Father and the property hasChild and the following GCI:

    Father  SubClassOf  hasChild min 1
    

    This is saying that fathers have at least one child. This is common sense knowledge. Now, if I add the fact that:

    Antoine  Type  Father
    

    your question suggests that it should be detected as an error. If you think about the knowledge we are representing here, it should be clear that interpreting this as an error is going against normal reasoning. If I meet you and tell you:

    Antoine is a father! You know, fathers have at least one child.

    you would probably not startle and say:

    You are wrong, Antoine!

    because what I say is just plain, consistent, reasonable knowledge. OWL is a knowledge representation language. What is reasonable and consistent in everyone's knowledge is reasonable and consistent in OWL. OWL does not create errors from unsaid obligations. A subClassOf relation is not an obligation to provide the proof of being in the superclass in order to be able to be in the subclass. A GCI just provides some truth about the world it describes. So if I state that Antoine is a father, then I can conclude that Antoine has a child, it's as simple as that.

    You are probably confusing concept inclusions with some sort of constraint. But interpreting GCIs as such constraints or obligation completely defies the purpose of ontologies. If you have:

    StackOverflowUser  SubClassOf  Person
    Jeff  Type  StackOverflowUser
    

    you would have to prove that Jeff is indeed a person to avoid the system throwing an error?! So you would have to put what ought to be logical conclusions as explicit facts. That's the opposite of the idea of reasoning and inferences!


    Now, let us go back to OWA. Some clarification about what OWA is, and is not, must be made.

    First, surprisingly, the Open World Assumption is not an assumption. It is named so in order to satisfy the pleasing esthetics of the parallel between Closed World Assumption (CWA) and the absence of Closed World Assumption. The complementary of "Closed" is "Open", so it must be the case that the opposite of Closed World Assumption is Open World Assumption.

    But it would be a mistake to qualify as an "assumption" the absence of an assumption. So this begs the question "what is the Closed World Assumption?" then.

    CWA is a concept of first order logic (FOL), defined in the context of database theory. Databases usually keep records of "positive statements" -- which can be formalised as FOL atoms like hasChild(Antoine, R.) -- but not "negative statements" -- formalised as negative literals like ¬hasChild(Antoine, Jeff). In a database of genealogical records, it would be insane to keep a record of all the pairs of things x and y such that ¬hasChild(x, y). Instead, it is reasonable to assume that if hasChild(x, y) is not present in the database, then it follows that ¬hasChild(x, y). This is the essence of CWA.

    However, this needs further clarification, as it is often misinterpreted by people invoking OWA/CWA. Some people define CWA as the assumption that what cannot be deduced from a knowledge base or ontology is assumed to be false. This is not CWA. If it were the case, then whenever we cannot conclude φ nor ¬φ, we would assume that both φ and ¬φ are false, which is a contradiction. So the true formalisation of CWA (as defined by Raimond Reiter in 1978, and as formalised by database scientists and logicians for many decades) is the following:

    “if no proof of a positive ground literal exists, then the negation of that literal is assumed true” [R. Reiter, On Closed World Data Bases, 1978]

    More completely, given a FOL theory T, the closed world theory CW(T) of T is the theory T ∪ {¬φ | φ is a ground atom and T ⊬ φ}. Making the CWA on a theory T means reasoning with CW(T) instead of T for the purposes of logical deductions or query answering.

    On the theory T = {∀x.Father(x) → ∃y.hasChild(x,y), Father(Antoine)}, the CWA leads to the conclusions ¬hasChild(Antoine, Antoine), ¬hasChild(Antoine, Jeff), etc. but not to Error(T), nor to that CW(T) is inconsistent.

    In conclusion, if CWA is irrelevant to whether T has an error or is inconsistent, then so is OWA. I don't know what Ivo Velitchkov and Stanislav Kralin have in mind when they refer to OWA, but whatever it is, it is foreign to the scientific literature on the topic that I'm aware of.