盧玉紅 李力
(成都中醫(yī)藥大學圖書館,四川成都610075)
基于Drupal的關聯(lián)數(shù)據(jù)實現(xiàn)研究*
盧玉紅李力
(成都中醫(yī)藥大學圖書館,四川成都610075)
關聯(lián)數(shù)據(jù)是一種發(fā)布和鏈接數(shù)據(jù)的規(guī)范,Drupal是一個支持語義網技術的開源內容管理系統(tǒng),擁有一套良好的關聯(lián)數(shù)據(jù)實現(xiàn)框架。結合關聯(lián)數(shù)據(jù)實現(xiàn)流程,將Drupal實現(xiàn)關聯(lián)數(shù)據(jù)的機制總結為內容建模及URI分配、節(jié)點RDF映射、節(jié)點數(shù)據(jù)關聯(lián)化和開放使用4個步驟,并依據(jù)此機制實現(xiàn)圖書館書目數(shù)據(jù)的關聯(lián)數(shù)據(jù)化。
關聯(lián)數(shù)據(jù)Drupal實現(xiàn)流程
1998年蒂姆·伯納斯·李提出了語義網的概念,但由于其語義堆棧過于復雜,目前語義網還只是一種美好的愿景。但為了實現(xiàn)對海量數(shù)據(jù)的管理與開放利用,建立數(shù)據(jù)之間的語義關系已經成為互聯(lián)網發(fā)展的大趨勢,為此,蒂姆·伯納斯·李又提出了“關聯(lián)數(shù)據(jù)”[1]。關聯(lián)數(shù)據(jù)是在現(xiàn)有萬維網技術與架構上,建立各類數(shù)據(jù)、信息和知識之間語義關聯(lián)的一種規(guī)范[2]。
關聯(lián)數(shù)據(jù)的實現(xiàn)可以概括為以下流程[3]:
①數(shù)據(jù)的RDF化。用RDF數(shù)據(jù)模型描述數(shù)據(jù)資源,為每個實體分配HTTP URI;
②RDF數(shù)據(jù)關聯(lián)化。在數(shù)據(jù)之間建立RDF語義鏈接;
③開放利用。以某種機制存儲所建立的RDF數(shù)據(jù),并支持以某種方式進行檢索和解析,例如SPARQL。
依據(jù)關聯(lián)數(shù)據(jù)實現(xiàn)流程,目前已經出現(xiàn)了一些實現(xiàn)關聯(lián)數(shù)據(jù)的方法,例如通過虛擬映射實現(xiàn)關系型數(shù)據(jù)庫關聯(lián)數(shù)據(jù)化[4];以靜態(tài)RDF文件形式實現(xiàn)關聯(lián)數(shù)據(jù)[5];用RDF數(shù)據(jù)庫實現(xiàn)關聯(lián)數(shù)據(jù)[6];封裝已有的應用或Web APIs來實現(xiàn)關聯(lián)數(shù)據(jù)[7]。筆者將以書目數(shù)據(jù)為例,利用Drupal實現(xiàn)關聯(lián)數(shù)據(jù),并總結此方法的特點。
Drupal是一種開源的內容管理系統(tǒng),由比利時安特衛(wèi)普大學的德瑞斯·布塔特和漢斯·森金德開發(fā)而成[8],經過多年的發(fā)展,Drupal已經發(fā)展成了一個擁有龐大開源社區(qū)的成熟系統(tǒng)。
2.1Drupal與關聯(lián)數(shù)據(jù)
關聯(lián)數(shù)據(jù)概念提出之后,Drupal團隊很快就成立了RDF項目組,2008年正式推出了對關聯(lián)數(shù)據(jù)的支持功能。一年后,Drupal6中支持關聯(lián)數(shù)據(jù)的模塊陸續(xù)發(fā)布,例如便于RDF內容創(chuàng)建和輸出的RDF CCK模塊[9]、用來為本地站點導入外部詞表的EVOC模塊[10]、為查詢RDF數(shù)據(jù)提供檢索支持的SPARQL模塊[11]和RDF SPARQL Endpoint模塊[12],以及為了實現(xiàn)互聯(lián),從其他關聯(lián)數(shù)據(jù)站點獲取數(shù)據(jù)的RDF Proxy模塊[13]。到2011年Drupal7正式發(fā)布后,這些模塊就被內化為核心模塊,安裝Drupal以后會自動開啟,而RDF CCK并入全新的RDF Extension(RDFx)模塊[14],SPARQL endpoint則并入原來的SPARQL模塊。
除了對關聯(lián)數(shù)據(jù)的強有力支持外,Drupal只需用戶編寫極少的代碼就能實現(xiàn)強大的內容發(fā)布、管理和組織等功能。另外,Drupal是一個模塊化框架結構的開源系統(tǒng),世界各地有無數(shù)的開發(fā)者根據(jù)不同的用戶需求發(fā)布了種類各異、功能豐富的第三方模塊,系統(tǒng)管理員可以通過組合這些“即安即用”的模塊來實現(xiàn)大部分的網站功能,大大降低開發(fā)成本。
2.2Drupal實現(xiàn)關聯(lián)數(shù)據(jù)的機制
Drupal對關聯(lián)數(shù)據(jù)的支持主要是通過相應模塊的相互配合來實現(xiàn),依據(jù)關聯(lián)數(shù)據(jù)實現(xiàn)流程。Drupal實現(xiàn)關聯(lián)數(shù)據(jù)的主要機制如下:
①內容建模及URI分配
Drupal的基本管理單元是內容類型,每個內容類型包含很多的字段,根據(jù)某個內容類型而創(chuàng)建的實例被稱為節(jié)點,系統(tǒng)管理員可以利用CCK模塊來自由定制內容類型和字段。依據(jù)某個內容類型創(chuàng)建一個節(jié)點后,系統(tǒng)會自動為這個節(jié)點賦予一個http URI,一般為http://siteURI/node/number,siteURI為Drupal創(chuàng)建站點的URL地址,number為按創(chuàng)建時間先后順序為節(jié)點分配的流水號。與此同時,如果系統(tǒng)安裝了RDF系列模塊并啟用,系統(tǒng)會自動生成此節(jié)點的RDF數(shù)據(jù),此RDF數(shù)據(jù)也是由系統(tǒng)自動分配URI,一般表示為:http://siteURI/node/number.rdf。
②節(jié)點的RDF映射
默認情況下,系統(tǒng)自動生成的RDF數(shù)據(jù)只包含節(jié)點的創(chuàng)建日期、修改日期、標題、制作者等基本數(shù)據(jù)。為了能把更多的節(jié)點數(shù)據(jù)轉換為RDF格式,就需重用更多的詞表。
目前Drupal7包含有內化了的基礎詞表,基礎詞表和其他外部詞表的導入由External RDF Vocabulary Importer端口來實現(xiàn),RDFx模塊則用來實現(xiàn)新內容類型和字段與各種領域本體之間的映射。
③節(jié)點數(shù)據(jù)的關聯(lián)化
Drupal為用戶提供了建立數(shù)據(jù)內外關聯(lián)的方法。Drupal中有一個References模塊,安裝啟用后,系統(tǒng)可以為用戶提供一個“node References”字段類型。如果一個內容類型中的某個字段使用了這個字段類型,那么此字段的值就必須是系統(tǒng)中的另一個節(jié)點,這樣就可以把兩個節(jié)點鏈接起來。而Drupal中的另一個模塊link,它允許字段的值為URI,這樣就可以把外界某個數(shù)據(jù)的URI作為字段的值,實現(xiàn)系統(tǒng)內數(shù)據(jù)與系統(tǒng)外數(shù)據(jù)的鏈接。
④開放使用
SPARQL語言是RDF數(shù)據(jù)的查詢語言,Drupal中提供了一個SPARQL Endpoint模塊,此模塊為系統(tǒng)中的RDF數(shù)據(jù)提供了SPARQL查詢端口。此端口可以在Web上公開訪問,即支持人為地輸入查詢語言進行數(shù)據(jù)查詢,也支持在程序代碼中內嵌查詢語句進行機器查詢。
2.3實驗系統(tǒng)的搭建
本次實驗在Drupal中安裝的主要模塊為:①核心模塊,系統(tǒng)默認安裝;②RDFx模塊,用于生成RDF數(shù)據(jù);③Entity API模塊,允許模塊支持任意實體類型;④Link模塊,為內容類型提供鏈接字段類型;⑤SPARQL模塊,提供SPARQL查詢端口;⑥Feeds模塊,用于批量導入數(shù)據(jù);⑦References模塊,提供節(jié)點參引(node references)字段類型。
如果通過瀏覽器查看RDF格式的數(shù)據(jù),需要安裝專用的語義瀏覽器,如OpenLink、SIOC Browser等,或者在火狐瀏覽器上安裝相應的插件,如Tabulator[15]。筆者采用的是在火狐瀏覽器上安裝Tabulator插件。
2.4利用Drupal實現(xiàn)關聯(lián)數(shù)據(jù)的流程
依據(jù)Drupal實現(xiàn)關聯(lián)數(shù)據(jù)機制,實現(xiàn)書目數(shù)據(jù)關聯(lián)數(shù)據(jù)化的步驟如下:
①數(shù)據(jù)準備
為了便于數(shù)據(jù)之間建立鏈接,本實驗所選用的書目數(shù)據(jù)均來自圖書館學領域,選取的內容描述項為題名、責任者、出版社、主題和語言種類。
②詞表選擇
根據(jù)需要描述的內容項,本實驗采用了Dublin core詞表來描述圖書書目數(shù)據(jù);采用FOAF來描述責任者。
③RDF映射
在Drupal中,RDF映射是在內容類型字段被創(chuàng)建時就可以設置的,因此這里就需要先建立一個關于圖書書目數(shù)據(jù)的內容類型,并依據(jù)要描述的內容選項來設置字段,最后通過RDFx提供的操作界面來完成各個字段到RDF的映射。
本實驗中建立的書目數(shù)據(jù)RDF關聯(lián)關系如圖1所示。

圖1 圖書書目數(shù)據(jù)描述項關系
圖書內容類型的字段RDF映射設置好之后,就可以對數(shù)據(jù)進行批量導入。在Drupal中,數(shù)據(jù)可以通過兩種方式導入,一是利用Drupal的Feeds模塊來實現(xiàn)。利用Feeds可以建立專門導入某內容類型的接口,然后通過此接口把數(shù)據(jù)上傳到Drupal中;二是可以編寫代碼,通過代碼實現(xiàn)數(shù)據(jù)的批量導入。前一種方式不需要使用者掌握相關的編程語言,可直接通過可視化的界面來實現(xiàn)數(shù)據(jù)的批量導入,但要求數(shù)據(jù)遵守一定的規(guī)則,例如數(shù)據(jù)要以開放的text/CSV格式導入、編碼形式必須是UTF-8;第二種方式可以便于使用者靈活導入數(shù)據(jù),但要求使用者掌握一定的編程語言。
當圖書書目數(shù)據(jù)被導入系統(tǒng)后,由于已經事先對各個字段進行了映射,系統(tǒng)會自動生成它們的RDF數(shù)據(jù)。圖2為《圖書館學要旨》一書的RDF數(shù)據(jù)三元組表達式。

圖2 節(jié)點“圖書館學要旨”RDF三元組關系
④實現(xiàn)內外部數(shù)據(jù)的關聯(lián)
Drupal中數(shù)據(jù)的內部關聯(lián)是通過References模塊來實現(xiàn)的。例如在為圖書書目數(shù)據(jù)建立內部鏈接時,本實驗新建了一個內容類型,名為“人物”,此內容類型包括的字段有姓名、出生日期、單位、著作。這個內容類型下的一個節(jié)點是“劉國鈞”。而書目節(jié)點“圖書館學要旨”的責任者字段的值恰恰就是“劉國鈞”,那就可以利用References模塊將節(jié)點“劉國鈞”設為節(jié)點“圖書館學要旨”責任者字段的值,這樣,兩個節(jié)點就相互關聯(lián)起來。
節(jié)點“圖書館學要旨”和節(jié)點“劉國鈞”之間的關系表示為“dc:creator”,RDF三元組關系見圖3。

圖3 節(jié)點“圖書館學要旨”與節(jié)點“劉國鈞”的內聯(lián)關系

與外部數(shù)據(jù)的互聯(lián)要選擇合適的鏈接對象,國際互聯(lián)網聯(lián)盟羅列的關聯(lián)開放數(shù)據(jù)集列表[16]和CKAN注冊系統(tǒng)都可供人們查找目標數(shù)據(jù)集。在查詢目標數(shù)據(jù)集時應首先考慮關聯(lián)數(shù)據(jù)云中的核心數(shù)據(jù)集,例如DBpedia、Geonames、DBLP bibliography等,這些數(shù)據(jù)集有豐富的內外鏈接,并且有專業(yè)團隊維護,鏈接權威且穩(wěn)定,與這些數(shù)據(jù)集互聯(lián)有利于自身數(shù)據(jù)被更多的人發(fā)現(xiàn)和使用。在關聯(lián)數(shù)據(jù)云中,很多的數(shù)據(jù)集都提供了SPARQL查詢端口,可以通過這些端口在目標數(shù)據(jù)集中查找到相應的數(shù)據(jù),然后再建立鏈接,也可以通過專門的關聯(lián)數(shù)據(jù)瀏覽器或者URI查詢服務來查找。
查找到鏈接目標的URI后,就可以根據(jù)它與節(jié)點字段所表現(xiàn)出的語義關系來建立鏈接。安裝link模塊后,為“責任者單位”字段選擇link字段類型,將“華東師范大學”在DBpe?dia中的URI作為“責任者單位”字段的值,此字段就成為了RDF數(shù)據(jù)外鏈的起點,用戶通過這個鏈接就可以到達DBpe?dia數(shù)據(jù)集。在網頁界面上實現(xiàn)這種鏈接,對人來說感覺跟傳統(tǒng)的超鏈接一樣,但對于機器來說則不同,這里的鏈接是有語義的,而傳統(tǒng)的超鏈接則沒有。
通過SPARQL端口獲取URI的方法由于需要人的參與,所以查找的URI準確率比較高,但這對于不了解SPARQL查詢語言的數(shù)據(jù)發(fā)布者來說是一個挑戰(zhàn)。為此關聯(lián)數(shù)據(jù)的研究者們開發(fā)了一些便捷的工具或服務來支持URI的查找。Sindice就是一個幫助關聯(lián)數(shù)據(jù)發(fā)布者找尋目標URI的在線服務,它沿著RDF鏈接對數(shù)據(jù)網絡進行抓爬,對發(fā)現(xiàn)的資源進行索引,并提供了應用接口去查找這些資源[17]。在數(shù)據(jù)量較小時,可以手工建立鏈接,如果數(shù)據(jù)量很大的話就必須采用自動或者半自動的方法來實現(xiàn),但目前機器參與的關聯(lián)建立基本都還僅限于建立OWL:sameAs類型的鏈接,類型單一。手工建立鏈接雖然耗時耗力,但能建立的鏈接類型比較豐富。
⑤開放查詢
Drupal為外界開放了SPARQL查詢端口,在本實驗中,此端口的地址是:http://localhost/drupal7/sparql。如果要查詢由“科技出版社”出版的圖書有哪些以及這些圖書的作者是誰,可以通過以下命令查詢:
Drupal是利用“Drupal內容創(chuàng)建+PHP腳本+ARC2存儲+ SPARQL終端”的組合來實現(xiàn)關聯(lián)數(shù)據(jù),無論是在內容創(chuàng)建還是RDF數(shù)據(jù)生成方面,Drupal都提供了優(yōu)秀的功能。內容創(chuàng)建功能允許用戶創(chuàng)建任意的內容類型來展示自己的數(shù)據(jù),并且在節(jié)點創(chuàng)建時就生成相應的RDF數(shù)據(jù),節(jié)點本身的內容發(fā)生改變,RDF數(shù)據(jù)也會實時發(fā)生改變。但基于Drupal的關聯(lián)數(shù)據(jù)實現(xiàn)也存在著一定的風險,例如Drupal是通過在內容模型與本體之間建立映射關系來實現(xiàn)語義互聯(lián)的,但在這個映射過程中,不是所有的字段都能得到很好的映射,這就會在一定程度上造成部分語義的缺失[18];作為RDF數(shù)據(jù)倉儲管理模塊,ARC2更新與維護得不到保障;缺乏建立外部鏈接的機制,如果想通過Drupal來實現(xiàn)關聯(lián)數(shù)據(jù),還要配合使用其他鏈接發(fā)現(xiàn)工具。
總之,Drupal操作簡單,界面化程度高,實現(xiàn)關聯(lián)數(shù)據(jù)的成本低廉,使用門檻低。但Drupal的功能有限,外鏈機制不完善,自動化程度不夠,如果想進一步在關聯(lián)數(shù)據(jù)運動中占據(jù)重要位置,Drupal還需不斷完善自身功能。
[1]Linked Data FAQ[EB/OL].[2014-10-15].http://structured?dynamics.com/linked_data.html#question_4.
[2]劉煒.關聯(lián)數(shù)據(jù):概念、技術及應用展望[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實現(xiàn)關系數(shù)據(jù)庫與關聯(lián)數(shù)據(jù)的語義模式映射[J].現(xiàn)代圖書情報技術,2011(7):1-7.
[5]歐石燕.面向關聯(lián)數(shù)據(jù)的語義數(shù)字圖書館資源描述與組織框架設計與實現(xiàn)[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]婁秀明.用關聯(lián)數(shù)據(jù)技術實現(xiàn)網絡知識組織系統(tǒng)的研究[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]夏翠娟,等.關聯(lián)數(shù)據(jù)發(fā)布技術及其實現(xiàn)[J].中國圖書館學報,2012(1):45-54.
盧玉紅女,1989年生。碩士,館員。研究方向:信息資源管理。
李力男,1973年生。本科學歷,館員。研究方向:計算機技術及自動化。
G250.7
*本文系四川省教育廳社會科學項目“基于關聯(lián)數(shù)據(jù)語義鏈接的文獻知識發(fā)現(xiàn)模型構建研究”(15SB0059)成果之一。
(2015-06-01;責編:楊新寬。)