專利名稱:用于動(dòng)態(tài)生成XQuery的方法和XQuery生成器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于為存儲(chǔ)有多個(gè)非XML文檔的XML數(shù)據(jù)庫動(dòng)態(tài)生 成XQuery的方法和XQuery生成器。
背景技術(shù):
XML數(shù)據(jù)庫是現(xiàn)代信息社會(huì)的最重要的技術(shù)工具之一。這種數(shù)據(jù)庫 的高度靈活性允許以高效的方式存儲(chǔ)和檢索數(shù)據(jù)。通常,XML數(shù)據(jù)庫設(shè) 計(jì)用于XML文檔。然而,在現(xiàn)有技術(shù)中還已知的是,擴(kuò)展XML數(shù)據(jù)庫以 使得它能夠存儲(chǔ)其它類型的文檔。例如,申請(qǐng)人的XML數(shù)據(jù)庫Tamiiio適 于存儲(chǔ)非XML文檔,例如純文本文件、MS Office文件、PDF文件、圖像 和音頻文件等。為了使得這種非XML文檔能夠在未來從數(shù)據(jù)庫檢索到, 已知的是分析要存儲(chǔ)的任何非XML文檔并且提取元數(shù)據(jù),以用于生成對(duì) 應(yīng)于非XML文檔的所謂XML影像文檔。使用XQuery,可在隨后搜索這 種影像XML文檔,并且可檢索對(duì)應(yīng)的非XML文檔。
因?yàn)閄Query最初僅具備有限的文本檢索(TR)功能,現(xiàn)有技術(shù)中已 知的是用附加的TR索引和專用的TR査詢引擎來擴(kuò)展其能力。例如,申 請(qǐng)人的"Tamino" XML數(shù)據(jù)庫中的XQuery版本提供有常見TR功能包, 像"包含"、"附近"、或"鄰近"。
XQuery生成器是用于數(shù)據(jù)庫的工具應(yīng)用,通常包含在數(shù)據(jù)管理和審 査包中。XQuery生成器通過向用戶遮掩查詢語言有時(shí)復(fù)雜的語法和語義 來提高用戶的生產(chǎn)力。代替地,給用戶提供對(duì)査詢語言的受限制功能進(jìn)行 的支持GUI的訪問,使他能夠在不懂查詢語言的語法和語義的情況下完成 其大部分的例行工作。在US 2006/0101002中公開了現(xiàn)有技術(shù)的這種 XQuery生成器的一個(gè)示例。
但是,當(dāng)搜索大量未知并且未分類的數(shù)據(jù),尤其是文本數(shù)據(jù)時(shí),現(xiàn)有技術(shù)的XQuery生成器是不適合的,因?yàn)樗鼈內(nèi)匀灰笥脩舻母呒?jí)技能。 因此本發(fā)明在基于該技術(shù)問題一個(gè)方面中用來便利在這種文檔中進(jìn)行搜索 并且同時(shí)為用戶保持盡可能多的靈活性,以便他可從非XML文檔的集合 中得到所有期望的信息。
發(fā)明內(nèi)容
在本發(fā)明的一個(gè)方面中,由根據(jù)權(quán)利要求1的方法解決該問題。在一 個(gè)實(shí)施例中,提供了一種用于為存儲(chǔ)有多個(gè)非XML文檔的XML數(shù)據(jù)庫動(dòng) 態(tài)生成XQuery的方法,每個(gè)非XML文檔具有在XML數(shù)據(jù)庫中的相應(yīng)影 像XML文檔,其中,所述方法包括以下步驟
-提供XQuery代碼的多個(gè)靜態(tài)單元,這些靜態(tài)單元是根據(jù)非XML文 檔來預(yù)定義的。
-組合一個(gè)或多個(gè)具有來自用戶的動(dòng)態(tài)輸入的靜態(tài)單元來生成 XQuery o
結(jié)果,用戶可容易地生成XQuery,其特別適于某組非XML文檔(及 其相應(yīng)影像XML文檔),這通過靈活地組合特別適合的預(yù)定義的靜態(tài) XQuery代碼單元來實(shí)現(xiàn)。例如,如果非XML文檔是文本文檔,預(yù)定義的 代碼單元可包含TR函數(shù),其接著可容易地由用戶按需進(jìn)行組合或調(diào)整。
為實(shí)現(xiàn)所描述的方法,"數(shù)據(jù)架構(gòu)"起先可預(yù)定義靜態(tài)代碼單元并接 著讓用戶組合這些單元,并且如果期望的話,甚至為由此得到的查詢添加 一些自由格式部分。因此這種數(shù)據(jù)架構(gòu)可充當(dāng)在缺乏經(jīng)驗(yàn)的用戶和將由 XQuery檢索的數(shù)據(jù)之間的媒介,類似于便利訪問圖書館的書的圖書管理 員。在一個(gè)實(shí)施例中通過給用戶呈現(xiàn)GUI得到來自用戶的動(dòng)態(tài)輸入,該 GUI提供了與一個(gè)或多個(gè)靜態(tài)單元相關(guān)的一個(gè)或多個(gè)按鈕。
在一個(gè)實(shí)施例中,在步驟a中提供了一個(gè)FLWOR表達(dá)式,其包括根 據(jù)非XML文檔來預(yù)定義的靜態(tài)for子句。該for子句表示包含將在其上執(zhí) 行査詢的文檔的集合和文檔類型。在影像XML文檔上執(zhí)行XQuery。
FLWOR表達(dá)式可進(jìn)一步包括根據(jù)非XML文檔來預(yù)定義的靜態(tài)return 子句。該靜態(tài)return子句可包含關(guān)于結(jié)果集的相關(guān)信息,即相應(yīng)的ino:id(s)、 ino:docname(s)等等。此外,F(xiàn)LWOR表達(dá)式可包括一個(gè)靜態(tài)let 子句用于聲明變量,例如非XML文檔的創(chuàng)建時(shí)間。最后FLWOR表達(dá)式 可包括一個(gè)where子句,其包括用于XQuery的至少一個(gè)動(dòng)態(tài)定義的用戶 判別式。該where子句不限制為單個(gè)判別式而是可包括由布爾操作符組合 的多個(gè)用戶判別式。
在一個(gè)實(shí)施例中,非XML文檔是文本文檔,尤其是Microsoft Office 文檔和/或Adobe PDF文檔。每個(gè)文本文檔可包括預(yù)定義文本部分和自由 格式文本。
根據(jù)另一方面,本發(fā)明涉及一種用于存儲(chǔ)有多個(gè)非XML文檔的XML 數(shù)據(jù)庫的XQuery生成器,每個(gè)非XML文檔具有在XML數(shù)據(jù)庫中的相應(yīng) 影像XML文檔,該XQuery生成器適于執(zhí)行上述方法中的任意一個(gè)。這種 XQuery生成器可以是較大數(shù)據(jù)庫管理系統(tǒng)(DBMS)的一部分。
最后,提供了包括適于執(zhí)行所述方法中的任意一個(gè)的指令的計(jì)算機(jī)程序。
圖l:其中可實(shí)現(xiàn)本發(fā)明的實(shí)施例的XML數(shù)據(jù)庫系統(tǒng)的圖示;和
圖2:由本發(fā)明的實(shí)施例生成的XQuery的圖示。
具體實(shí)施例方式
在下面,描述了本發(fā)明的方法的示例實(shí)施例。將會(huì)理解,可以通過許 多可替換的方式實(shí)現(xiàn)下面描述的功能,例如,在單個(gè)數(shù)據(jù)庫服務(wù)器上、在 多個(gè)數(shù)據(jù)庫服務(wù)器的分布式布置中、使用整體存儲(chǔ)器或外部存儲(chǔ)器等等。 這些實(shí)現(xiàn)細(xì)節(jié)對(duì)本發(fā)明來說都不是本質(zhì)的。
圖1給出了示例XML數(shù)據(jù)庫系統(tǒng)1的概觀。在圖1中系統(tǒng)1通常用 于存儲(chǔ)和檢索XML文檔(未示出)。但是圖l的XML數(shù)據(jù)庫系統(tǒng)還能夠 處理非XML文檔,例如圖1中示出的示例文件10。文件IO可以是任何類 型的非XML文檔,例如各種格式的文本文件(WORD、 PDF)、視頻文 件、音頻文件、其組合、圖像、諸如測(cè)量結(jié)果之類的二進(jìn)制數(shù)據(jù)的任意集合等。
為了處理文件10,在一個(gè)實(shí)施例中XML數(shù)據(jù)庫系統(tǒng)1包括文檔處理 器2。文檔處理器2驅(qū)動(dòng)存儲(chǔ)文檔的過程。如圖1左側(cè)上虛線箭頭所示 的,文件IO存儲(chǔ)在存儲(chǔ)裝置3中,例如XML數(shù)據(jù)庫系統(tǒng)1的RAID陣列 (未示出)或類似存儲(chǔ)設(shè)備。任何本領(lǐng)域技術(shù)人員已知的易失或非易失性 存儲(chǔ)裝置可用作XML數(shù)據(jù)庫系統(tǒng)1的存儲(chǔ)裝置3。
此外,文件10被轉(zhuǎn)發(fā)到模式處理器4。圖1右側(cè)示出的XML數(shù)據(jù)庫 系統(tǒng)1的模式處理器4和另外元件的操作用來處理文件10,使得它可類似 其它存儲(chǔ)在數(shù)據(jù)庫中的XML文檔被搜索和檢索。在圖1的示例實(shí)施例 中,模式處理器4提供關(guān)于將被調(diào)用的服務(wù)器擴(kuò)展5的信息。要注意,服 務(wù)器擴(kuò)展5也可被集成到整個(gè)XML數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫服務(wù)器的標(biāo)準(zhǔn)處 理引擎中,并且不必作為分離實(shí)體提供。但是,提供分離的服務(wù)器擴(kuò)展5 便于升級(jí)已有的XML數(shù)據(jù)庫系統(tǒng)使其具有處理諸如文件10之類的非 XML文件的功能。
服務(wù)器擴(kuò)展5處理文件10并生成影像XML文檔20的內(nèi)容。根據(jù)文 件10的類型,可執(zhí)行不同的步驟來生成影像XML文檔20。例如,可在圖 像文件10上執(zhí)行圖像處理,所述圖像處理導(dǎo)致輸出關(guān)于該圖像的元數(shù) 據(jù),例如其分辨率、顏色分布或任何其它類型的圖像相關(guān)信息??深愃频?處理其它類型的非XML文件以生成影像XML文檔20的任何種類的元數(shù) 據(jù)。使用影像XML文檔20,可執(zhí)行搜索,這允許從數(shù)據(jù)庫中快速檢索相 應(yīng)的非XML文件10。
上面說明的XML數(shù)據(jù)庫系統(tǒng)的當(dāng)前優(yōu)選實(shí)施例可以Tamino的名稱從 申請(qǐng)人:得到。申請(qǐng)人的Tamino數(shù)據(jù)庫系統(tǒng)的服務(wù)器擴(kuò)展稱為Tamino非 XML分度器。它將非XML文件(例如Microsoft Office文檔或Adobe PDF 文檔)集成到Tamino數(shù)據(jù)庫系統(tǒng)中。當(dāng)在Tamino數(shù)據(jù)庫集合(其中 Tamino非XML分度器為活動(dòng)的)中存儲(chǔ)或更新非XML文件時(shí),Tamino 存儲(chǔ)兩個(gè)對(duì)象,即非XML文件自身及其影像文件,所述影像文件包括包 含在文件中的原始數(shù)據(jù),例如在Microsoft Word文件中的純ASCII文本和 從該文件中抽取的元數(shù)據(jù)。用于檢索影像XML文檔及相應(yīng)非XML文檔的XQuery通常包含 FLOWR表達(dá)式。事實(shí)上,F(xiàn)LWOR表達(dá)式是XQuery的核心,因?yàn)樗鼈冊(cè)?許邏輯地構(gòu)造查詢。FLWOR表達(dá)式包含由關(guān)鍵詞for、 let、 where和 retum引入的子句。FLWOR表達(dá)式以for和let子句中的至少一種開始,其 后可跟有where子句并且以return子句結(jié)束。在圖2中示出了所生成的包 括四個(gè)子句的XQuery的示例。
如果很可能重復(fù)用于不同XQuery的FLWOR表達(dá)式的子句是靜態(tài) 的,即被預(yù)定義,那么對(duì)不熟悉該語言的語法和語義的用戶而言,生成這 種Xquery變得相當(dāng)容易。在圖l的示例中,for子句30是靜態(tài)的并且表示 包含將在其上執(zhí)行査詢的文檔的集合和文檔類型。子句30依賴于給定的 非XML文檔集合并且對(duì)許多要在該集合上執(zhí)行的不同XQuery將是相同 的。Let子句31也以靜態(tài)方式使用;其用于變量聲明,例如 CreationDate。
Where子句32動(dòng)態(tài)聚集與不同的用戶定義判別式相對(duì)應(yīng)的XQuery碎 片。XQuery碎片可由用戶動(dòng)態(tài)創(chuàng)建或者還可預(yù)定義并且僅由用戶選擇。 在一個(gè)XQuery中可存在多于一個(gè)的where子句32 (圖2中未示出)。此 外,可使用布爾操作符在一個(gè)where子句內(nèi)組合一個(gè)或多個(gè)條件,從而為 用戶提供高度靈活性。使用where子句32,可定義先前產(chǎn)生的元組必須滿 足的條件。如果條件得到滿足,則保留該元組,如果沒有,則丟棄該元 組。
靜態(tài)return子句33包含關(guān)于結(jié)果集的相關(guān)信息,即相應(yīng)的ino:id(s)、 ino:docname(s)等等。它確定了整個(gè)FLOWR表達(dá)式的結(jié)果。它在對(duì)where 子句32求值之后為每個(gè)保留的元組所調(diào)用。可格式化返回值。此外,對(duì) 于給定數(shù)據(jù)集合上的許多XQuery, return子句33是相同的使得該子句也 可以是靜態(tài)的。
用于所描述機(jī)制的優(yōu)選領(lǐng)域涉及具有存儲(chǔ)在Tamino (或相似XML數(shù) 據(jù)庫系統(tǒng))中的相當(dāng)大量的文本的文檔。這里,該機(jī)制與"正常" XQuery特征組合,以便于完全使用Tamino的文本檢索能力。
例如,該機(jī)制可用于將自由格式文本與預(yù)定義的固定格式字段,或與自由格式文本內(nèi)部的預(yù)定義標(biāo)準(zhǔn)文本組合的文檔。 一個(gè)重要的示例是由公 司的人力資源部在履歷(CV)文檔中進(jìn)行的搜索。通常一份CV是MS
Word或PDF文檔,描述了教育、技能以及按照先前項(xiàng)目的職業(yè)生涯。另 一個(gè)相關(guān)示例是在任何種類的保健系統(tǒng)內(nèi)的病人數(shù)據(jù)記錄中進(jìn)行的搜索。 在兩種情況下,可能存在上萬個(gè)半構(gòu)造的文本文檔需要管理。
為了實(shí)現(xiàn)所描述的根據(jù)本發(fā)明的XQuery生成器的實(shí)施例中的方法, "數(shù)據(jù)架構(gòu)"最初可準(zhǔn)備一組固定格式的XQuery,其對(duì)非XML文檔的各 個(gè)集合是最適合的并且接著使其對(duì)用戶可訪問。例如,可提供具有相應(yīng)選 擇按鈕的圖形用戶接口 (GUI)。除了選擇固定格式的Xquery之一外,用 戶可使用如上所描述的FLOWR表達(dá)式生成新的XQuery,例如通過任意 組合GUI的按鈕選擇和/或通過添加一些自由格式查詢來生成新的 XQuery。
用戶不必審査非XML文檔來生成如上所說明的有意義的XQuery。如 果數(shù)據(jù)架構(gòu)確實(shí)具有非XML的內(nèi)部結(jié)構(gòu)的某些知識(shí),這將有助于預(yù)定義 FLOWR表達(dá)式部分。然而,這不是必須的。通常,本發(fā)明允許將所有非 XML文檔"原樣"轉(zhuǎn)儲(chǔ)到XML數(shù)據(jù)庫系統(tǒng)(例如Tamino)中,并且所 描述的機(jī)制允許對(duì)其執(zhí)行搜索。
權(quán)利要求
1. 用于為存儲(chǔ)有多個(gè)非XML文檔(10)的XML數(shù)據(jù)庫(1)動(dòng)態(tài)生成XQuery的方法,每個(gè)非XML文檔都具有在XML數(shù)據(jù)庫(1)中的相應(yīng)影像XML文檔(20),所述方法包括以下步驟a. 提供XQuery代碼的多個(gè)靜態(tài)單元(30、33),所述靜態(tài)單元(30、33)是根據(jù)所述非XML文檔(10)來預(yù)定義的。b. 將一個(gè)或多個(gè)靜態(tài)單元(30、33)與來自用戶的動(dòng)態(tài)輸入(32)相組合,以生成所述XQuery。
2. 根據(jù)權(quán)利要求1所述的方法,其中在步驟a中提供了一個(gè)FLWOR 表達(dá)式,包括根據(jù)所述非XML文檔來預(yù)定義的靜態(tài)for子句(30)。
3. 根據(jù)權(quán)利要求2所述的方法,其中所述FLWOR表達(dá)式進(jìn)一步包 括根據(jù)所述非XML文檔來預(yù)定義的靜態(tài)return子句(33)。
4. 根據(jù)權(quán)利要求2或3中任意一個(gè)所述的方法,其中所述FLWOR表 達(dá)式包括一個(gè)where子句(32),其包括用于所述XQuery的至少一個(gè)動(dòng) 態(tài)定義的用戶判別式。
5. 根據(jù)權(quán)利要求4所述的方法,其中所述where子句包括由邏輯操作符組合的多個(gè)用戶判別式。
6. 根據(jù)前述權(quán)利要求之一所述的方法,其中所述非XML文檔(10) 是文本文檔(10),尤其是Microsoft Office文檔和/或Adobe PDF文檔。
7. 根據(jù)權(quán)利要求6所述的方法,其中每個(gè)文本文檔(10)包括自由 格式文本和可能預(yù)定義的文本部分。
8. 根據(jù)前述權(quán)利要求中任意一個(gè)所述的方法,其中通過給所述用戶 呈現(xiàn)GUI得到來自所述用戶的動(dòng)態(tài)輸入,所述GUI提供了與所述一個(gè)或 多個(gè)靜態(tài)單元相關(guān)的一個(gè)或多個(gè)按鈕。
9. 用于存儲(chǔ)有多個(gè)非XML文檔(10)的XML數(shù)據(jù)庫(1)的 XQuery生成器,每個(gè)非XML文檔(10)具有在所述XML數(shù)據(jù)庫(1)中 的相應(yīng)影像XML文檔(20),所述XQuery生成器適于執(zhí)行前述權(quán)利要求 1-8中任意一個(gè)所述的方法。
10. 包括根據(jù)權(quán)利要求9所述的XQuery生成器的數(shù)據(jù)庫管理系統(tǒng)。
11. 包括適于執(zhí)行如前述權(quán)利要求1-8中任意一個(gè)所述的方法的指令 的計(jì)算機(jī)程序。
全文摘要
公開了用于動(dòng)態(tài)生成XQuery的方法和XQuery生成器。具體而言,提供了一種用于為存儲(chǔ)有多個(gè)非XML文檔(10)的XML數(shù)據(jù)庫(1)動(dòng)態(tài)生成XQuery的方法和XQuery生成器,每個(gè)非XML文檔具有在XML數(shù)據(jù)庫(1)中的相應(yīng)影像XML文檔(20),包括以下步驟-提供XQuery代碼的多個(gè)靜態(tài)單元(30、33),靜態(tài)單元(30、33)是根據(jù)非XML文檔(10)來預(yù)定義的。-將一個(gè)或多個(gè)靜態(tài)單元(30、33)與來自用戶的動(dòng)態(tài)輸入(32)相組合,以生成所述XQuery。
文檔編號(hào)G06F17/30GK101419613SQ20081017341
公開日2009年4月29日 申請(qǐng)日期2008年10月22日 優(yōu)先權(quán)日2007年10月22日
發(fā)明者扎伊納布·加茨烏丁·薩依德, 阿日俊·本那杰 申請(qǐng)人:軟件股份公司