How to force a class to have exactly one of a given property

前端 未结 1 1233
梦毁少年i
梦毁少年i 2021-01-14 20:31

I have a class Person, and a set of data properties: First_Name, Surname, Gender, DoB, Country_of_Birth. The data properties have their Domains set to Person. What i would

1条回答
  •  有刺的猬
    2021-01-14 21:08

    Yes, that is proper behavior due to Protege using the open world assumption rather than the closed world assumption of for example relational databases. Under the open world assumption nothing can be assumed that is not stated explicitly or can be derived from explicitly known information. When you create an individual (possibly of type Person) for which you assigned no First_Name, under the open world assumption the reasoner merely assumes that the First_Name is not known, not that it does not exist (as is the case for the closed world assumption). Hence, the reason why the reasoner gives no inconsistency even though it infers that the individual must be of type Person. To get an inconsistency you have to state that it is known that the individual is both a Person and does not have a First_Name. This can be achieved for an individual john by asserting:

    john Type Person
    john Type First_Name max 0 xsd:string
    

    0 讨论(0)
提交回复
热议问题