卢玉红 李力
(成都中医药大学图书馆,四川成都610075)
基于Drupal的关联数据实现研究*
卢玉红李力
(成都中医药大学图书馆,四川成都610075)
关联数据是一种发布和链接数据的规范,Drupal是一个支持语义网技术的开源内容管理系统,拥有一套良好的关联数据实现框架。结合关联数据实现流程,将Drupal实现关联数据的机制总结为内容建模及URI分配、节点RDF映射、节点数据关联化和开放使用4个步骤,并依据此机制实现图书馆书目数据的关联数据化。
关联数据Drupal实现流程
1998年蒂姆·伯纳斯·李提出了语义网的概念,但由于其语义堆栈过于复杂,目前语义网还只是一种美好的愿景。但为了实现对海量数据的管理与开放利用,建立数据之间的语义关系已经成为互联网发展的大趋势,为此,蒂姆·伯纳斯·李又提出了“关联数据”[1]。关联数据是在现有万维网技术与架构上,建立各类数据、信息和知识之间语义关联的一种规范[2]。
关联数据的实现可以概括为以下流程[3]:
①数据的RDF化。用RDF数据模型描述数据资源,为每个实体分配HTTP URI;
②RDF数据关联化。在数据之间建立RDF语义链接;
③开放利用。以某种机制存储所建立的RDF数据,并支持以某种方式进行检索和解析,例如SPARQL。
依据关联数据实现流程,目前已经出现了一些实现关联数据的方法,例如通过虚拟映射实现关系型数据库关联数据化[4];以静态RDF文件形式实现关联数据[5];用RDF数据库实现关联数据[6];封装已有的应用或Web APIs来实现关联数据[7]。笔者将以书目数据为例,利用Drupal实现关联数据,并总结此方法的特点。
Drupal是一种开源的内容管理系统,由比利时安特卫普大学的德瑞斯·布塔特和汉斯·森金德开发而成[8],经过多年的发展,Drupal已经发展成了一个拥有庞大开源社区的成熟系统。
2.1Drupal与关联数据
关联数据概念提出之后,Drupal团队很快就成立了RDF项目组,2008年正式推出了对关联数据的支持功能。一年后,Drupal6中支持关联数据的模块陆续发布,例如便于RDF内容创建和输出的RDF CCK模块[9]、用来为本地站点导入外部词表的EVOC模块[10]、为查询RDF数据提供检索支持的SPARQL模块[11]和RDF SPARQL Endpoint模块[12],以及为了实现互联,从其他关联数据站点获取数据的RDF Proxy模块[13]。到2011年Drupal7正式发布后,这些模块就被内化为核心模块,安装Drupal以后会自动开启,而RDF CCK并入全新的RDF Extension(RDFx)模块[14],SPARQL endpoint则并入原来的SPARQL模块。
除了对关联数据的强有力支持外,Drupal只需用户编写极少的代码就能实现强大的内容发布、管理和组织等功能。另外,Drupal是一个模块化框架结构的开源系统,世界各地有无数的开发者根据不同的用户需求发布了种类各异、功能丰富的第三方模块,系统管理员可以通过组合这些“即安即用”的模块来实现大部分的网站功能,大大降低开发成本。
2.2Drupal实现关联数据的机制
Drupal对关联数据的支持主要是通过相应模块的相互配合来实现,依据关联数据实现流程。Drupal实现关联数据的主要机制如下:
①内容建模及URI分配
Drupal的基本管理单元是内容类型,每个内容类型包含很多的字段,根据某个内容类型而创建的实例被称为节点,系统管理员可以利用CCK模块来自由定制内容类型和字段。依据某个内容类型创建一个节点后,系统会自动为这个节点赋予一个http URI,一般为http://siteURI/node/number,siteURI为Drupal创建站点的URL地址,number为按创建时间先后顺序为节点分配的流水号。与此同时,如果系统安装了RDF系列模块并启用,系统会自动生成此节点的RDF数据,此RDF数据也是由系统自动分配URI,一般表示为:http://siteURI/node/number.rdf。
②节点的RDF映射
默认情况下,系统自动生成的RDF数据只包含节点的创建日期、修改日期、标题、制作者等基本数据。为了能把更多的节点数据转换为RDF格式,就需重用更多的词表。
目前Drupal7包含有内化了的基础词表,基础词表和其他外部词表的导入由External RDF Vocabulary Importer端口来实现,RDFx模块则用来实现新内容类型和字段与各种领域本体之间的映射。
③节点数据的关联化
Drupal为用户提供了建立数据内外关联的方法。Drupal中有一个References模块,安装启用后,系统可以为用户提供一个“node References”字段类型。如果一个内容类型中的某个字段使用了这个字段类型,那么此字段的值就必须是系统中的另一个节点,这样就可以把两个节点链接起来。而Drupal中的另一个模块link,它允许字段的值为URI,这样就可以把外界某个数据的URI作为字段的值,实现系统内数据与系统外数据的链接。
④开放使用
SPARQL语言是RDF数据的查询语言,Drupal中提供了一个SPARQL Endpoint模块,此模块为系统中的RDF数据提供了SPARQL查询端口。此端口可以在Web上公开访问,即支持人为地输入查询语言进行数据查询,也支持在程序代码中内嵌查询语句进行机器查询。
2.3实验系统的搭建
本次实验在Drupal中安装的主要模块为:①核心模块,系统默认安装;②RDFx模块,用于生成RDF数据;③Entity API模块,允许模块支持任意实体类型;④Link模块,为内容类型提供链接字段类型;⑤SPARQL模块,提供SPARQL查询端口;⑥Feeds模块,用于批量导入数据;⑦References模块,提供节点参引(node references)字段类型。
如果通过浏览器查看RDF格式的数据,需要安装专用的语义浏览器,如OpenLink、SIOC Browser等,或者在火狐浏览器上安装相应的插件,如Tabulator[15]。笔者采用的是在火狐浏览器上安装Tabulator插件。
2.4利用Drupal实现关联数据的流程
依据Drupal实现关联数据机制,实现书目数据关联数据化的步骤如下:
①数据准备
为了便于数据之间建立链接,本实验所选用的书目数据均来自图书馆学领域,选取的内容描述项为题名、责任者、出版社、主题和语言种类。
②词表选择
根据需要描述的内容项,本实验采用了Dublin core词表来描述图书书目数据;采用FOAF来描述责任者。
③RDF映射
在Drupal中,RDF映射是在内容类型字段被创建时就可以设置的,因此这里就需要先建立一个关于图书书目数据的内容类型,并依据要描述的内容选项来设置字段,最后通过RDFx提供的操作界面来完成各个字段到RDF的映射。
本实验中建立的书目数据RDF关联关系如图1所示。
图1 图书书目数据描述项关系
图书内容类型的字段RDF映射设置好之后,就可以对数据进行批量导入。在Drupal中,数据可以通过两种方式导入,一是利用Drupal的Feeds模块来实现。利用Feeds可以建立专门导入某内容类型的接口,然后通过此接口把数据上传到Drupal中;二是可以编写代码,通过代码实现数据的批量导入。前一种方式不需要使用者掌握相关的编程语言,可直接通过可视化的界面来实现数据的批量导入,但要求数据遵守一定的规则,例如数据要以开放的text/CSV格式导入、编码形式必须是UTF-8;第二种方式可以便于使用者灵活导入数据,但要求使用者掌握一定的编程语言。
当图书书目数据被导入系统后,由于已经事先对各个字段进行了映射,系统会自动生成它们的RDF数据。图2为《图书馆学要旨》一书的RDF数据三元组表达式。
图2 节点“图书馆学要旨”RDF三元组关系
④实现内外部数据的关联
Drupal中数据的内部关联是通过References模块来实现的。例如在为图书书目数据建立内部链接时,本实验新建了一个内容类型,名为“人物”,此内容类型包括的字段有姓名、出生日期、单位、著作。这个内容类型下的一个节点是“刘国钧”。而书目节点“图书馆学要旨”的责任者字段的值恰恰就是“刘国钧”,那就可以利用References模块将节点“刘国钧”设为节点“图书馆学要旨”责任者字段的值,这样,两个节点就相互关联起来。
节点“图书馆学要旨”和节点“刘国钧”之间的关系表示为“dc:creator”,RDF三元组关系见图3。
图3 节点“图书馆学要旨”与节点“刘国钧”的内联关系
与外部数据的互联要选择合适的链接对象,国际互联网联盟罗列的关联开放数据集列表[16]和CKAN注册系统都可供人们查找目标数据集。在查询目标数据集时应首先考虑关联数据云中的核心数据集,例如DBpedia、Geonames、DBLP bibliography等,这些数据集有丰富的内外链接,并且有专业团队维护,链接权威且稳定,与这些数据集互联有利于自身数据被更多的人发现和使用。在关联数据云中,很多的数据集都提供了SPARQL查询端口,可以通过这些端口在目标数据集中查找到相应的数据,然后再建立链接,也可以通过专门的关联数据浏览器或者URI查询服务来查找。
查找到链接目标的URI后,就可以根据它与节点字段所表现出的语义关系来建立链接。安装link模块后,为“责任者单位”字段选择link字段类型,将“华东师范大学”在DBpe⁃dia中的URI作为“责任者单位”字段的值,此字段就成为了RDF数据外链的起点,用户通过这个链接就可以到达DBpe⁃dia数据集。在网页界面上实现这种链接,对人来说感觉跟传统的超链接一样,但对于机器来说则不同,这里的链接是有语义的,而传统的超链接则没有。
通过SPARQL端口获取URI的方法由于需要人的参与,所以查找的URI准确率比较高,但这对于不了解SPARQL查询语言的数据发布者来说是一个挑战。为此关联数据的研究者们开发了一些便捷的工具或服务来支持URI的查找。Sindice就是一个帮助关联数据发布者找寻目标URI的在线服务,它沿着RDF链接对数据网络进行抓爬,对发现的资源进行索引,并提供了应用接口去查找这些资源[17]。在数据量较小时,可以手工建立链接,如果数据量很大的话就必须采用自动或者半自动的方法来实现,但目前机器参与的关联建立基本都还仅限于建立OWL:sameAs类型的链接,类型单一。手工建立链接虽然耗时耗力,但能建立的链接类型比较丰富。
⑤开放查询
Drupal为外界开放了SPARQL查询端口,在本实验中,此端口的地址是:http://localhost/drupal7/sparql。如果要查询由“科技出版社”出版的图书有哪些以及这些图书的作者是谁,可以通过以下命令查询:
Drupal是利用“Drupal内容创建+PHP脚本+ARC2存储+ SPARQL终端”的组合来实现关联数据,无论是在内容创建还是RDF数据生成方面,Drupal都提供了优秀的功能。内容创建功能允许用户创建任意的内容类型来展示自己的数据,并且在节点创建时就生成相应的RDF数据,节点本身的内容发生改变,RDF数据也会实时发生改变。但基于Drupal的关联数据实现也存在着一定的风险,例如Drupal是通过在内容模型与本体之间建立映射关系来实现语义互联的,但在这个映射过程中,不是所有的字段都能得到很好的映射,这就会在一定程度上造成部分语义的缺失[18];作为RDF数据仓储管理模块,ARC2更新与维护得不到保障;缺乏建立外部链接的机制,如果想通过Drupal来实现关联数据,还要配合使用其他链接发现工具。
总之,Drupal操作简单,界面化程度高,实现关联数据的成本低廉,使用门槛低。但Drupal的功能有限,外链机制不完善,自动化程度不够,如果想进一步在关联数据运动中占据重要位置,Drupal还需不断完善自身功能。
[1]Linked Data FAQ[EB/OL].[2014-10-15].http://structured⁃dynamics.com/linked_data.html#question_4.
[2]刘炜.关联数据:概念、技术及应用展望[J].大学图书馆学报,2011(2):5-12.
[3]BizerC,CyganiakR,HeathT.Howtopublishlinkeddataon the web[R/OL].[2014-11-18].http://www4.wiwiss.fu-ber⁃lin.de/bizer/pub/linkeddatatutorial/.
[4]白海燕,梁冰.利用D2R实现关系数据库与关联数据的语义模式映射[J].现代图书情报技术,2011(7):1-7.
[5]欧石燕.面向关联数据的语义数字图书馆资源描述与组织框架设计与实现[J].中国图书馆学报,2012(6):58-71.
[6]Caracciolo C,Morshed A,Stellato A,et al.Thesaurus main⁃tenance,alignment and publication as linked data:The AGROVOC use case[C]//Proceedings of the 5thInternation⁃al Conference on Metadata and Semantics Research.Heidel⁃berg:Springer,2011:489-499.
[7]娄秀明.用关联数据技术实现网络知识组织系统的研究[D].上海:华东师范大学,2010.
[8]Drupal history[EB/OL].[2014-11-13].https://drupal.org/ about/history.
[9]RDF CCK[EB/OL].[2014-11-25].http://drupal.org/project/ rdfcck.
[10]Evoc[EB/OL].[2014-11-26].http://drupal.org/project/evoc.
[11]SPARQL[EB/OL].[2014-12-26].http://drupal.org/project/ sparql.
[12]SPARQL Endpoint[EB/OL].[2014-02-26].http://drupal. org/project/sparql_ep.
[13]RDF Proxy[EB/OL].[2014-11-26].http://drupal.org/proj⁃ect/rdfproxy.
[14]RDFx[EB/OL].[2014-12-26].http://drupal.org/project/rd⁃fx.
[15]How to use the Tabulator[EB/OL].[2014-12-28].http:// dig.csail.mit.edu/2005/ajar/release/tabulator/0.8/tab.html.
[16]Statistics on Data Sets[EB/OL].[2014-12-01].http://www. w3.org/wiki/TaskForces/CommunityProjects/LinkingOpen⁃Data/DataSets/Statistics.
[17]Tummarello G,Delbru R,Oren E.Sindice.com:Weaving the Open Linked Data[J].Lecture Notes in Computer Sci⁃ence,2008(4825):552-565.
[18]夏翠娟,等.关联数据发布技术及其实现[J].中国图书馆学报,2012(1):45-54.
卢玉红女,1989年生。硕士,馆员。研究方向:信息资源管理。
李力男,1973年生。本科学历,馆员。研究方向:计算机技术及自动化。
G250.7
*本文系四川省教育厅社会科学项目“基于关联数据语义链接的文献知识发现模型构建研究”(15SB0059)成果之一。
(2015-06-01;责编:杨新宽。)