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]
2. OWL的基本元素:类(Class)、个体(Individual) 和 属性(Property)
2.1 类(Class)
2.2 个体(Individual)
2.3 属性(Property)
3. OWL 更多内容——公理和约束