繁体   English   中英

推理员不检查基数和/或限制?

[英]Reasoner does not check cardinalities and/or restrictions?

我试图创建可能最简单的本体,由两个类(A,B)和两个类之间的关系(R)组成。 我还想说明A的每个人必须与其他人有关系R.

:R rdf:type owl:ObjectProperty ;
   rdfs:domain :A ;
   rdfs:range :B .

:A rdf:type owl:Class ;
   rdfs:subClassOf owl:Thing ,
                   [ rdf:type owl:Restriction ;
                     owl:onProperty :R ;
                     owl:someValuesFrom :B
                   ] ;
   owl:disjointWith :B .

:B rdf:type owl:Class ;
   rdfs:subClassOf owl:Thing .

现在有些人:

:a1 rdf:type :A , owl:NamedIndividual ; :R :b1 .
:a2 rdf:type :A , owl:NamedIndividual .
:b1 rdf:type :B , owl:NamedIndividual .

在此输入图像描述

但是理由并没有抱怨a2没有关系R.为什么?

(注意:我在Protégé创建了本体;我尝试过Fact ++和HermiT reasoners)

我还想说明A的每个人必须与其他人有关系R.

您已正确完成此操作。 当你继续断言

 :a1 rdf:type :A , owl:NamedIndividual ; :R :b1 . :a2 rdf:type :A , owl:NamedIndividual . :b1 rdf:type :B , owl:NamedIndividual . 

推理器将正确地推断出有一些值,让我们称之为X ,这样:a2:RX和那个X rdf:type:B OWL推理使用开放世界假设 这意味着如果某些事情没有明确说明是真或假,那么它不会被认为是虚假或真实的,而是未知的 例如,你可以正确断言

人类⊑∃hasMother.Human

也就是说,每个人都有一些人作为母亲。 如果我这样说

DanielWebster∈人类

这就是我所说的一切; 我没有说不一致。 我们还不知道有些事情是真的。 我们知道丹尼尔·韦伯斯特有一个母亲,但我们不知道她是谁。

如果你想要关闭世界,你可以做一些事情,但结果可能不是你想要的。 首先,您可以使B成为枚举类。 也就是说,您可以明确列出B的个体:

B≡{b1}

但这实际上不会导致不一致。 事实上,推理者将推断,因为a2必须与某些B相关,并且唯一的B是b1,所以a2与R相关联为b1。

你也可以使用同等的。

:猫头鹰:equivalentClass [rdf:type owl:Restriction; 猫头鹰:onProperty:R; owl:someValuesFrom owl:Thing];

您不需要为R编写域约束。等效的将处理它。 您仍然需要编写范围约束。

但是理由并没有抱怨a2没有关系R.为什么?

回答这个问题。 您需要了解开放世界的假设 语义网是开放世界的假设。 我在下面的评论中提到了一些研究论文,将一些概念或角色作为封闭世界的假设。 例如,在您的示例中,如果将R作为闭合谓词。 你会得到你问的错误。 这完全是一个理论上的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM