OWL类和子类属性继承 [英] OWL Class and Subclass Property Inheritance
问题描述
我对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屋!