owl覆盖子类中的属性限制

时间:2014-02-06 19:54:45

标签: owl restriction protege inference pellet

我的任务是在owl中构建两个类。 Base类描述了包含多个属性的资源,例如: p1,p2和p3。另一个类Sub应该描述与具有限制的Base类相似的资源,它们不包含其中一个属性,例如: p1,但只有p2和p3。例如,Car类将描述包含一些属性的车辆,其中一个是'hasMotor'。自行车类也会描述有限制的车辆,他们没有马达。

我使用基数限制来定义这样的类:

@prefix : <http://sample.org/test#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://sample.org/test> .

<http://sample.org/test> rdf:type owl:Ontology ;                         
                         owl:versionInfo "0.2"^^xsd:string .


:p1 rdf:type owl:DatatypeProperty .
:p2 rdf:type owl:DatatypeProperty .
:p3 rdf:type owl:DatatypeProperty .

:Base rdf:type owl:Class ;
      rdfs:subClassOf [ rdf:type owl:Restriction ;
                        owl:onProperty :p3 ;
                        owl:someValuesFrom xsd:string
                      ] ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :p2 ;
                        owl:someValuesFrom xsd:string
                      ] ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :p1 ;
                        owl:someValuesFrom xsd:string
                      ] .


:Sub rdf:type owl:Class ;

     owl:equivalentClass [ rdf:type owl:Class ;
                           owl:intersectionOf ( :Base
                                                [ rdf:type owl:Restriction ;
                                                  owl:onProperty :p1 ;
                                                  owl:qualifiedCardinality "0"^^xsd:nonNegativeInteger ;
                                                  owl:onDataRange xsd:string
                                                ]
                                              )
                         ] .

但是Pellet推理员认为Sub类等同于Nothing。如何在owl中描述两个提到的类?

1 个答案:

答案 0 :(得分:4)

公理意味着什么......

  

但我无法理解Pellet产生的推断结果   推理。对财产存在的限制似乎不是   上班。我该如何定义这样的类?

你还没有说过Pellet产生的推理结果 ,所以特别难以解释它们。但是,我们仍然可以看看你的公理所说的话。 OWL类非常类似于集合,您定义的限制是对这些集合的元素进行断言。例如,当你说那个

  

Base⊑⊑prop.String

你所说的是

  

1。 如果某些 x Base 那么就会有一些String s 支柱(X,S)

现在,你还有两个公理:

  

Sub⊑Base
  Sub⊑= 0 prop.String

这就是说

  

2。 如果某些 x Sub 那么 x 也是
  3. 如果某些 x Sub 那么就有零字符串 s 其中 prop(x,s)

...以及为什么 Sub 是其他所有的子类。

  

此外,请您解释为什么推断Sub类是ObjProp的子类。

您的本体并不矛盾,但您的某个类 Sub 不能拥有成员通常会产生通常不受欢迎的事态。为什么会这样?好吧,假设一些 x Sub 。然后,因为 x Sub ,所以它的字符串正好为零。当然,每个 Sub 也是 Base ,因此 x 也是 Base 。由于它是 Base ,因此它必须至少有一个字符串。它不能有零和至少一个,所以我们实际上不能有 Sub 的任何实例。由于 Sub 是空类(即相当于 owl:Nothing ),因此它是每个其他类的子类。