摘要 在當前的網絡信息時代信息量不僅龐大而且源自於不同的數據源信息集成一直是研究的熱點基於多代理(MultiAgent)的信息資源集成方案有所不足而XML集成機制的優點適於網絡環境下基於XML的信息集成本方案包括系統的總體框圖層次結構工作過程及信息系統主要部分的具體設計
關鍵詞 XML資源集成DTDXSL WrapperDOM
引言
隨著計算機技術特別是Internet的不斷發展實現信息孤島之間的集成與交互成為亟待解決的問題
在諸多解決方案中基於多代理(MultiAgent)的信息集成就是其中的一種該系統已被認為是建造大型復雜分布式信息處理系統的重要技術和框架在基於多代理的方法中資源集成的具體操作步驟是用戶把請求提交給搜索代理由搜索代理對請求進行適當的轉換發送給代理路由器代理路由器通過鏈接將查詢請求發送給數據庫代理數據庫代理接受查詢請求並進行具體的數據庫操作然後把查詢結果返回給請求者搜索代理對返回的結果進行識別若存在所需的資源則激活本地數據庫代理對獲得的信息進行記錄由專家系統對所搜集的信息進行進一步的處理這種方法有一個明顯的缺陷即必須明確數據庫的格式代理才能正常工作
而XML技術則可以很好的解決這個問題用XML進行數據集成只需對所有的異構數據源增加一個以XML為格式的封裝體即在不改變數據源的前提下用XML對數據源的定義描述字數據源的創建等相關信息進行封裝供應鏈節點上所有數據源的封裝體納入全局的XML Schema或DTD並存儲在XML虛擬服務器為系統檢索定位提供服務在XML的集成機制裡可以通過XML封裝體實現彼此之間的數據交互所以不需要了解數據庫的格式從而彌補了基於多代理的集成方法在這方面的不足
下面首先概要介紹XML的相關技術進而給出網絡環境下的基於XML的信息集成方案包括系統的總體框圖層次結構工作過程及系統主要組成部分的具體設計
XML技術
XML相關標准
XML不僅僅是一種語言廣義的XML是一系列標准的集合圖說明了XML及其相關標准在圖中中間一層是XML基礎標准最下層是XML的應用標准
圖 XML相關標准
XML基礎標准是為XML的進一步實用化制定的標准它規定了采用XML制定標准時的一些公用特征方法或規則XML Schema描述了更加嚴格定義XML文檔的方法以便可以更自動地處理XML文檔XML Namespace用於保證XML DTD中名字的一致性以便不同的DTD中的名字在需要時 可以合並到一個文檔中DOM定義了一組與平台和語言無關的接口以便程序和腳本能夠動態訪問和修改XML文檔內容結構及樣式 XQuery的目的是為從Web文檔中提取數據提供一種靈活的查詢機制XPath描述如何識別選擇匹配XML文件中的各個構成元件包括元素屬性文字內容等XPointer和XLink標准規定了有關定位鏈接方面的內容CSS被用來作為XML文檔顯示的樣式標准等等
XML的主要技術特點
XML是一種元標記語言強調以數據為核心這兩大特點在XML的眾多技術特點中最為突出同時也奠定了XML在信息管理中的優勢
XML是一種元標記語言
與HTML不同XML不是一種具體的標記語言它沒有固定的標記符號是一種元標記語言是一種用來定義標記的標記語言它允許用戶自己定義一套適於應用的DTD
XML的核心是數據
在一個普通的文檔裡往往混合有文檔數據文檔結構文檔樣式三個要素而對於XML文檔來說數據是其核心將樣式與內容分離是XML的巨大優點一方面可以使應用程序輕松的從文檔中尋找並提取有用的數據信息而不會迷失在混亂的各類標簽中另一方面由於內容與樣式的獨立也可以為同一內容套用各種樣式使得顯示方式更加豐富快捷
DTD(Document Type Define文檔類型定義)
DTD的作用是定義允許或不允許什麼在文檔中出現DTD的結構一般由元素類型聲明屬性表聲明實體聲明記號聲明等構成一個典型的文檔類型定義文件會把未來所要創作的XML文檔的元素結構屬性類型實體引用等預先進行規定用戶既可以直接在XML文檔中定義DTD也可以通過URL引用外部的DTDDTD位XML文檔的編寫者和處理者提供了共同遵循的原則使得與文檔相關的各種工作有了統一的標准
基於XML的信息集成方案
於XML的信息集成總體框圖
圖給出基於XML的信息集成的總體框圖[]是把來自供應鏈節點上的不同數據源(數據庫構件庫領域知識庫)的信息通過包裝器(Wrapper)轉換成XML數據存儲在虛擬集中存儲器中用戶通過DOM/SAX來獲取已經轉換成XML格式的信息同樣用戶通過DOM/SAX接口提交的查詢命令通過包裝器轉換成本地數據源能夠識別的數據格式進行查詢用戶通過XML的封裝體實現彼此之間的交互而不需要了解對方的數據格式
圖 基於XML的信息集成總體框圖
基於XML的信息集成的層次結構
如圖所示整個信息集成可以分為三個層次其中最底層為信息抽取層中間為中介層最上層為用戶接口層
圖 基於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為數據的顯示提供了公布的機制
整個系統位於異構數據源和應用程序之間向下協調各種數據源向上為訪問集成數據的應用提供了統一的模式和訪問的通用接口系統為異構數據源提供高層次的檢索服務
基於XML的信息集成的工作過程
下面以用戶的一個信息查詢為例簡要說明一下信息系統的工作過程
用戶通過DOM向系統提交信息查詢命令
虛擬集中存儲器區分各個XML查詢命令並且將其發送到適當的Wrapper包裝器上
Wrapper包裝器負責將XML查詢轉換成本地數據源能識別的語言並在數據源中進行查詢
查詢結果根據DTD說明在轉換成XML格式並返回給虛擬集中存儲器由虛擬集中存儲器返回給DOM
通過DOM對XML文檔的處理結合XSL技術將查詢結果顯示給用戶
基於XML的信息集成系統的設計
根據基於XML的信息集成的層次結構下面給出包裝器Wrapper組件的設計
包裝器Wrapper組件的設計
信息抽取層的Wrapper組件由兩部分組成Wrapper生成器和Wrapper實例(簡稱Wrapper)如圖所示一個Wrapper位於中介層和一個數據源的中間它通常為中介層查詢異構信息源集合提供一個公共接口每個Wrapper都要為某個特定的數據源制定相應的接口這個功能是由Wrapper生成器完成的
圖 Wrapper生成器和Wrapper
Wrapper生成器用於為查詢某個確定的站點或站點集合構建WrapperWrapper的輸入是用一種Wrapper規范語言書寫的規格說明包括關於將要為之生成的Wrapper的數據源的元信息該元信息描述了如何從一個數據源請求服務以及如何抽取和解釋從數據源返回的信息規格說明還必須能夠表達以下內容數據源接口數據模型從用戶到數據源本地操作的查詢映射數據源的查詢能力通常為一個數據源生成一個有效的Wrapper所必須的信息是使用DTD來描述的Wrapper生成器的輸出是一個可以執行的 Wrapper該Wrapper能夠接受由Wrapper規范語言定義的查詢
下面以數據庫為例給出對應的Wrapper相應的DTD
數據庫
一個關系Wrapper能決定關系模型和DOM對象數據模型之間的映射關系表的數據模式可以用三層來表示即表——記錄——字段因此可以很容易采用DTD來描述數據庫中關系表的數據模式
下面以兩個關系表Trait(PersonID NameBirthDateAddressIdentifyId) 及 Treatment(TreatIDDrugnameTreatNotePersonID)為例他們與XML DTD之間的映射如下
/*個人特性*/
Creat table Trait(
PersonID CHAR() Name CHAR()
BirthDate DATE Address CHAR()
IdentifyId CHAR()
)
/*治療信息*/
Creat table Treatment(
TreatID NUMBER()
Drugname CHAR()
TreatNote CHAR()
PersonID CHAR()
)
<!ELEMENT Trait(NameBirthDateAddressIdentifyId)>
<!ATTLIST Trait PersonID IDREF # REQUIRED>
<!ELEMENT Name(#PCDATA)>
<!ELEMENT BirthDate(#PCDATA)>
<!ELEMENT Address(#PCDATA)>
<!ELEMENT IdentifyID(#PCDATA)>
<!ELEMENT Treatment(Drugname*TreatNotePersonID)>
<!ATTLIST Treatment TreatID ID # REQUIRED>
<!ELEMENT Drugname (#PCDATA)>
<!ELEMENT TreatNote (#PCDATA)>
<!This filerepresents a fragment of a telemedicine data>
在XML文檔與數據庫進行雙向轉化的過程中除去最上層的根節點外元素節點對應數據庫中的表屬性和元素的類型對應表中的列若一個元素節點為另一個元素節點的子節點則用數據庫中的主碼和外部碼建立表之間的關系在上面的例子中元素節點Trait和Treatment對應數據庫中的表而PersonIDName等對應表中的列由於節點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(MicrosoftXMLDOM)
dom_xmlasync=False
dom_xmlloadXML<?xml version=?> &_
<personalinfo> &_
<name> & namelValue &_
</name> &_
<id> & idValue &_
</id> &_
<password> &passwordValue &_
</password> &_
<email> &emailValue &_
</email> &_
</persomalinfo>
aler(dom_xmlXML)
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上的異構數據源中的數據的無縫集成
From:http://tw.wingwit.com/Article/program/net/201311/13260.html