当前位置: 首页 > 工具软件 > Owl > 使用案例 >

OWL入门

邹俊拔
2023-12-01
1. OWL是什么?

       OWL全写是:Web Ontologoy Language,翻译过来是:网络本体语言。是用来定义和实例化网络本体的语言。(什么是本体?我的这篇博客给了一个简单的定义: 【转】一篇关于本体概念的综述 。更详细的可以去 w3c 上找相关论文)
       光看定义肯定很抽象,来举一个例子说明一下:
       “ 请告诉我,如果我想为每道菜准备一种开胃酒,我都应该买哪些酒?顺便说一下,我不喜欢法国苏特恩白葡萄酒。 ” 这个问题请求,现在的互联网是无法回答的,这样就需要引入 语义数据 这个概念了。而为了表示语义数据,就需要用到我们今天的主角——OWL。

       OWL包含三个语言,分别是: OWL Lite OWL DL  和  OWL Full ,他们之间是递进的关系,即OWL Lite最简单、能力最弱,OWL DL较强,OWL Full最强、包含前面两个的全部内容。
        OWL Lite  OWL Lite是表达能力最弱的子语言。它是OWL DL的一个子集,但是通过降低OWL DL中的公理约束,保证了迅速高效的推理。它支持基数约束,但基数值只能为0或l。因为OWL Lite表达能力较弱,为其开发支持工具要比其他两个子语言容易一些。OWL Lite用于提供给那些仅需要一个分类层次和简单约束的用户。
        OWL DL (DL=Description Logic,描述逻辑)将可判定推理能力和较强表达能力作为首要目标,而忽略了对RDFS的兼容性。OWL DL包括了OWL语言的所有语言成分,但使用时必须符合一定的约束,受到一定的限制。OWL DL提供了描述逻辑的推理功能,描述逻辑是OWL的形式化基础。
        OWL Full  包含OWL的全部语言成分并取消了OWL DL中的限制,它将RDFS扩展为一个完备的本体语言,支持那些不需要可计算性保证(no computational guarantees)但需要最强表达能力和完全自由的RDFS用户。在OWL Full中,一个类可以看成是个体的集合,也可以看成是一个个体。由于OWL Full取消了基数限制中对可传递性质的约束,因此 不能保证可判定推理

2. OWL的基本元素:类(Class)、个体(Individual) 和 属性(Property)


2.1 类(Class)
       类(Class):一群东西我们可以叫做一个类。其实OWL里的类的概念基本上和OO语言里的类的概念一样。在OWL中规定,任何东西都是类owl:Thing的一个成员(实例)。因此,任何用户定义的类都是owl:Thing类的子类。
       OWL中子类(Subclass)的概念也和OO语言里子类概念一样,也就是所有子类的实例都是父类的实例。例如,我们可以定义一个类: 中国 ,定义类 吉林省 中国 的子类,这样如果一个实例是 吉林省 的实例,那它肯定是 中国 的实例。
       在OWL的本体映射中,提供了类的 相等关系 equivalentClass )。两个类是相等的,就是说一个类是另一个类的换一种说法。例如:类: 中国制造  和 类: 出自中国的东西 ,如果定义了相等关系,就是说一个实例是“ 中国制造 ”的,那它就是“ 出自中国的东西 ”,只要说明它是一个的实例,则它同时具有两个的属性。

2.2
  个体(Individual)
       个体:OWL里的任何东西都是个体。个体是用来描述类的成员的概念,一个个体就是类中的一个成员。
       这里要注意区分一下个体与类的实例。其实这两个概念几乎一样,唯一的区别是:我们说实例的时候都是说:某个类的实例,所以一般的,讲实例时就带有它的类,一个实例对应一个类;而说个体时,不带有类,例如我们可以说:个体a是类C和类D的实例。
       由上面我们可以得出一个新的结论:一个个体可以同时是多个不相关的类的实例。例如, ThinkPad笔记本 是类: 笔记本电脑  的实例,也是类: 中国制造  的实例。

       说到这,还有一对容易混淆的概念: 子类(Subclass) 和  实例(Instance) 。区分的关键是要牢记一点,类是一堆东西的总称,实例是这堆东西中的一个。

2.3 属性(Property)
       RDF/OWL里都是用二元关系来描述东西的,比如描述:比尔盖茨是一个人,在RDF/OWL里就是这样描述的:比尔盖茨 ——是——> 人。其中,比尔盖茨 和 人 之间的那个关系“——是——>”就是RDF/OWL里的属性。
       属性:就是一个二元关系。OWL里包括两种属性:
       1. 类型属性(datatype properties):描述类与其实例之间关系的属性。
       2. 对象属性(object properties):描述两个不同类的实例之间关系的属性。

       既然属性是上面例子里那样的一个二元关系,那么属性就必须有且只有两个端点,起点和终点都应该是两个个体(实例)。我们用 原集(domain) 来描述起点的实例的类,用 象集(range) 来描述终点的实例的类。这是属性中一个比较重要的概念。
       例如,有这样一条OWL语句: 比尔盖茨 is-father-of "Jennifer Gates"  ,并且我们的本体中定义得有: 属性:is-father-of 的domain是类:男人 。这样,就算我们没有明显的说“ 比尔盖茨 ”是男的,但是通过上面这个属性定义,OWL的推理机就能知道  比尔盖茨  是  男人  的实例。

       属性也类似类那样,有子属性(Subproperty)的概念。例如,类:  有一个属性是: 有说明书 ,说明书可能包括酒的颜色、酒精含量、生产日期等,  还有一个属性是: 有颜色标签 ,这样,其实颜色标签就是一种简单的说明书——只是里面只说明了酒的颜色,所以, 有颜色标签  这个属性就是  有说明书  属性的子属性。

3. OWL 更多内容——公理和约束

       除了上面这些基本的东西以外(上面的东西太太太太。。。基本了,实际上OWL的重点是有很多预定义(built-in)的公理和约束),OWL有很多的公理和约束,这些才是真正使得OWL能够表示语义数据的东西。想了解关于这些的东西,可以参见这些文章(和其中提到的相关论文):
       1.  OWL Web Ontology Language Guide  [en]
       2.  OWL Web Ontology Language Reference  [en]
       3.  OWL Web Ontology Language Semantics and Abstract Syntax  [en]
 类似资料: