【问题标题】:owl override property restriction in subclassowl 覆盖子类中的属性限制
【发布时间】:2014-02-06 19:54:45
【问题描述】:

我的任务是在owl 中构造两个类。 Base 类描述了包含多个属性的资源,例如p1、p2 和 p3。另一个类 Sub 应描述类似于 Base 类的资源,但有限制,即它们不包含其属性之一,例如p1,但只有 p2 和 p3。例如,类 Car 将描述包含一些属性的车辆,其中之一是“hasMotor”。 Bicycle 类也将描述具有限制的车辆,即它们没有马达。

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

@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中提到的这两个类应该如何描述?

【问题讨论】:

  • 类在 OWL 中没有属性;它不是面向对象的编程语言。属性可能有域和范围,但属性在任何意义上都与类无关。
  • 什么“推理结果由 Pellet 推理器产生”没有意义?我已经解释了my answer 中的公理是什么意思,以及为什么你会得到你所做的子类关系,但你没有提到你好奇的特定结果,所以我不知道我们是否已经是否解决了他们。
  • 我修改了原文
  • 新文本与原始文本有很大不同。不过我会重申;属性不属于类。逻辑含义是“继承的”。如果您说 Vehicle 至少有两个轮子,然后将 Unicycle 定义为车辆的子类并说它只有一个轮子,那么 Unicycle 将等同于 owl:Nothing,因为它不能有任何实例(因为没有任何东西可以有至少两个轮子并且正好是一个轮子)。我在回答中给出的解释仍然成立。

标签: owl restriction protege inference pellet


【解决方案1】:

公理是什么意思……

但我无法理解 Pellet 产生的推理结果 推理者。对财产存在的限制似乎没有 去工作。如何定义这样的类?

你还没有说 Pellet 产生的推理结果是什么,所以很难具体解释。但是,我们仍然可以看看你的公理在说什么。 OWL 类真的很像集合,您定义的限制是对这些集合的元素进行断言。例如,当你说

基础 &sqsubseteq; ∃prop.String

你说的是

1。 如果一些x是一个Base那么有一些Strings这样prop(x,s).

现在,您还有两个公理:

子 &sqsubseteq;基地
子&sqsubseteq; =0 prop.String

这些都说

2。 如果某个x是一个那么 x也是一个基地
3. 如果某个x是一个Sub那么正好有0个字符串s prop(x,s).

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

此外,您能否解释一下为什么 Sub 类被推断为 ObjProp 的子类。

您的本体并没有矛盾,但您确实有您的一个类 Sub 不能拥有成员的典型不良状态。为什么会这样?好吧,假设一些 x 是一个 Sub。然后,因为 x 是一个 Sub,它正好有零个字符串。当然,每个Sub也是一个Base,所以x也是一个Base。既然它是一个Base,那么它必须至少有一个字符串。它不能有 0 和至少 1,所以我们实际上不能有任何 Sub 的实例。由于 Sub 是空类(即,等同于 owl:Nothing)它是 所有其他类的子类。

【讨论】:

  • 正确分析。我想补充一点,作为修复建议:首先,Base 和 Sub 并没有让我觉得应该是彼此的子类,而是可能是公共超类的子类,这相当于公共限制。然后 Base 将添加 (some p3 xsd:string) 并且 Sub 将具有 (0 p3 xsd:string) 作为额外限制。其次,不应将 Sub 定义为/等效于要使用的定义。在本例中,通过等价定义类通常很棘手 - 我经常看到它会导致意外且难以理解的推论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-05
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多