假设我们有这些类,Man 和 Woman,分别以 Father 和 Mother 作为子类。男人与女人脱节。
有一个名为hasDaughter的对象属性,以Father和Mother为域,以Daughter为范围。
现在,当我尝试运行推理机时,我收到了与此解释不一致的错误:
Man DisjointWith Woman
John hasDaughter Annie
Father SubClassOf Man
hasDaughter Domain Mother
Mother SubClassOf Woman
hasDaughter Domain Father
现在我知道这是因为既然父亲和母亲都可以有一个女儿,那么推理者就会认为既然 X 有一个女儿,X 可以是父亲或母亲,或者两者都是,并且由于他们是不相交的,所以一定有问题。
我可以做什么来解决这个问题?我们的想法是同时拥有父亲和母亲类(class),而不仅仅是一个家长类(class),我知道这会让事情变得更容易。
最佳答案
您需要将您的类分开,以便将 man
、woman
和 father
、mother
分开。所以你的本体中需要有两个分支:
Person
Man
Woman
Role
Mother
Father
Daughter
....
您可以使Man
和Woman
不相交。然后你可以说A Man hasRole Father
和A Woman hasRole Mother
,以及其他建模决策。
或者你可以走另一种方式,你可以保留你的建模并只定义 hasFather
和 hasMother
而不是 hasDaughter
然后放置域以及这些新属性的范围限制。
关于owl - 本体论与 protected 男人和女人作为父亲和母亲的不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29665545/