<语义网基础教程>笔记(三)

万维网本体语言:OWL2

Posted by Pelhans on February 21, 2019

首先描述 OWL2 的动机以及它与 RDF 和 RDFS 的关系。接下来将介绍 OWL2 的各种语言元素及 OWL2 概要。

简介

RDF 被限定为二元闭谓词,而 RDF 模式被限定为子类层次和属性层次,以及属性的定义域和值域定义。为了提供 RDF 和 RDFS 以外的更多特征,结果产生了 OWL2 语言代表万维网本体语言。

本体语言的需求

一个领域中概念的显示的湿杏花规约成为本体(ontology),因此允许我们表达本体的语言称为本体语言(ontology language)。对这些语言的需求主要包括:

  • 一个良定的语法,一个语法是良定的,仅当你能够使用它以一种无二义的方式写出某种语言允许你表达的所有事物。
  • 一个形式语义,形式语义(formal semantic)精确地描述了一种语言的含义。精确意味着语义不涉及主观想象,形式语义也使得我们对表达在句子中的知识进行推理。
  • 足够的表达能力。
  • 方便的表达方式。
  • 高效的推理支持

前面我们说 RDF 和 RDFS 的表达能力在某些地方非常有限。因此新的本体语言需要提供超出 RDFS 允许描述的更精确的定义。如果构建本体,可能希望能够进行如下推理:

  • 类成员关系
  • 分类:使用类成员关系的条件来推推导类自身之间的关系。
  • 等价关系和相同性。
  • 不相交关系和不同性。
  • 类的二元组合:有时需要类以超出子类关系的方式组合,如定义 :Person 是两个不相交的类 :Female 和 :Male 的并集。
  • 属性的局部作用域:区别不同情景中的值域限制。
  • 属性的特定:如声明一个属性是传递的或者互逆的。
  • 基础限制:对一个属性可能或者必须拥有的不同取值的数目施加限制。
  • 一致性:确定定义之间的冲突。

最后,一个本体语言必须使得利用它的表达能力来构建句子越方便越好。

推理支持

形式语义是推理支持的前提。自动推理允许我们检查本体的正确定。我们能够通过将一个本体语言映射到一个已知的逻辑系统,并且通过使用针对该系统已有的自动化推理机,为该本体语言提供形式语义和推理支持。

在设计语言过程中,需要权衡表达能力和高效推理之。通俗地讲,一个逻辑系统越丰富,推理支持越低效,时常越过了可判定性的界限。也就是在这种逻辑上的推理不能保证终止。因此我们需要一个妥协,一个可以被相对高效的推理机支持的语言,同时能够提供足够的表达能力来表达一大部分知识。

OWL2 和 RDF/RDFS 的兼容性

由于 RDF 模式拥有一些非常强大的建模原语,如 rdf:Class(所有类的类) 和 rdf:Property(所有属性的类)的结构具有很强的表达能力,如果 OWL2 的底层逻辑以一般形式包含这些原语,将会导致不可控的计算性质。

两种语义

为了兼顾语言的表达能力和对 RDF/RDFS 的兼容性。 W3C 工作组将 OWL2 分为两个不同的子语言,各自用油不同的底层语义,面向满足需求全集的不同方面。(实际上 OWL 的第一版有三个,OWL Full、 OWL DL、OWL Lite)

OWL2 Full:基于 RDF 的语义

OWL2 Full 使用所有的 OWL2 原语,它允许以任意的方式将这些原语与 RDF 和 RDF 模式组合。OWL2 Full 的优点在于它被映射到一个基于 RDF 的语义(RDF-based semantic)。因此它在结构上和语义上完全向上兼容 RDF:任何合法的 RDF 文档也是一个合法的 OWL2 Full 文档,并且任何有效的 RDF 模式推理也是一个有效的 OWL2 Full 结论。OWL2 Full 的缺点是这个语言已经变得太强以至于是不可判定的,使得任何完备(或高效)推理支持的希望都破灭了。

OWL2 DL:直接语义

为了获得计算效率, 第二个子语言 OWL2 DL 被映射到描述逻辑(DL)上。描述逻辑是谓词逻辑的一个子集,它使得高效推理成为可能。 OWL2 DL 限制了 OWL2、RDF 和 RDFS 的原语使用方式,如 OWL2 DL 只能定义非文字资源的类所有 OWL2 DL 类是 owl:Class 的实例,而不是 rdfs:Class的等等。这些限制保证该语言维护了与一个广泛理解的描述逻辑之间的直接对应。 OWL2 DL 可以利用大量现有的推理机,例如 Pellet、FaCT、RACER 和 HermiT。缺点是我们失去了和 RDF 间的完整的兼容性。一个 RDF 文档在变成一个合法的 OWL2 DL 文档之前,通常将不得不以某种方式扩展或以另一些方式加以限制。但是每个合法的 OWL2 DL 文档都是一个合法的 RDF 文档。

OWL 语言

基础定义

这里介绍 OWL2 的语言原语,下面给出一些与形式逻辑相关的词汇表:

  • 在 OWL2 中,类的成员通常被称为个体(individal)而非实例。
  • 当我们声明某个资源是一个特定类型时,称这是一个断言。
  • 当我们组合类、属性和实例时,它们形成了表达式(expression)。
  • 如果我们随后将这个定义关联到我们的某个类,那么我们就创建了公里。

记住 OWL2 本质上是一个描述实物结合的语言这点很有用。这些集合被称为“类”。我们为一个 OWL2 类产生的任何声明意味着将这个类和所有事物的集合区别开。

语法

OWL2 的可用语法除了 RDF 的,还有很多 OWL2 的语法,每个都有优缺点:

  • 函数式语法:用于 OWL2 的语言规范文档、OWL2 本体的语义定义、与 RDF 语法的相互映射,以及 OWL2 的不同概要中。
    EquivalentClasses(:Person ObjectUnionOf(:Man :Woman ))
    
  • OWL/XML:一种 OWL2 的 XML 语法,主要优点在于它允许我们使用标准的现成的 XML 编辑工具来与本体交互。
<EquivalentClasses>
    <Class abbreviatedIRI=":Person"/>
    <ObjectUnionOf>
        <Class IRI="#Man"/>
        <Class IRI="#Woman"/>
    </ObjectUnionOf>
</EquivalentClasses>
  • 曼彻斯特语法:它是诸如 Protege 在内的当前绝大多数本体编辑器在用户界面中使用的语法。
Class: Person
    EquivalentTo: Man or Woman

这里我们用RDF 的 Turtle 语法。

本体文档

当使用 Turtle 语法时,OWL2 本体文档或者简单地称为本体,仅仅是另一个RDF 文档。 OWL2 本体文档最少包含下面几个命名空间:

@prefix owl: <http://www.w3g.org/2002/07/owl#>.    
@prefix rdf: <http://www.w3g.org/1999/02/22-rdf-syntax-ns#>.    
@prefix rdfs: <http://www.w3g.org/2000/01/rdf-schema#>.    
@prefix xsd: <http://www.w3g.org/2001/XMLSchema#>.    

除此之外还可能包含一个基命名空间、本体本身、它的名字、可能的注释、版本控制以及包含的其他本体等。

属性类型

  • 对象属性:将个体与个体关联
  • 数据类型属性:将个体与一种数据类型的文字值关联。
  • 标注属性:标注属性是一些不携带任何 OWL2 DL 直接语义含义的属性,也就是说,它们被一个描述逻辑推理机忽略。但是会在 RDF 模式和 OWL2 Full 推理机中考虑它。
  • 顶层和底层属性:OWL2 中所有对象属性是 owl:topObjectProperty 的子属性,相反, owl:bottomObjectProperty 不关联任何个体。类似地还有 owl:topDataProperty 关联到任何可能的文字值 和 owl:bottomDataProperty 的不关联任何个体到任何值。
  • 传递属性:传递属性是所谓的复合属性(somposite property),即它们可以通过多步被声明。复合属性还要满足一些约束,这里不一一列出。
  • 对称和非对称性:对称属性和它们的逆等价。
  • 函数型和反函数型属性
  • 自反和反自反属性:一个属性的自反性意味着每个个体通过该属性关联到自身。反自反属性就是没有个体通过该属性关联到自身。

属性公理

除了前面的属性类型外,我们能够根据属性与类及其他属性如何关联来指定属性的额外特定。

  • 定义域和值域:定义域与值域只能用于确定这些个体的类成员关系。
  • 逆属性
  • 等价属性
  • 不相交属性
  • 属性链

类公理

类通过断言某个资源的类型时 owl:Class 来定义。存在两个预定义的类在推理中特别重要: owl:Thing 和 owl:Nothing。前者是最一般的类,每个可能的 OWL2 个体都是这个类的成员。 owl:Nothing 类是空类,它没有成员。

  • 子类关系: 用 rdfs:subClassOf 属性定义子类关系。
  • 类等价: 用 owl:EquivalentClass 属性定义。
  • 不相交类: owl:disjointWith
  • 枚举:通过显示的枚举它包含的所有个体来定义类,通过 owl:oneOf。
  • 并集和不相交并集:用 owl:unionOf 结构来指定并集, owl:disjointUnionWith 指定不相交集。
  • 交集:声明一个类是两个或多个类的交集,用 owl:intersectionOf

属性上的类公理

我们可以通过指定额外的类公理来约束个体的集合,这些个体通过观察它们的属性被认为是某个类的成员,这使得我们自动地推导类成员关系。类限制公理通过关联到一个特别类型的匿名类(在 Turtle 中,一个 owl:Restriction )被连接到一个 owl:Class,它将满足限制的个体聚在一起。

  • 全称限制
  • 存在限制
  • 必要和充分条件:一般而言,一个推理机只基于充分必要条件来直接推导个体的类成员关系。
  • 值限制
  • 基数限制
  • 数据值域限制和数据类型
  • 自限制

个体事实

在许多情况下,我们已经拥有了许多关于这些实体的知识,并且只需要类公理来推导额外信息。关于个体的声明通常称为断言。

  • 类和属性断言
  • 同一性断言:显示地声明两个个体是同一个实体,owl:sameAs。
  • 负断言:将知道不成立的实物显示化排除

OWL2 概要

OWL2 规范包括一组称为概要的内容,它们中的一些是 OWL2 DL 规范中的著名的子集,而另一些更具有表达能力,但是不含 OWL2 Full 的完整语义。特别地,这些概要包括:

  • 通过语法限制。一个概要语法的语义由 OWL2 DL 提供。
  • 通过逻辑定义,使其能够在多项式时间内处理一些有趣的推理服务。

下面将概述 OWL2 中定义的概要以及它们的典型应用领域。

  • OWL2 EL 概要是 EL描述逻辑的扩展。它的主要优势在于可以用多项式时间推理拥有大量类公理的本体,适用于实例较多的情况,如医学领域
  • OWL2 QL 为类公理的推理而优化,当处理拥有相对不复杂的类定义但包含大量个体断言的本体时则相对低效。 OWL2 QL 概要被开发用于高效低处理对这些本体的查询应答,适用于概念多的情况
  • OWL2 RL 概要基于称为描述逻辑编程的语言,并使得描述逻辑和规则能够交互:它是使用规则能够实现的 OWL2 DL 的最大语法部分。因为规则可以高效地并行执行,允许实现最大规模推理

总结

  • OWL2 扩展了 RDF 和 RDF模式,引入了一组表达能力更强的语言特征,例如基数约束、类的等价性、交集和并集。
  • 通过 OWL 与逻辑之间的对应关系提供了形式语义和推理支持。
  • OWL2 分为两类。OWL2 DL 在 OWL2 RDFS 语言元素的组合上施加某些限制来保留可判定性。 OWL2 Full 则是 RDF 模式的完全兼容扩展,拥有所有的 OWL2 语言特征,但是它被证明是不可判定的。
  • 3 个概要, OWL2 EL 、OWL2 QL 和 OWL2 RL,是满足计算性质要求的语法子集。特别地, OWL2 RL 可以使用基于规则的技术实现,并且已经成为在语义网上表示推理的事实标准。
  • OWL2 有 4 种标准, RDF/XML、曼彻斯特语法、OWL/XML和函数式语法。