XML+RDF——實現(xiàn)Web數(shù)據(jù)基于語義的描述![]() |
![]() | 級別: 中級 周競濤西北工業(yè)大學CAD/CAM國家專業(yè)實驗室 2003 年 3 月 01 日 本文介紹了XML結(jié)合RDF實現(xiàn)Web數(shù)據(jù)基于語義的描述。 今天,越來越多的Web應(yīng)用需要通過交換數(shù)據(jù)來實現(xiàn)互操作。XML的出現(xiàn)使實現(xiàn)Web應(yīng)用之間的語法互操作成為可能,而RDF則可以借助XML來實現(xiàn)Web應(yīng)用之間的語義互操作。那么XML和RDF是如何來完成它們各自職能的呢? 語義到底是指什么?這是一個比較難回答的問題,就像有人問起Ontology到底指什么一樣。如果讀者已經(jīng)對Semantic Web有一些了解的話,就會知道語義是一個正在改變我們所熟悉的Internet的一個關(guān)鍵元素,甚至是提高全球經(jīng)濟發(fā)展效率不可或缺的重要元素[1]。本文并不是要給出語義的一個精確解釋,因為這確實很困難,尤其當這個概念被不同領(lǐng)域所引用的時候,它的含義往往存在著一些差異。討論語義的目的是希望我們能夠更好地理解XML和RDF到底在數(shù)據(jù)表示和交換中起到什么作用,更清楚地看到XML和RDF之間的區(qū)別,各自的優(yōu)點和不足。我們可以將語義簡單地看作是數(shù)據(jù)(符號)所代表的概念的含義,以及這些含義之間的關(guān)系,是對數(shù)據(jù)的抽象或者更高層次的邏輯表示。對于計算機領(lǐng)域來說,語義一般是指用戶對于那些用來描述現(xiàn)實世界的計算機表示的解釋,即用戶用來聯(lián)系計算機表示和現(xiàn)實世界的途徑?;蛟S這聽起來還是不夠通俗,讓我們通過一個的例子來進一步說明語義的含義:以關(guān)系數(shù)據(jù)庫為例,數(shù)據(jù)庫中的數(shù)據(jù)可以簡單的認為是存儲在一張張表中,例如我們將學生的基本信息存入到一張"學生"表中。這時,對于表中的每一列數(shù)據(jù)所構(gòu)成的集合,其所隱含的意思就是該列數(shù)據(jù)所要表達的對應(yīng)的概念,這個概念往往體現(xiàn)為設(shè)計人員對該列數(shù)據(jù)對應(yīng)的屬性所給定的名稱,例如"姓名"、"性別"等等。這些屬性之間的關(guān)系就相當于數(shù)據(jù)對應(yīng)的概念之間所存在的關(guān)系,它們都是學生這個實體的屬性。數(shù)據(jù)庫表中的屬性和關(guān)系都可以看作數(shù)據(jù)的語義信息。當然,語義并不是這么簡單,它代表的關(guān)系可能更為復雜,甚至超過E-R模型等數(shù)據(jù)庫建模語言的表達范圍。其實語義并不是引入到IT領(lǐng)域的新概念,數(shù)據(jù)庫長期以來已經(jīng)在用語義來區(qū)分模式和數(shù)據(jù),并作為數(shù)據(jù)庫建模、查詢和事務(wù)管理技術(shù)的一部分,語義是保證數(shù)據(jù)管理系統(tǒng)達到可擴展性、高效性和健壯性要求的一個關(guān)鍵元素。
在了解了什么是語義之后,讓我們來進一步討論語法和語義在數(shù)據(jù)描述和交換中的作用。事實上,數(shù)據(jù)交換所要達到的真正目的是得到所交換數(shù)據(jù)所代表的含義,實現(xiàn)數(shù)據(jù)在含義上的交換,而不是單純的數(shù)據(jù)本身的交換,這同人與人之間的信息交換類似。對于人類來說,我們可以通過相同的語言進行交互,交互雙方以他們所共同遵守的語言組織規(guī)律(相當于語法)對所要表達的信息含義(相當于語義)進行組織才能使對方理解。人與人之間信息的傳達并不需要非常嚴格的語法,即便是對方在語言表達上存在著一定的錯誤,我們?nèi)匀豢赡芾斫鈱Ψ剿磉_的意思。但對于計算機之間的信息交換來說,語法與語義缺一不可。數(shù)據(jù)正確的語法表達是保證計算機之間能夠進行信息交換和處理的前提,而數(shù)據(jù)語義的描述則是數(shù)據(jù)可被計算機正確理解和推理的基礎(chǔ)。 對于今天的大部分計算機應(yīng)用來說,其所產(chǎn)生的信息并沒有采用統(tǒng)一的語法描述格式,信息在語法描述上存在著千差萬別,這就造成了信息表達上的語法異構(gòu);而對于信息所代表含義(即語義)的解釋,則是以硬編碼的方式寫入到了應(yīng)用中,這種所謂程序式語義(procedural semantics)[2]的信息語義建模方法,分離了信息的語義和信息的語法描述,將對信息的理解固化到了特定的代碼邏輯中。因此程序式語義有很大的局限,既不具備擴展性也不具備通用性,難于維護和集成。與程序式語義的信息建模方法相反,聲明式的語義建模方法[2]通過將數(shù)據(jù)的語義描述與特定應(yīng)用邏輯的分離,將數(shù)據(jù)的語義描述納入到數(shù)據(jù)層,將數(shù)據(jù)語義的解釋留給了通用的形式化系統(tǒng)(例如一階邏輯,描述邏輯,Datalog等推理系統(tǒng)),而與具體的數(shù)據(jù)和應(yīng)用邏輯無關(guān),具有非常好的適應(yīng)性、可重用性。數(shù)據(jù)基于語義的描述就是以聲明式的語義建模方法對數(shù)據(jù)的語義進行描述。通過實現(xiàn)數(shù)據(jù)的語義描述可以大大減輕應(yīng)用處理數(shù)據(jù)的壓力。
信息在語法描述上的差異,我們往往可以通過必要的數(shù)據(jù)格式轉(zhuǎn)化來將信息轉(zhuǎn)化為目標應(yīng)用能夠處理的語法格式。當然,更為理想的情況應(yīng)該是所有的信息都采用同樣的語法來描述,XML的出現(xiàn)使得不同類型的數(shù)據(jù)表示成同一格式成為了可能。XML已經(jīng)成為了Web上數(shù)據(jù)表示和交換的事實標準,是應(yīng)用之間或者機器之間共享數(shù)據(jù)的一種有效方式。XML及其相關(guān)技術(shù)的發(fā)展極大地促進了信息表達和交換過程中語法描述上的統(tǒng)一,越來越多的應(yīng)用開始選用XML作為其數(shù)據(jù)、配置信息、消息以及服務(wù)的語法描述模式。迄今為止,XML已經(jīng)成為了Web上最理想的數(shù)據(jù)表達方式。XML的可擴展性是XML區(qū)別其他標記語言的最基本特征。XML的核心在于以一種標準化的方式來建立數(shù)據(jù)表示的結(jié)構(gòu),而將具體標記的定義留給了用戶。XML的可擴展性使XML可以滿足各種不同領(lǐng)域數(shù)據(jù)描述的需要,并可以對計算機之間交換的任何數(shù)據(jù)進行編碼。
當我們剛剛接觸XML時,我們可能會因為XML的表現(xiàn)能力,可擴展性和光明的前景而激動不已,可是隨之而來的問題是:兩個用XML表示的消息或數(shù)據(jù),如何才能實現(xiàn)交換?是不是我們只要采用了XML格式,二者的交換就萬事大吉了?。XML除了給我們提供了一個可以被應(yīng)用自動化讀取的格式外,并不能進一步促進數(shù)據(jù)交換的自動化程度,我們還需要通過專用的程序來對XML數(shù)據(jù)進行解釋,以獲取目標應(yīng)用能夠處理的數(shù)據(jù)部分。注意,這里的解釋并不同于對XML文檔的解析。當然,對XML文檔解釋的前提是首先完成對XML文檔的解析。盡管XML已經(jīng)擁有了各種版本的解析器,但解析器的真正作用是一個XML的讀取和處理器,并不是一個解釋器。因此我們必須采用特定的應(yīng)用程序來對XML的內(nèi)容解釋,很顯然這些程序之間并不存在互換性和通用性。 盡管XML的靈活性使得用戶可以快速、容易的描述任意的內(nèi)容,但由于XML并不能解釋它標記的含義,大多數(shù)處理應(yīng)用要求這些標記集合能夠滿足某種標準或者雙方的約定。XML允許用戶通過XML模式來定義這些標記的集合。XML模式(諸如XML DTD和XML Schema等)為XML文檔提供了一種約束機制,用來限定XML文檔所用到的標記和這些標記之間的結(jié)構(gòu)關(guān)系。XML模式為XML文檔提供了一定的語義描述能力,然而XML模式的語義仍然是隱含的。XML模式的元素含義要么由用戶根據(jù)元素的名稱(通過自然語言描述)去推斷,要么通過另外一個文檔來描述,XML模式并不能對其所含有的語義進行任何解釋。 為了實現(xiàn)XML文檔的解釋或者轉(zhuǎn)換,用戶必須將這些語義編碼到工具中,而將數(shù)據(jù)的最終解釋留給了特定的應(yīng)用。不僅如此,由于XML模式只能對XML的語法合法性進行驗證,而不能區(qū)分XML屬性和元素在含義上的不同,因此對于同樣的信息內(nèi)容,我們可以將其映射為多種不同的XML結(jié)構(gòu)。例如我們要說明某本書(Book)的作者(Author)是哪個作家(Name),可以得到例1中的多種XML Schema的定義。 例1 對于同一信息的多個XML Schema的定義
這種數(shù)據(jù)表達上的不唯一性意味著,相同的XML文檔可以存在多種不同的解釋,而相同的應(yīng)用也可能對不同的XML作出同樣的解釋。這種解釋上的多對多關(guān)系,使得我們在交換XML文檔之前,必須對其所使用到的標記的名稱、組織格式和含義進行約定,任何對該XML文檔的單方面擴展都可能會給數(shù)據(jù)交換過程帶來更多的麻煩,甚至導致失敗。然而,這種通過約定來實現(xiàn)信息共享的方式只適用于兩兩之間的信息交換,卻不能滿足Web上多個用戶或團體大范圍的信息共享。假設(shè)我們要集成n個應(yīng)用所產(chǎn)生的XML信息,即便是要集成部分的含義完全一致,但由于它們來自不同的應(yīng)用,各自的XML模式描述很可能存在著不同(既包括標記命名的不同也包括結(jié)構(gòu)組織上的不一致),所以我們?nèi)匀徊坏貌蛔龃罅康哪J街g的轉(zhuǎn)換,而目的只是為了保證它們在語法的描述結(jié)果上保持一致。當然我們可以通過采用一個統(tǒng)一的全局的XML模式來描述所有相關(guān)的XML信息,但這顯然是不現(xiàn)實的,即便是在一個企業(yè)內(nèi)部,我們也很難建立一個穩(wěn)定的標準化的企業(yè)數(shù)據(jù)表示模式。
RDF(Resource Description Framework)——Web數(shù)據(jù)的語義描述模型 XML所存在的問題是因為XML不具備語義描述能力。為此,W3C推薦以RDF(resource Description Framework)標準來解決XML的語義局限。RDF提出了一個簡單的模型用來表示任意類型的數(shù)據(jù)。這個數(shù)據(jù)類型由節(jié)點和節(jié)點之間帶有標記的連接弧所組成。節(jié)點用來表示W(wǎng)eb上的資源,弧用來表示這些資源的屬性。因此,這個數(shù)據(jù)模型可以方便的描述對象(或者資源)以及它們之間關(guān)系。RDF的數(shù)據(jù)模型實質(zhì)上是一種二元關(guān)系的表達,由于任何復雜的關(guān)系都可以分解為多個簡單的二元關(guān)系,因此RDF的數(shù)據(jù)模型可以作為其他任何復雜關(guān)系模型的基礎(chǔ)模型。 RDF和XML是互為補充的。首先,RDF希望以一種標準化,互操作的方式來規(guī)范XML的語義。XML文檔可以通過簡單的方式實現(xiàn)對RDF的引用。如例2所示。 例2 XML對RDF的引用示例
借助RDF,表達同一事實的XML描述就可以被轉(zhuǎn)化為統(tǒng)一的RDF陳述。對于例1,它們可以表示為下面的RDF模型: ![]() 通過在XML中引用RDF,可以將XML的解析過程與解釋過程相結(jié)合。也就是說,RDF可以幫助解析器在閱讀XML的同時,獲得XML所要表達的主題和對象,并可以根據(jù)它們的關(guān)系進行推理,從而做出基于語義的判斷。XML的使用可以提高Web數(shù)據(jù)基于關(guān)鍵詞檢索的精度,而RDF與XML的結(jié)合則可以將Web數(shù)據(jù)基于關(guān)鍵詞的檢索更容易地推進到基于對象的檢索。 其次,由于RDF是以一種建模的方式來描述數(shù)據(jù)語義的,這使得RDF可以不受具體語法表示的限制。但是RDF仍然需要一種合適的語法格式來實現(xiàn)RDF在Web上的應(yīng)用。雖然RDF(模型)既可以用Notation3[3]來表示,也可以用XML來表示。但是,由于XML已經(jīng)成為被廣泛支持的Web數(shù)據(jù)表示標準,便于應(yīng)用的讀取,因此將RDF序列化為XML表示可以使RDF獲得更好的應(yīng)用可處理特性,并使得RDF數(shù)據(jù)可以像XML數(shù)據(jù)一樣的容易使用、傳輸和存儲。 因此,RDF是定制XML的良伴,而不只是對某個特定類型數(shù)據(jù)的規(guī)范表示[4],XML和RDF的結(jié)合,不僅可以實現(xiàn)數(shù)據(jù)基于語義的描述,也充分發(fā)揮了XML與RDF的各自優(yōu)點,便于Web數(shù)據(jù)的檢索和相關(guān)知識的發(fā)現(xiàn)。
與XML中的標記(tags)類似,RDF中的屬性(properties)集也是沒有任何限制的。也就是說我們既可以<rdf:Description about=http://www.w3.org/test><s:Creator>張三</s:Creator></rdf:Description>也可以用<rdf:Description about=http://www.w3.org/test1><s:Author>張三</s: Author ></rdf:Description> 來表示某個作品的創(chuàng)作者。這就是我們通常所說的同義詞現(xiàn)象,即同一個概念可以以不同的詞匯來描述。在實際應(yīng)用中這個詞匯并不一定要和詞典中的詞匯有一定的對應(yīng)關(guān)系,例如英文語法中常見的縮寫就屬于此種情況。與同義詞現(xiàn)象相對應(yīng)的另一個問題就是一詞多意,即同一個詞匯在不同的應(yīng)用背景下可以表示不同的意思。RDF的模型不具備解決這兩個問題的能力,而RDF Schema雖然可以為RDF資源的的屬性和類型提供詞匯表,但是基于RDF的數(shù)據(jù)語義描述仍然可能存在語義沖突。為了消解語義沖突,我們在描述數(shù)據(jù)語義的時候可以通過引用Ontology的相關(guān)技術(shù),對語義描述結(jié)果作進一步的約束。幸運的是,RDF(Schema)在提供了簡單的機器可理解語義模型的同時,為領(lǐng)域化的Ontology語言(OIL(Ontology Interchange Language),OWL(Web Ontology Language))提供了建模基礎(chǔ),并使得基于RDF的應(yīng)用可以方便地與這些Ontology語言所生成的Ontology進行合并。RDF的這一特性使得基于RDF的語義描述結(jié)果具備了可以和更多的領(lǐng)域知識進行交互的能力,也使基于XML和RDF的Web數(shù)據(jù)描述具備了良好的生命力。
|