專利名稱:具有智能提示功能的圖形化xml內(nèi)容和結(jié)構(gòu)查詢系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息檢索或數(shù)據(jù)查詢等應(yīng)用領(lǐng)域中XML查詢的應(yīng)用,尤其是當(dāng)用戶不 了解要查詢的XML文檔的內(nèi)容,結(jié)構(gòu),模式等信息的情況下的圖形化XML小枝查詢技術(shù)。
背景技術(shù):
已有的XML數(shù)據(jù)庫(kù)允許用戶提交一個(gè)XPath或者XQuery來查詢相關(guān)的結(jié)果。這種 信息查詢模式需要用戶對(duì)XML數(shù)據(jù)庫(kù)的結(jié)構(gòu)和內(nèi)容比較了解,而且要對(duì)查詢語(yǔ)言很熟悉。 如果一個(gè)用戶對(duì)XML 了解很少,則在寫查詢時(shí)他經(jīng)常會(huì)感到困惑,所以他不得不去學(xué)習(xí)復(fù) 雜的DTD或者XML模式從而來了解XML文檔的結(jié)構(gòu)。
為了解決這些問題,學(xué)者們已經(jīng)設(shè)計(jì)了多種系統(tǒng)旨在簡(jiǎn)化用戶的查詢過程。已有 的圖形化XML查詢系統(tǒng)大致可以分為兩類(i)開發(fā)圖形化系統(tǒng)支持傳統(tǒng)的XQuery語(yǔ)言, 例如XQE,這些系統(tǒng)提供友好的接口來輸入XQuery表達(dá)式并且作了大量的工作來優(yōu)化查詢 計(jì)劃。(ii)開發(fā)圖形化查詢語(yǔ)言來把查詢轉(zhuǎn)化為SQL或者SQL/XML,例如GLASS,XML-GL, 這些系統(tǒng)提供新的圖形化語(yǔ)言來查詢XML文檔。但是上述這些系統(tǒng)依然要求用戶對(duì)XML文 檔的結(jié)構(gòu)和內(nèi)容的知識(shí),但是這對(duì)于普通用戶而言是很困難的,而且隨著XML文檔越來越 復(fù)雜,越來越大,要在查詢前事先對(duì)文檔進(jìn)行了解是很不合理,很不科學(xué)的。而且不利于推發(fā)明內(nèi)容
為了克服已有XML圖形化查詢系統(tǒng)要求用戶必須對(duì)XML文檔的結(jié)構(gòu)或者內(nèi)容了解 的不足,本發(fā)明開發(fā)新穎的圖形化界面來提供XML小枝查詢下的智能提示功能,以此來智 能引導(dǎo)用戶完成查詢條件的創(chuàng)建,并用新的排序公式來對(duì)結(jié)果進(jìn)行排序,最后用圖形化界 面來直觀展示結(jié)果。
本發(fā)明首先利用JavMcript+jsp設(shè)計(jì)了支持圖形化方式創(chuàng)建小枝模式的系統(tǒng)。 該步驟A的主要實(shí)現(xiàn)步驟包括:A1、實(shí)現(xiàn)通過拖拽產(chǎn)生結(jié)點(diǎn)。A2、根據(jù)B和C返回的列表來 確定結(jié)點(diǎn)。A3、通過為結(jié)點(diǎn)加邊來完成小枝模式的創(chuàng)建。A4、通過增加順序標(biāo)志來實(shí)現(xiàn)帶順 序的查詢。
其次,本發(fā)明提出了智能提示算法來返回標(biāo)簽名稱列表。該步驟B主要實(shí)現(xiàn)步驟 包括B1、把正在創(chuàng)建的結(jié)點(diǎn)的X,Y坐標(biāo)通過AJAX發(fā)送給服務(wù)器。Β2、通過智能提示算法返 回目前可行的標(biāo)簽名稱。Β3、為這些標(biāo)簽名稱構(gòu)建tag-trie。
接著,本發(fā)明提出了結(jié)點(diǎn)值提示方案。該步驟C主要包括C1、通過AJAX把n0de_ name中的值發(fā)給服務(wù)器。C2、通過預(yù)處理時(shí)的統(tǒng)計(jì)信息來來判斷該結(jié)點(diǎn)下的值的類型為 數(shù)值型還是字符串型,并根據(jù)不同類型返回相應(yīng)的輸入框。C3、根據(jù)索引找到屬于該標(biāo)簽名 的值,并抽取具有代表性的幾個(gè)來構(gòu)建value-trie。C4、通過AJAX把用戶在node-value中 輸入字符發(fā)給服務(wù)器,服務(wù)器會(huì)調(diào)整抽取的值來構(gòu)建新的value-trie。
進(jìn)一步,本發(fā)明設(shè)計(jì)了新的結(jié)果排序公式。該步驟D主要包括D1、設(shè)計(jì)考慮內(nèi)容5的排序公式Sv。D2、設(shè)計(jì)考慮結(jié)構(gòu)的結(jié)果排序公式&。D3、設(shè)計(jì)公Skore把Sv和&結(jié)合 起來對(duì)結(jié)果進(jìn)行排序。
最后,本發(fā)明利用Jav必cript+jsp設(shè)計(jì)了結(jié)果展示和打分系統(tǒng)。該步驟E包括 E1、求得結(jié)果中各個(gè)元素的坐標(biāo)。E2、用Jav必cript在這些坐標(biāo)點(diǎn)上相應(yīng)的圖形來表示相 應(yīng)的元素。E3、用JavMcript為各個(gè)元素連接相應(yīng)的邊。E4、用JavMcript繪制相應(yīng)長(zhǎng)度 的進(jìn)度條來表示公式score的值。
本發(fā)明的有益效果是,提供高效的智能提示功能來改進(jìn)傳統(tǒng)的圖形化XML搜索系 統(tǒng)必須要求用戶事先對(duì)要搜索的XML文檔的結(jié)構(gòu)和內(nèi)容了解的不足,使得用戶(即使是對(duì) 文檔一無所知的初級(jí)用戶)能方便地創(chuàng)建有意義的小枝查詢。而且本發(fā)明設(shè)計(jì)了新穎的圖 形化創(chuàng)建小枝模式的界面。本發(fā)明還提出了新的排序公式綜合考慮了內(nèi)容和結(jié)構(gòu)信息,很 好地對(duì)結(jié)果進(jìn)行排序,并能通過圖形化的方式直觀地展示搜索結(jié)果給用戶。
圖1 :XML文檔轉(zhuǎn)化為一棵有序樹。
圖2 —個(gè)小枝模式在XML文檔中執(zhí)行的結(jié)果。
圖 3 由{b, abc, abd, bed, abed, efg, hii}這六個(gè)詞構(gòu)成的 Trie 樹的結(jié)構(gòu)。
圖4 有無順序限制時(shí)智能提示的不同。
圖5 查詢帶順序要求的航班信息時(shí)的小枝模式。
圖6:系統(tǒng)結(jié)構(gòu)圖
圖7 是否在一個(gè)結(jié)點(diǎn)的影響范圍內(nèi)對(duì)潛在結(jié)點(diǎn)名稱的影響
圖8 新結(jié)點(diǎn)落在多個(gè)結(jié)點(diǎn)的范圍內(nèi)時(shí)可行結(jié)點(diǎn)名稱必須保證是其他所有結(jié)點(diǎn)的 后代。
圖9 父親結(jié)點(diǎn)是否有順序要求時(shí)可行結(jié)點(diǎn)名列表的不同。
圖10 能自動(dòng)考慮結(jié)點(diǎn)在小枝中的位置以及結(jié)點(diǎn)間的關(guān)系并為結(jié)點(diǎn)返回智能提 示的算法。
具體實(shí)施方式
為了更全面地理解本發(fā)明及其優(yōu)點(diǎn),下面結(jié)合附圖及具體實(shí)施過程對(duì)本發(fā)明做進(jìn) 一步詳細(xì)地說明。
一.為了便于清楚理解期間,首先對(duì)以下幾個(gè)定義進(jìn)行簡(jiǎn)單地介紹。
XML文檔XML文檔由各種用戶自定義的標(biāo)簽有結(jié)構(gòu)有順序地組成,可以轉(zhuǎn)化為一 棵帶根結(jié)點(diǎn)的有序樹。圖1是XML文檔轉(zhuǎn)化為有序樹的例子。
XQuery語(yǔ)言是另外一種XML查詢語(yǔ)言,XQuery相對(duì)于XML的關(guān)系,等同于SQL相 對(duì)于數(shù)據(jù)庫(kù)表的關(guān)系。XQuery使用函數(shù)來提取XML文檔中的數(shù)據(jù)。XQuery還定義了 FLWOR 結(jié)構(gòu)來進(jìn)行規(guī)范查詢,其中FLW0R是〃 For, Let, Where, Order by, Return"的首字母縮 寫。下面是一個(gè)XQuery表達(dá)式
權(quán)利要求
1.具有智能提示功能的圖形化XML數(shù)據(jù)的查詢技術(shù),具體的步驟包括A、開發(fā)一個(gè)圖形化創(chuàng)建小枝模式的操作界面。B、設(shè)計(jì)智能提示算法,能根據(jù)小枝中結(jié)點(diǎn)的不同位置來自動(dòng)反饋當(dāng)前該結(jié)點(diǎn)可行的標(biāo) 簽名稱,并設(shè)計(jì)tag-trie來支持前綴搜索。C、設(shè)計(jì)能自動(dòng)識(shí)別結(jié)點(diǎn)類型并且動(dòng)態(tài)構(gòu)建value-trie來支持對(duì)大量結(jié)點(diǎn)值的前綴搜索。D、設(shè)計(jì)新的既考慮結(jié)構(gòu)又考慮內(nèi)容的排序公式E、開發(fā)能以樹形方式展示結(jié)果,并對(duì)查詢結(jié)果進(jìn)行打分界面。
2.根據(jù)權(quán)利請(qǐng)求1中的步驟A,其具體步驟包括如下內(nèi)容步驟Al 實(shí)現(xiàn)拖拽圓(系統(tǒng)中給定的,并且支持多次拖拽)到任意的地方來產(chǎn)生結(jié)點(diǎn), 在拖拽后的結(jié)點(diǎn)的右下角出現(xiàn)兩個(gè)輸入框標(biāo)簽名稱(必填)和結(jié)點(diǎn)值(可選)。步驟A2 根據(jù)權(quán)利申請(qǐng)1中B和C的方法分別完成對(duì)這兩個(gè)輸入框的信息提交,結(jié)點(diǎn) 則創(chuàng)建成功。步驟A3 選定兩個(gè)結(jié)點(diǎn),并且確定要連接的邊的類型,然后進(jìn)行連線。連線后一棵小枝 創(chuàng)建成功。步驟A4 如果要對(duì)某個(gè)結(jié)點(diǎn)增加順序要求,則選中那個(gè)結(jié)點(diǎn),點(diǎn)擊增加順序按鈕。
3.根據(jù)權(quán)利請(qǐng)求2,其中步驟Al進(jìn)一步闡述為步驟Al-I 事先在系統(tǒng)中放置N個(gè)ID不同的圓(c_i,i表示第i個(gè)圓),其中1個(gè)可 見N-I個(gè)不可見,每個(gè)圓都有一個(gè)變量flag來控制它是否可以被拖拽。N個(gè)ID不同的不 可見的層(1」,i表示第i個(gè)層),每個(gè)層中包含四個(gè)輸入框,兩個(gè)可見的用于輸入標(biāo)簽名 (node_name)和結(jié)點(diǎn)值(nodejalue),兩個(gè)不可見的用于記錄提交信息時(shí)對(duì)應(yīng)結(jié)點(diǎn)的X,Y 坐標(biāo)(xpos和ypos);還需放置三個(gè)不可見的輸入框,一個(gè)用于記錄當(dāng)前的小枝情況(twig_ current),另一個(gè)用于記錄哪個(gè)結(jié)點(diǎn)被標(biāo)志了順序(node^rder),最后一個(gè)記錄所有結(jié)點(diǎn) 信息串(nodejnessage),格式為[結(jié)點(diǎn)名,結(jié)點(diǎn)值,X坐標(biāo),Y坐標(biāo)];步驟A1-2 利用JavMcript實(shí)現(xiàn)當(dāng)對(duì)第一個(gè)圓進(jìn)行拖拽時(shí),原來不可見的第二個(gè)圓變 得可見,以此類推;步驟A1-3 利用JavMcript實(shí)現(xiàn)當(dāng)?shù)谝粋€(gè)圓被拖拽到一個(gè)地方后,第一個(gè)層變得可 見,并出現(xiàn)在該結(jié)點(diǎn)的右下角,并把該結(jié)點(diǎn)的X,Y坐標(biāo)記錄到xpos和ypos中。
4.根據(jù)權(quán)利請(qǐng)求2,其中步驟A2進(jìn)一步過程為步驟A2-1 當(dāng)用戶把鼠標(biāo)定位到標(biāo)簽名稱的輸入框時(shí),JavMcript調(diào)用AJAX發(fā)送請(qǐng) 求,把當(dāng)前結(jié)點(diǎn)的xpos和ypos發(fā)送到服務(wù)器,然后根據(jù)權(quán)利申請(qǐng)1中的步驟B在輸入框旁 邊出現(xiàn)了一個(gè)存放目前可行的標(biāo)簽名稱列表。步驟A2-2 用戶選擇列表中的任意一個(gè),則n0de_name輸入框中的值也跟著變化。如 果用戶通過鍵盤直接在nodmame輸入框中輸入字符,則用戶每輸入一個(gè)字符就觸發(fā)一次 AJAX請(qǐng)求的發(fā)送,則根據(jù)權(quán)利申請(qǐng)1中的步驟B返回一個(gè)前綴與用戶輸入信息相同的,并且 在目前位置下是可行的標(biāo)簽名稱列表,并更新nodejnessage的值。步驟A2-3 當(dāng)用戶選定一個(gè)結(jié)點(diǎn)名稱后并把鼠標(biāo)定位到node^alue輸入框中時(shí),觸發(fā) 一次AJAX請(qǐng)求,則根據(jù)權(quán)利申請(qǐng)1中的步驟C反饋該標(biāo)簽名稱下的所有值中具有代表性的 幾個(gè),當(dāng)用戶在node^alue中輸入字符時(shí),用戶每輸入一個(gè)字符就觸發(fā)一次AJAX請(qǐng)求的發(fā)送,由于值的個(gè)數(shù)一般都很多,所以根據(jù)權(quán)利申請(qǐng)1中的步驟C返回一些前綴與用戶輸入信 息相同的并具有代表性的值,并更新nodejiiessage的值。
5.根據(jù)權(quán)利請(qǐng)求2,其中步驟A3進(jìn)一步過程為步驟A3-1 利用JavMcript實(shí)現(xiàn)平面上任意兩點(diǎn)間的連線,定義drawPC(xl, yl, x2, y2)方法來對(duì)點(diǎn)(xl, yl)和(x2, y2)連接一條紅線,表示Parent-Child關(guān)系; drawAD(xl, yl, x2, y2)方法來對(duì)點(diǎn)(xl,yl)和(x2,y2)連接兩條平行的綠線,表示 Ancestor-Descendant 關(guān)系。步驟A3-2 利用JavMcript從nodejiiessage中獲取已經(jīng)創(chuàng)建好的結(jié)點(diǎn)名稱和當(dāng)選定 要連線的兩個(gè)結(jié)點(diǎn)對(duì)應(yīng)的X,Y坐標(biāo)。步驟A3-3 當(dāng)選擇要連接Parent-Child邊時(shí),系統(tǒng)會(huì)調(diào)用drawPC方法來加邊。當(dāng)選 擇Ancestor-Descendant時(shí),則調(diào)用drawAD方法來加邊。每次為兩個(gè)結(jié)點(diǎn)加邊的操作實(shí)際 上就是創(chuàng)建小枝(Twig)的操作,因此要更新twig_current的值。
6.根據(jù)權(quán)利請(qǐng)求2,其中步驟A4進(jìn)一步過程為步驟A4-1 利用JavMcript實(shí)現(xiàn)markOrder (x,y)方法在任意一點(diǎn)增加順序標(biāo)記。 步驟A4-2 利用Javakript從nodejiiessage中獲取要增加順序要求的結(jié)點(diǎn)對(duì)應(yīng)的X, Y坐標(biāo),然后調(diào)用markOrder來增加“〈”標(biāo)記到相應(yīng)的結(jié)點(diǎn)上。步驟A4-3 設(shè)置n0de_0rder的值為被被標(biāo)記了順序的結(jié)點(diǎn),并更新twig_current的值。
7.根據(jù)權(quán)利請(qǐng)求1,其中步驟B進(jìn)一步過程為步驟Bl 當(dāng)用戶把鼠標(biāo)定位到node_name輸入框中時(shí),AJAX會(huì)把xpos和ypos中的值 發(fā)給服務(wù)器。步驟B2 服務(wù)器根據(jù)傳來的值調(diào)用智能提示算法,把所有可行的結(jié)果反饋出來,并構(gòu) 建tag-trie來支持用戶的前綴搜索。
8.根據(jù)權(quán)利請(qǐng)求1中的步驟C,其具體步驟包括如下內(nèi)容步驟Cl 當(dāng)用戶把鼠標(biāo)定位到nodejalue輸入框中時(shí),AJAX會(huì)把nodejame中的值發(fā) 給服務(wù)器。步驟C2 服務(wù)器根據(jù)傳來的節(jié)點(diǎn)名稱在預(yù)處理XML文檔時(shí)記錄下的統(tǒng)計(jì)信息中找該結(jié) 點(diǎn)下的值的類型。如果為數(shù)值型,則返回一個(gè)具有描述大于,小于,等于以及“and”與“or” 操作的下拉框組;如果為字符串型則返回一個(gè)輸入框即可。步驟C3:當(dāng)判斷出結(jié)點(diǎn)值的類型為字符串時(shí),就要選擇結(jié)點(diǎn)值中具有代表性的一些進(jìn) 行構(gòu)建value-trie來支持前綴搜索。步驟C4 當(dāng)用戶在node-value中輸入字符時(shí),之前的value-trie返回的結(jié)果個(gè)數(shù)如 果少于5個(gè)或者不存在以這些字符為前綴的值時(shí),會(huì)刪除該value-trie,繼續(xù)根據(jù)索引尋 找符合前綴要求的值,并選擇這些值中的少數(shù)有代表性的,再構(gòu)建新的value-trie來提供 前綴搜索。直到用戶在列表中找到自己想要的值為止。
9.根據(jù)權(quán)利請(qǐng)求1,其中步驟D的進(jìn)一步過程為 步驟Dl 提出公式Sv來對(duì)結(jié)果按照內(nèi)容進(jìn)行排序 步驟D2 提出公式&來對(duì)結(jié)果按照結(jié)構(gòu)進(jìn)行排序步驟D3 提出公式kore綜合考慮Sv和&來對(duì)結(jié)果進(jìn)行排序。
10.根據(jù)權(quán)利請(qǐng)求9,其中步驟Dl的進(jìn)一步過程為
11.根據(jù)權(quán)利請(qǐng)求9,其中步驟D2的進(jìn)一步過程為
12.根據(jù)權(quán)利請(qǐng)求9,其中步驟D3的進(jìn)一步過程為 score (r, q) = α Sv (r)+ (I-α )ST(r, q)其中α是一個(gè)在介于0,1之間的系數(shù),而且Sv和&分別表示值和結(jié)構(gòu)因素。
13.根據(jù)權(quán)利請(qǐng)求1,其中步驟E的進(jìn)一步過程為步驟El 查詢結(jié)果返回的是XML小文檔,用jsp來計(jì)算文檔中結(jié)點(diǎn),結(jié)點(diǎn)值,屬性等賦 予能構(gòu)成樹形式的坐標(biāo)(即根結(jié)點(diǎn)的y坐標(biāo)最小,葉子結(jié)點(diǎn)的y坐標(biāo)最大,χ坐標(biāo)的分配按 照各層的結(jié)點(diǎn)個(gè)數(shù)多少來動(dòng)態(tài)改變)。步驟E2 用JavMcript在這些坐標(biāo)點(diǎn)上繪制相應(yīng)的圓(表示結(jié)點(diǎn)),方形(表示結(jié)點(diǎn) 值)或者菱形(表示屬性)。步驟E3 用JavMcript實(shí)現(xiàn)類似權(quán)利申請(qǐng)5步驟A3-1中的drawPC那樣的畫線功能, 這里要實(shí)現(xiàn)三種邊結(jié)點(diǎn)與結(jié)點(diǎn),結(jié)點(diǎn)與值,結(jié)點(diǎn)與屬性。步驟E4 根據(jù)步驟El的求得的坐標(biāo),以及識(shí)別每個(gè)坐標(biāo)對(duì)應(yīng)的元素來來相應(yīng)的線條。 步驟E5 根據(jù)權(quán)利申請(qǐng)8步驟D3中求出的score的值,為每個(gè)結(jié)果繪制出一個(gè)以該值 為寬度的有背景色的層,并繪制一個(gè)寬度為100的,無背景色但是有邊框顏色的層放在后 面。這樣就能直觀地表示出各個(gè)結(jié)果的分?jǐn)?shù)。
全文摘要
本發(fā)明屬于信息技術(shù)領(lǐng)域關(guān)于智能化的XML數(shù)據(jù)查詢技術(shù),具體的是在提出新的XML圖形化查詢方法的基礎(chǔ)上設(shè)計(jì)了一套具有智能提示功能的XML查詢系統(tǒng)。該系統(tǒng)提供在一個(gè)圖形化創(chuàng)建查詢的界面上,針對(duì)標(biāo)簽名稱和結(jié)點(diǎn)值提供了智能提示功能來引導(dǎo)用戶創(chuàng)建查詢。從而使用戶在不了解XML模式、內(nèi)容、結(jié)構(gòu)甚至不會(huì)寫XQuery等查詢語(yǔ)言的情況下也能進(jìn)行XML搜索。系統(tǒng)定義了一個(gè)綜合考慮查詢結(jié)果的排序機(jī)制,并把對(duì)每個(gè)結(jié)果進(jìn)行打分后用樹的形式展示給用戶1,開發(fā)支持圖形化拖拽方式創(chuàng)建XML查詢語(yǔ)句的界面;2,設(shè)計(jì)智能提示算法;3,設(shè)計(jì)對(duì)查詢結(jié)果根據(jù)結(jié)構(gòu)和內(nèi)容信息排序的機(jī)制;4,開發(fā)為結(jié)果打分并以樹的顯示展示結(jié)果的界面。
文檔編號(hào)G06F17/30GK102033956SQ201010606470
公開日2011年4月27日 申請(qǐng)日期2010年12月27日 優(yōu)先權(quán)日2010年12月27日
發(fā)明者林春彬, 陸嘉恒 申請(qǐng)人:陸嘉恒