-- 作者:redarm
-- 发布时间:4/3/2008 5:28:00 PM
-- OWL学习摘要
OWL,这种本体描述语言,可以用来描述Web文档和应用中内在的类和关系。 这篇文章解释了OWL语言的使用: - 通过定义类以及类的属性来形式化某个领域; - 定义个体并说明它们之间的属性; - 在OWL语言的形式化语义允许的层次上,对类和个体进行推理。 1. Differences between OWL and XML or XML Schema: An ontology differs from an XML schema in that it is a knowledge representation, not a message format. One advantage of OWL ontologies will be the availability of tools that can reason about them. The Species of OWL - OWL Lite: 用于提供给那些只需要一个分类层次和简单约束的用户; - OWL DL: 支持那些需要最强表达能力的推理系统的用户; - OWL FULL: 支持那些需要尽管没有可计算性保证,但有最强的表达能力和完全自由的RDF语法的用户. 2. 本体的结构 - OWL是语义网活动的一个组成部分。这项工作的目的是通过对增加关于那些描述或提供网络内容的资源的信息,从而使网络资源能够更容易地被那些自动进程访问。 - 由于语义网络固有的分布性,OWL必须允许信息能够从分布的信息源收集起来。其中,允许本体间相互联系,包括明确导入其他本体的信息,能够部分实现这样的功能。 - 另外,OWL提出了一个开放世界的假设。也就是说,对资源的描述并不局限于在一个简单的文件或范围内。类C1本来是由本体O1定义出来的,然而,它也可以是由其他的本体扩展出来的。对C1进行这样的假设的结果是单调的。新的信息不能否定之前的信息。新的信息可以是和旧的信息矛盾的,但是事实和推导只能被增加而不能被删减。 - 当设计一个本体的时候,设计者必须考虑到这种矛盾的可能性。一种期望是,工具的支持将帮助侦测到这样的情况。 - 为了能写出一个能被唯一翻译的而且能被软件(代理)使用的本体,我们要求OWL有一个语法和正规的语义。OWL是RDF的一个词汇扩充. 2.1. 命名空间 在我们使用一组术语之前,我们需要一个精确地指出哪些具体的词汇表将被用到。一个标准的本体开头部分里包括一组XML命名空间(namespace)声明(被包含在rdf:RDF标签里)。 为帮助书写冗长的URLs,在本体的定义之前,在文档类型声明(DOCTYPE)中提供一些实体定义(entity definitions)常常是很有用的。 2.2. 本体头部 建立了命名空间后,接下来我们通常要在owl:Ontology标签里给出一组关于本体的声明。这些标签支持一些重要的常务工作比如注释、版本控制以及其他本体的嵌入等。 3. 基本元素(Basic Elements) 一个OWL本体中的大部分元素是与类(class)、属性(property)[译注//这里的property也可译作“特性”]、类的实例(instance)以及这些实例间的关系有关的。本节给出应用这些元素所必需的语言成分。 3.1. 简单的类和个体 许多情况下,使用本体是为了用它进行关于个体的推理。为了在一种有效的方式下做到这一点,我们需要一种机制来描述个体所属的类以及这些个体通过类成员关系而继承得到的属性。尽管我们总能为个体声明特定的属性,但是本体的大部分能力在于基于类的推理。 3.1.1. 简单的具名类 Class, rdfs:subClassOf 一个领域中的最基本概念应分别对应于各个分类层次树的根。OWL中的所有个体都是类owl:Thing的成员。因此,各个用户自定义的类都隐含地是owl:Thing的一个子类。要定义特定领域的根类,只需将它们声明为一个具名类(named class)即可。OWL也可以定义空类,owl:Nothing。 3.1.2. 个体 除了描述类,我们还希望能够描述类的成员。我们通常认为类的成员是我们所关心的范畴中的一个个体(而不是另一个类或属性)。要引入一个个体(individual),只需将它们声明为某个类的成员。 3.2. 简单属性 属性(propertyies)使得我们可以断言关于类成员的一般事实以及关于个体的具体事实。 3.2.1. 定义属性(Defining Properties) ObjectProperty, DatatypeProperty, rdfs:subPropertyOf, rdfs:domain, rdfs:range 一个属性是一个二元关系。有两种类型的属性: - 数据类型属性(datatype properties),类实例与RDF文字或XML Schema数据类型间的关系。 - 对象属性(object properties),两个类的实例间的关系。注意:对象属性这个名称并不是要反映与RDF (http://www.w3.org/RDF/)术语rdf:object (http://www.w3.org/TR/rdf-schema/#ch_object)([RDF (http://www.w3.org/TR/2004/REC-owl-guide-20040210/#RDF1)],5.3.4)的联系。 3.2.2. 属性和数据类型 根据是将个体关联到个体、还是将个体关联到数据类型,我们可以区分两类属性:前者称为对象属性(object properties);后者称为数据类型属性(datatype properties)。数据类型属性的值域范围是RDF文字或者是XML Schema数据类型 (http://www.w3.org/TR/xmlschema-2/)中定义的那些简单类型(simple types)。 3.3. 属性特性 接下来的几节描述了用以进一步说明属性的机制。我们可以对属性的特性进行详细的说明,这就提供了一种强有力的机制以增强对于一个属性的推理。 TransitiveProperty 如果一个属性P被声明为传递属性,那么对于任意的x,y和z:P(x,y) 与 P(y,z) 蕴含 P(x,z) SymmetricProperty 如果一个属性P被声明为对称属性,那么对于任意的x和y:P(x,y)当且仅当P(y,x) FunctionalProperty 如果一个属性P被标记为函数型属性,那么对于所有的x, y, 和z: P(x,y) 与P(x,z) 蕴含 y = z inverseOf 如果一个属性P1被标记为属性P2的逆(owl:inverseOf), 那么对于所有的x 和 y: P1(x,y) 当且仅当P2(y,x) 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,则是 局部的(local),它们仅仅在包含它们的类的定义中起作用。 owl:allValuesFrom属性限制要求:对于每一个有指定属性实例的类实例,该属性的值必须是由owl:allValuesFrom从句指定的类的成员。 owl:someValuesFrom替换owl:allValuesFrom,那就意味着至少有一个Wine类实例的hasMaker属性是指向一个Winery类的个体的。 3.4.2. 基数限制 更为直接的方法是使用owl:cardinality,这一约束允许对一个关系中的元素数目作出精确的限制。 3.4.3. hasValue [OWL DL (http://www.w3.org/TR/2004/REC-owl-guide-20040210/#OWL_DL_tag) ] hasValue 使得我们能够根据“特定的”属性值的存在来标识类。因此,一个个体只要至少有“一个”属性值等于hasValue的资源,这一个体就是该类的成员 4. 本体映射 为了让本体发挥最大的作用,就需要让本体得到充分的共享。为了使得在开发本体时尽可能的节省人力,就需要使得开发出的本体能够被重用。更理想的情况是他们能够被组合使用。例如,你可能同时使用来自某一来源的日期本体(date ontology)和来自另一来源的物理位置本体(physical location ontology),并将位置(location)的概念加以扩展以包括这个位置所处在的时间段。 4.1. 类和属性之间的等价关系: equivalentClass, equivalentProperty 4.2 个体间的同一性: sameAs 4.3 不同的个体 differentFrom, AllDifferent 5. 复杂类 OWL另外还提供了一些用于构建类的构造子。这些构造子被用于创建所谓的类表达式。OWL支持基本的集合操作,即并,交和补运算。它们分别被命名为owl:unionOf,owl:intersectionOf,和owl:complementOf.此外,类还可以是枚举的。类的外延可以使用oneOf构造子来显示的声明。同时,我们也可以声明类的外延必须是互不相交的。 交运算: intersectionOf 并运算: unionOf 补运算: complementOf 枚举类: oneOf OWL提供了一种通过直接枚举类的成员的方法来描述类。 不相交类: disjointWith
|