首页 理论教育 推理软件的基础知识,OWL的分析介绍

推理软件的基础知识,OWL的分析介绍

时间:2023-02-18 理论教育 版权反馈
【摘要】:OWL语言提供三种表达能力依次增强的子语言:OWL-Lite、OWL-DL和OWL-Full,主要的分类依据就是它们的表达能力。我们可以认为OWLDL是OWL-Lite的扩展,而OWL-Full是OWL-DL的扩展。需要注意的是,任何推理软件都不可能支持OWL-Full的每个功能。用于OWL-Lite的推理器将有令人满意的计算属性,而用于OWL-DL的推理器在遇到其他具有确定性的子语言时,将按最坏情况处理,服从复杂性更高的子语言。二者相比,OWLFull对推理的支持比预期的相对较弱。

推理软件的基础知识,OWL的分析介绍

3.3.3 OWL

OWL作为W3C的推荐标准,是其所倡导的语义万维网(Semantic Web)的核心技术之一,意在提供一种语言,能够用于描述Web文档和应用中固有的类和类之间的关系。它通过定义类和类的属性来形式化一个领域,声明和定义对象和对象的属性,以及在OWL形式化语义允许的程度上对类(class)和个体(individual)进行推理[17]

OWL语言提供三种表达能力依次增强的子语言:OWL-Lite、OWL-DL和OWL-Full,主要的分类依据就是它们的表达能力。其中,OWL-Lite是表达能力最弱的子语言,OWL-Full具有最强的表达能力,而OWL-DL的表达能力则在它们之间。我们可以认为OWLDL是OWL-Lite的扩展,而OWL-Full是OWL-DL的扩展。设计子语言的目的是用于具体的实施团体和用户团体。

OWL-Lite支持的用户是那些需要一个分类体系和简单约束功能的人。例如当OWL-Lite支持集的约束时,它只允许集的值为0或者1。为OWL-Lite提供叙词表和分类法的快速移植支持功能,应该比为其他的表达能力更强的子语言提供这样的支持功能更为简单。

OWL-DL支持的用户是想获得最大表达能力、完全计算能力(所有的推论都可计算)以及确定性(所有的计算都在限定时间之内完成)。OWL-DL包括所有OWL语言的约束如类型区分(type separation)。(一个类不能同时也是一个个体或者属性,一个属性不能同时也是一个个体或者类)。OWL-DL之所以这样命名是由于它和描述逻辑的一致性(correspondence)。OWL-DL的设计目的是支持现有的描述逻辑和为推理系统提供预期的计算属性(computational properties)。

OWL-Full支持的用户是想获得最大的表达能力但不确定是否需要计算性,并在RDF句法上的自由的用户。例如,在OWL-Full中,一个类能同时作为个体的集合,它本身也可以作为一个个体。与OWL-DL的另一个很大的不同是:一个owl:DatatypeProperty能标记为:owl:InverseFunctionalProperty。OWL-Full允许一个本体增加一个前控(RDF或OWL)词表的意义。需要注意的是,任何推理软件都不可能支持OWL-Full的每个功能。

每个子语言都是比它简单的前一个子语言的扩展,不仅扩展了能被合法地表达的事物,还扩展了能被有效地推理的事物。

采用OWL的本体开发者应该考虑到哪种子语言更适合他们的需要。选择OWL-Lite还是OWL-DL,要根据用户对OWL所提供的表达能力和约束能力的需求程度。用于OWL-Lite的推理器(Reasoner)将有令人满意的计算属性,而用于OWL-DL的推理器在遇到其他具有确定性的子语言时,将按最坏情况处理,服从复杂性更高的子语言。选择OWL-DL还是OWL-Full主要根据用户对RDF Schema建模工具的需求程度(例如:定义类的类)。二者相比,OWLFull对推理的支持比预期的相对较弱。尽管有很多因素需要考虑以决定该使用它们中的哪一个,但这里是一些最简单、常用的原则。对于OWL-Lite和OWL-DL,考虑OWL-Lite提供的那些简单构造(construct)是否足以描述你的本体,若是则使用OWL-Lite,否则使用OWL-DL。对于OWL-DL和OWL-Full,考虑在你的应用中,是自动推理比较重要还是高表达能力(例如是否需要元类来建模)更重要,如果是前者,请使用OWL-DL,否则应使用OWL-Full。

我们通常要在owl:Ontology标签里给出一组关于本体的声明,这些被称为OWL头部。这些声明通过一些标签来支持一些重要的常务工作,如注释、版本控制以及其他本体的嵌入等。

【例3-9】OWL头部。

img23

通过例3-9(省略号表示还有其他标签),可以看出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用于表明包含目标本体中的声明,即导入了目标本体中的所有语义。当本体OA导入另一个本体OB时,在OB中导入的其他本体也将被导入到OA中。如果OA与OB两个本体相互导入,则认为OA与OB等价,有些开发本体的工具对这种操作的支持不太好,通常这样的操作也无多大意义。要注意的是,owl:imports并不是总能成功的,这是因为在涉及语义网时,对分布在Web上的资源不一定能进行有效的访问。

被用作注解的属性(properties)应用owl:AnnotationProperty来声明。也可以用rdfs:label来对本体进行自然语言标注。

本体头部定义以</owl:Ontology>标签结束,在这之后跟随的是构成本体的实际定义,包括类、属性和实例的集合。文档最后由</rdf:RDF>终止,表示整个本体定义的结束。

OWL本体主要由三种元素组成:类(class),个体(individual),属性(property)。

1.描述类

OWL中的类代表一些个体的集合,OWL使用形式化的方法精确描述出该类中成员必须具有的条件,例如,领域中全部猫的个体都属于Cat类。类可以通过继承关系组成层次结构,子类是父类中的特殊情况,例如考虑Animal和Cat这两个类,Cat可以是Animal的一个子类(即Animal是Cat的父类),这就表示了:所有的猫都是动物,所有Cat类的成员都是Animal类的成员,如果是猫,那么也是动物,Cat类被Animal类所包含,等等。OWL-DL的一个重要特征就是父类和子类之间的(包含)关系可以被推理机自动计算出来。概念(concept)这个词有时被用来代替类,实际上,类是概念的一个具体表现。

【例3-10】描述类的OWL片段。(www.xing528.com)

img24

除了描述简单类之外,OWL还可以描述复杂类。所谓复杂类是对简单类进行并、交、补运算等集合操作得到的新类,这几种操作分别被命名为owl:unionOf、owl:intersectionOf和owl:complementOf,它们可以和枚举(oneOf结构)结合使用,而且类的外延可以使用oneOf构造子句来声明,同时,我们也可以声明类的外延必须是互不相交的。集合运算是可以嵌套的,它并不要求要为每一个中间类都提供一个名字,这样就允许我们通过使用集合操作来从匿名类或具有值约束的类来创建复合类。

2.描述个体

个体代表(领域中)我们实际感兴趣的那些对象。OWL不使用唯一命名假设(Unique Name Assumption,UNA),也就是说,两个不同的名称可以对应到同一个个体。例如“毛泽东”、“党主席”和“毛润之”可能都对应同一个人。在OWL里,必须明确地表达个体之间是否相同,否则它们可能相同也可能不相同。个体(individual)有时也被称作实例(instance),个体相当于类的实例。例3-11定义了一个Person类的个体“Zhangxueliang”。

【例3-11】描述个体的OWL片段。

img25

3.描述属性

属性是个体之间的二元关系,也就是说,属性把两个个体连接在一起。例如,属性hasSibling可能会把Matthew和Gemma这两个个体连接起来,而属性hasChild会把Peter和Matthew这两个个体连接起来;属性可以有反向属性(inverse),例如hasOwner的反向属性是isOwnedBy;属性也可以被限制为只能拥有一个值,即所谓的函数属性(functional);属性还可以是具有传递性(transitive)或对称的(symmetric)。这里所说的属性即Protégé中槽(slot)的概念,在描述逻辑中它们就是角色(role),在UML等面向对象方法中它们就是关系(relation),而在GRAIL等形式化表达中将它们称作特性(attribute)。

在OWL中包含两种属性:对象属性(ObjectProperty)和数据属性(DatatypeProperty)。前者表示属性的值是一个个体,后者则表示属性的值是普通类型的数据,比如字符串、整数、日期等。例3-12和例3-13分别是对象属性和数据属性的OWL片段例子。

【例3-12】描述对象属性的OWL片段。

img26

【例3-13】描述数据属性的OWL片段。

img27

除了能够描述属性之外,还能为属性的值域添加约束。这是通过“属性限制(约束)”来完成的,这种约束是在元素owl:Restriction中进行描述的,owl:onProperty元素则指出了受限制的属性。它们主要包括:

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

●owl:someValuesFrom,对于每一个具有该限制属性的类实例,该属性的值至少有一个是由owl:someValuesFrom从句指定的类的成员。

●owl:cardinality,这一约束允许对一个关系中的固定元素数目作出限制。

●owl:minCardinality,这一约束允许对一个关系中的最小元素数目作出限制。

●owl:maxCardinality,这一约束允许对一个关系中的最大元素数目作出限制。

●owl:hasValue,一个个体只要至少有一个属性值等于hasValue的资源,这一个体就是该类的成员。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈