2.东北大学 信息科学与工程学院, 辽宁 沈阳 110819
2. School of Information Science & Engineering, Northeastern University, Shenyang 110819, China.
Corresponding author: ZHANG Fu, E-mail : zhangfu@ise.neu.edu.cn
资源描述框架(resource description framework,RDF)是由万维网联盟W3C提出的用于描述Web资源信息的规范标准语言[1].常见的RDF数据存储模式包括:基于文件形式、基于专门的存储形式以及基于数据库存储[2].基于数据库存储方式是将RDF数据存储在数据库中[3, 4].
在上述三类RDF数据存储方法中,基于关系数据库多年来具有较为成熟的理论和技术支持,利用关系数据库进行存储成为解决RDF数据存储的有效手段.目前,常见的基于关系数据库的RDF数据存储模式大致包括:水平模式[5, 6]、通用/垂直模式[7],以及专有/二元模式[8].然而,基于水平模式进行存储时,可能导致表中空值较多,造成空间浪费且增加了维护和查询的代价;基于通用/垂直模式设计简单且模式稳定,但是对于每个查询都必须搜索整个数据库,影响查询效率,并且设计的相应SQL查询语句复杂且容易出错;基于专有/二元模式进行存储时,在RDF类和属性较多的情况下,需要创建很多表,而且随着RDF数据的变化需要动态创建和删除数据库中的表.
为此,本文通过深入分析RDF数据的特点,提出一种新的基于关系数据库的RDF存储模式,给出RDF在关系数据库中详细的存储规则,提供了相应的存储实例.基于提出的存储方法,实现了相应的自动存储原型系统,通过实验进一步验证了存储方法和原型系统的可行性,并与已有存储模式进行理论对比分析.
1 基于关系数据库的RDF存储方法通过分析RDF实例数据的特点,提出一种基于关系数据库的RDF存储模式.
1.1 RDF的形式化表示资源描述框架的基本思想是:所有信息都被称为“资源”;被描述的“资源”具有一些“属性”,而这些属性各有其“值”;对资源的描述可以通过“陈述”来进行.RDF采用三元组陈述<主体、谓词、客体>来描述Web上的资源.下面给出RDF的形式化定义.
定义1(RDF) 一个RDF数据集R可以表示为R=(RS,RT),其中:RS是一个标识符集,包括类资源标识符集合C,属性资源标识符集合P,数据类型标识符集合D,以及实例资源标识符集合T;RT是一个定义在标识符集RS上的三元组陈述集合.
1.2 基于关系数据库的RDF存储方法本节提出一种基于关系数据库的RDF存储模式.给定一个RDF模型R=(RS,RT),下面的规则1~6说明了RDF模型R在关系数据库中的存储方法.
规则1(存储RDF类资源):给定RDF模型R中的类资源标识符集合C∈RS,为每个类c∈C创建相应的类关系表Class_Table.
规则2(存储RDF文字类型属性资源):给定RDF模型R中的属性资源标识符集合P∈RS以及相应的属性三元组描述 RT,如果属性p∈P的值为文字类型值(Literal)时(例如字符串),将该属性映射为相应类表中的一个属性列.
说明:属性p∈P的RDF数据类型相对应的SQL数据类型,作为表中这一属性列的类型.例如:一个属性Age的数据类型为xsd:positiveInteger,然而在SQL中没有positiveInteger,因此,映射后的Age属性列用INTEGER作为它的类型,并且加上CHECK限制:CHECK(Age> 0).
规则3(存储RDF非文字类型属性资源):给定RDF模型R中的属性资源标识符集合P∈RS以及相应的属性三元组描述RT,如果属性p∈P的值为资源时,将该属性映射为相应类表中的一个外键属性列.
规则4(存储RDF个体实例资源):给定RDF模型R中的个体实例资源标识符集合T∈RS以及相应的属性三元组描述 RT,将每个个体i∈T映射为相应类表中的一个元组.
规则5(存储RDF多值属性): 给定RDF模型R中的属性标识符集合P∈RS,如果属性p∈P为多值属性时,创建相应的多值属性表Multi_Pro_Table.
说明:Multi_Pro_Table包含两个字段(ProID和Value),分别用于存储多值属性以及相应的值,其中,ProID取值来自于规则2和规则3中该属性p相应的属性列的取值.
规则6(存储RDF数据类型):给定RDF模型R中的数据类型标识符集合D∈RS,映射为对应的SQL数据类型.
基于上述规则,可以将RDF存储在关系数据库中.从存储过程可以看出,存储相当于实现从RDF到关系数据库的转换.目前还没有一种通用的标准方法用于证明两种模式转化的正确性.基于文献[9]中提到的信息容量保持原理,可类似证明上述存储过程是信息容量保持的存储.
1.3 RDF存储实例为了说明上述规则,图 1给出了一个RDF实例.根据1.2节提出的存储规则,可以将图 1中的RDF数据存储在关系数据库中,得到如表 1所示的关系数据库模式.
基于上一节提出的RDF在关系数据库中的存储方法,本节设计和实现了一个相应的存储工具RDF2RDB.该系统以RDF/XML形式描述的RDF数据集作为输入,输出对应的关系数据库模型.下面简要介绍RDF2RDB的总体结构并给出一个例子的运行界面.RDF2RDB是采用java语言在MyEclipse 7.0平台上自行开发的工具.在具体实现过程中,主要使用JDK1.6.0_02开发包,利用java.awt包及javax. swing包进行图形用户界面的实现,并将结果存储在MySQL中.RDF2RDB的总体结构包括:1) 解析模块,RDF2RDB利用Jena API[7]和SPARQL查询语言[1]对以RDF/XML形式描述的RDF数据集进行解析;2) 存储模块,该模块以解析模块得到的三元组作为输入,首先定义一些分解规则从三元组中提取出类、属性、实例及约束等,然后根据第1节中的存储方法将RDF数据集中的元素分别映射为关系数据库中对应的表或者记录,从而实现RDF在关系数据库中的存储;3) 显示模块,生成SQL脚本文件.
为了说明RDF2RDB的有效性,下面给出一个例子的RDF2RDB运行界面.给定图 1中的RDF文档,通过RDF2RDB可以将其存储在数据库MySQL中.图 2给出了RDF2RDB存储过程的截屏,其中输入的RDF/XML语法描述的RDF数据集、解析结果以及存储后的结果分别显示在图形界面的左、中和右区域.
从存储结果可以看出,本文提出的存储模式和原型系统能够实现RDF在关系数据库中的完整存储.此外,与本文开头部分提到的已有方法相比:1) 与水平模式相比,由于水平模式在存储RDF时,仅创建1张关系表,每个RDF属性被映射为表中的一列,RDF中的每个实例都是该表中的1条记录.该水平模式结构虽然简单,但容易造成表中空值较多,浪费存储空间.此外,当RDF数据量大的时候,由于表中的属性列以及元组太多,增加了维护代价.再者,每次查询数据库需要搜索整个表的属性和元组,增加了查询代价.2) 与垂直模式相比,垂直模式仅创建1张三元组表,表中只包含三个属性列(subject,predicate,object),表中的每一条记录都对应于一个RDF三元组.该模式结构稳定并实现了RDF数据的直接存储,但是不能很好地体现RDF数据集中的类、属性以及个体等资源之间的关系,同时对于每个查询必须搜索三元组表中的所有记录并进行自连接,影响查询效率,同时设计的相应SQL查询语句复杂且容易出错. 3) 与二元模式相比,二元模式为RDF中的每一个类和属性创建单独的表,而且类表中仅包含一列属性,用于存储属于该类的个体实例.该模式实现了类和属性的区分,但并未体现类和属性之间的关联.此外,在RDF属性较多的情况下,需要创建很多属性表,占用大量存储空间.再者,随着RDF属性的变化,需要动态创建和删除表,增加了维护的代价.与上述三种模式相比较,本文提出的存储模式具有如下特点:1) 减少了属性表的数量,本文提出的存储模式为每个类创建一个类表,并且将属性和个体实例增加到相应的类表中,进而减少属性表的数量,节约存储空间;2) RDF资源之间的关系体现明显,在本文提出的存储模式下,实现了RDF类、属性以及个体实例等资源的区分,并且考虑了它们之间的关系;3) 表结构相对稳定,随着RDF属性的变化,只需添加或删除属性所在类表的列属性即可,不需要动态创建和删除表;4) 查询自连接减少,在本文提出的存储模式下,查询时只需要查询属性和个体相应的类表即可,减少了查询自连接的数量.基于以上分析,本文 提出的基于关系数据库的RDF存储模式及工具,与已有的存储模式相比,能够减少表的数量,进而节约存储空间,同时减少了查询自连接的数量,并充分考虑了RDF资源信息之间的关联.
3 结 语本文通过深入分析RDF的特点,根据属性种类的不同,提出一种新的基于关系数据库的RDF存储模式.给出了详细的存储规则,提供了相应的存储实例.基于提出的存储方法,实现了相应的自动存储工具,通过实验进一步验证存储方法和原型系统的可行性,并与已有存储模式进行理论对比分析.
进一步的工作包括:深入研究RDF查询问题,并与已有的存储模式在查询效率方面进行对比,通过大量实验进一步完善存储框架.
[1] | Schreiber G,Raimond Y.RDF 1.1 primer[EB/OL].[2014-02-25].(2) |
[2] | Faye D,Cure O,Blin G.A survey of RDF storage approaches[J].ARIMA Journal,2012,15:11-35.(1) |
[3] | Abadi D J,Marcus A,Madden S R,et al.Scalable semantic web data management using vertical partitioning[C]//Proceedings of the 33rd International Conference on Very Large Data Bases.Vienna:ACM,2007:411-422.(1) |
[4] | Thtoharis Y.Benchmarking database representations of RDF/S store[C]//Proceedings of the 4th International Semantic Web Conference.Galway:Springer,2005:685-701.(1) |
[5] | Agrawal R,Somani A,Xu Y.Storage and querying of ecommerce data[C]//Proceedings of the 27th International Conference on Very Large Data Bases.Rome:ACM,2002:149-158.(1) |
[6] | Bornea M A,Dolby J,Kementsietsidis A,et al.Building an efficient RDF store over a relational database[C]//Proceedings of the SIGMOD.New York:ACM,2013:121-132.(1) |
[7] | Apache Jena Project Team.Apache Jena[EB/OL].[2014-12-16].https://jena.apache.org/.(2) |
[8] | Pan Z,Heflin J.DLDB:extending relational database to support semantic web queries[C]//Proceedings of the International Workshop on Practical and Scalable Semantic Systems.Sanibel Island:IEEE,2003:43-48.(1) |
[9] | Miller R J,Ioannidis Y E,Ramakrishnant R.The use of information capacity in schema integration and translation[C]//Proceedings of the VLDB Endowment.Dublin:ACM,1993:120-133. (1) |