【问题标题】:Ontology inconsistence with Man and Woman as Father and Mother on ProtegeProtege 中男女作为父亲和母亲的本体不一致
【发布时间】:2015-04-16 04:48:09
【问题描述】:

假设我们有这些类,Man 和 Woman,分别以父亲和母亲作为子类。男人与女人脱节。

有一个名为hasDaughter的对象属性,以父亲和母亲为域,以女儿为范围。

现在,当我尝试运行推理器时,我得到一个与此解释不一致的错误:

Man DisjointWith Woman
John hasDaughter Annie
Father SubClassOf Man
hasDaughter Domain Mother
Mother SubClassOf Woman
hasDaughter Domain Father

现在我知道这是因为既然父亲和母亲都可以有一个女儿,推理者认为既然 X 有一个女儿,X 可以是父亲或母亲,或两者兼而有之,因为它们是不相交的,所以一定是错的。

我能做些什么来解决这个问题?这个想法是同时拥有父亲和母亲类,而不仅仅是一个父类,我知道这会让事情变得更容易。

【问题讨论】:

    标签: owl ontology protege


    【解决方案1】:

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

    Person
        Man
        Woman
    Role
        Mother
        Father
        Daughter
        ....
    

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

    或者您也可以采用其他方式,您可以保留您的建模,只定义hasFatherhasMother 而不是hasDaughter,然后对这些新属性设置域和范围限制。

    【讨论】:

    • 在你的角色模型中,你是如何定义 hasDaughter 的域的?
    • 这取决于你想做什么。以最简单的方式,您可以说 domain 是 Man going to range Woman。这取决于您定义此模型的详细程度。
    • 我没有看到您如何解决 OP 的问题。他需要表达John hasDaughter Annie.,而不是推断john既是Mother又是father,(也不是manwoman)。我准备好大吃一惊了,但我错过了一些东西!
    【解决方案2】:

    现在我知道这是因为父亲和母亲都可以有一个女儿,推理者认为既然 X 有一个女儿 X 可以是 父亲或母亲,或两者兼而有之,因为他们是不相交的东西 一定是错的。

    当您在属性上声明多个域时,解释不是析取(例如“父亲或母亲”),而是合取(即“既是父亲又是母亲”)。如果你说

    p domain A
    p domain B
    

    然后断言

    x p y
    

    推理器会推断出 x 既是 A 又是 B。如果要析取,则需要将联合类设为域。即,您需要这样做:

    hasDaugher domain (Father or Mother)
    

    那么当你有一个断言时

    John hasDaughter Annie
    

    推理者会推断

    John is a (Father or Mother)
    

    这与您的其他断言一致。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      相关资源
      最近更新 更多