owl - 本体论与 protected 男人和女人作为父亲和母亲的不一致

标签 owl ontology protege

假设我们有这些类,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),我知道这会让事情变得更容易。

最佳答案

您需要将您的类分开,以便将 manwomanfathermother 分开。所以你的本体中需要有两个分支:

Person
    Man
    Woman
Role
    Mother
    Father
    Daughter
    ....

您可以使ManWoman 不相交。然后你可以说A Man hasRole FatherA Woman hasRole Mother,以及其他建模决策。

或者你可以走另一种方式,你可以保留你的建模并只定义 hasFatherhasMother 而不是 hasDaughter 然后放置域以及这些新属性的范围限制。

关于owl - 本体论与 protected 男人和女人作为父亲和母亲的不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29665545/

相关文章:

rdf - 在 Protege 中哪里定义 AllDisjointClasses

ontology - 如何识别对象属性与数据类型属性?

java - OWL如何使类C等价于类A联合类B在protege中

rdf - objectProperty中有多个域和范围?

python - rdflib "repeat node-elements"OWL/XML 文件解析错误

semantic-web - 如何添加rdfs :label to OWLIndividual via OWLAPI?

java - 如何通过将 owl 的名称传递给 java 程序来获取其个人信息

java - 使用 Jena API 编写 Tbox 模型

rdf - SWRL 规则不会推断新的对象和数据属性断言

java - 通过 OWL API 查询 OWL 本体时出现问题