湯怡潔 楊銳 劉毅
收稿日期:2013.09.14 錄用日期:2013.11.25 發(fā)表日期:2014.01.06
本文網(wǎng)址:http://www.kmf.ac.cn/tabid/583/InfoID/2722/frtid/911/Default.aspx
摘要:
首先針對SPARQL查詢語言的語法和查詢過程等理論研究進行闡述,接著分析當前SPARQL查詢技術的實現(xiàn)和擴展。最后通過對Science Direct、IEEE等數(shù)據(jù)庫、語義網(wǎng)會議和相關大型項目的研究,總結出當前SPARQL的研究熱點問題以及相關的研究進展,如關聯(lián)數(shù)據(jù)的SPARQL查詢、移動終端的SPARQL應用等。
關鍵詞:SPARQL語言 語義查詢 關聯(lián)數(shù)據(jù) 語義Web服務
基金項目:本文系國家科技支撐計劃課題“科技知識組織體系共享服務平臺建設”子課題“科技知識組織體系(STKOS)的開放查詢和推理接口建設”(項目編號:2011BAH10B03-5)研究成果之一。
1 引言
隨著網(wǎng)絡的發(fā)展,數(shù)字化資源呈現(xiàn)爆炸式增長,如何提高信息檢索的質量,推出令人滿意的檢索技術成為全球范圍內(nèi)的研究重點和熱點。由于網(wǎng)絡資源具有分布式、異構性、易變性、更新快等特點,傳統(tǒng)的基于字符串匹配的關鍵詞檢索技術在查全率和查準率方面難以滿足用戶的真實需求。因此,語義網(wǎng)概念和相關語義技術一經(jīng)提出,得到了廣泛關注——語義技術提供了針對信息組織、知識表示、機器理解等問題的解決方案。SPARQL作為W3C推薦的語義檢索的標準,可以使得檢索操作以機器可理解的方式在語義層面上進行,實現(xiàn)語義檢索進而提高檢索的查全率和查準率。
2 相關理論研究
SPARQL(Simple Protocol and RDF Query Language)是一種用于RDF的查詢語言,是基于之前的RDF 查詢語言(rdfDB、RDQL 和 SeRQL)發(fā)展而來的,用于訪問任何可以映射到RDF模型的數(shù)據(jù)資源(包括本地的和遠程的)。2008年1月,SPARQL正式成為一項W3C推薦標準,由三個獨立的規(guī)范(查詢語言規(guī)范、SPARQL數(shù)據(jù)訪問協(xié)議、XML格式的查詢結果)構成。2012年11月,在SPARQL 1.0的基礎上SPARQL工作組提出了全功能標準體系SPARQL 1.1,并于2013年1月最終發(fā)布了一系列SPARQL1.1標準[1]。
2.1 SPARQL語法
SPARQL提供了4種不同形式的查詢,SELECT、ASK、DESCRIBE和CONSTRUCT。其中,SELECT查詢形式用于標準查詢,以標準的SPARQL XML結果格式返回查詢結果。ASK查詢返回結果是yes或no,沒有具體內(nèi)容。DESCRIBE用于提取本體和實例數(shù)據(jù)的一部分,返回一個圖形,其中包含和圖形模式匹配的節(jié)點的相關信息。CONSTRUCT用來為每個查詢結果輸出一個圖形模式,這樣就可以直接從查詢結果創(chuàng)建新的RDF 圖。
在SPARQL各種查詢類型中,查詢語句的構建必須遵循SPARQL基本查詢語法,SPARQL的語法和傳統(tǒng) SQL 的語法有相似之處,具體語法如表1所示:
2.2 SPARQL查詢過程
SPARQL查詢過程[2]中,用戶(包括人和機器)通過一系列接口與系統(tǒng)進行交互,接口將查詢請求送入SPARQL查詢處理器,調用底層的RDF存儲獲取相關的結果記錄。SPARQL通過查詢器掃描關鍵詞,并且根據(jù)標準解析查詢序列驗證RDF三元組的有效性。如果查詢不正確,則在處理的過程中及時通過接口為用戶返回錯誤信息,如圖1所示:
圖1 SPARQL查詢過程
在SPARQL處理器中,首先利用解析器對查詢語句進行解析,判斷是否存在語法錯誤。接著在重寫查詢階段,以規(guī)則為基礎重新優(yōu)化查詢語句。最后通過執(zhí)行QEP(查詢執(zhí)行計劃)發(fā)生器產(chǎn)生的計劃獲取RDF數(shù)據(jù)并通過接口返回給用戶。
3 SPARQL查詢技術的實現(xiàn)和擴展
3.1 基于RESTful協(xié)議的SPARQL終端
SPARQL Endpoint是遵循SPARQL協(xié)議的查詢終端,用戶可以通過SPARQL查詢語言對知識庫進行查詢操作[3]。SPARQL終端提供Web交互界面,支持用戶直接輸入查詢語句進行查詢,同時也支持機器用戶通過HTTP URI+SPARQL語句的Restful方式調用。SPARQL Endpoint支持GET/POST請求方式;支持各種查詢類型,如CONSTRUCT(構建)、DESCRIBE(描述);查詢結果以XML/JSON/N3等多種方式輸出。
多個數(shù)據(jù)集之間的聯(lián)合查詢可以利用數(shù)據(jù)集提供的遠程SPARQL終端進行,SPARQL工作組提出的最新SPARQL 1.1標準體系專門針對SPARQL聯(lián)合查詢以及擴展進行說明,利用SERVICE關鍵詞指向SPARQL聯(lián)合查詢處理器,允許調用遠程SPARQL終端,并通過OPTIONAL在多個數(shù)據(jù)集中關聯(lián)查詢,挖掘內(nèi)部關聯(lián)關系。
目前已經(jīng)出現(xiàn)大量SPARQL查詢工具,如Jena ARQ Processor、Twinkle、ViziQuer等支持用戶操作[4]。其中Jena ARQ Processor以命令行的形式提供用戶使用,對用戶要求較高,使用較為復雜。Twinkle較之Jena ARQ Processor來說,提供較好的圖形化界面供用戶使用,可以加載、編輯和保存SPARQL查詢語句,支持查詢RDF文件和關系型數(shù)據(jù)庫等。ViziQuer[5]能夠幫助用戶連接遠程SPARQL終端,瀏覽檢索包含rdf:type關系的數(shù)據(jù)。通過工具連接并抽取SPARQL終端的基礎數(shù)據(jù)架構,支持用戶針對抽取的基礎數(shù)據(jù)架構進行可視化瀏覽,在此基礎上用戶可以通過ViziQuer構建SPARQL查詢,獲取遠程數(shù)據(jù)集中的相關數(shù)據(jù)。
3.2 SPARQL與SQL查詢語言轉換
SPARQL查詢是針對RDF數(shù)據(jù)的語義查詢技術,檢索以機器可理解的方式在語義層次上進行。但是目前大多數(shù)的應用系統(tǒng)仍沿用傳統(tǒng)關系型數(shù)據(jù)庫存儲,采用元數(shù)據(jù)字段組織數(shù)據(jù)的方式。關系型數(shù)據(jù)庫查詢語言SQL語言和采用視圖匹配方式進行本體查詢的SPARQL語言有較大的差異,因此,如何有效地將用戶語義檢索的請求轉換為對傳統(tǒng)關系型數(shù)據(jù)庫的查詢是語義查詢技術的核心問題之一。
針對SPARQL訪問現(xiàn)有關系型數(shù)據(jù)庫,SPARQL-SQL查詢語言轉換的解決思路是在現(xiàn)有關系型數(shù)據(jù)庫的數(shù)據(jù)結構基礎上,通過映射規(guī)則生成相應的RDF本體知識組織結構支持SPARQL的訪問查詢,代表應用有D2RQ等[6]。這種方法從本質上講并沒有改變底層數(shù)據(jù)存儲模式,只是在上層進行了數(shù)據(jù)組織形式轉換。
在語義存儲的三種模式中基于傳統(tǒng)數(shù)據(jù)的存儲模式目前應用較為廣泛,如Jena、Sesame都是利用關系型數(shù)據(jù)庫作為底層存儲的?;谶@種思路的研究[7]都有一個共同的設計模式,利用各種不同的映射算法匹配傳統(tǒng)數(shù)據(jù)庫存儲形式和RDF數(shù)據(jù)格式,如結構映射算法、數(shù)據(jù)映射算法、查詢映射算法等。
4.SPARQL技術熱點應用
4.1 Linked Data查詢處理
Linked Data(關聯(lián)數(shù)據(jù))簡單地說,就是按標準的RDF格式定義組織數(shù)據(jù),用三元組(主體、謂詞、客體)形式來表示資源。其本身并不具備語義特征,但是它可以在數(shù)據(jù)層面建立關聯(lián),支持語義網(wǎng)的各種語義操作。關聯(lián)數(shù)據(jù)的服務功能需要檢索和解析RDF數(shù)據(jù),通常采用SPARQL作為標準的RDF解析語言,同時提供SPARQL Endpoint服務是關聯(lián)數(shù)據(jù)應用的重要方式之一。圖2以LOD云圖為基礎,具體描述了關聯(lián)數(shù)據(jù)集和SPARQL Endpoint之間的關系[8]。DBpedia提供了自身的SPARQL終端,支持外部服務通過SPARQL查詢相關數(shù)據(jù);Virtuoso LOD SPARQL終端提供了多個關聯(lián)數(shù)據(jù)集的檢索服務,利用分布式子查詢技術在各個數(shù)據(jù)集中獲取檢索結果。圖中還描繪了Google搜索引擎在未來將利用SPARQL終端涵蓋所有LOD云中的數(shù)據(jù)集。
圖2 LOD云圖與SPARQL Endpoint
目前針對Linked Data的SPARQL研究主要集中在多數(shù)據(jù)集查詢方式、分布式SPARQL查詢算法優(yōu)化等方面。在2012年7月舉辦的ICWE 2012(12th International Conference on Web Engineering)會議上,來自德國柏林洪堡大學(Humboldt-Universit?t zu Berlin)的O. Harting提出了針對多個關聯(lián)數(shù)據(jù)集之間的SPARQL查詢處理方法,主要包括數(shù)據(jù)倉庫、聯(lián)合查詢和關聯(lián)數(shù)據(jù)查詢處理[9]。
數(shù)據(jù)倉庫是針對統(tǒng)一的中心數(shù)據(jù)庫內(nèi)數(shù)據(jù)的查詢處理方法,可以通過SPARQL Endpoint訪問集成多個數(shù)據(jù)源的公共數(shù)據(jù)集(如Sindice)。這種方法具有較高的查詢執(zhí)行效率,但是查詢的數(shù)據(jù)無法保證實時更新,并且無法涵蓋所有的數(shù)據(jù)信息。聯(lián)合查詢方法是基于關聯(lián)數(shù)據(jù)出版商提供的查詢服務進行分布式查詢處理,分發(fā)器分析查詢請求并將之分解為若干個子查詢請求,分別發(fā)送到不同的查詢服務中執(zhí)行并返回結果。這種方法能保證查詢數(shù)據(jù)的實時更新,但是所有數(shù)據(jù)集都必須提供標準的SPARQL Endpoint接口。關聯(lián)數(shù)據(jù)查詢處理是依賴于關聯(lián)數(shù)據(jù)原則以執(zhí)行查詢中的數(shù)據(jù)鏈接遍歷為處理方式的關聯(lián)數(shù)據(jù)查詢方法。這種方法可以保證查詢數(shù)據(jù)的實時更新,而且不需要標準的SPARQL Endpoint,直接支持關聯(lián)數(shù)據(jù)的表示形式。
在聯(lián)合查詢和關聯(lián)數(shù)據(jù)查詢處理兩種方法中,分布式SPARQL查詢和關聯(lián)數(shù)據(jù)的遍歷算法是提高整體查詢效率的關鍵,目前分布式查詢算法大多數(shù)都是基于最小生成樹算法(MST-based algorithm)的,比較常用的有Boruvkas algorithm、Prims algorithm、Edmonds algorithm、Kruskals algorithm等。在算法優(yōu)化方面,歐盟FP7的SHARE項目中提出了兩種優(yōu)化方法:一種是利用最小生成樹標準圖算法在查詢執(zhí)行之前計算出一個靜態(tài)的查詢計劃;另一種是在查詢執(zhí)行的過程中,利用統(tǒng)計預測等相關算法進行動態(tài)分析并及時制定符合要求的執(zhí)行計劃。
4.2 語義Web服務發(fā)現(xiàn)
在Web服務研究中,如何使機器自動、準確、高效地進行服務發(fā)現(xiàn)、匹配、組合、監(jiān)控和調用一直都是熱點和難點問題。語義Web服務提供了一種新的解決思路。語義Web服務是以一種明確的、計算機能夠理解的語言來描述Web服務功能和內(nèi)容,同時增強Web服務的操作性能和健壯性。Web服務利用語義網(wǎng)豐富的語義描述能力和強大的邏輯推理能力來表述其含義,通過這些帶有語義信息的描述來實現(xiàn)服務的自動發(fā)現(xiàn)、匹配、組合、監(jiān)控和調用。
基于描述邏輯推理的語義Web服務發(fā)現(xiàn)方法在Web服務數(shù)量大幅增加和本體復雜度不斷提升的情況下,會帶來語義Web服務發(fā)現(xiàn)效率和可擴展性方面的問題。如何提高語義Web服務發(fā)現(xiàn)的性能是研究的重點之一。通過調研相關項目及其研究成果發(fā)現(xiàn),在語義Web服務發(fā)現(xiàn)過程中加入SPARQL語言處理是解決上述問題的途徑之一[10]。有學者指出在語義Web服務匹配算法之前先通過基于SPARQL查詢的預處理策略過濾Web服務倉庫并消除服務描述。這種方法降低了發(fā)現(xiàn)機制的搜索范圍,從而提升了整體性能。這種解決方案不獨立提供新型的發(fā)現(xiàn)機制,而是較好地適用于目前現(xiàn)有的各種發(fā)現(xiàn)機制中。
在現(xiàn)有的服務發(fā)現(xiàn)方法中,針對服務請求和服務廣告都采用相同的發(fā)現(xiàn)機制。但是服務廣告是服務的具體描述,信息豐富完整;服務請求是針對服務的某些特性,并非構造一個完整的服務描述。研究人員認為將服務請求和服務廣告分開處理能夠有效地提高服務發(fā)現(xiàn)效率——使用語義Web查詢語言SPARQL-DL作為服務請求的描述語言來獲取已發(fā)布的服務,采用OWL-S描述服務廣告支持有效的服務發(fā)現(xiàn)。
在組合Web服務方面,WS-BPEL(Web服務業(yè)務流程執(zhí)行語言)是最為成熟和被廣泛支持的技術,是一種可執(zhí)行的XML語言,被描述的業(yè)務流程中每個單元都是由Web服務實現(xiàn)的。在服務組合中,Web服務的動態(tài)選擇必須能夠適應服務的各種變化,然而在WS-BPEL中大多數(shù)語言不支持動態(tài)選擇。為了解決這一問題,研究人員提出了采用SPARQL和WS-BPEL開發(fā)支持Web服務的動態(tài)選擇模型[11]。在這個新型模型中,用戶可以在運行環(huán)境中通過查詢隨時提出服務需求,以保證在不斷變化的環(huán)境中,系統(tǒng)自動選擇適應需求,而無需重構整個服務組合。
4.3 移動終端的SPARQL應用
隨著傳感網(wǎng)絡和移動通訊的不斷發(fā)展,越來越多的智能終端承擔著數(shù)據(jù)處理的功能,在智能終端的數(shù)據(jù)計算增強了用戶間的通訊與合作。具體而言,智能終端依賴于一個小型計算平臺,采用語義技術進行處理、利用、揭示相關知識。目前各類語義工具,如三元組存儲、推理、查詢等基本上都是面向大型應用程序設計的,在高性能服務器上進行計算,因此建立智能終端的小型計算平臺在硬件性能上將會是一個巨大的考驗。
針對移動智能終端的語義技術和知識的處理方式基本上是在智能終端自身進行中小數(shù)量級的知識計算,輔以大數(shù)量級知識計算的遠程接口調用[12]。利用支持中小數(shù)據(jù)量語義應用的基準構建輕量級系統(tǒng)架構,在移動設備上部署三元組存儲,提供基于移動設備的可共享本地數(shù)據(jù)倉庫。在共享數(shù)據(jù)倉庫的基礎上構建語義應用,并通過可對外提供訪問服務的SPARQL Endpoint支持網(wǎng)絡聯(lián)合查詢。同時語義處理可以應用于遠程服務器上,終端設備只包含語義數(shù)據(jù)接口,通過接口從服務器遠程獲取語義數(shù)據(jù)。在這種情況下,必須實行相關的機制以確保在不同環(huán)境的終端設備中數(shù)據(jù)的有效性、安全性和保密性。
目前已經(jīng)開發(fā)出能與三元組存儲系統(tǒng)交互的基于事件的組件和移動終端API,如Qsparql、Soprano、sparqlpush等[13],現(xiàn)有的移動應用開發(fā)框架(QT、Python)通過API調用數(shù)據(jù)商或應用軟件提供的SPARQL終端查詢數(shù)據(jù)資源。其中sparqlpush可以通過對用戶提交的SPARQL查詢請求的登記,在PuSH服務器端記錄該請求。當數(shù)據(jù)集發(fā)生變化時,sparqlpush自動進行查詢請求操作,記錄下所有有結果變化的SPARQL查詢請求,在PuSH服務器端通過PubSubHubbub協(xié)議向相關移動設備發(fā)推送通知,類似于RSS服務。
5. 結論
通過對Science Direct、ACM、IEEE等多個數(shù)據(jù)庫中的文獻、ISWC、ESWC等語義網(wǎng)的專業(yè)會議及國際上大型項目的調研分析發(fā)現(xiàn),在語義查詢方面針對SPARQL查詢語言的研究和應用的關注重點不再是理論探討和基本應用,而是基于當前語義網(wǎng)各種技術和應用的發(fā)展如何進一步拓展SPARQL技術發(fā)展。正如本文中描述的如何在海量RDF數(shù)據(jù)和關聯(lián)數(shù)據(jù)集中組合SPARQL關聯(lián)查詢以及在移動應用中如何集成SPARQL查詢服務等都成為了當前SPARQL查詢技術的研究熱點。
參考文獻:
1. Last SPARQL 1.1.proposed recommendations published [EB/OL]. [2013-03-19]. http://www.w3.org/blog/SW/2013/01/29/missing-sparql-1-1-proposed-recommendations-published/.
2. Search RDF data with SPARQL[EB/OL]. [2013-03-23].http://www.ibm.com/developerworks/xml/library/j-sparql/.
3. SparqlEndpoints [EB/OL]. [2013-03-25].http://www.w3.org/wiki/SparqlEndpoints.
4. Gupta R, Malik S K. SPARQL Semantics and execution analysis in Semantic Web using various tools[C]//2011 International Conference on Communication Systems and Network Technologies. Jammu:IEEE,2011:278-282
5. Zviedris M, Barzdins G. ViziQuer: A tool to explore and query SPARQL endpoints[C]//European Semantic Web Conference 2011, LNCS 6644. Berlin:Springer-Verlag ,2011: 441-445.
6. Kashlev A, Chebotko A. SPARQL-to-SQL query translation: Bottom-Up or Top-Down?[C]//2011 IEEE International Conference on Services Computing. Washington DC:IEEE,2011 :757-758
7. Chebotko A, Lu Shiyong . Querying the Semantic Web: An efficient approach using relational databases [M]. Saarbrücken: LAP Lambert Academic Publishing, 2009.
8. 呂康豪. RDF Web與SPARQL的應用 [EB/OL]. [2013-04-02].http://semwebtw.openfoundry.org/2010/Talks/0319-semweb-kennyluck/.
9. Hartig O. An introduction to SPARQL and queries over linked data [C]// 11th International Semantic Web Conference(ISWC 2012), LNCS 7387. Berlin:Springer-Verlag ,2012: 506–507.
10.Garcia J M, Ruiz D, Ruiz-Cortes A. Improving semantic web services discovery using SPARQL-based repository filtering [J]. Web Semantics: Science, Services and Agents on the World Wide Web, 2012,17(4):12–24.
11.Tizzo N P, Coello J M A, Cardozo E. Improving dynamic Web service selection in WS-BPEL using SPARQL [C]// Systems, Man, and Cybernetics (SMC), 2011 IEEE International Conference on 2011. Anchorage:IEEE,2011 :864-871
12.Aquin M, Nikolov A, Motta E. Building SPARQL-Enabled applications with android devices[EB/OL].[2013-04-02].http://iswc2011.semanticweb.org/fileadmin/iswc/Papers/PostersDemos/iswc11pd_submission_89.pdf.
13.Smart‐M3 Storage Solutions [R/OL]. [2013-04-22]. http://www.diem.fi/files/deliverables/D5.6.3_Storage-solutions.
(本文責任編輯:劉遠穎)