張雅君
(鄭州航空工業(yè)管理學院,河南 鄭州 450015)
隨著計算機技術(shù)的迅猛發(fā)展,尤其是網(wǎng)絡技術(shù)、數(shù)據(jù)存儲技術(shù)以及數(shù)據(jù)傳輸技術(shù)的不斷進步與廣泛應用,極大豐富了數(shù)字圖書館的館藏資源與共享方式。如何有效整合異構(gòu)條件下分布式文獻資源庫,實現(xiàn)跨庫信息的統(tǒng)一發(fā)現(xiàn)、檢索和訪問,已成為當前數(shù)字圖書館的核心研究內(nèi)容之一?,F(xiàn)階段關(guān)于該方向的研究有多種,比較有代表性的成果有:①利用XML適合于異構(gòu)數(shù)據(jù)定義和數(shù)據(jù)信息交換的特點,基于XML封裝資源庫中各數(shù)據(jù)記錄,同時利用Web Service適合于標準服務接口封裝和遠程服務調(diào)用的特點,基于Web Service封裝各資源庫的數(shù)據(jù)訪問協(xié)議,從而實現(xiàn)大范圍異構(gòu)資源共享,以計算機技術(shù)為顯著特點。②充分利用元數(shù)據(jù)適合于圖書館數(shù)據(jù)資源描述的特點,設(shè)計出滿足本館需求的元數(shù)據(jù)描述標準,從而實現(xiàn)對本地多數(shù)據(jù)庫、第三方數(shù)據(jù)庫以及傳統(tǒng)圖書館OPAC系統(tǒng)數(shù)據(jù)庫的資源整合,以元數(shù)據(jù)技術(shù)為顯著特點。③融合前兩種解決方案,既利用XML Web Service技術(shù)適合于網(wǎng)絡資源和網(wǎng)絡服務整合的特點,又利用元數(shù)據(jù)技術(shù)適合于圖書館信息描述的特點,提出基于XML Web Service封裝的元數(shù)據(jù)跨庫檢索解決方案。這是目前最主流的共享解決方案。
筆者以第三種方案為立足點,同時考慮到OAI協(xié)議在國際上已被廣泛接受并獲得普遍應用[1],因此針對支持OAI協(xié)議的數(shù)據(jù)庫整合進行研究,其解決思路及研究成果亦適用于其他元數(shù)據(jù)協(xié)議類型,具有良好可推廣性。
OAI協(xié)議框架由數(shù)據(jù)提供者、服務提供者以及元數(shù)據(jù)搜索協(xié)議3部分組成[2]。其基本原理是:首先將數(shù)據(jù)提供者的本地元數(shù)據(jù)格式用公共元數(shù)據(jù)格式進行表達,然后利用開放元數(shù)據(jù)搜索協(xié)議對全局公共元數(shù)據(jù)進行檢索,具體應用時則由第三方服務提供者對搜索協(xié)議進行封裝,生成面向用戶的各種元數(shù)據(jù)檢索公共服務,從而有效解決多資源庫在元數(shù)據(jù)格式上的互異性問題,最終實現(xiàn)多館藏資源的跨庫檢索。
在該框架中,Web環(huán)境下各數(shù)字圖書館資源庫就是數(shù)據(jù)提供者,可采用簡單DC元數(shù)據(jù)格式作為公共映射格式,并將映射結(jié)果統(tǒng)一用XML進行編碼,形成異構(gòu)數(shù)據(jù)描述與交換的物質(zhì)基礎(chǔ)。對于元數(shù)據(jù)搜索協(xié)議,則可采用OAI的開放性元數(shù)據(jù)采集協(xié)議OAI-MHP作為公共通信標準,實現(xiàn)對分布式資源庫中各元數(shù)據(jù)信息的搜索與采集??紤]到網(wǎng)絡中不同數(shù)字圖書館平臺采用的運行環(huán)境可能互不相同,因此可采用Web Service作為提供公共基礎(chǔ)服務的統(tǒng)一封裝標準,在界面層有效消除異構(gòu)性,最終實現(xiàn)數(shù)字圖書館的資源整合。
簡單DC元數(shù)據(jù)搜索子系統(tǒng)又由結(jié)果文檔XML封裝模塊與數(shù)據(jù)訪問Web Service封裝模塊兩部分組成。其中,數(shù)據(jù)訪問模塊負責與遠程OAI原始數(shù)據(jù)庫建立訪問鏈接,并按照OAI協(xié)議框架規(guī)定的協(xié)議格式發(fā)送數(shù)據(jù)訪問請求到遠程OAI數(shù)據(jù)庫,從而實現(xiàn)DC格式的元數(shù)據(jù)搜索。結(jié)果文檔封裝模塊負責將數(shù)據(jù)訪問模塊搜索到的元數(shù)據(jù)結(jié)果封裝成XML文檔,并將該文檔傳送給基于Web Service的查詢服務子系統(tǒng)中的XML文檔解析模塊。解析模塊進行解析后,取得DC元數(shù)據(jù)記錄,再存放于中心DC元數(shù)據(jù)庫中,從而實現(xiàn)中心庫DC元數(shù)據(jù)記錄的生成。簡單DC元數(shù)據(jù)搜索子系統(tǒng)應在一定時間周期內(nèi)對各遠程OAI數(shù)據(jù)庫執(zhí)行一次搜索,以便中心庫元數(shù)據(jù)記錄得到及時更新。
基于Web Service的查詢服務子系統(tǒng)又由Web Service檢索服務生成模塊、XML文檔解析模塊以及中心元數(shù)據(jù)庫檢索模塊3部分組成。其中,服務生成模塊負責生成面向用戶的基于Web Service的信息檢索服務,供所有合法登錄的用戶執(zhí)行遠程調(diào)用。解析模塊負責兩種類型的XML文檔解析工作,一種是接收客戶端發(fā)送來的XML查詢文檔,對其解析,形成用戶查詢語句;另一種是接收簡單DC元數(shù)據(jù)搜索子系統(tǒng)的XML結(jié)果文檔,獲得DC記錄。最后,中心庫檢索模塊負責根據(jù)解析出的用戶查詢語句,直接檢索中心元數(shù)據(jù)庫中的DC記錄,并將檢索結(jié)果進行XML封裝后再返回給客戶端。由于中心元數(shù)據(jù)庫中的數(shù)據(jù)都是由搜索子系統(tǒng)通過遠程搜索獲取的,因此檢索時只需連接中心庫即可,無需再遠程連接原始庫,極大提高了檢索效率。
在上述整合模型中,簡單DC元數(shù)據(jù)搜索子系統(tǒng)與遠程OAI數(shù)據(jù)庫的訪問協(xié)議采用OAI協(xié)議框架的OAI-MHP標準協(xié)議。該協(xié)議首先自動遍歷遠程數(shù)據(jù)庫在服務器端的注冊信息,然后基于HTTP協(xié)議建立與遠程數(shù)據(jù)庫的訪問鏈接,最后從中抽取符合搜索條件的規(guī)范化、結(jié)構(gòu)化元數(shù)據(jù)記錄。
在具體實現(xiàn)時,遠程OAI數(shù)據(jù)庫在服務器端的注冊信息至少要包括6方面內(nèi)容,分別是數(shù)據(jù)庫標識符data_id、數(shù)據(jù)庫URL地址data_url、數(shù)據(jù)庫搜索標記data_flag、數(shù)據(jù)庫搜索方式data_method、數(shù)據(jù)庫元數(shù)據(jù)格式data_format以及數(shù)據(jù)庫OAI版本data_ver??梢灾苯訉⑵溆成涑梢粡埩侄蔚年P(guān)系表,存放在關(guān)系數(shù)據(jù)庫中。
在基于HTTP協(xié)議與OAI數(shù)據(jù)庫建立搜索鏈接時,可使用HTTP中的GET或POST方法來傳遞請求,該請求至少要包括一個以上的數(shù)據(jù)參數(shù)和一個格式為“verb=OAI方法名”的命令參數(shù)。其中OAI方法名可有6種方法值,分別是Identify、ListSets、ListMetadataFormat、ListIdentifiers、GetRecord以及ListRecord,其功能分別是:Identify返回元數(shù)據(jù)記錄的詳細描述,如名稱、地址等,ListSets返回庫中可用資源分組的名稱,如文本、圖片、視頻等,ListMetadataFormat返回存檔所用的元數(shù)據(jù)格式,ListIdentifiers返回滿足查詢條件的元數(shù)據(jù)記錄標識,GetRecord返回與指定標識對應的元數(shù)據(jù)記錄,ListRecord返回滿足查詢條件的元數(shù)據(jù)記錄。服務器端對該請求的響應結(jié)果也采用HTTP協(xié)議進行回傳。由此,即實現(xiàn)了基于HTTP協(xié)議與OAI-MHP協(xié)議的對遠程OAI數(shù)據(jù)庫的元數(shù)據(jù)搜索。
Web Service采取標準Web協(xié)議作為其中間件界面描述和協(xié)同描述的規(guī)范,完全屏蔽了不同軟件運行平臺的差異[4]。遵照Web Service標準封裝而成的各種應用具有獨立性、可擴展性以及模塊化等特點,能夠通過Internet來描述、發(fā)布、定位以及調(diào)用,非常適合用于編寫OAI數(shù)據(jù)資源整合系統(tǒng)的各種網(wǎng)絡公共服務。筆者選擇JAVA語言作為實際開發(fā)平臺(其版本為jdkl.5.0_04),選擇WebLogic 9.0為應用部署服務器,實現(xiàn)OAI數(shù)據(jù)整合系統(tǒng)查詢服務,即:根據(jù)整合系統(tǒng)模型,查詢服務主要承擔兩方面功能,第一是接收界面層傳遞來的用戶XML查詢文檔,對其進行解析并生成用戶查詢語句;第二是檢索中心DC元數(shù)據(jù)庫,形成XML檢索結(jié)果文檔。
一般情況下,客戶端通過界面層傳來的XML查詢文檔內(nèi)容較簡單,因此可采用DOM方法進行解析。DOM是一種W3C標準,可用一種與平臺和語言無關(guān)的方式來表示XML查詢文檔[5]。
(1)卵巢囊腫總計41例,其中單純囊腫14例,功能性囊腫14例,輸卵管系膜副中腎管囊腫10例,白或黃體囊腫出血3例。影像特點為圓形或卵圓形、邊緣銳利且光滑的異常信號,T1WI呈信號降低,T2WI呈信號升高。所有病例均診斷為良性病變,良性正確率100%[4]。
設(shè)界面層傳來的某用戶XML查詢文檔為search.xml,內(nèi)容如下:
使用JAVA語言,對該XML文檔的DOM解析過程如下:
首先,把要解析的XML文檔轉(zhuǎn)化為輸入流,以便解析。
InputStream xml1=new FileInputStream(search.xml)。
其次,解析該輸入流,得到一個文檔對象。
Document doc=dombuilder.parse(xml1);
再次,建立該文檔對象的根節(jié)點,以便通過樹結(jié)構(gòu)對XML輸入流進行遍歷解析。
Element root=doc.getDocumentElement();
最后,在遍歷解析中,依次讀取輸入流文檔樹的各子節(jié)點,獲得節(jié)點值,這些節(jié)點值就是被解析出的各種客戶端查詢信息。
NodeList dbname=childroot1.getElementsByTagName(“doc.databasename”);
NodeList dbaddress=childroot2.getElementsByTagAddress(“doc.databaseaddr
ess”);
NodeList dbsql=childroot3.getElementsByTagSql (“doc.databasesql”)。
基于Web Service標準,編寫檢索公共服務代碼,作為面向所有用戶的檢索服務提供者。其平臺環(huán)境為:設(shè)某數(shù)字圖書館資源數(shù)據(jù)庫為Oracle 9i,對外提供支持OAI協(xié)議的訪問接口,編程思路是,定義類ResourceSearchService,在該類中創(chuàng)建方法GetSearchRecord來完成元數(shù)據(jù)記錄提取、文檔轉(zhuǎn)換以及數(shù)據(jù)回傳等功能。
該方法中的待搜索數(shù)據(jù)庫地址、標識符、搜索語句等參數(shù)均來自于DOM對客戶端XML查詢文件的解析結(jié)果?;谠揥eb Service,實現(xiàn)了對中心DC元數(shù)據(jù)庫檢索服務的封裝,最后再將其部署到WebLogic 9.0服務器中,以響應所有客戶端的檢索請求。
基于Web Service設(shè)計了一個數(shù)字圖書館OAI資源整合模型。該模型由DC元數(shù)據(jù)搜索子系統(tǒng)與查詢服務子系統(tǒng)組成。對于每一個子系統(tǒng),又分別給出了各自的實現(xiàn)思想與關(guān)鍵程序代碼。實踐證明,該模型能很好實現(xiàn)用戶對多圖書館多資源庫的統(tǒng)一檢索,在界面層有效消除異構(gòu)性,達到了資源整合的目的。
[1]鄭建明,陳雅,陸寶益.數(shù)字時代圖書館的合作與資源共享——寫在《圖書館合作與信息資源共享武漢宣言》發(fā)表之后[J].大學圖書館學報,2006(2):2-4.
[2]Herbert Van de Sompel.The Santa Fe convention ofthe Open Archives Initiative[J].D-Lib Magazine,2000(2):12-15.
[3]王權(quán)良.數(shù)字圖書館OAI數(shù)據(jù)資源整合系統(tǒng)的研究與實現(xiàn)[D].北京:北京交通大學,2006:23-25.
[4]W3C Working Group Note.Web Services Architecture[EB/OL].[2009-10-11].http://www.w3.org/TR/2004/NOTE-ws-arch-20040211/.
[5]W3C Recommendation.Document Object Model(DOM)Level 1 Specification[EB/OL].[2009-10-28].http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/DOM.pdf.