首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个DL-查询不返回任何个人?

为什么这个DL-查询不返回任何个人?
EN

Stack Overflow用户
提问于 2013-05-30 16:26:24
回答 1查看 2.2K关注 0票数 5

此DL-查询不返回任何个人:

  • 查询(Protégé语法):hasPet exactly 1 DomesticAnimal

以下是本体的一部分:

代码语言:javascript
复制
:hasPet a           owl:ObjectProperty;
        rdfs:domain :Human;
        rdfs:range  :DomesticAnimal;
        owl:inverseOf : petOf;


:Joe    a           :Human;
        hasPet      :Lassy.

:Bob    a           :Human;
        hasPet      :Sparkey, Lucky.

查询:

  • petOf value Bob返回SparkeyLucky
  • petOf value Joe返回Lassy
  • hasPet exactly 1什么也不返回。

为什么最后一个查询不返回Joe?我曾在Protégé与Pellet、HermiT和FaCT++一起尝试过,但没有成功。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-30 20:04:00

类表达式hasPet exactly 1 DomesticAnimal的实例正是由属性hasPet与一个DomesticAnimal相关联的个体。确切地说,一个意味着至少一个,但不超过一个。基于三元组

代码语言:javascript
复制
:Joe :hasPet :Lassy .
:Bob :hasPet :Sparkey ;
     :hasPet :Lucky .

我们知道乔和鲍勃至少有一只宠物,但我们不知道他们可能有多少只宠物。除了拉西,乔可能还有宠物,所以我们不知道乔有一只宠物。Sparkey和Lucky可能是同一个人,所以Bob至少有一只宠物,但是我们没有关于Bob拥有的宠物数量的上限。

OWL以及RDF生成开放世界假设,这意味着OWL并不认为所提供的数据是世界上所有真实事物的详尽枚举。如果是的话,推论就没有意义了。没有s p o的断言并不意味着NOT( s p o ),而仅仅意味着还没有对s p o的判断。

不过,您可以向数据中添加更多的知识,以得到您想要的结论。您用以下方式描述Joe:

代码语言:javascript
复制
Joe a Human ;
    hasPet Lassy ;
    hasPet only { Lassy } .

Lassy a DomesticAnimal .

从这个你就可以推断出

代码语言:javascript
复制
Joe a (hasPet exactly 1 DomesticAnimal) .

对鲍勃来说,看起来你认为斯巴基和幸运是不同的动物,所以你需要owl:differentFrom

代码语言:javascript
复制
Bob a Human ;
    hasPet Sparkey, Lucky .

Sparkey a DomesticAnimal .

Lucky a DomesticAnimal ; 
      owl:differentFrom Sparkey .

我没有在这些公理中包括Bob hasPet only { Sparkey, Lucky },因为它们没有必要推断Bob有多个宠物,但是您可以包括它。我还只包含了一个owl:differentFrom断言,这些断言本来是可以完成的。现在已知鲍勃有两种不同的宠物,因此不知道是hasPet exactly 1 DomesticAnimal。将这些数据加载到Protégé中,DL查询hasPet exactly 1 DomesticAnimal将按预期工作:

示例本体

如果您希望能够快速地将此结构加载到Protégé,下面是一个包含个人、属性和公理的本体,如前所述。我没有定义petOf属性,但是您仍然可以以inverse hasPet value Joeinverse hasPet value Bob的形式运行前两个查询,并获得预期的结果。

代码语言:javascript
复制
@prefix :        <http://www.example.com/owa#> .
@prefix rdfs:    <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:     <http://www.w3.org/2002/07/owl#> .
@prefix xsd:     <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:     <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owa:     <http://www.example.com/owa#> .

owa:Bob
      a       owl:NamedIndividual , owa:Human ;
      owa:hasPet owa:Sparkey , owa:Lucky .

owa:Sparkey
      a       owl:NamedIndividual , owa:DomesticAnimal .

owa:Lassy
      a       owl:NamedIndividual , owa:DomesticAnimal .

[]    a       owl:AllDifferent ;
      owl:distinctMembers (owa:Lucky owa:Sparkey) .

owa:Joe
      a       owl:NamedIndividual , owa:Human ;
      a       [ a       owl:Restriction ;
                owl:allValuesFrom
                        [ a       owl:Class ;
                          owl:oneOf (owa:Lassy)
                        ] ;
                owl:onProperty owa:hasPet
              ] ;
      owa:hasPet owa:Lassy .

<http://www.example.com/owa>
      a       owl:Ontology .

owa:Lucky
      a       owl:NamedIndividual , owa:DomesticAnimal .

owa:Human
      a       owl:Class .

owa:hasPet
      a       owl:ObjectProperty .

owa:DomesticAnimal
      a       owl:Class .
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16841335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档