OWL 基数限制的推理

Reasoning over OWL cardinality restriction

我想我对 OWL 公理还有一个根本性的误解 :(.

这是我创建的一个小测试ontology:

@prefix xsd:      <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf:      <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs:     <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl:      <http://www.w3.org/2002/07/owl#> .
@prefix :         <http://foobar.com/test/> .

: a owl:Ontology .

:prop1 a owl:DatatypeProperty .
:prop2 a owl:DatatypeProperty .

:Class1 owl:equivalentClass [
    a owl:Restriction ;
    owl:onProperty :prop1 ;
    owl:cardinality "1"^^xsd:int
  ] .

:Ind1 a owl:NamedIndividual ;
  :prop1 "value1"^^xsd:string .

:Class2 owl:equivalentClass [
    a owl:Restriction ;
    owl:onProperty :prop2 ;
    owl:minCardinality "1"^^xsd:int
  ] .

:Ind2 a owl:NamedIndividual ;
  :prop2 "value2"^^xsd:string .

当我运行 Protege 中的隐士推理者对此进行处理时,我得到了:Ind2 的预期结果,即它是:Class2 的成员。但是关于 :Class1.

的成员,我对 :Ind1 的看法并不相同

我怀疑这与开放世界假设有关,并且 :Ind1 可能还有另一个 :prop1 断言。那么几个问题:

谢谢

前提

OWL语义是在open-world assumption下定义的,所以你不能检查某个属性的基数是否恰好N ,因为即使未声明,也可能存在其他 属性 个实例。

更准确地说,这些是您可以执行的检查:

Cardinality check Possible answers Sound Complete
At-least N Yes (if N or more)
I don't know (otherwise)
Yes No
Exactly N No (if N+1 or more)
I don't know (otherwise)
Yes No
At-most N No (if N+1 or more)
I don't know (otherwise)
Yes No

解决方案

只有在 明确 声明 "value1":Ind1。在这种情况下 :Ind1 将成为 :Class1.

的一部分

在 FOL 中:

∀x.(R(Ind1, x) → x = "value1")

在 DL 中:

∃R⁻.{Ind1} ⊑ {"value1"}

在OWL2(未测试):

:Ind1
  a owl:NamedIndividual ;
  a [ a                 owl:Restriction ;
      owl:onProperty    :prop1 ;
      owl:allValuesFrom [ a          rdfs:Datatype ;
                          owl:oneOf  ( "value1"^^xsd:string )
                        ]
    ] .

感谢@horcrux 提供的提示。最后起作用的是也将属性声明为 owl:FunctionalProperty。将 属性 声明编辑为:

:prop1 a owl:DatatypeProperty, owl:FunctionalProperty .
:prop2 a owl:DatatypeProperty, owl:FunctionalProperty .

这不需要对每个单独的声明添加额外的限制。