湯怡潔 楊銳 劉毅



收稿日期:2013.09.14 錄用日期:2013.11.25 發表日期:2014.01.06
本文網址:http://www.kmf.ac.cn/tabid/583/InfoID/2722/frtid/911/Default.aspx
摘要:
首先針對SPARQL查詢語言的語法和查詢過程等理論研究進行闡述,接著分析當前SPARQL查詢技術的實現和擴展。最后通過對Science Direct、IEEE等數據庫、語義網會議和相關大型項目的研究,總結出當前SPARQL的研究熱點問題以及相關的研究進展,如關聯數據的SPARQL查詢、移動終端的SPARQL應用等。
關鍵詞:SPARQL語言 語義查詢 關聯數據 語義Web服務
基金項目:本文系國家科技支撐計劃課題“科技知識組織體系共享服務平臺建設”子課題“科技知識組織體系(STKOS)的開放查詢和推理接口建設”(項目編號:2011BAH10B03-5)研究成果之一。
1 引言
隨著網絡的發展,數字化資源呈現爆炸式增長,如何提高信息檢索的質量,推出令人滿意的檢索技術成為全球范圍內的研究重點和熱點。由于網絡資源具有分布式、異構性、易變性、更新快等特點,傳統的基于字符串匹配的關鍵詞檢索技術在查全率和查準率方面難以滿足用戶的真實需求。因此,語義網概念和相關語義技術一經提出,得到了廣泛關注——語義技術提供了針對信息組織、知識表示、機器理解等問題的解決方案。SPARQL作為W3C推薦的語義檢索的標準,可以使得檢索操作以機器可理解的方式在語義層面上進行,實現語義檢索進而提高檢索的查全率和查準率。
2 相關理論研究
SPARQL(Simple Protocol and RDF Query Language)是一種用于RDF的查詢語言,是基于之前的RDF 查詢語言(rdfDB、RDQL 和 SeRQL)發展而來的,用于訪問任何可以映射到RDF模型的數據資源(包括本地的和遠程的)。2008年1月,SPARQL正式成為一項W3C推薦標準,由三個獨立的規范(查詢語言規范、SPARQL數據訪問協議、XML格式的查詢結果)構成。2012年11月,在SPARQL 1.0的基礎上SPARQL工作組提出了全功能標準體系SPARQL 1.1,并于2013年1月最終發布了一系列SPARQL1.1標準[1]。
2.1 SPARQL語法
SPARQL提供了4種不同形式的查詢,SELECT、ASK、DESCRIBE和CONSTRUCT。其中,SELECT查詢形式用于標準查詢,以標準的SPARQL XML結果格式返回查詢結果。ASK查詢返回結果是yes或no,沒有具體內容。DESCRIBE用于提取本體和實例數據的一部分,返回一個圖形,其中包含和圖形模式匹配的節點的相關信息。CONSTRUCT用來為每個查詢結果輸出一個圖形模式,這樣就可以直接從查詢結果創建新的RDF 圖。
在SPARQL各種查詢類型中,查詢語句的構建必須遵循SPARQL基本查詢語法,SPARQL的語法和傳統 SQL 的語法有相似之處,具體語法如表1所示:
2.2 SPARQL查詢過程
SPARQL查詢過程[2]中,用戶(包括人和機器)通過一系列接口與系統進行交互,接口將查詢請求送入SPARQL查詢處理器,調用底層的RDF存儲獲取相關的結果記錄。SPARQL通過查詢器掃描關鍵詞,并且根據標準解析查詢序列驗證RDF三元組的有效性。如果查詢不正確,則在處理的過程中及時通過接口為用戶返回錯誤信息,如圖1所示:
圖1 SPARQL查詢過程
在SPARQL處理器中,首先利用解析器對查詢語句進行解析,判斷是否存在語法錯誤。接著在重寫查詢階段,以規則為基礎重新優化查詢語句。最后通過執行QEP(查詢執行計劃)發生器產生的計劃獲取RDF數據并通過接口返回給用戶。
3 SPARQL查詢技術的實現和擴展
3.1 基于RESTful協議的SPARQL終端
SPARQL Endpoint是遵循SPARQL協議的查詢終端,用戶可以通過SPARQL查詢語言對知識庫進行查詢操作[3]。SPARQL終端提供Web交互界面,支持用戶直接輸入查詢語句進行查詢,同時也支持機器用戶通過HTTP URI+SPARQL語句的Restful方式調用。SPARQL Endpoint支持GET/POST請求方式;支持各種查詢類型,如CONSTRUCT(構建)、DESCRIBE(描述);查詢結果以XML/JSON/N3等多種方式輸出。
多個數據集之間的聯合查詢可以利用數據集提供的遠程SPARQL終端進行,SPARQL工作組提出的最新SPARQL 1.1標準體系專門針對SPARQL聯合查詢以及擴展進行說明,利用SERVICE關鍵詞指向SPARQL聯合查詢處理器,允許調用遠程SPARQL終端,并通過OPTIONAL在多個數據集中關聯查詢,挖掘內部關聯關系。
目前已經出現大量SPARQL查詢工具,如Jena ARQ Processor、Twinkle、ViziQuer等支持用戶操作[4]。其中Jena ARQ Processor以命令行的形式提供用戶使用,對用戶要求較高,使用較為復雜。Twinkle較之Jena ARQ Processor來說,提供較好的圖形化界面供用戶使用,可以加載、編輯和保存SPARQL查詢語句,支持查詢RDF文件和關系型數據庫等。ViziQuer[5]能夠幫助用戶連接遠程SPARQL終端,瀏覽檢索包含rdf:type關系的數據。通過工具連接并抽取SPARQL終端的基礎數據架構,支持用戶針對抽取的基礎數據架構進行可視化瀏覽,在此基礎上用戶可以通過ViziQuer構建SPARQL查詢,獲取遠程數據集中的相關數據。
3.2 SPARQL與SQL查詢語言轉換
SPARQL查詢是針對RDF數據的語義查詢技術,檢索以機器可理解的方式在語義層次上進行。但是目前大多數的應用系統仍沿用傳統關系型數據庫存儲,采用元數據字段組織數據的方式。關系型數據庫查詢語言SQL語言和采用視圖匹配方式進行本體查詢的SPARQL語言有較大的差異,因此,如何有效地將用戶語義檢索的請求轉換為對傳統關系型數據庫的查詢是語義查詢技術的核心問題之一。
針對SPARQL訪問現有關系型數據庫,SPARQL-SQL查詢語言轉換的解決思路是在現有關系型數據庫的數據結構基礎上,通過映射規則生成相應的RDF本體知識組織結構支持SPARQL的訪問查詢,代表應用有D2RQ等[6]。這種方法從本質上講并沒有改變底層數據存儲模式,只是在上層進行了數據組織形式轉換。
在語義存儲的三種模式中基于傳統數據的存儲模式目前應用較為廣泛,如Jena、Sesame都是利用關系型數據庫作為底層存儲的?;谶@種思路的研究[7]都有一個共同的設計模式,利用各種不同的映射算法匹配傳統數據庫存儲形式和RDF數據格式,如結構映射算法、數據映射算法、查詢映射算法等。
4.SPARQL技術熱點應用
4.1 Linked Data查詢處理
Linked Data(關聯數據)簡單地說,就是按標準的RDF格式定義組織數據,用三元組(主體、謂詞、客體)形式來表示資源。其本身并不具備語義特征,但是它可以在數據層面建立關聯,支持語義網的各種語義操作。關聯數據的服務功能需要檢索和解析RDF數據,通常采用SPARQL作為標準的RDF解析語言,同時提供SPARQL Endpoint服務是關聯數據應用的重要方式之一。圖2以LOD云圖為基礎,具體描述了關聯數據集和SPARQL Endpoint之間的關系[8]。DBpedia提供了自身的SPARQL終端,支持外部服務通過SPARQL查詢相關數據;Virtuoso LOD SPARQL終端提供了多個關聯數據集的檢索服務,利用分布式子查詢技術在各個數據集中獲取檢索結果。圖中還描繪了Google搜索引擎在未來將利用SPARQL終端涵蓋所有LOD云中的數據集。
圖2 LOD云圖與SPARQL Endpoint
目前針對Linked Data的SPARQL研究主要集中在多數據集查詢方式、分布式SPARQL查詢算法優化等方面。在2012年7月舉辦的ICWE 2012(12th International Conference on Web Engineering)會議上,來自德國柏林洪堡大學(Humboldt-Universit?t zu Berlin)的O. Harting提出了針對多個關聯數據集之間的SPARQL查詢處理方法,主要包括數據倉庫、聯合查詢和關聯數據查詢處理[9]。
數據倉庫是針對統一的中心數據庫內數據的查詢處理方法,可以通過SPARQL Endpoint訪問集成多個數據源的公共數據集(如Sindice)。這種方法具有較高的查詢執行效率,但是查詢的數據無法保證實時更新,并且無法涵蓋所有的數據信息。聯合查詢方法是基于關聯數據出版商提供的查詢服務進行分布式查詢處理,分發器分析查詢請求并將之分解為若干個子查詢請求,分別發送到不同的查詢服務中執行并返回結果。這種方法能保證查詢數據的實時更新,但是所有數據集都必須提供標準的SPARQL Endpoint接口。關聯數據查詢處理是依賴于關聯數據原則以執行查詢中的數據鏈接遍歷為處理方式的關聯數據查詢方法。這種方法可以保證查詢數據的實時更新,而且不需要標準的SPARQL Endpoint,直接支持關聯數據的表示形式。
在聯合查詢和關聯數據查詢處理兩種方法中,分布式SPARQL查詢和關聯數據的遍歷算法是提高整體查詢效率的關鍵,目前分布式查詢算法大多數都是基于最小生成樹算法(MST-based algorithm)的,比較常用的有Boruvkas algorithm、Prims algorithm、Edmonds algorithm、Kruskals algorithm等。在算法優化方面,歐盟FP7的SHARE項目中提出了兩種優化方法:一種是利用最小生成樹標準圖算法在查詢執行之前計算出一個靜態的查詢計劃;另一種是在查詢執行的過程中,利用統計預測等相關算法進行動態分析并及時制定符合要求的執行計劃。
4.2 語義Web服務發現
在Web服務研究中,如何使機器自動、準確、高效地進行服務發現、匹配、組合、監控和調用一直都是熱點和難點問題。語義Web服務提供了一種新的解決思路。語義Web服務是以一種明確的、計算機能夠理解的語言來描述Web服務功能和內容,同時增強Web服務的操作性能和健壯性。Web服務利用語義網豐富的語義描述能力和強大的邏輯推理能力來表述其含義,通過這些帶有語義信息的描述來實現服務的自動發現、匹配、組合、監控和調用。
基于描述邏輯推理的語義Web服務發現方法在Web服務數量大幅增加和本體復雜度不斷提升的情況下,會帶來語義Web服務發現效率和可擴展性方面的問題。如何提高語義Web服務發現的性能是研究的重點之一。通過調研相關項目及其研究成果發現,在語義Web服務發現過程中加入SPARQL語言處理是解決上述問題的途徑之一[10]。有學者指出在語義Web服務匹配算法之前先通過基于SPARQL查詢的預處理策略過濾Web服務倉庫并消除服務描述。這種方法降低了發現機制的搜索范圍,從而提升了整體性能。這種解決方案不獨立提供新型的發現機制,而是較好地適用于目前現有的各種發現機制中。
在現有的服務發現方法中,針對服務請求和服務廣告都采用相同的發現機制。但是服務廣告是服務的具體描述,信息豐富完整;服務請求是針對服務的某些特性,并非構造一個完整的服務描述。研究人員認為將服務請求和服務廣告分開處理能夠有效地提高服務發現效率——使用語義Web查詢語言SPARQL-DL作為服務請求的描述語言來獲取已發布的服務,采用OWL-S描述服務廣告支持有效的服務發現。
在組合Web服務方面,WS-BPEL(Web服務業務流程執行語言)是最為成熟和被廣泛支持的技術,是一種可執行的XML語言,被描述的業務流程中每個單元都是由Web服務實現的。在服務組合中,Web服務的動態選擇必須能夠適應服務的各種變化,然而在WS-BPEL中大多數語言不支持動態選擇。為了解決這一問題,研究人員提出了采用SPARQL和WS-BPEL開發支持Web服務的動態選擇模型[11]。在這個新型模型中,用戶可以在運行環境中通過查詢隨時提出服務需求,以保證在不斷變化的環境中,系統自動選擇適應需求,而無需重構整個服務組合。
4.3 移動終端的SPARQL應用
隨著傳感網絡和移動通訊的不斷發展,越來越多的智能終端承擔著數據處理的功能,在智能終端的數據計算增強了用戶間的通訊與合作。具體而言,智能終端依賴于一個小型計算平臺,采用語義技術進行處理、利用、揭示相關知識。目前各類語義工具,如三元組存儲、推理、查詢等基本上都是面向大型應用程序設計的,在高性能服務器上進行計算,因此建立智能終端的小型計算平臺在硬件性能上將會是一個巨大的考驗。
針對移動智能終端的語義技術和知識的處理方式基本上是在智能終端自身進行中小數量級的知識計算,輔以大數量級知識計算的遠程接口調用[12]。利用支持中小數據量語義應用的基準構建輕量級系統架構,在移動設備上部署三元組存儲,提供基于移動設備的可共享本地數據倉庫。在共享數據倉庫的基礎上構建語義應用,并通過可對外提供訪問服務的SPARQL Endpoint支持網絡聯合查詢。同時語義處理可以應用于遠程服務器上,終端設備只包含語義數據接口,通過接口從服務器遠程獲取語義數據。在這種情況下,必須實行相關的機制以確保在不同環境的終端設備中數據的有效性、安全性和保密性。
目前已經開發出能與三元組存儲系統交互的基于事件的組件和移動終端API,如Qsparql、Soprano、sparqlpush等[13],現有的移動應用開發框架(QT、Python)通過API調用數據商或應用軟件提供的SPARQL終端查詢數據資源。其中sparqlpush可以通過對用戶提交的SPARQL查詢請求的登記,在PuSH服務器端記錄該請求。當數據集發生變化時,sparqlpush自動進行查詢請求操作,記錄下所有有結果變化的SPARQL查詢請求,在PuSH服務器端通過PubSubHubbub協議向相關移動設備發推送通知,類似于RSS服務。
5. 結論
通過對Science Direct、ACM、IEEE等多個數據庫中的文獻、ISWC、ESWC等語義網的專業會議及國際上大型項目的調研分析發現,在語義查詢方面針對SPARQL查詢語言的研究和應用的關注重點不再是理論探討和基本應用,而是基于當前語義網各種技術和應用的發展如何進一步拓展SPARQL技術發展。正如本文中描述的如何在海量RDF數據和關聯數據集中組合SPARQL關聯查詢以及在移動應用中如何集成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.
(本文責任編輯:劉遠穎)