OWl本体语言学习笔记

时间:2022-12-25 19:13:07
1、引言
Web本体语言OWL是一种定义和实例化“Web本体的语言。

OWL形式语义说明怎么获得它的逻辑结论,也就是说,不是逐字写在本体中的事实,而是语义蕴涵的事实。这些蕴涵可以是基于单个的文档也或利用OWL机制合并在一起的多个分布的文档。

本体和XML Schema的区别是它是一种知识表示,而不是一种消息格式。

OWL本体的一个优点是会有能够对其做推理的工具。

2. 本体的结构

OWL是语义网活动的一个组成部分。这项工作的目的是通过对增加关于那些描述或提供网络内容的资源的信息,从而使网络资源能够更容易地被那些自动进程访问。由于语义网络固有的分布性,OWL必须允许信息能够从分布的信息源收集起来。其中,允许本体间相互联系,包括明确导入其他本体的信息,能够部分实现这样的功能。

另外,OWL提出了一个开放世界的假设。

2.1. 命名空间

为帮助书写冗长的URLs,在本体的定义之前,在文档类型声明(DOCTYPE)中提供一些实体定义(entity definitions)常常是很有用的。这些被命名空间声明定义的名称仅当作为XML标签的一部分时才具有意义。属性值(attribute values)是具有命名空间的。但是OWL里,我们经常要用属性值来引用本体标识符。

 

2.2. 本体头部

建立了命名空间后,接下来我们通常要在owl:Ontology标签里给出一组关于本体的声明。这些标签支持一些重要的常务工作比如注释、版本控制以及其他本体的嵌入等。

 

owl:Ontology元素是用来收集关于当前文档的OWL元数据的。它不确保文档描述一个传统意义的本体。在某些圈子里,本体不是关于个体的,而是仅仅关于某个领域的类和属性的。在使用OWL来描述一个实例数据集合时,owl:Ontology标签也许会被需要用来记录版本信息,和导入文档所依赖的一些定义。因此,在OWL里,本体一词被放宽了,已包含实例数据

rdf:about属性为本体提供一个名称或引用。根据标准,当rdf:about属性的值为""时,本体的名称是owl:Ontology元素的基准URI。典型地,这是一个包含本体的文档的URI。在使用了xml:base的上下文中则是一个特殊情况,这时owl:Ontology元素的基准URI也许会被设为其他URI

rdfs:comment提供了显然必须的为本体添加注解的能力。

owl:priorVersion是一个为用于本体的版本控制系统提供相关信息(hook)的标准标签。

owl:imports提供了一种嵌入机制。owl:imports接受一个用rdf:resource属性标识的参数。

rdfs:label来对本体进行自然语言标注。

2.3. 数据集成与隐私

SAMLP3P

3. 基本元素(Basic Elements

一个OWL本体中的大部分元素是与类(class)、属性(property[property也可译作特性”]、类的实例(instance)以及这些实例间的关系有关的。本节给出应用这些元素所必需的语言成分。

3.1. 简单的类和个体

许多情况下,使用本体是为了用它进行关于个体的推理。为了在一种有效的方式下做到这一点,我们需要一种机制来描述个体所属的类以及这些个体通过类成员关系而继承得到的属性。尽管我们总能为个体声明特定的属性,但是本体的大部分能力在于基于类的推理。

有时,我们希望强调区分一个类是作为对象还是作为包含元素的集合。我们称由属于某个类的个体所构成的集合为该类的外延(extension

3.1.1. 简单的具名类

Class, rdfs:subClassOf

一个领域中的最基本概念应分别对应于各个分类层次树的根。OWL中的所有个体都是类owl:Thing的成员。因此,各个用户自定义的类都隐含地是owl:Thing的一个子类。要定义特定领域的根类,只需将它们声明为一个具名类(named class)即可。OWL也可以定义空类,owl:Nothing

rdfs:subClassOf是用于类的基本分类构造符。它将一个较具体的类与一个较一般的类关联。如果XY的一个子类(subclass),那么X的每个实例同时也都是Y的实例。rdfs:subClassOf关系是可传递的,即如果XY的一个子类,而Y又是Z的一个子类,那么X就是Z的一个子类。

一个类的定义由两部分组成:引入或引用一个名称,以及一个限制列表。被直接包含在类定义中的各个表达式进一步限制了该类的实例,该类的实例属于所有这些限制的交集。

3.1.2. 个体

要引入一个个体(individual),只需将它们声明为某个类的成员。 

rdf:type是一个RDF属性(RDF property),用于关联一个个体和它所属的类。

3.1.3. 使用方面的考虑

关于OWL个体的区别,有一些重要的问题。一个类仅是一个名称和一些描述某集合内个体的属性;而个体是该集合的成员。因此,类应自然地对应于与某论域中的事物的出现集合,而个体应对应于可被归入这些类的实际的实体。

在构建本体时,这个区别常常变得模糊不清,主要有两种情况:

表示的层次

子类 vs. 实例

3.2. 简单属性

3.2.1. 定义属性(Defining Properties

ObjectProperty, DatatypeProperty, rdfs:subPropertyOf, rdfs:domain, rdfs:range

一个属性是一个二元关系。有两种类型的属性:

数据类型属性(datatype properties),类实例与RDF文字或XML Schema数据类型间的关系。

对象属性(object properties,两个类的实例间的关系。

在我们定义一个属性的时候,有一些对该二元关系施加限定的方法。我们可以指定定义域(domain)和值域(range)。

属性也可以像类一样按照层次结构来组织。

3.2.2. 属性和数据类型

根据是将个体关联到个体、还是将个体关联到数据类型,我们可以区分两类属性:前者称为对象属性(object properties);后者称为数据类型属性(datatype properties)。数据类型属性的值域范围是RDF文字或者是XML Schema数据类型中定义的那些简单类型(simple types)。

3.2.3. 个体的属性

3.3. 属性特性

3.3.1. TransitiveProperty

如果一个属性P被声明为传递属性,那么对于任意的x,yzP(x,y)  P(y,z) 蕴含 P(x,z)

属性locatedIn是传递属性。

3.3.2. SymmetricProperty

如果一个属性P被声明为对称属性,那么对于任意的xyP(x,y)当且仅当P(y,x)

MendocinoRegion地区与SonomaRegion地区相邻,反过来也是这样。

MendocinoRegion地区位于CaliforniaRegion地区,但是反过来并不成立。

3.3.3. FunctionalProperty 

如果一个属性P被标记为函数型属性,那么对于所有的x, y, z:

P(x,y) P(x,z) 蕴含 y = z

3.3.4. inverseOf

如果一个属性P1被标记为属性P2的逆(owl:inverseOf, 那么对于所有的x  y:

P1(x,y) 当且仅当P2(y,x) 

请注意owl:inverseOf的语法,它仅仅使用一个属性名作为参数。A 当且仅当B 意思是 (A 蕴含 B)并且(B蕴含A). 

3.3.5. InverseFunctionalProperty 

如果一个属性P被标记为反函数型的(InverseFunctional),那么对于所有的x, y  z:

P(y,x)  P(z,x) 蕴含 y = z

3.4. 属性限制

除了能够指定属性特性,我们还能够使用多种方法进一步在一个明确的上下文中限制属性的值域。这是通过属性限制来完成的。下面描述的多种形式仅在owl:Restriction的上下文中才能使用。owl:onProperty元素指出了受限制的属性。

3.4.1. allValuesFrom, someValuesFrom

allValuesFrom someValuesFrom,则是 局部的(local,它们仅仅在包含它们的类的定义中起作用。

owl:allValuesFrom属性限制要求:对于每一个有指定属性实例的类实例,该属性的值必须是由owl:allValuesFrom从句指定的类的成员。

3.4.2. 基数限制

使用owl:cardinality,这一约束允许对一个关系中的元素数目作出精确的限制。

3.4.3. hasValue [OWL DL ]

4. 本体映射

为了让本体发挥最大的作用,就需要让本体得到充分的共享。

4.1. 类和属性之间的等价关系

equivalentClass, equivalentProperty

 

4.2 个体间的同一性

sameAs

描述个体之间相同的机制与描述类之间的相同的机制类似,仅仅只要将两个个体声明成一致的就可以了。

4.3. 不同的个体

differentFrom, AllDifferent

 

这一机制提供了与sameAs相反的效果。

5. 复杂类 [OWL DL]

5.1 集合运算符 intersectionOf,unionOf,complementOf 

 

5.1.1.交运算 [some uses of OWL DL]

5.1.2. 并运算 [OWL DL]

5.1.3. 补运算 [OWL DL]

5.2. 枚举类 oneOf [OWL DL]

OWL提供了一种通过直接枚举类的成员的方法来描述类。这是通过使用oneOf结构来完成。特别地,这个定义完整地描述了类的外延,因此任何其他个体都不能被声明为属于这个类。

5.3. 不相交类 disjointWith [OWL DL]

 

使用owl:disjointWith构造子可以表达一组类是不相交的。它保证了属于某一个类的个体不能同时又是另一个指定类的实例。

6. 本体的版本控制

属性owl:priorVersion被用来提供这种链接,并能用它跟踪一个本体的版本历史。