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