OWL本体存储技术研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0引言
语义Web(semantic web)作为当前万维网的扩展,通过结构化和形式化的方法,以表示Web上的资源,使得计算机程序能够对网络资源进行分析和推理[1-2]。语义网作为下一代万维网,目前成为全球领域的研究热点。尤其随着W3C(world wide web consortium)的一些语义网相关标准,如资源描述框架(resource description framework,RDF)、RDFS、网络本体语言(web ontology language,OWL)等的制定,越来越多的人利用这些标准和技术,去开发基于Semantic Web的应用系统。
在语义网体系的各类技术中,本体是最重要的支撑技术[3],语义网的发展加速了本体的研究。随着最新本体语言OWL 的出现,越来越多的人利用OWL语言开发基于本体的知识系统,使用本体语言描述某个领域的知识,利用本体工具开发特定领域的知识系统[4]。在这些知识系统中,本体提供了知识库构建的基本结构,是整个系统的骨架和核心。OWL本体作为一种全新的数据组织形式,选择合适的存储介质和合理的存储模式对其进行有效存储,是当前人们十分关注的问题,也是开发语义本体知识系统的各类技术中最为关键的基础性支撑技术[5-6]。
1本体存储介质
在本体的存储技术中,存储介质的选择是研究人员首先需要关注的。目前已知的本体存储介质,也是人们经常选择的存储介质有内存、文件、关系数据库等3种方式。
1.1内存存储方法
用内存法存储本体是将本体数据以一定的结构形式直接存储在计算机的主存中,然后在计算机主存中进行数据查询等各种数据操作。这种方法具有较高的运行效率,但囿于物理条件的限制,内存存储方法只能存储很少量的数据,而且记忆能力很差。
1.2文件存储方法
文件存储的方法简单可行,适宜常久存储,很多本体相关工具都支持用文件格式存储的本体进行存取。但是这种方法
收稿日期:2010-08-23;修订日期:2010-12-21。
效率很低,而且存储规模有限。当OWL本体数据文件很大时,要把握OWL本体数据全局的结构,必须反复扫描OWL本体文件,进行大量数据存取工作,严重影响了系统的效率。有时为了保证本体系统的并发性,还需建立一定的并发控制机制[7]。
早期的一些本体工具是基于文件系统实现的,这些工具主要用来编辑和建立本体,并不是为大规模本体数据的存储和查询管理服务的,例如Onto,Prot
与本体中类的属性相对应,对于类的多种数据类型属性可以通过数据库表中相关列的唯一性和主键设置来对应,本体类之间子类-超类的关系可以用数据表中主、外键的设置来对应。他们之间数据类型的对应关系也可以用类似xsd:integer与数据库中INT/INTEGER对应关系一样一一对应起来。
3.2设计方案
本体的最基本的概念就是资源。OWL使用URI(uniform resource identifier)来标识资源,这与RDF模型的三元组(Sub-ject、Object和Predicate)完成可以建立相对应的关系[15]。如果文字可以作为Predicate,而且文字可以作为是一种特殊的资源,那么就允许我们把文字和本体中的URI一起当作资源,存储在一张数据表中,这样Predicate为相同文字的各个三元组就能共享相同的Web本体资源。
三元组也是本体的一个基本概念,用一个数据表来表示RDF基本模型的。从理论上讲,有这两个数据表就可以完全存储本体信息。但为使本体存储的结构更加清晰,并提高数据查询的效率和结构的稳定性,本文专门建立了一些数据表来存放一些常用信息。在数据表的建立过程中有一个原则须共同遵守,就是本体的类作为数据表存储时,一般都要把他们属性名对应的列设置为数据表的主键。如果数据表的主键已经存在,则将须设为主键的列设置为唯一列。采用如下措施把本体实例存储到关系数据库的数据表中:
(1)建立数据表分别将subClassOf,subPropertyOf,domain 和range等函数属性的定义域存储起来。
(2)本体中,经常出现父子关系的类,因此需要将这种隶属关系的实例存储在一张数据表中。假若若OWL本体中类c 和类d存在subClassOf(c,d)关系,他们对应的数据表分别为tab-lec和tabled,则在将在tablec中添加一个与tabled的主键同名的列。用此列作为tablec的主键和引用数据表tabled的外键。
(3)本体存储中,类与类之间出现互逆关系也是需要我们需要考虑的。假设若OWL本体中类d和类e与类c之间各一对互逆的对象属性,他们对应的存储数据表分别为tabled、tab-lee和tablec。我们将tablec设置为联系表,在tablec中添加两个分别与tabled和tablee的主键名相同的列,用此列作为数据表tablec中的复合主键和引用数据表tabled和tablee的外键。
(4)将OWL中有许多如sameAs等用来描述等价的类、性质和实例存储在数据表中。
(5)将OWL中使用objectProperty等来刻画属性特性的类存储在数据表中。
(6)将OWL中使用allValuesFrom等用于属性取值的推理的所有类可以存储到属性约束表中。以后如果OWL语言又引入了其它的对属性约束的描述,在此数据表中添加相关记录即可,从而减轻程序设计人员修改存储模式的压力。
(7)将OWL中如allDifferent等用来描述资源间的二元关系但使用频率又比较低的类全部存储到一张二元关系的数据表。同(6)一样,这种存储办法也可以减轻程序设计人员修改存储模式的压力。
3.3实验
3.3.1实验环境和实验数据
我们选择的实验环境硬件为CPU P41.7GHz,1024M内存和80G硬盘,软件采用Windows XP系统和Mysql数据库,编程语言为Java(JDK1.6)。本体测试框架采用比较著名的关于高等学校的领域本体LUBM。这里我们选择LUBM(l,0)作为实验数据。
3.3.2实验方法
在现有的存储模式中,除垂直模式外,其它存储模式的表结构都不稳定,在实际应用中具有很大的局限性。所以,实验只比较本文的存储模式和垂直模式性能方面的不同。在LUBM (l,0)中,分别对3个本体文件、9个本体文件和16个本体文件使用7个具体的查询进行性能测试:
(1)类person的所有子类
(2)属性subPropertyOf的所有子属性
(3)实例Undergraduatestudent63的属性takesCourse的值是什么
(4)图
(Undergraduatestudent63takesCourse?x)(?x type Course)
(5)属性teacherof的range是什么
(6)属性advisor的domain是什么
(7)Faculty的所有实例
3.3.3实验结果
取5次连续100次查询的所需平进行比较,以ms作为时间单位。得到用垂直模式和本文模式进行前6个查询的时间对比如图1、图2和图3所示,将3类本体文件进行查询7得到的时间对比如图4所示。
由时间对比图可以看出,对于相同数量的本体文件和相关的查询条件,本文设计的混和存储模式的查询时间要比垂直模式的查询时间短,说明本文实现的混合存储模式查询性能更好;从图4还可以看出,当本体数量增加时,对于相同的查询,本文的存储模式时间增长速度慢于垂直模式的查询时