OWL类和子类属性继承 [英] OWL Class and Subclass Property Inheritance

查看:12
本文介绍了OWL类和子类属性继承的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对OWL类和子类属性继承感到困惑。一些帖子说OWL中没有继承(OWL: How to get inheritance of property relations between two classes from those of superclasses?http://answers.semanticweb.com/questions/619/rdfs-owl-inheritance-with-josekipellet)。然而,我也发现了一些相反的讨论。例如,"面向对象软件开发人员的语义Web入门"页面(https://www.w3.org/TR/sw-oosd-primer/)提到,对于这两种面向对象语言,OWL和RDF:"类可以安排在带有继承的子类层次结构中"(3.3节)。https://www.w3.org/TR/rdf-schema/#ch_subclassof提到"属性rdf:subClassOf是rdf:Property的一个实例,用于声明一个类的所有实例都是另一个类的实例。"因此,这让我感到困惑。现在我有以下问题:

  • 和面向对象语言一样,rdfs:subclassOf是否继承了超类的属性?
  • 如果不是

    • rdf/owl中继承的含义是什么?
    • 是否可以用OWL/RDF构造面向对象语言类型类-子类继承?
    • 请考虑下面的示例。是否所有"讲师"和"学生"的属性都将可用于"Person"类?

      Example:
      --------
         ### Classes ###
       :CSModule rdf:type owl:Class ;
            rdfs:subClassOf :Module .
      
       :Lecturer rdf:type owl:Class ;
           rdfs:subClassOf :Person .
      
       :Student rdf:type owl:Class ;
          rdfs:subClassOf :Person .
      
       :Module rdf:type owl:Class .
      
       :Person rdf:type owl:Class .
      
      ### Object Properties ###
      
      :studies rdf:type owl:ObjectProperty ;
      
         rdfs:domain :Student ;
         rdfs:range :Module .
      
      :teaches rdf:type owl:ObjectProperty ;
      
         rdfs:domain :Lecturer ;
         rdfs:range :Module .
      
      ### Data properties ###
      
      :name rdf:type owl:DatatypeProperty ;
        rdfs:domain :Person ;
        rdfs:range xsd:string .
      
      :staffID rdf:type owl:DatatypeProperty ;
        rdfs:domain :Lecturer ;
        rdfs:range xsd:integer .
      
      :studentID rdf:type owl:DatatypeProperty ;
        rdfs:domain :Student ;
        rdfs:range xsd:integer .
      
      ### Individuals ###
      
      :CS101 rdf:type owl:NamedIndividual ,
       :CSModule .
      
      :Lecturer1 rdf:type owl:NamedIndividual ,
       :Lecturer ;
       :teaches :CS101 ;
       :name "Dr.John" ;
       :staffID 7777 .
      
      :Student1 rdf:type owl:NamedIndividual ,
       :Student ;
       :studies :CS101 ;
       :name "James" ;
       :studentID 1234 .
      

如果有人给我提供一个很好的例子的答案,那将是非常有帮助的。提前谢谢您。

推荐答案

和面向对象语言一样,rdfs:subclassOf是否继承了超类的属性?

说属性p的属性域是类D意味着当你有一个三元组

x p y

你可以推断出三元组

x rdf:type D

没有财产继承的概念。如果您知道E是D的子类,并且您看到三元组

e p y  
e rdf:type E  
E rdfs:subClassOf D

您现在有两种方法可以知道e rdf:type D。第一个原因是e p y暗示e rdf:类型D。第二个是因为你知道e是E,E是D的子类,e也是D。

RDF/OWL中继承的含义是什么?

RDF和OWL中的类是集合。当您知道E是D的子类时,这意味着E的每个元素都是D的元素;也就是说,E的个体集合是D的个体集合的子集。

属性也是如此。如果q是p的子属性,则意味着x q y蕴含x p y

是否可以使用OWL/RDF构造面向对象语言类型的类-子类继承?

您在这里的意思并不是很清楚。您需要准确地指定您所说的面向对象语言类型类-子类继承的含义。你会得到很多相同的行为。例如,如果您知道D的每个实例都有一个特定的,那么您就知道E的每个实例也有一个特定的,因为E的每个实例都是D的一个实例。例如,如果您有

D SubClassOf (hasColor some Color)

然后您可以推断

E SubClassOf (hasColor some Color)

所以在这个意义上就是继承。

考虑以下示例。是否所有"讲师"和"学生"的属性都将可用于"Person"类?

"可用"可能具有误导性。不知道哪些属性对类可用或不可用(即,对类中的个人)。如果您有如下层次结构:

Lecturer rdfs:subClassOf Person  
teachesCourse rdfs:domain Lecturer
teachesCourse rdfs:range Course

这意味着当你看到一个三元组

Jones teachesCourse Calculus

你可以推断

Jones rdf:type Lecturer  
Jones rdf:type Person  
Calculus rdf:type Course

属性教学课程从某种意义上说,每个人都可以使用,但一旦使用,就意味着那个人必须是讲师。这真的非常类似于您在面向对象编程语言中拥有的东西,不是吗?例如,如果您有Java:

class Person { }

class Lecturer {
  Course[] getCourses() { /* ... */ }
}

则可能存在具有getCourses()方法的Person实例。恰好Person的那些实例也必须是Lector的实例。

这篇关于OWL类和子类属性继承的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆