摘要 在當前的網絡信息時代,信息量不僅龐大而且源自於不同的數據源,信息集成一直是研究的熱點。基於多代理(Multi-Agent)的信息資源集成方案有所不足,而XML集成機制的優點,適於網絡環境下基於XML的信息集成。本方案:包括系統的總體框圖、層次結構、工作過程及信息系統主要部分的具體設計。
關鍵詞 XML,資源集成,DTD,XSL, Wrapper,DOM.
引言 隨著計算機技術,特別是Internet的不斷發展,實現"信息孤島"之間的集成與交互成為亟待解決的問題。
在諸多解決方案中,基於多代理(Multi-Agent)的信息集成就是其中的一種。該系統已被認為是建造大型復雜分布式信息處理系統的重要技術和框架。在基於多代理的方法中,資源集成的具體操作步驟是:用戶把請求提交給搜索代理,由搜索代理對請求進行適當的轉換,發送給代理路由器;代理路由器通過鏈接,將查詢請求發送給數據庫代理;數據庫代理接受查詢請求,並進行具體的數據庫操作,然後把查詢結果返回給請求者;搜索代理對返回的結果進行識別,若存在所需的資源,則激活本地數據庫代理,對獲得的信息進行記錄,由專家系統對所搜集的信息進行進一步的處理。這種方法有一個明顯的缺陷,即必須明確數據庫的格式,代理才能正常工作。
而XML技術則可以很好的解決這個問題。用XML進行數據集成,只需對所有的異構數據源增加一個以XML為格式的封裝體,即在不改變數據源的前提下,用XML對數據源的定義描述字、數據源的創建等相關信息進行封裝。供應鏈節點上所有數據源的封裝體納入全局的XML Schema或DTD,並存儲在XML虛擬服務器,為系統檢索、定位提供服務。在XML的集成機制裡,可以通過XML封裝體實現彼此之間的數據交互,所以不需要了解數據庫的格式,從而彌補了基於多代理的集成方法在這方面的不足。
下面首先概要介紹XML的相關技術,進而給出網絡環境下的、基於XML的信息集成方案:包括系統的總體框圖、層次結構、工作過程及系統主要組成部分的具體設計。
XML技術 1、XML相關標准
XML不僅僅是一種語言,廣義的XML是一系列標准的集合。圖1說明了XML及其相關標准,在圖中,中間一層是XML基礎標准,最下層是XML的應用標准。
圖1 XML相關標准
XML基礎標准是為XML的進一步實用化制定的標准,它規定了采用XML制定標准時的一些公用特征、方法或規則。XML Schema描述了更加嚴格定義XML文檔的方法,以便可以更自動地處理XML文檔。XML Namespace用於保證XML DTD中名字的一致性,以便不同的DTD中的名字在需要時 可以合並到一個文檔中。DOM定義了一組與平台和語言無關的接口,以便程序和腳本能夠動態訪問和修改XML文檔內容、結構及樣式。 XQuery的目的是為從Web文檔中提取數據,提供一種靈活的查詢機制。XPath描述如何識別、選擇、匹配XML文件中的各個構成元件,包括元素、屬性、文字內容等。XPointer和XLink標准,規定了有關定位、鏈接方面的內容。CSS被用來作為XML文檔顯示的樣式標准等等。
2、XML的主要技術特點
XML是一種元標記語言,強調以數據為核心,這兩大特點在XML的眾多技術特點中最為突出,同時也奠定了XML在信息管理中的優勢。
XML是一種元標記語言
與Html不同,XML不是一種具體的標記語言,它沒有固定的標記符號,是一種元標記語言,是一種用來定義標記的標記語言,它允許用戶自己定義一套適於應用的DTD。
XML的核心是數據
在一個普通的文檔裡,往往混合有文檔數據、文檔結構、文檔樣式三個要素。而對於XML文檔來說,數據是其核心。將樣式與內容分離,是XML的巨大優點。一方面可以使應用程序輕松的從文檔中尋找並提取有用的數據信息,而不會迷失在混亂的各類標簽中;另一方面,由於內容與樣式的獨立,也可以為同一內容套用各種樣式,使得顯示方式更加豐富、快捷。
3、DTD(Document Type Define,文檔類型定義)
DTD的作用是定義允許或不允許什麼在文檔中出現。DTD的結構:一般由元素類型聲明、屬性表聲明、實體聲明、記號聲明等構成。一個典型的文檔類型定義文件會把未來所要創作的XML文檔的元素結構、屬性類型、實體引用等預先進行規定。用戶既可以直接在XML文檔中定義DTD,也可以通過URL引用外部的DTD。DTD位XML文檔的編寫者和處理者提供了共同遵循的原則,使得與文檔相關的各種工作有了統一的標准。
1、於XML的信息集成總體框圖
圖2給出基於XML的信息集成的總體框圖[1],是把來自供應鏈節點上的、不同數據源(數據庫,構件庫,領域知識庫)的信息通過包裝器(Wrapper)轉換成XML數據,存儲在虛擬集中存儲器中,用戶通過DOM/SAX來獲取已經轉換成XML格式的信息;同樣,用戶通過DOM/SAX接口提交的查詢命令,通過包裝器轉換成本地數據源能夠識別的數據格式進行查詢。用戶通過XML的封裝體實現彼此之間的交互,而不需要了解對方的數據格式。
圖2 基於XML的信息集成總體框圖
2、基於XML的信息集成的層次結構
如圖3所示,整個信息集成可以分為三個層次:其中最底層為信息抽取層,中間為中介層,最上層為用戶接口層。
圖3 基於XML的信息集成層次結構
信息抽取層
信息抽取層處於系統的最低層,是系統的數據提供者,主要功能是提取和集成分布在多個異構數據源(數據庫,知識庫及構件庫)上的信息。這一層采用Wrapper(包裝器)技術實現將一個從中介層得到的查詢,翻譯成能在經過封裝的數據源上執行的操作,將查詢結果抽取並打包到一個XML文檔,最後將該文檔返回給中介層。
中介層
中介層(Mediation Layer)的主要功能有兩方面:一方面對上接受用戶通過DOM客戶端API向系統提交的或應用程序發出的查詢,將其轉換成對XML的查詢,並將查詢結果返回給用戶或應用程序;另一方面對下將XML查詢分發給各個包裝器,並將查詢結果通過DTD說明再轉換成XML格式。
用戶接口層
用戶接口層(User Interface Layer)在中介層之上,負責將用戶的查詢命令提交給中介層,獲得並解釋查詢結果樹,並將結果顯示給用戶。XML DOM(Document Object Model,文檔對象模型)是為合法的格式良好的XML文檔設計的一套API(Application Programming Interface,應用程序接口),它同時定義了這些文檔的邏輯結構,訪問及操作方法。由於數據顯示與內容分開,XML定義的數據允許指定不同的顯示方式,使數據更合理的表現出來。本地的數據能夠以客戶配置,使用者選擇或其他標准決定的方式動態的表現出來。CSS和XSL為數據的顯示提供了公布的機制。
整個系統位於異構數據源和應用程序之間,向下協調各種數據源,向上為訪問集成數據的應用提供了統一的模式和訪問的通用接口。系統為異構數據源提供高層次的檢索服務。
3、基於XML的信息集成的工作過程
下面以用戶的一個信息查詢為例,簡要說明一下信息系統的工作過程:
用戶通過DOM向系統提交信息查詢命令;
虛擬集中存儲器區分各個XML查詢命令,並且將其發送到適當的Wrapper包裝器上;
Wrapper包裝器負責將XML查詢轉換成本地數據源能識別的語言,並在數據源中進行查詢;
查詢結果根據DTD說明在轉換成XML格式並返回給虛擬集中存儲器由虛擬集中存儲器返回給DOM;
通過DOM對XML文檔的處理,結合XSL技術將查詢結果顯示給用戶。
4、基於XML的信息集成系統的設計
根據基於XML的信息集成的層次結構,下面給出包裝器Wrapper組件的設計。
包裝器Wrapper組件的設計
信息抽取層的Wrapper組件由兩部分組成:Wrapper生成器和Wrapper實例(簡稱Wrapper)。如圖4所示,一個Wrapper位於中介層和一個數據源的中間,它通常為中介層查詢異構信息源集合提供一個公共接口。每個Wrapper都要為某個特定的數據源制定相應的接口,這個功能是由Wrapper生成器完成的。
圖4 Wrapper生成器和Wrapper
Wrapper生成器用於為查詢某個確定的站點或站點集合構建Wrapper。Wrapper的輸入是用一種Wrapper規范語言書寫的規格說明,包括關於將要為之生成的Wrapper的數據源的元信息,該元信息描述了如何從一個數據源請求服務以及如何抽取和解釋從數據源返回的信息。規格說明還必須能夠表達以下內容:數據源接口、數據模型、從用戶到數據源本地操作的查詢映射、數據源的查詢能力。通常為一個數據源生成一個有效的Wrapper所必須的信息是使用DTD來描述的。Wrapper生成器的輸出是一個可以執行的 Wrapper,該Wrapper能夠接受由Wrapper規范語言定義的查詢。
下面以數據庫為例,給出對應的Wrapper相應的DTD:
數據庫
一個關系Wrapper能決定關系模型和DOM對象數據模型之間的映射。關系表的數據模式可以用三層來表示,即表--記錄--字段,因此可以很容易采用DTD來描述數據庫中關系表的數據模式。
下面以兩個關系表Trait(PersonID, Name,BirthDate,Address,IdentifyId) 及 Treatment(TreatID,Drugname,TreatNote,PersonID)
為例,他們與XML DTD之間的映射如下:
/*個人特性*/
Creat table Trait(
PersonID CHAR(3), Name CHAR(10),
BirthDate DATE, Address CHAR(30),
IdentifyId CHAR(18)
)
/*治療信息*/
Creat table Treatment(
TreatID NUMBER(6,0),
Drugname CHAR(20),
TreatNote CHAR(50),
PersonID CHAR(3)
)
<!ELEMENT Trait(Name,BirthDate,Address,IdentifyId)>
<!ATTLIST Trait PersonID IDREF # REQUIRED>
<!ELEMENT Name(#PCDATA)>
<!ELEMENT BirthDate(#PCDATA)>
<!ELEMENT Address(#PCDATA)>
<!ELEMENT IdentifyID(#PCDATA)>
<!ELEMENT Treatment(Drugname*,TreatNote,PersonID)>
<!ATTLIST Treatment TreatID ID # REQUIRED>
<!ELEMENT Drugname (#PCDATA)>
<!ELEMENT TreatNote (#PCDATA)>
<!-This filerepresents a fragment of a telemedicine data-->
在XML文檔與數據庫進行雙向轉化的過程中,除去最上層的根節點外,元素節點對應數據庫中的表,屬性和元素的類型對應表中的列,若一個元素節點為另一個元素節點的子節點,則用數據庫中的主碼和外部碼建立表之間的關系。在上面的例子中,元素節點Trait和Treatment對應數據庫中的表,而PersonID,Name等對應表中的列。由於節點Treatment為節點Trait的子節點,因此用PersonID與Trait建立關聯。
DOM客戶端API的設計 DOM全稱是Document Object Model,是一個文件對象所組成的模型。它不光用於XML,最早是用於HTML的。DOM定義了一組分析元可以顯示的標准指令集,通過程序存取Html或XML的內容,然後通過程序中的對象集合將其顯示出來。
我們可以通過創建Document對象,使得應用程序得到對XML文檔進行操作的入口。進一步通過直接加載XML文檔把創建的這個文檔對象同實際的XML文檔關聯起來。從而將XML文檔轉換成一個DOM對象模型,為上層提供訪問服務。
下面的例子結合VBScript和XML DOM對象來生成XML數據:
<SCRIPT LANGUAGE=VBScript>
<!--
Sub dombml_OnClick()
Set dom_xml=CreateObject("Microsoft.XMLDOM")
dom_XML.async=False
dom_xml.loadXML"<?XML version='1.0'?>" &_
"<personalinfo>" &_
" <name> " & namel.Value &_
" </name> " &_
" <id> " & id.Value &_
" </id> " &_
" <passWord> " &passWord.Value &_
" </passWord> " &_
" <email> " &email.Value &_
" </email> " &_
"</persomalinfo>"
aler(dom_xml.XML)
End Sub
-->
</SCRIPT>
<Html>
<head><title>利用DOM對象來生成XML數據</title></head>
<body>
<hr>
姓名:
<Input id=namel>
<br>
用戶名:
<input id=id>
<br>
密碼
<input type="password" id=passWord>
<br>
電子郵件
<input id=email>
<Input type=Button id=domxml value="生成XML數據">
</body>
</Html>
總結 Web環境下的異構數據源的集成,特別是基於XML的數據集成問題已經成為當前計算機領域中一個重要的研究方向。XML具有簡單、開放、可擴展性、靈活、自描述性等特點,給Internet注入了新的活力。作為數據表示的一個開放標准,XML為數據集成帶來了新的機遇。用XML作為數據交換的中介,給系統的實現帶來了極大的靈活性。系統可以屏蔽掉後台的多種數據源,用統一的XML格式的數據呈現給用戶。接收數據方根據XML數據的DTD可以對數據進行任意的處理,如分解出其中需要處理的數據或是以不同的樣式來顯示。通過本系統,可以實現散布在Web上的異構數據源中的數據的無縫集成。