5

此 DL-Query 不返回任何个人:

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

这是本体的一部分:

: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++ 进行了尝试,但没有成功。

4

1 回答 1

7

类表达式hasPet exactly 1 DomesticAnimal具有作为实例的那些个体,这些个体通过属性hasPet恰好与 one相关联DomesticAnimal恰好一个意味着至少一个且不超过一个。基于三元组

:Joe :hasPet :Lassy .
:Bob :hasPet :Sparkey ;
     :hasPet :Lucky .

我们知道 Joe 和 Bob 每个人至少有一只宠物,但我们不知道他们可能有多少只宠物。除了 Lassy,Joe 可能还有其他宠物,因此我们不知道 Joe 拥有一只宠物。Sparkey 和 Lucky 有可能碰巧是同一个人,所以 Bob 至少有一只宠物,但我们没有 Bob 拥有的宠物数量的上限。

OWL 和 RDF 一样,都做出了开放世界假设,这意味着 OWL 不会假设所提供的数据是对世界上所有真实事物的详尽枚举。如果是这样,推理就没有意义了。没有断言 ofs p o并不意味着NOT( s p o ),而只是还没有判断s p o

不过,您可以在数据中添加更多知识以获得您想要的结论。您用以下内容描述乔:

Joe a Human ;
    hasPet Lassy ;
    hasPet only { Lassy } .

Lassy a DomesticAnimal .

由此你将能够推断出

Joe a (hasPet exactly 1 DomesticAnimal) .

对于 Bob,您似乎认为 Sparkey 和 Lucky 是不同的动物,因此您需要owl:differentFrom

Bob a Human ;
    hasPet Sparkey, Lucky .

Sparkey a DomesticAnimal .

Lucky a DomesticAnimal ; 
      owl:differentFrom Sparkey .

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

在此处输入图像描述

示例本体

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

@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 .
于 2013-05-30T20:04:00.180 回答