□夏翠娟 劉煒
Web上關(guān)聯(lián)數(shù)據(jù)的發(fā)布正呈井噴之勢,截至目前,最新版的DBPedia3.8已發(fā)布了377萬件事物(Thing)的數(shù)據(jù),其中235萬基于知識本體組織,包括個人(Person)、地點(Place)、機構(gòu)組織(Organization)、物種和疾病等實體(Entity),所使用的知識本體包含359個類、800個對象屬性、859個數(shù)據(jù)類型屬性、2347種本體映射,提供111種語言的本地化版本。Freebase則有2300余萬實體,而語義搜索引擎sameAs.org則抓取了4300萬實體,LOD項目中著名的關(guān)聯(lián)數(shù)據(jù)云已經(jīng)包含了328個關(guān)聯(lián)數(shù)據(jù)集(Linked Data Sets),涵蓋了生物醫(yī)學(xué)、政府、圖書館、教育機構(gòu)等多個領(lǐng)域。關(guān)聯(lián)數(shù)據(jù)已成為整個全球性數(shù)據(jù)空間不可或缺的一部分,更重要的是,關(guān)聯(lián)數(shù)據(jù)作為一種分布式環(huán)境下,基于語義關(guān)系的信息資源集成方式,使得Web上分布著飽含語義的、海量的、相互關(guān)聯(lián)的數(shù)據(jù),這些數(shù)據(jù)如果得到充分利用,會產(chǎn)生難以估量的巨大價值。
如何利用Web上的關(guān)聯(lián)數(shù)據(jù),需要對關(guān)聯(lián)數(shù)據(jù)的消費(Consuming)方式和技術(shù)有深入的了解。發(fā)布和消費是關(guān)聯(lián)數(shù)據(jù)相關(guān)技術(shù)的兩個方面,發(fā)布的目的即是為了消費,有的是在內(nèi)部消費,用于資源管理、整序、發(fā)現(xiàn)和重用等,典型的例子如BBC的關(guān)聯(lián)數(shù)據(jù)應(yīng)用[1];有的是開放給整個互聯(lián)網(wǎng)進行消費,如DBPedia、Freebase等大型公共關(guān)聯(lián)數(shù)據(jù)集;有的同時兼具消費者和提供者雙重角色,如各種語義搜索引擎。關(guān)聯(lián)數(shù)據(jù)的消費技術(shù)主要涉及關(guān)聯(lián)數(shù)據(jù)的訪問、獲取、發(fā)現(xiàn)、查詢、交換、傳輸、處理和利用等消費過程中所相關(guān)的各類實現(xiàn)方式、技術(shù)標(biāo)準(zhǔn)及工具平臺。關(guān)聯(lián)數(shù)據(jù)的消費方式與數(shù)據(jù)源所提供的消費接口密切相關(guān),目前關(guān)聯(lián)數(shù)據(jù)源大致可分為兩種:語義搜索引擎和關(guān)聯(lián)數(shù)據(jù)集。本文總結(jié)了關(guān)聯(lián)數(shù)據(jù)的消費技術(shù)及相關(guān)標(biāo)準(zhǔn),對上述兩種關(guān)聯(lián)數(shù)據(jù)源所提供的消費接口進行了調(diào)研,通過幾個案例來說明關(guān)聯(lián)數(shù)據(jù)消費的實現(xiàn)途徑,既考慮到關(guān)聯(lián)數(shù)據(jù)消費方的技術(shù)需求,也為關(guān)聯(lián)數(shù)據(jù)的發(fā)布提供參考方案。
對于關(guān)聯(lián)數(shù)據(jù)消費方式和技術(shù)的研究與應(yīng)用主要是國外,國內(nèi)更多的關(guān)注還在關(guān)聯(lián)數(shù)據(jù)的發(fā)布層面,在消費層面的關(guān)注較少,黃永文的《關(guān)聯(lián)數(shù)據(jù)驅(qū)動的Web應(yīng)用研究》一文分析了國內(nèi)外基于關(guān)聯(lián)數(shù)據(jù)的7種Web應(yīng)用類型,最后從用戶界面和交互方面、關(guān)聯(lián)關(guān)系的有效性、數(shù)據(jù)融合和模式映射、關(guān)聯(lián)開放數(shù)據(jù)的許可4個方面討論了關(guān)聯(lián)數(shù)據(jù)應(yīng)用面臨的挑戰(zhàn)[2]。白海燕的《關(guān)聯(lián)數(shù)據(jù)與DBPedia實例分析》一文中以DBPedia為例總結(jié)出關(guān)聯(lián)數(shù)據(jù)的三種Web獲取方式和建立自動關(guān)聯(lián)的兩類常見算法[3]。另外在2012年7月上海圖書館舉辦的“從文獻編目到知識編碼:關(guān)聯(lián)數(shù)據(jù)技術(shù)與應(yīng)用”專題研討班上,林海青的《關(guān)聯(lián)書目數(shù)據(jù):發(fā)布、查詢、消費及混搭》,對關(guān)聯(lián)數(shù)據(jù)消費技術(shù)如查詢和混搭做了普及性的報告[4],夏翠娟的報告《關(guān)聯(lián)數(shù)據(jù)的實現(xiàn)技術(shù)及案例》對關(guān)聯(lián)數(shù)據(jù)消費的流程、技術(shù)、應(yīng)用體系架構(gòu)及相關(guān)工具平臺做了梳理和分析[5]。雖然關(guān)聯(lián)數(shù)據(jù)的消費在國內(nèi)的研究層面引起了注意,但進行深入研究與利用的還很少見,較為有影響力的是南京大學(xué)Websoft研究團隊開發(fā)的語義搜索引擎Falcons,可以查詢對象、概念、知識本體和文檔。
在國外,從研究方面來看,2009年Tom Heath在其LinkedData:EvolvingtheWebintoaGlobal DataSpace一書中,系統(tǒng)地論述了關(guān)聯(lián)數(shù)據(jù)“消費”的概念、消費方式、構(gòu)建關(guān)聯(lián)數(shù)據(jù)應(yīng)用的技術(shù)和原則、在關(guān)聯(lián)數(shù)據(jù)消費過程中應(yīng)解決的問題如數(shù)據(jù)質(zhì)量等,書中用單獨一章來談關(guān)聯(lián)數(shù)據(jù)的消費,包括目前關(guān)聯(lián)數(shù)據(jù)消費的現(xiàn)狀、關(guān)聯(lián)數(shù)據(jù)應(yīng)用的體系架構(gòu)及其不同的模式、關(guān)聯(lián)數(shù)據(jù)混搭應(yīng)用的開發(fā)、數(shù)據(jù)發(fā)布者和數(shù)據(jù)消費者以及第三方應(yīng)該如何聯(lián)合起來以促進 “數(shù)據(jù)的網(wǎng)絡(luò)(Web of Data)”的一致性和整體性。在該書中,將關(guān)聯(lián)數(shù)據(jù)的消費方式分為通用的和領(lǐng)域的兩種,通用的消費方式包括瀏覽和檢索,即基于如Disco、Tabulator、Marbles等語義瀏覽器的瀏覽,和基于 SWSE、Swoogle[6,7]、Falcons、sig.ma等語義搜索引擎的檢索[8]。使用語義瀏覽器的關(guān)聯(lián)數(shù)據(jù)消費者一般是人而非機器,而語義搜索引擎則可同時對人和機器服務(wù),大部分的語義搜索引擎都提供面向人的界面和面向機器的數(shù)據(jù)消費接口。領(lǐng)域的則根據(jù)不同的領(lǐng)域數(shù)據(jù)源所提供的消費方式而多種多樣,取決于數(shù)據(jù)源(包括關(guān)聯(lián)數(shù)據(jù)集和語義搜索引擎)提供何種消費接口。另一方面,自2010年起,關(guān)聯(lián)數(shù)據(jù)的消費(Consuming Linked Data,CoLD)作為國際語義網(wǎng)大會(ISWC)的一個專題會議,已連續(xù)舉行了兩屆,第三屆將在今年繼續(xù)舉行,在CoLD專題會上,與會者主要展示一些消費工具和平臺的原理、功能及使用方法,如Christian Bizer等的用于不同詞表映射的R2R框架、用于關(guān)聯(lián)關(guān)系發(fā)現(xiàn)的SILK框架、用于關(guān)聯(lián)數(shù)據(jù)整合的LDIF框架等;還有應(yīng)用案例的演示、經(jīng)驗的分享,如探討聯(lián)合消費多個關(guān)聯(lián)數(shù)據(jù)集的技術(shù)方案。在2011年的CoLD會上,還提到了封閉(Closed)關(guān)聯(lián)數(shù)據(jù)和綠色(Green)的關(guān)聯(lián)數(shù)據(jù)的概念。
從技術(shù)標(biāo)準(zhǔn)和工具平臺方面來看,關(guān)聯(lián)數(shù)據(jù)作為語義網(wǎng)的一種輕量級的實現(xiàn)方式,早期的語義網(wǎng)研究成果如RDF數(shù)據(jù)模型、RDF查詢語言Sparql、元數(shù)據(jù)(Metadata)、知識本體(Ontology)的相關(guān)理論和技術(shù)是它的基礎(chǔ),致力于語義網(wǎng)研究和應(yīng)用推廣的機構(gòu)如 W3C、DERI、LATC、還有許多大學(xué)研究機構(gòu)等,不僅參與制定和維護如RDF、Sparql語言、Sparql協(xié)議、OWL本體語言等基礎(chǔ)的技術(shù)標(biāo)準(zhǔn),近年來基于這些技術(shù)標(biāo)準(zhǔn)不斷地開發(fā)出各種工具和平臺致力于關(guān)聯(lián)數(shù)據(jù)的發(fā)布、消費和利用,就消費來說,從語義瀏覽器如Tabulator、Disco,到語義爬蟲和語義搜索引擎如 Sig.ma、SWSE、Swoogle、Falcons,到關(guān)聯(lián)發(fā)現(xiàn)整合平臺如SILK、LIMES、LDIF等,這些工具絕大部分是開源的,依據(jù)一定的開源協(xié)議提供免費下載。
從應(yīng)用方面來看,Web上公開的大型關(guān)聯(lián)數(shù)據(jù)集如DBPedia、Freebase由于其海量的數(shù)據(jù)、多樣的消費接口,已成為全球性的數(shù)據(jù)消費中心,在各個領(lǐng)域得到利用,尤其是政府信息公開、地理信息、生命科學(xué)、圖書館檔案館博物館等,不僅作為數(shù)據(jù)的提供方,更作為數(shù)據(jù)的消費方,消費來自DBPedia、Freebase和其他領(lǐng)域性關(guān)聯(lián)數(shù)據(jù)集中的數(shù)據(jù),如西班牙國家圖書館的關(guān)聯(lián)書目數(shù)據(jù),就用owl:sameAs和rdfs:seeAlso關(guān)聯(lián)到DBPedia和美國國會圖書館的虛擬國際規(guī)范檔(Viaf)。關(guān)聯(lián)數(shù)據(jù)的消費也滲入移動領(lǐng)域,一個典型的例子是用于iPhone等智能手機的DBPedia Mobile,它消費DBPedia的地點信息幫助旅行者探索某個城市。不僅集成DBPedia上現(xiàn)有的RDF數(shù)據(jù),還支持用戶即時發(fā)布自己的數(shù)據(jù),并以RDF格式保存在DBPedia上,以供其他用戶使用。這在很大程度要歸功于DBPedia所提供的強大的數(shù)據(jù)接口,包括數(shù)據(jù)消費接口和數(shù)據(jù)輸入接口。
從流程來看,關(guān)聯(lián)數(shù)據(jù)的消費涉及到數(shù)據(jù)的訪問和獲取、發(fā)現(xiàn)、查詢、交換和傳輸、處理和利用等方面,本文在此對這個過程中所涉及到的基本技術(shù)做一個梳理和總結(jié)。
對關(guān)聯(lián)數(shù)據(jù)的一種簡單直接的訪問和獲取方式是根據(jù)關(guān)聯(lián)數(shù)據(jù)的四原則,直接訪問資源對象的URI來獲取關(guān)于資源對象的信息。關(guān)聯(lián)數(shù)據(jù)建立在URI、HTTP等基礎(chǔ)的互聯(lián)網(wǎng)技術(shù)之上,每一個資源對象(Object)都有全球唯一的HTTP URI,它集標(biāo)識功能和定位功能于一身,并且是可“解引(Dereferenced)”的,即可通過訪問資源對象的URI來獲取關(guān)于這個資源對象的信息,這些信息可以是一個html頁面,也可以是基于某種序列化格式的RDF數(shù)據(jù)。在《發(fā)布關(guān)聯(lián)數(shù)據(jù)的最佳實踐》一文中提到:“解引”可通過 HTTP協(xié)議的“內(nèi)容協(xié)商(Content Negotiation)”機制來實現(xiàn),內(nèi)容協(xié)商機制能根據(jù)客戶端請求的類型(一般在HTTP Header信息中指定)返回相應(yīng)格式的數(shù)據(jù),若是普通瀏覽器,服務(wù)器會自動返回HTML數(shù)據(jù),若是語義瀏覽器,則返回RDF數(shù)據(jù)。該文還推薦了兩種最佳實踐,即帶#(Hash)的URI的實現(xiàn)方式和303轉(zhuǎn)向的實現(xiàn)方式,如:http://linkeddata.openlinksw.com/about/Berlin#this就是一個帶“?!钡腢RI[9]。圖1是用PHP實現(xiàn)303轉(zhuǎn)向的一個例子,首先要保證服務(wù)器能接受的MIME類型包含客戶端所要請求的類型,如application/rdf+xml,如在瀏覽器中輸入http://lod.library.sh.cn/test303/foaf,返回 HTML數(shù)據(jù),輸入http://lod.library.sh.cn/test303/foaf.rdf,則返回RDF/XML數(shù)據(jù)。
圖1 用PHP實現(xiàn)303轉(zhuǎn)向
對關(guān)聯(lián)數(shù)據(jù)的另一種訪問和獲取方式是利用數(shù)據(jù)集或語義搜索引擎提供的消費接口:如Sparql端點、Restful Web Services接口、OpenSearch/SRU、各種客戶端開發(fā)庫、專用API等,將在本文第4部分詳細分析。
通常把同類數(shù)據(jù)的集合稱作一個數(shù)據(jù)集(Dataset),目前Web上的關(guān)聯(lián)數(shù)據(jù)大多以數(shù)據(jù)集的形式發(fā)布,當(dāng)Web上的關(guān)聯(lián)數(shù)據(jù)集越來越多時,就需要引入一種發(fā)現(xiàn)機制,作為數(shù)據(jù)發(fā)布者和數(shù)據(jù)消費者之間的橋梁,如建立一個注冊機構(gòu)或公開目錄,提供關(guān)于數(shù)據(jù)集的數(shù)據(jù),即數(shù)據(jù)集的元數(shù)據(jù),就是有助于數(shù)據(jù)被發(fā)現(xiàn)的途徑之一,尤其是機器的自動發(fā)現(xiàn)。VoID(Vocabulary of Interlinked Datasets)是一個基于RDFs的詞表,定義了描述關(guān)聯(lián)數(shù)據(jù)集的元數(shù)據(jù)方案[10]。VoID包括四個方面的元數(shù)據(jù),其中“訪問(Access)”元數(shù)據(jù)用于描述RDF數(shù)據(jù)使用何種協(xié)議訪問,結(jié)構(gòu)性元數(shù)據(jù)用于描述數(shù)據(jù)集的結(jié)構(gòu)和模式,利于數(shù)據(jù)的查詢和整合,對數(shù)據(jù)集之間的關(guān)系的描述有助于理解多個數(shù)據(jù)集之間的關(guān)系和不同的數(shù)據(jù)集之間如何整合利用。thedatahub.org就是這樣一個為數(shù)據(jù)集提供注冊機制的公開目錄,截至目前,thedatahub.org的子集 LOD(Linking Open Data Cloud)已建立了一個包含328個相互關(guān)聯(lián)的關(guān)聯(lián)數(shù)據(jù)集的公開目錄,每個關(guān)聯(lián)數(shù)據(jù)集都用VoID描述,如數(shù)據(jù)打包下載的URL地址,Sparql端點的URL地址,API的URL地址等信息,用于關(guān)聯(lián)數(shù)據(jù)的發(fā)現(xiàn)和消費。DBPedia也有自己的VoID描述。
根據(jù)關(guān)聯(lián)數(shù)據(jù)的四原則,數(shù)據(jù)要盡量采用RDF數(shù)據(jù)模型。RDF數(shù)據(jù)通常表現(xiàn)為一堆三元組的集合,描述某個資源的一個或多個三元組稱為一個RDF圖(Graph)。消費方要查詢RDF圖中的數(shù)據(jù)單元并對其進行處理,需要借助專用的RDF查詢語言,如W3C的Sparql,Sparql已在2008年1月成為W3C的推薦標(biāo)準(zhǔn),是目前使用最為廣泛的RDF查詢語言[11]。Sparql允許從RDF庫(通常包含多個RDF圖)中查詢?nèi)M,與關(guān)系數(shù)據(jù)庫相比,RDF庫是一個龐大無序的三元組集合,RDF數(shù)據(jù)沒有外鍵和主鍵,只有URI,Sparql查詢通過定義匹配三元組的RDF圖模式(Graph Pattern)來完成,RDF圖是用一個全球可定位的HTTP URI來唯一標(biāo)識,而不是物理意義上的數(shù)據(jù)庫名和表名,如查詢URI為<http://lod.library.sh.cn:8080/bib>這個 RDF圖中dc:creator為“巴金”的所有主語的Sparql語句為:
這種方式簡單而直接,無需了解底層的數(shù)據(jù)結(jié)構(gòu),甚至可以指定多個不同 URI(RDF圖)同時查詢:
Sparql查詢結(jié)果也是URI,而URI是 Web的標(biāo)準(zhǔn)引用格式,通過URI,可以連接到Web上的任何數(shù)據(jù),這就突破了關(guān)系數(shù)據(jù)庫查詢語言一次只能在單個數(shù)據(jù)庫中查詢的局限,整個Web于Sparql語言而言是一個巨大的整體的數(shù)據(jù)空間?;赟parql語言和Sparql協(xié)議的Sparql端點技術(shù),為查詢關(guān)聯(lián)數(shù)據(jù)集提供了標(biāo)準(zhǔn)的接口,可供人機檢索,為大部分關(guān)聯(lián)數(shù)據(jù)集和語義搜索引擎采用,在此基礎(chǔ)上,出現(xiàn)了基于多個Sparql端點的聯(lián)邦Sparql檢索引擎,可整合不同的數(shù)據(jù)源的數(shù)據(jù)。另外,還有一些非標(biāo)準(zhǔn)的RDF查詢語言,如Freebase定義了一種類似于Sparql的查詢語言 MQL,專門用于查詢Freebase中的數(shù)據(jù)。Sindice為自己的消費接口定義了專用的查詢語言Sindice Query Language。
RDF只是一種抽象的數(shù)據(jù)模型,而不是一種具體的數(shù)據(jù)格式,要使RDF數(shù)據(jù)成為機器可讀的數(shù)據(jù),就需要對其進行序列化(Serialization)。序列化的RDF數(shù)據(jù)可以通過HTTP協(xié)議傳輸和交換,這樣應(yīng)用程序可以對這些數(shù)據(jù)進行遠程獲取和處理,有利于不同的操作系統(tǒng)、程序語言之間的互操作。目前有諸如 RDF/XML,RDFa/JSON/JSONP,N3,Turtle等不同的序列化格式,其中RDF/XML和RDFa是W3C的推薦標(biāo)準(zhǔn),其他的序列化格式則為滿足不同的具體需求而設(shè)計。RDF/XML是RDF模型最為經(jīng)典的序列化方式,與XML Schema配合使用,基于XML編碼的RDF甚至能實現(xiàn)不同應(yīng)用領(lǐng)域之間的互操作,但RDF/XML有著不利于人讀和寫的缺點。RDFa是將RDF三元組嵌入HTML文檔的一種序列化格式,適用于能方便修改HTML文檔模板但難以介入系統(tǒng)體系架構(gòu)的應(yīng)用,如Drupal等內(nèi)容管理系統(tǒng)[12],這種序列化方式不能很好地支持內(nèi)容協(xié)商機制。Turtle是一種純文本的RDF序列化格式,適用于人讀和寫,N-Triples(N3)是Turtle的一個子集,因其規(guī)定每一個三元組中的主體、謂詞、客體都必須用完整的URI來表示,如:<http://lod.library.sh.cn:8080/bib/resource/PersonA000001> <http://www.w3.org/2002/07/owl#sameAs> < http://dbpedia.org/resource/Ba_Jin/>。所以與 Turtle和 RDF/XML相比,文件會比較大,但這也是它的優(yōu)點,因為它的每一行都可以單獨解析,同時它也很適合壓縮以減少在傳輸交換過程中的網(wǎng)絡(luò)流量,這種特性使得N3成為適合傳輸大型關(guān)聯(lián)數(shù)據(jù)包的一種序列化格式。JSON(JavaScript Object Notation)是一種適合于程序處理的RDF序列化格式,大部分程序語言本身就提供處理JSON數(shù)據(jù)的功能,如JavaScript和PHP,將RDF數(shù)據(jù)發(fā)布成JSON格式可使程序開發(fā)員無需安裝額外的開發(fā)包就能處理RDF數(shù)據(jù)。目前一些關(guān)聯(lián)數(shù)據(jù)消費接口一般都會提供一種或幾種格式的數(shù)據(jù)以內(nèi)容協(xié)商的方式返回給客戶端,如DBPedia的Sparql端點就提供RDF/XML,JSON,N3等多種數(shù)據(jù)格式。而一些面向機器的消費接口則以JSON格式為主。
在數(shù)據(jù)消費的過程中,訪問和獲取、發(fā)現(xiàn)和查詢、傳輸和交換的最終目的是為了將數(shù)據(jù)拿來為我所用。一般有這樣幾種利用方式:(1)為本地數(shù)據(jù)建立外部關(guān)聯(lián),如上文提到的西班牙國家圖書館的關(guān)聯(lián)書目數(shù)據(jù);(2)多種數(shù)據(jù)混搭建立新的應(yīng)用和服務(wù),如社會書簽工具Faviki,利用DBPedia、Freebase等作為背景知識庫,通過關(guān)聯(lián)數(shù)據(jù)的URI技術(shù)來消除歧義,提供分主題組織的標(biāo)簽導(dǎo)航服務(wù);(3)發(fā)現(xiàn)數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系建立知識地圖,如生命科學(xué)領(lǐng)域的關(guān)聯(lián)數(shù)據(jù)應(yīng)用Diseasome Map,整合來自不同的生命科學(xué)領(lǐng)域的數(shù)據(jù)資源,生成一個相互關(guān)聯(lián)的病毒基因網(wǎng)絡(luò);(4)進行語義挖掘和推理發(fā)現(xiàn)有用的信息,如Researcher Map是一個基于FOAF的關(guān)聯(lián)數(shù)據(jù)應(yīng)用,通過DBPedia和DBLP關(guān)聯(lián)數(shù)據(jù)集中的RDF Links來發(fā)現(xiàn)德國教授的個人信息。在數(shù)據(jù)處理和利用的過程中,要對數(shù)據(jù)查詢結(jié)果提取和重組、分析和計算,需要基于一些已有的標(biāo)準(zhǔn)規(guī)范,也需要一些開發(fā)包來支持。在標(biāo)準(zhǔn)規(guī)范層面,一些早期的語義網(wǎng)技術(shù)的成果如 RDF/XML、Sparql、OWL,其標(biāo)準(zhǔn)的制訂和技術(shù)的應(yīng)用已經(jīng)成熟;在應(yīng)用開發(fā)層面,一些流行的編程語言都有處理RDF數(shù)據(jù)的開發(fā)包,如 Java的 Jena、Sesame、Kowari ,PHP 的RAP,以支持Sparql協(xié)議向Sparql端點發(fā)起Sparql查詢、處理查詢結(jié)果、讀寫序列化的RDF數(shù)據(jù)文件、操作原生RDF數(shù)據(jù)庫等[13]。還有一些集成的客戶端開發(fā)庫如PHP的ARC2,被Drupal等開源平臺集成,作為后臺關(guān)系數(shù)據(jù)庫和前臺Sparql端點之間的中間件,提供實時的Sparql查詢到SQL查詢、SQL查詢結(jié)果到Sparql查詢結(jié)果的雙向轉(zhuǎn)換。在數(shù)據(jù)處理的過程中,不可避免會涉及到不同本體或詞表間的映射,R2R詞表映射框架可以幫助關(guān)聯(lián)數(shù)據(jù)應(yīng)用在Web上發(fā)現(xiàn)一些未知的術(shù)語、術(shù)語之間的映射,并利用這些映射將Web上的數(shù)據(jù)轉(zhuǎn)換到應(yīng)用的宿主詞匯表,有助于發(fā)現(xiàn)異構(gòu)數(shù)據(jù)之間的關(guān)系。數(shù)據(jù)混搭語言MashQL提供了另一種整合數(shù)據(jù)的思路,它將整個Web看成一個大的數(shù)據(jù)庫,每個數(shù)據(jù)源看成是數(shù)據(jù)庫中的一張表,消費者可以不必關(guān)心各個數(shù)據(jù)源所用的詞表和技術(shù)細節(jié)[14]。
一個優(yōu)秀的關(guān)聯(lián)數(shù)據(jù)集,在發(fā)布時就應(yīng)考慮如何被消費,盡可能地提供便于數(shù)據(jù)消費者調(diào)用的消費接口,大型的關(guān)聯(lián)數(shù)據(jù)集如DBPedia、Freebase就提供多種方式、多種功能、適應(yīng)不同需求的數(shù)據(jù)消費接口。一些語義搜索引擎后臺有著不斷更新壯大的海量RDF數(shù)據(jù),在Web上有供人檢索的入口,也有供機器獲取數(shù)據(jù)的開放數(shù)據(jù)接口。一些數(shù)據(jù)集成管理平臺本身的功能模塊可提供不同接口以支持關(guān)聯(lián)數(shù)據(jù)集的消費。筆者調(diào)研的DBPedia、Freebase、Nature.com、Data.gov、VIAF 等典型的關(guān)聯(lián)數(shù)據(jù)集,<sameAs.org>、SWSE、Sindice、Swoogle、Falcons等流行的語義搜索引擎,CKAN、Openlink Software、Tailis Plateform等大型數(shù)據(jù)集成管理平臺所提供的消費方式和消費接口主要有這幾種:批量下載、Sparql端點、RESTful Web Service接口、OpenSearch/SRU、專用 Web Service接口、專用API、專用客戶端開發(fā)包、插件(Plugin)/小工具(Widget)。目前關(guān)聯(lián)數(shù)據(jù)所提供的消費接口有如上所列的多種或全部,每個調(diào)研對象的詳細情況見表1、表2、表3。
表1 關(guān)聯(lián)數(shù)據(jù)集(Linked Data Sets)的消費接口
表2 語義搜索引擎(Semantic Search Engine)的消費接口
表3 工具/平臺所提供的消費接口
批量下載。早期的關(guān)聯(lián)數(shù)據(jù)集一般會將所有的RDF數(shù)據(jù)打包,在 Web上提供批量下載地址。作為數(shù)據(jù)消費方,需要將這些打包的RDF數(shù)據(jù)下載到本地,在本地存儲,供本地系統(tǒng)重用這些數(shù)據(jù)。目前,仍有許多關(guān)聯(lián)數(shù)據(jù)集沿用這一做法,如DBPedia、Freebase、CKAN、VIAF、Data.gov.uk等。DBPedia以每2-3個月更新一次的頻率發(fā)布了多個版本,2012年8月6日發(fā)布了3.8版,相較于3.7版,在數(shù)據(jù)量、數(shù)據(jù)的內(nèi)容范圍、組織方式上都有一些增加和改進。CKAN則提供幾種方式讓消費方自己制作CKAN數(shù)據(jù)的打包文件。VIAF提供RDF/XML,MARC21/XML等多種格式的打包文件批量下載。有的關(guān)聯(lián)數(shù)據(jù)發(fā)布平臺提供RDF數(shù)據(jù)包的打包工具,如D2RServer的Dump-rdf,可將整個關(guān)系數(shù)據(jù)庫轉(zhuǎn)換為RDF數(shù)據(jù)包。這種批量下載的消費方式要求數(shù)據(jù)提供方和數(shù)據(jù)消費方都要考慮到數(shù)據(jù)集的更新頻率,發(fā)布方要考慮到數(shù)據(jù)發(fā)布的版本管理,消費方要密切關(guān)注數(shù)據(jù)發(fā)布的動態(tài),考慮是否需要及時更新本地數(shù)據(jù)。
Sparql端點是目前最為流行的關(guān)聯(lián)數(shù)據(jù)消費接口之一,幾乎大部分的關(guān)聯(lián)數(shù)據(jù)集如DBPedia、na-ture.com、BBC都提供這種消費接口,大部分的關(guān)聯(lián)數(shù)據(jù)發(fā)布工具/平臺如D2RServer、Drupal、Pubby、LDIF、Virtuoso等都提供Sparql端點的技術(shù)支持,可以說Sparql端點是關(guān)聯(lián)數(shù)據(jù)發(fā)布時的標(biāo)準(zhǔn)配置。它既可提供Web界面用于人的瀏覽,也是機器訪問和獲取數(shù)據(jù)的接口,人通過普通瀏覽器訪問關(guān)聯(lián)數(shù)據(jù)集的 Sparql端點網(wǎng)址(如:http://DBpedia.org/sparql),輸入并編輯Sparql查詢語言,選擇所需的數(shù)據(jù)編碼格式,點擊一個按鈕即可獲得返回結(jié)果的RDF數(shù)據(jù)。對于機器來說,要通過Sparql端點訪問或獲取某一關(guān)聯(lián)數(shù)據(jù)集的數(shù)據(jù),通常需要借助處理Sparql查詢的客戶端開發(fā)庫如Jena的ARQ。相比而言,基于Sparql端點的消費方式對于消費方來說有較高的技術(shù)門檻,要求消費方進行一定的編程工作,對于發(fā)布方來說則無此顧慮,因為大多數(shù)關(guān)聯(lián)數(shù)據(jù)發(fā)布工具、平臺都以提供Sparql端點為標(biāo)準(zhǔn)配置。
Restful Web Services是一種輕量級的Web Services,利用URI、HTTP等簡單通用的Web標(biāo)準(zhǔn)及技術(shù),對數(shù)據(jù)進行讀取、寫入、修改、刪除等操作,是目前最為流行的數(shù)據(jù)接口,大部分的數(shù)據(jù)集、語義搜索引擎、關(guān)聯(lián)數(shù)據(jù)管理平臺都提供這種數(shù)據(jù)消費方式,見表1、表2、表3。一種簡單的基于Restful Web Services的數(shù)據(jù)消費方式是數(shù)據(jù)消費方直接訪問某一資源對象的URI,通過內(nèi)容協(xié)商機制,獲取該資源對象某種指定編碼格式的RDF描述。例如,當(dāng)數(shù)據(jù)消費方需要獲取VIAF的某一資源對象數(shù)據(jù)時,可以直接訪問該資源對象的 URI:http://www.viaf.org/viaf/75785466/,若需返回 XML 格式 的 數(shù) 據(jù),則 訪 問 http://www.viaf.org/viaf/75785466.xml,若需返回純rdf數(shù)據(jù),則訪問http://www.viaf.org/viaf/75785466.rdf。表4 是VIAF的RESTful Web Service請求和響應(yīng)的對照表。
更為復(fù)雜的Restful Web Services利用URL傳遞事先定義的參數(shù)或?qū)S玫慕Y(jié)構(gòu)化檢索語言向服務(wù)器發(fā)送數(shù)據(jù)查詢或處理請求,服務(wù)器返回既定或由客戶端指定的內(nèi)容和格式。例如VIAF的AutoSuggest接口,其語法為:http://viaf.org/viaf/AutoSuggest?query=[searchTerms]&callback[optionalCallback-Name],返回數(shù)據(jù)的格式為JSON。DBPedia的Lookup Service,其 語 法 為:http://lookup.dbpedia.org/api/search.asmx/<API>?<parameters>。其中<API>是指從DBPedia申請的API Key,用于權(quán)限控制。還有Freebase的各種Search API如根據(jù)關(guān)鍵詞查找實體的Search Service、獲取一個實體的概要信息的Topic API、獲取實體的簡單文本型描述信息的Text Service,獲取圖像實體的拇指圖的Image Service。其中Search Service的語法為:https://www.googleapis.com/freebase/v1/search?q=bob&key=<YOUR_API_KEY>。Sindice的Search API(v3)使用自定義的查詢語言詳細定義了十多種參數(shù),包括關(guān)鍵詞、詞表及屬性、返回結(jié)果的格式等,如:http://api.sindice.com/v3/search?q=Rome&fq=class:city&format=j(luò)son。Sindice基于其自定義的Sindice Query Language的API支持關(guān)鍵字匹配、三元組查詢和各種過濾策略。Tailis平臺的Augment Service API能對來自不同數(shù)據(jù)集的返回結(jié)果進行合并處理。Tailis平臺的Full Text Searching API不僅可以利用自定義的全文檢索語言通過在URL傳遞事先定義好的參數(shù)對數(shù)據(jù)集中的數(shù)據(jù)進行全文檢索,還可以傳遞Sparql查詢語言來查詢數(shù)據(jù)集中的數(shù)據(jù),甚至可以對數(shù)據(jù)集中的數(shù)據(jù)進行修改和刪除。這種方式對于消費方來說使用方便,但發(fā)布方需要考慮到數(shù)據(jù)傳輸中的安全問題,如是否需要數(shù)據(jù)加密和權(quán)限控制。
表4 OCLC viaf的請求/響應(yīng)對照表[15]
OpenSearch/SRU。OpenSearch的是Amazon.com子公司A9公司所提出的一種分享查詢結(jié)果的簡單的格式標(biāo)準(zhǔn),2005年3月首次在O'Reilly新興技術(shù)會議上提出OpenSearch1.0版本,目前使用版本為1.1版。OpenSearch與國會圖書館的結(jié)構(gòu)化查詢規(guī)范SRU結(jié)合,同樣是利用URL傳遞參數(shù)返回指定格式的結(jié)果數(shù)據(jù),但這里的參數(shù)不是自定義而是標(biāo)準(zhǔn)的結(jié)構(gòu)化查詢語言CQL,如CKAN和VIAF提供OpenSearch接口,而nature.com則提供OpenSearch和SRU整合的消費接口[16]。VIAF的OpenSearch 查 詢 舉 例:http://viaf.org/viaf/search?query=cql.any+all+%22[searchTerms]%22+&maximumRecords=100&startRecord=[startIndex]&sortKeys=holdingscount&httpAccept=application/rss%2bxml,VIAF還提供一個可視化的界面,只需要選擇一些參數(shù)的值,系統(tǒng)會自動生成包含CQL查詢的OpenSearch URL。這種方式建立在OpenSearch、SRU、CQL等標(biāo)準(zhǔn)和技術(shù)之上,對于消費方來說,無需進行復(fù)雜的編程運算,又能靈活方便地直接獲取關(guān)聯(lián)數(shù)據(jù)集中的數(shù)據(jù)單元,但需要掌握CQL語言。對于發(fā)布方來說,可以植入自定義的認證和授權(quán)規(guī)則,有利于數(shù)據(jù)的安全和版權(quán)控制。
專用Web Service接口。如DBPedia所提供的“公開分面 Web Services 接口”,http://DBpedia.org/fct/service建立在 Openlink Software公司的Virtuoso分面 Web Services接口基礎(chǔ)上,該 Web Services接口定義了一系列的HTML標(biāo)簽,在這些標(biāo)簽中可以寫入Sparql語言。當(dāng)在本地Web應(yīng)用的HTML網(wǎng)頁上嵌入這些標(biāo)簽時,服務(wù)器會返回所請求結(jié)果的XML格式數(shù)據(jù),供本地網(wǎng)頁用自定義的XSLT為用戶提供數(shù)據(jù)展示界面[17]。
專用API。這種方式是發(fā)布方通過API來精心包裝自己的數(shù)據(jù),甚至定義專用的查詢語言,開發(fā)出專用于特定數(shù)據(jù)獲取和處理的方法以供消費方在編程時調(diào)用。一般會詳細定義輸入?yún)?shù)和返回結(jié)果,還有對返回結(jié)果進行處理的方法,同時有可靠的授權(quán)控制機制如API Key、Web ID等。如CKAN的各種API,允許消費方傳入指定的屬性值,返回特定的結(jié)果。還有Freebase基于其MQL的各種API。這種方式需要發(fā)布方進行大量的開發(fā)工作,將數(shù)據(jù)訪問、查詢和處理過程封裝起來,對用戶透明,只根據(jù)用戶的輸入?yún)?shù)按需提供結(jié)果數(shù)據(jù),而消費方需要深入了解API的使用方法,對發(fā)布方和消費方都有較高的技術(shù)門檻。
專用客戶端開發(fā)包。一些大型的關(guān)聯(lián)數(shù)據(jù)集為了滿足不同消費者的個性化需求,為數(shù)據(jù)消費提供無限的可能,開發(fā)出專用的客戶端開發(fā)包,供程序員編程使用。如Freebase提供JavaScript、Flash、Python、Perl、PHP、Ruby、Clojure、Java、NET、Objective-C 10種語言的客戶端開發(fā)包,同時提供基于JavaScript的Arce集成開發(fā)平臺,有著大量利用Freebase的數(shù)據(jù)構(gòu)建本地應(yīng)用的開發(fā)工具。CKAN也提供專用的客戶端開發(fā)庫,目前有Java、PHP、JavaScript、Python、Rubby,PERL6種語言的客戶端開發(fā)庫,利用這些客戶端開發(fā)包,消費方可以靈活地獲取、使用、甚至修改CKAN中的數(shù)據(jù),進行復(fù)雜的計算。語義搜索引擎sameAs.org提供Java開發(fā)包sameas4j,Sindice提供Java和Pyhton等簡單的工具包。
插件、小工具。在Web2.0時代,插件和小工具以其靈活、小巧,可自由嵌入等特點風(fēng)行一時,這些優(yōu)點在語義網(wǎng)世界繼續(xù)發(fā)揚光大,如thedatahub.org的基于Chrome瀏覽器的插件JSONView for Chrome,可以在Chrome瀏覽器上瀏覽它的數(shù)據(jù),還有 Google Refine CKAN Extension,DBPedia 的DBpedia Lookup服務(wù)插件,可以裝在本地服務(wù)器上,其功能是通過關(guān)鍵詞或簡寫查找某一實體的URI。Freebase用于移動設(shè)備上的App如Freebase Explorer Android App。Sindice的基于Drupal的MOAT module,可以在Drupal站點中消費Sindice提供的數(shù)據(jù)。
案例1:直接利用外部數(shù)據(jù)的URI為本地數(shù)據(jù)添加外鏈。
要向本地數(shù)據(jù)集——名人規(guī)范檔中的實體添加到DBPedia的外鏈,用owl:sameAs作關(guān)聯(lián)。首先了解到DBPedia中對某一人(Person)的實體的URI命名規(guī)則是 “http://dbpedia.org/resource/”+ 人名,若是中國人,人名是姓名的拼音,如巴金的URI是http://dbpedia.org/resource/Ba_Jin/,這樣,就可以把本地數(shù)據(jù)集中的巴金用owl:sameAs鏈接到DBPedia的巴金,用三元組來表示,即:<http://lod.library.sh.cn:8080/bib/resource/PersonA000001>owl:sameAs<http://dbpedia.org/resource/Ba_Jin/>。其他的人則可以由此規(guī)則類推,只要計算出本地數(shù)據(jù)集中所有人物實體的姓名的拼音,如矛盾的拼音是Mao_Dun,其 URI就 是 http://dbpedia.org/resource/Mao_Dun/,采用這種數(shù)據(jù)消費方式,需要數(shù)據(jù)發(fā)布方有明晰的URI命名規(guī)則或者提供根據(jù)關(guān)鍵詞查詢URI的服務(wù),數(shù)據(jù)消費方也要對目標(biāo)關(guān)聯(lián)數(shù)據(jù)集的URI命名規(guī)則或URI獲取方式有所了解,才能準(zhǔn)確地獲知某一資源對象的URI。
案例2:利用Restful Web Services獲取數(shù)據(jù)。
要獲取本地數(shù)據(jù)集中的實體在VIAF中的URI,首先了解到VIAF的URI命名規(guī)則是“http://viaf.org/viaf/”+VIAF ID,只要獲取了某一實體的VIAF ID,就可以知道這一實體在VIAF中的URI。這時可以用VIAF的AutoSuggest接口,獲取本地數(shù)據(jù)集中某一實體在VIAF中的同一實體的VIAF ID,以巴金為例,在URL中傳遞參數(shù)bajin,http://viaf.org/viaf/AutoSuggest?query=bajin,返回的結(jié)果為JSON格式的數(shù)據(jù),如下:
上述結(jié)果中包括viafid這個屬性的值19673501,此即巴金的VIAF ID,由此可知巴金在VIAF 中 的 URI 為 http://viaf.org/viaf/19673501。可以用程序讀取所返回的JSON數(shù)據(jù),取得VIAF ID的值。
案例3 基于Java利用ARQ客戶端編程向多個Sparql端點獲取數(shù)據(jù)。
已知DBPedia的Sparql端點的URL地址為:http://dbpedia.org/sparql。利用 ARQ 開發(fā)包,它支持指定關(guān)聯(lián)數(shù)據(jù)集的Sparql端點的地址,就可以遠程訪問和獲取數(shù)據(jù)。如下為部分程序片段:
基于關(guān)聯(lián)數(shù)據(jù)技術(shù)框架的數(shù)據(jù)消費可以做到真正意義上的分布式和跨數(shù)據(jù)源的查詢,實現(xiàn)基于語義的全Web集成。各種大型公開的關(guān)聯(lián)數(shù)據(jù)集和語義搜索引擎提供了海量的富含語義的結(jié)構(gòu)化數(shù)據(jù),成為Web上的公共數(shù)據(jù)中心,多樣化的數(shù)據(jù)消費接口為數(shù)據(jù)消費者利用數(shù)據(jù)帶來了無限的可能。但是,目前關(guān)聯(lián)數(shù)據(jù)的消費接口,除了Sparql端點外,其他的方式包括Restful Web Services接口,尤其是各種專用的API,因其使用方法各不相同,有的還異常復(fù)雜,尚未形成統(tǒng)一的標(biāo)準(zhǔn),對消費方來說頗為不便,成為阻止關(guān)聯(lián)數(shù)據(jù)得到有效利用的障礙之一。在系統(tǒng)和平臺的開發(fā)上,進入此領(lǐng)域的大型商業(yè)公司并不多,為大英圖書館提供關(guān)聯(lián)數(shù)據(jù)體系架構(gòu)的Tailis公司在2012年宣布停止提供關(guān)聯(lián)數(shù)據(jù)相關(guān)服務(wù),反而在大學(xué)和研究機構(gòu),涌現(xiàn)出越來越多的開源項目,但對于普通消費者來說,開源軟件的使用仍然存在著較高的技術(shù)門檻。隨著關(guān)聯(lián)數(shù)據(jù)的發(fā)布越來越呈現(xiàn)出分布式、虛擬化、關(guān)聯(lián)化的特征,關(guān)聯(lián)數(shù)據(jù)的消費也將更多地依賴于接口的標(biāo)準(zhǔn)化。另一方面,數(shù)據(jù)來源跟蹤和數(shù)據(jù)質(zhì)量檢測的機制的建立,是來自技術(shù)之外的挑戰(zhàn)。
1 劉煒.關(guān)聯(lián)數(shù)據(jù):概念、技術(shù)及應(yīng)用展望.大學(xué)圖書館學(xué)報,2011(2):5-12
2 黃永文.關(guān)聯(lián)數(shù)據(jù)驅(qū)動的Web應(yīng)用研究.圖書館雜志,2010(7):55-59
3 白海燕.關(guān)聯(lián)數(shù)據(jù)及DBPedia實例分析.現(xiàn)代圖書情報技術(shù),2010(3):33-39
4 林海青.關(guān)聯(lián)書目數(shù)據(jù):發(fā)布、查詢、消費及混搭.“從文獻編目到知識編碼:關(guān)聯(lián)數(shù)據(jù)技術(shù)與應(yīng)用”專題研討班.2012,7.[2012-08-21].http://conf.library.sh.cn/sites/default/files/LBD 的 查詢消費及混搭_林海青.pdf
5 夏翠娟.關(guān)聯(lián)數(shù)據(jù)的技術(shù)實現(xiàn)及案例.“從文獻編目到知識編碼:關(guān)聯(lián)數(shù)據(jù)技術(shù)與應(yīng)用”專題研討班.2012,7.[2012-08-21].http://conf.library.sh.cn/sites/default/files/LD的技術(shù)實現(xiàn)及案例_夏翠娟.pdf
6 Li Ding,etc.Swoogle:A Search and Metadata Engine for the Semantic Web,the Thirteenth ACM Conference on Information and Knowledge Management,November 2004.
7 Li Ding,etc.Finding and Ranking Knowledge on the Semantic Web,in the Proceedings of the 4th International Semantic Web Conference,November 2005
8 Tom Heath,Christian Bizer.Linked Data:Evolving the Web into a Global Data Space.Synthesis Lectures on the Semantic Web:Theory and Technology,1:1,1-136
9 Diego Berrueta,Jon Phipps.Best Practice Recipes for Publishing RDF Vocabularies.[2012-08-31].http://www.w3.org/TR/swbp-vocab-pub/
10 Keith Alexander,etc.Describing Linked Datasets with the VoID Vocabulary.[2012-08-31].http://www.w3.org/TR/void/.
11 Olaf Hartig,Christian Bizer,Johann-Christoph Freytag.Executing Sparql Queries over the Web of Linked Data.Lecture Notes in Computer Science,2009,Volume 5823/2009:293-309.
12 夏翠娟等.關(guān)聯(lián)數(shù)據(jù)的發(fā)布技術(shù)及實現(xiàn)——以Drupal為例.中國圖書館學(xué)報,2012(1):49-57
13 Christian Bizer,Daniel Westphal.Developers Guide to Semantic Web Toolkits for different Programming Languages.[2012-08- 21 ].http://www. wiwiss.fu-berlin. de/suhl/bizer/toolkits/06062006/
14 Mustafa Jarrar,Marios D.Dikaiakos.A Data Mashup Language for the Data Web.[2012-08-31].http://events.linkeddata.org/ldow2009/papers/ldow2009_paper14.pdf
15 OCLC.Virtual International Authority File:Using the API.[2012-08-26].http://www.oclc.org/developer/documentation/virtual-international-authority-file-viaf/using-api
16 Tony Hammond.nature.com OpenSearch:A Case Study in OpenSearch and SRU Integration.[2012-08-13].http://www.dlib.org/dlib/july10/hammond/07hammond.html
17 Openlink Software.Virtuoso Facets Web Service.[2012-08-24].http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtuosoFacetsWebService