摘要:首先介紹了RDF查詢語言需要滿足的一般特性需求,即表達(dá)能力、模式感知、程序操縱、合成性和語義功能。然后介紹了七種具有代表性的RDF查詢語言(RQL、RDQL、TRIPLE、N3、Versa、SeRQL、SPARQL),以及國外對RDF查詢語言在支持圖形匹配、關(guān)系操作、聚合和分組功能、遞歸、具體化、容器、命名空間、語言標(biāo)簽、字符和數(shù)據(jù)類型、繼承等方面的比較研究。
關(guān)鍵詞:RDF;語義網(wǎng);查詢語言:SPARQL
0引言
資源描述框架(RDF)是W3C推薦的用于描述網(wǎng)絡(luò)資源元數(shù)據(jù)的模型,被認(rèn)為是語義網(wǎng)上數(shù)據(jù)表達(dá)和交換的重要標(biāo)準(zhǔn)。隨著越來越多的組織和個人開始使用RDF來描述其網(wǎng)絡(luò)資源,對于RDF查詢語言的需求也越來越迫切。目前研究界已提出了幾個RDF查詢語言,一些是依據(jù)傳統(tǒng)的數(shù)據(jù)庫查詢語言(如SQL,OQL),另一些則是受了規(guī)則語言(rule language)的啟發(fā)。雖然目前還沒有標(biāo)準(zhǔn)化的RDF查詢語言,但在學(xué)術(shù)界、語義網(wǎng)和W3C已開始討論建立RDF查詢語言標(biāo)準(zhǔn)。W3C最近成立了一個工作組專門致力于RDF數(shù)據(jù)的訪問和查詢研究。本文中將介紹七種具有代表性的RDF查詢語言和國外研究者對RDF查詢語言的比較研究。
1 RDF查詢語言的一般特性需求
RDF查詢語言應(yīng)該具備如下特性:
表達(dá)能力表達(dá)能力就是給定語言的查詢能力。查詢語言應(yīng)該至少支持關(guān)系代數(shù)提供的方法(即關(guān)系完整性)。通常,表達(dá)能力又受到其他特征(如安全性)和查詢執(zhí)行效率的限制。表達(dá)能力包括:
(1)路徑表達(dá)語法對RDF圖的導(dǎo)航能力。
(2)類/屬性/層次的導(dǎo)航功能。
(3)對具體化聲明的查詢能力。
(4)值比較和數(shù)據(jù)類型的支持能力。
(5)處理可選值的功能。
模式感知查詢語言應(yīng)該能夠?qū)崿F(xiàn)模式感知。當(dāng)結(jié)構(gòu)定義之后,查詢語言應(yīng)該能夠利用模式進(jìn)行類型檢驗、優(yōu)化和繼承。這項需求與形式化語義和表達(dá)能力需求緊密相關(guān)。就RDF來說,這意味著查詢語言應(yīng)能夠意識到RDF和RDF模式的語義。
程序操縱 查詢語義應(yīng)該足夠簡單,這意味著人們更愿意使用一個容易解析和分解的查詢語言,而不是一個更具友好性的查詢語言。盡管如此,也需要在二者之間達(dá)成平衡。一個查詢語言在自動處理方面做得再好,但易用性方面做得不好,這個查詢語言也不能夠被接受。與這項需求相關(guān)的考慮包括:結(jié)構(gòu)簡潔,避免冗余,并在方便性和可讀性方面達(dá)成平衡。
合成性這項需求規(guī)定一個查詢的輸出可以被用作另一個查詢的輸入。當(dāng)人們想把—個大的查詢分解為一些小的查詢或想序列化地執(zhí)行幾個查詢,把第一查詢的輸出做為第二個查詢的輸入時,這項功能就很有效。具有這項功能的查詢語言也能夠進(jìn)行視圖定義。就RDF查詢語言來說,合成性意味著一個查詢的結(jié)果能夠被表示為一個RDF圖。
語義對查詢語言來說,精確的形式化語言很重要,如果沒有這一點,查詢轉(zhuǎn)換和優(yōu)化根本就不可能實現(xiàn)。就RDF查詢語言來說,這種形式化的描述可以通過提供一個RDF形式化模型映射而獲得。
2查詢語言介紹
從RDF查詢語言開始出現(xiàn)到現(xiàn)在,具有代表性的查詢語言主要有七種。
2.1 RQL
RQL是第一個類型聲明性的RDF查詢語言,是在歐盟的項目C-Web和MesMuses中產(chǎn)生的。RQL主要應(yīng)用于希臘ICS-FORTH的RDF配套工具和Sesame的Aidministrator。RQL由一組基本的查詢和能夠通過功能合成而建立新查詢的迭代器(iterators)所定義,支持一般的路徑表達(dá)。RQL依賴于一個形式化的圖模型,并允許借助于一個或多個模式來解釋雙重的資源描述。RQL的獨特之處是完美地結(jié)合了RQL模式和數(shù)據(jù)路徑表達(dá)來滿足語義網(wǎng)應(yīng)用(如知識門戶)的需求。
2.2 RDQL
RDQL 最初是在Jenal.2.O中公布的,應(yīng)用在Sesame、RDFStore、PHP XML Classes、3Store等系統(tǒng)中。RDQL包括被表達(dá)為一組三元組的圖模式,每個三元組由命名變量和RDF值(URI和Literals)組成。RDQL查詢將RDF圖完全看作數(shù)據(jù)。其語法遵循類SQL的select模式,但省略了from子句。例如:select?)where)(?p,
2.3 TRIPLE
Triple是一個層次化、模型化的規(guī)則語言,目標(biāo)是支持需要RDF查詢、推理和轉(zhuǎn)換的應(yīng)用程序。Triple語言基于Horn邏輯并且借用了F-Logic的許多特征,提供了一個類Prolog語法和基于RDF的語法。RDF三元組(s,p,o)用F—Logic表達(dá)式s p->ol來表示,并可以嵌套。例如,表達(dá)式S[Pl->01,P2->02[P3->03ll與三個RDF三元組(S,PI,01),(S,P2,02),(02,P3,03)等價。Triple包括兩層:Horn邏輯的語法擴(kuò)展層,它支持基本的RDF組成(如資源和聲明);RDF的語義擴(kuò)展層(RDF模式語義可以被直接定義為一個參數(shù)化模塊,OIL和DAML+OIL則需要與外部推理組件的交互)。Triple不區(qū)分規(guī)則和查詢,比如:FORALL X<-(x[rdfs:label->\"foo\"1.)@default:In返回所有具有“foo”標(biāo)號的資源。
2.4 N3
Notation3(N3)為RDF提供了一個基于文本的語法,因而N3的數(shù)據(jù)模型與RDF的數(shù)據(jù)模型一致。除此之外,N3允許定義規(guī)則,這些規(guī)則使用一種特殊的語法來表達(dá),如?y rdfs:label'Too”=>?y a:QueryResult。這樣的規(guī)則,雖然本身不是一個查詢語言,但可以被用于查詢。查詢必須以規(guī)則的形式存儲在一個專門的文件中。N3的CWM過濾命令能夠自動選擇由規(guī)則所產(chǎn)生的數(shù)據(jù)。雖然N3實現(xiàn)了正交、閉集和安全性等特征,但使用N3作為查詢很繁瑣。
目前有Euler和CWM兩個系統(tǒng)支持N3,但這兩個系統(tǒng)都不能自動支持RDF語義,語義必須由定制的規(guī)則來提供。
2.5 Versa
Versa語言最初是由4RDF的開發(fā)者所建立。它的主要組成模塊是一個RDF資源列表。RDF三元組在形如ListExpr-ListExpr->BoolExpr的遍歷操作中出現(xiàn)。表達(dá)式返回了與三元組匹配的所有對象的列表。例如,遍歷表達(dá)式all()-rdfs:label->*將會返回包含所有標(biāo)號的列表。在一個遍歷表達(dá)式中,我們可以在箭頭的開始處放置一個垂直條而有選擇地選取主體。這樣,表達(dá)式all01-rdfs:label->eq(”foo”)將會返回所有具有\(zhòng)"foo”標(biāo)號的資源。Versa表達(dá)可以嵌套。 給定的數(shù)據(jù)結(jié)構(gòu)和表達(dá)式樹使得很難一次提取幾個值,Versa使用分布操作來突破這一限制。它可以建立列表的列表,從而可以從一個給定的資源列表中選擇幾個屬性。Versa提供了一些規(guī)則支持。4Suit支持Versa語言。
2.6 SeRQL
SeRQLt3j是Sesame的RDF查詢語言,是一個松散地基于幾個現(xiàn)有的查詢語言(RQL、RDQL和N3)的查詢和轉(zhuǎn)換語言。SeRQL最初的設(shè)計目標(biāo)是從幾個現(xiàn)有的查詢語言中汲取優(yōu)點,形成一個輕量級的、表達(dá)能力較強(qiáng)的查詢語言。seRQL的語法與RQL的語法類似,但也在后者的基礎(chǔ)上做了修改以使得語言更易于被解析。和RQL一樣,SeRQL基于RDF圖的形式化解釋,但SeRQL的形式化解釋直接基于RDF模型理論。
SeRQL支持一般化的路徑表達(dá),邏輯限制和操作匹配,并支持兩個基本的過濾器:select-from-where和construct-from-where。SeRQL的construct-from-where實現(xiàn)了閉集和正交特征,因而實現(xiàn)了查詢的合成。seRQL提供了各種遞歸功能,所以SeRQL是不安全的。
近來SeRQL已成為Sesame系統(tǒng)的缺省查詢語言,同時也正在被許多開發(fā)者和研究者應(yīng)用于不同的領(lǐng)域。SWAP(Semantic Web and Peer t0 Peer)是歐洲的IST項目之一,目標(biāo)是結(jié)合使用Ontology和P2P技術(shù)。SWAP系統(tǒng)是一個分布的環(huán)境,其中節(jié)點間進(jìn)行通信并共享知識,使用RDF作為基本語言。SWAP系統(tǒng)事實上的標(biāo)準(zhǔn)查詢語言是SeRQL。DOPE(DrugOntology Project for Elsevier)項目的目標(biāo)是調(diào)查通過一個單一的接口來提供對于生命科學(xué)領(lǐng)域內(nèi)的多信息源的訪問的可行性。已建立的系統(tǒng)原型能夠提供對于基于RDF模型的分布、異構(gòu)數(shù)據(jù)源的訪問。DOPE采用了一個SeRQL查詢引擎作為用戶界面的輸入點。
2.7 SPARQL
SPARQLt4j構(gòu)建在以前的RDF查詢語言(如RDQL、SeRQL)基礎(chǔ)上,擁有一些有價值的新特性。SPARQL協(xié)議和RDF查詢語言(sPARQL)目前是W3C的工作草案,還在討論當(dāng)中。
SPARQL支持各種平臺和語言。編寫更復(fù)雜的查詢,可選匹配替換匹配、值約束條件、處理多個圖形、在特定圖中查找匹配、查找包含某個模式的圖、組合后臺數(shù)據(jù)和命名圖。
為了進(jìn)一步提煉查詢的結(jié)果,SPARQL擁有DISTINCT、LIMIT、OFFSET和ORDER BY等關(guān)鍵字,它們的操作或多或少地與SQL中的對應(yīng)命令有些類似。
SPARQL除了支持SELECT查詢之外,還支持另外三種查詢:ASK將返回\"yes\"或“no”;DESCRIBE返回—個圖形,其中包含和圖形模式匹配的節(jié)點的相關(guān)信息,例如,DESCRIBE?personWHERE{?person foaf:name”Jon Foobar\"J會返回—個圖,其中包括來自Jon Foobar的模型的三元模式;CONSTRUCT將為每個查詢結(jié)果輸出一個圖形模式,這樣就可以直接從查詢結(jié)果創(chuàng)建新的RDF圖。SPARQL允許以XML格式返回查詢結(jié)果,采用的格式叫作SPARQL變量綁定結(jié)果XML格式。這個用Schema定義的格式是RDF查詢和XML工具及庫之間的橋梁。這項功能還有許多潛在的用途,可以把SPARQL查詢的結(jié)果通過SXLT轉(zhuǎn)換成Web面或RSS feed,通過Xpath訪問結(jié)果,或者把結(jié)果文件返回給SOAP或AJAX客戶。
3查詢語言的比較
3.1 Peter Haase等人對RDF查詢語言的比較研究
德國卡爾斯魯厄大學(xué)Peter Haase等人對RQL,RDQL、Triple、N3、Verse和SeRQL等6種RDF查詢語言在支持圖形匹配、關(guān)系操作、聚合和分組功能、遞歸等幾個方面進(jìn)行了比較。他們所選的實驗樣本數(shù)據(jù)是描述計算機(jī)科學(xué)研究領(lǐng)域情境的數(shù)據(jù),分別描述了人、出版物和主題層次。這個數(shù)據(jù)集基本涵蓋了RDF數(shù)據(jù)模型的主要特征。在比較結(jié)果表(如表1所示)中,一表示不支持,●表示完全支持,○表示部分支持。
3.1.1固形匹配能力
路徑表達(dá)用于遍歷—個圖。所有的查詢語言(不管采用何種語法)都支持路徑表達(dá)。RDF圖表示了一種半結(jié)構(gòu)化的數(shù)據(jù)模型,能夠表示不規(guī)則的、不完整的信息,因此,RDF查詢語言應(yīng)該提供處理不規(guī)則和不完整信息的方法,具備可選的路徑表達(dá)能力。但是只有兩種RDF查詢語言(versa和SeRQL)提供了內(nèi)嵌的方法來處理不完整的信息。例如,SeRQL提供了opfionalpath expressions(由方括號來表示)來匹配不規(guī)則路徑。
3.1.2關(guān)系操作
RDF常用來對關(guān)系結(jié)構(gòu)進(jìn)行建模。在關(guān)系數(shù)據(jù)模型中,有了幾個基本的代數(shù)運(yùn)算:選擇(select)、投影(pmjection)、廣義笛卡爾積(cartesian product)、差(set difference)、并(set union),可以將這些基本的操作組合起來表達(dá)其他操作,如交(intersection)和一些形式的連接等。這些操作的重要性體現(xiàn)在關(guān)系完整性的定義上。
所有的查詢語言都支持三種基本的代數(shù)操作:選擇、投影、笛卡爾積,并用于路徑表達(dá)查詢。因此,我們集中討論其他兩個基本操作:并和差。
并(union),如表1所示,RQL支持并,Versa也包含一個明確的并操作。N3和Triple也用規(guī)則仿真了并操作。在Versa中描述了差,但沒有具體實現(xiàn),RQL也支持差操作。
3.1.3聚合和分組功能
聚集功能可從一個多值集合中計算一個數(shù)量值。例如,找出集合中的最小值或最大值。分類(Grouping)則可以實現(xiàn)按組計算。從檢驗結(jié)果來看:N3、Versa和RQL支持計數(shù)功能,六種RDF查詢語言都不支持分組功能。
3.1.4遞歸
在信息系統(tǒng)中常常會用到遞歸查詢。需要注意的是RDF查詢引擎必須能夠處理模式遞歸,即子類(subClassOf)關(guān)系的遞歸性。Triple和N3是基于規(guī)則的系統(tǒng),能夠通過附屬的規(guī)則支持所需的遞歸。Versa不支持一般意義上的遞歸,但提供了一個關(guān)鍵詞\"traverse\",可用于遞歸查詢。
3.1.5具體化
具體化(Reification)是RDF的特征。它為RDF圖增加了一個元數(shù)據(jù)層,可以將RDF聲明看作資源本身。SeRQL和Triple用一種特殊的語法支持具體化。N3不能從語法上表示具體化,RDQL、RQL和Versa把具體化的聲明看作是圖中的結(jié)點。
3.1.6集合和容器
RDF可以用集合和容器(即包容器、序容器、替換容器)定義一組實體。RDF查詢語言應(yīng)該能夠檢索到這些容器中的元素。實驗表明,所有的查詢語言都可以在特殊的斷言
3.1.7命名空間
命名空間是Web數(shù)據(jù)查詢語言的一個必不可少的組成部分。目前為止,各種實例都表明了語言如何引入命名空間縮寫來保持查詢的簡潔。SeRQL、RQL和N3支持對URI的模式匹配斷言。在RDQL中,雖然在語法中定義了字符串匹配操作,但執(zhí)行起來卻不完整。
3.1.8語言
RDF能夠使用XML風(fēng)格的語言標(biāo)簽。包含RDF字符的XML標(biāo)簽可以帶一個xrnl:lang屬性,可能的屬性值包括:ell代表English,或de代表German。
在所有的比較語言中,SeRQL是惟一明確地支持特定語言信息查詢的語言。
3.1.9字符和數(shù)據(jù)類型
RDF支持XML模式的各種類型的字符。RDF查詢語言應(yīng)支持XML模式的數(shù)據(jù)類型,一個數(shù)據(jù)類型包括一個詞匯空間、一個值空間和詞匯到值的映射。所有的查詢語言都能查詢詞匯空間,但大多數(shù)查詢語言不支持或只是初步支持值空間。RDQL和seRQL使用特殊的語法顯示數(shù)據(jù)類型來提供對數(shù)據(jù)類型的支持。
3.1.10繼承
RDF模式詞匯支持明確信息的繼承。對RDF-S繼承的支持,各種查詢語言采用了不同的方法:RQL和SeRQL本身就支持繼承,甚至能夠區(qū)分子類和直接子類。N3和Triple需要RDF—s語義公理,即一組規(guī)則。Versa不支持。
3.2進(jìn)一步研究
Renzo Angles等研究者認(rèn)為圖論中的度(Degree)、路徑(Path)和直徑(Diameter)等概念對于涉及RDF查詢的應(yīng)用程序具有重要意義。他們將目前的RDF查詢語言對相鄰結(jié)點(Adjacent nodes)、相鄰邊(Adjacent edges)、結(jié)點的度(Degree 0fa node)、路徑(Path)、兩個資源間的距離(Distance between tworesources)、圖形的直徑(Diameter of a graph)等圖形特征的支持能力進(jìn)行了測量和比較,比較結(jié)果如表2所示(+表示支持、±表示部分支持、一表示不支持)。
美國加州大學(xué)的Li Chen等研究者認(rèn)為目前的RDF查詢研究存在著兩個缺陷:(1)RDF輸入不僅僅是一個主題一謂詞一對象的圖形結(jié)構(gòu),而且也應(yīng)當(dāng)包括RDF模式。而目前的許多RDF查詢語言都缺乏完善的推理功能來對顯性知識進(jìn)行推理而獲得隱性知識。(2)缺乏一種像關(guān)系數(shù)據(jù)庫的關(guān)系代數(shù)那樣的綜合、全面的RDF查詢代數(shù)來提供一組語義明確的操作,作為RDF查詢的形式化基礎(chǔ)。針對這些問題,他們設(shè)計了一個新的RDF查詢代數(shù)和其解釋規(guī)則,用來將隱性的推理語義轉(zhuǎn)換為顯性的模式匹配。
4結(jié)束語
目前,越來越多的組織和個人使用RDF來發(fā)布信息,RDF查詢語言也成為了研究熱點,出現(xiàn)了許多查詢語言。本文介紹了具有代表性的七種RDF查詢語言:RQL、RDQL、Triple、N3、Versa、SeRQL和最近興起的SPARQL,并介紹了國外研究者對這些查詢語言的比較研究。值得注意的是,SPARQL作為W3C的候選推薦標(biāo)準(zhǔn)正被越來越多的研究者所采用,將具有很好的應(yīng)用前景。
(注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。)