專利名稱:用于存儲和訪問互鎖樹數(shù)據(jù)倉庫中的數(shù)據(jù)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算領(lǐng)域,具體來說,涉及將數(shù)據(jù)存儲在數(shù)據(jù)倉庫中并訪問其中的數(shù)據(jù)的領(lǐng)域。
背景技術(shù):
在開發(fā)軟件時開發(fā)人員所作出的一個基本選擇是選擇適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)以便于組織和引用數(shù)據(jù)。有許多不同類型的數(shù)據(jù)結(jié)構(gòu),包括鏈接列表、堆棧、樹、數(shù)組及其他。每一個數(shù)據(jù)結(jié)構(gòu)都與某些優(yōu)點和局限關(guān)聯(lián)。
一個頻繁使用的數(shù)據(jù)結(jié)構(gòu)是樹。樹的一種常見形式由叫做節(jié)點的元素的有限集構(gòu)成,從根到一個或多個內(nèi)部節(jié)點鏈接在一起,其中每一個節(jié)點都可以鏈接到一個或多個節(jié)點,最終以許多葉節(jié)點結(jié)束。通常,與根比較近的節(jié)點是遠離根的節(jié)點的父節(jié)點。遠離根的節(jié)點叫做父節(jié)點的子節(jié)點。數(shù)據(jù)通常存儲在節(jié)點中,并可以使用從根到節(jié)點到葉和從父節(jié)點到子節(jié)點的鏈接來引用。因此,分層或順序關(guān)系可以是存儲在樹結(jié)構(gòu)的節(jié)點中的數(shù)據(jù)。分層關(guān)系也可以被理解為上下文關(guān)系,每一個節(jié)點都可在其父節(jié)點的上下文內(nèi)被訪問。
樹數(shù)據(jù)結(jié)構(gòu)的一個局限是,通常,一個樹只能代表一個層次結(jié)構(gòu)。例如,銷售活動的根節(jié)點可以具有許多從根節(jié)點下垂的節(jié)點,每一個節(jié)點都代表特定推銷員。每一個銷售員節(jié)點都可以具有子節(jié)點,每一個銷售員子節(jié)點都代表位于特定州的銷售。因此,在銷售員的上下文內(nèi)可以輕松地訪問此樹,以查找州信息,即,此樹可以用來有效地回答問題“銷售員Bob在哪個州進行銷售?”如果不是按銷售員訪問州數(shù)據(jù),而需求州的上下文內(nèi)的銷售員數(shù)據(jù),(即,我們希望回答問題“哪個銷售員在得克薩斯州銷售?”),則必須創(chuàng)建另一個樹,代表州的節(jié)點從根銷售員活動下垂,代表銷售員的子節(jié)點可以從該節(jié)點中下垂。創(chuàng)建另一個樹的替代方法將是遍歷整個樹,以提取所希望的信息。
如果一個結(jié)構(gòu)可以記錄數(shù)據(jù)內(nèi)的所有可能的上下文關(guān)系是有幫助的,從而實現(xiàn)用標(biāo)準(zhǔn)樹數(shù)據(jù)結(jié)構(gòu)無法實現(xiàn)的效率。
發(fā)明內(nèi)容
生成和/或訪問包括互連的樹的林所構(gòu)成的一個或多個級別的基于樹的數(shù)據(jù)倉庫?;跇涞臄?shù)據(jù)倉庫的每一個級別包括從第一根節(jié)點下垂的第一樹,并可以包括多個樹枝。第一根可以代表諸如但不限于級別開始指示符之類的概念。第一樹的每一個樹枝都在葉節(jié)點中結(jié)束。每一個葉節(jié)點都可以代表最終產(chǎn)物,如下面比較全面地描述的。基于樹的數(shù)據(jù)倉庫的同一個級別的第二根鏈接到代表最終產(chǎn)物的第一樹的每一個葉節(jié)點。因此,第二根基本上是第一樹或第一樹的子集的倒序的根,但第一樹不重復(fù)。第二根可以代表諸如但不限于級別結(jié)束指示符之類的概念。最后,基于樹的數(shù)據(jù)倉庫包括多個樹,其中,這些樹中的每一個樹的根節(jié)點都可以包括諸如數(shù)據(jù)集元素或數(shù)據(jù)集元素的表示法之類的數(shù)據(jù)。這種根節(jié)點這里被稱為基本根節(jié)點。這些樹中的每一個樹的基本根節(jié)點都可以鏈接到非復(fù)制的第一樹的一個或多個樹枝中的一個或多個節(jié)點?;跇涞臄?shù)據(jù)倉庫的非根節(jié)點只包含指向基于樹的數(shù)據(jù)倉庫中的其他節(jié)點的指針。包括基于樹的數(shù)據(jù)倉庫的每一個級別的樹林中的樹的根也由指示器組成,然而,根節(jié)點也可以包含代表信息的數(shù)據(jù)(即,包含是或代表諸如數(shù)據(jù)集元素之類的數(shù)據(jù)或諸如級別開始或級別結(jié)束指示符之類的概念的數(shù)據(jù));基于樹的數(shù)據(jù)倉庫的所有其他節(jié)點只指向其他節(jié)點,不包含數(shù)據(jù)。在本發(fā)明的一個實施例中,數(shù)據(jù)是與字符關(guān)聯(lián)的整數(shù),像素表示法、諸如開始指示符、結(jié)束指示符、字段指示符的開始等等條件,盡管本發(fā)明不僅限于此??梢陨珊驮L問上文所描述的基于樹的數(shù)據(jù)倉庫的多個級別;較低級別的最終產(chǎn)物變成下一級別的基本根節(jié)點。
生成和訪問互鎖樹數(shù)據(jù)倉庫。數(shù)據(jù)倉庫包括構(gòu)成了從第一根下垂的一個asCase樹的asCase樹枝的多根樹,這里叫做主根,asResult樹枝構(gòu)成了從多重根下垂的多個asResult樹。asResult樹的一個特殊實例包括鏈接到上文所描述的asCase樹的一個或多個最終產(chǎn)物葉節(jié)點的根節(jié)點。因此,此asResult樹可以輕松地按照倒序訪問在最終產(chǎn)物中結(jié)束的asCase樹的樹枝。此asResult樹也可以用來定義下一級別的基本根節(jié)點。這些基本根節(jié)點可以代表由較低級別的最終產(chǎn)物集組成的下一級別的數(shù)據(jù)集元素。
互鎖樹數(shù)據(jù)倉庫可以通過組合代表級別開始指示符的節(jié)點和代表數(shù)據(jù)集元素的節(jié)點以構(gòu)成代表子組件的節(jié)點,捕獲有關(guān)在輸入文件中遇到的數(shù)據(jù)集元素之間的關(guān)系的信息。子組件節(jié)點可以同代表數(shù)據(jù)集元素的節(jié)點相結(jié)合,以生成迭代子進程位于另一個子組件節(jié)點。將子組件節(jié)點與代表級別結(jié)束指示符的節(jié)點組合可以創(chuàng)建級別最終產(chǎn)物節(jié)點。將級別開始節(jié)點與數(shù)據(jù)集元素節(jié)點組合以創(chuàng)建子組件以及將子組件與數(shù)據(jù)集元素節(jié)點組合的過程本身可以迭代,以生成一個級別中的多個asCase樹枝。AsResult樹還可以通過指向asCase樹中的一個或多個節(jié)點的asResult樹的根,鏈接或連接到asCase樹中的節(jié)點。
一個級別的最終產(chǎn)物可以是代表數(shù)據(jù)集元素的基本根節(jié)點,它們組合起來以生成子組件的下一級別。此過程可以重復(fù)任意次,創(chuàng)建asCase樹的任意個級別。另外,還可以分解一個級別的基本根節(jié)點以生成較低級別的節(jié)點和根。一個級別的最終產(chǎn)物節(jié)點,通過較低級別的asResult樹的特殊實例,即,具有代表較低級別的結(jié)束指示符的根節(jié)點的較低級別的的asResult樹,變成下一級別的基本根節(jié)點。如此,具有代表較低級別的結(jié)束指示符的根節(jié)點的較低級別的asResult樹是第二根,較低級別的asCase樹的反轉(zhuǎn)。
在本發(fā)明的一個實施例中,在創(chuàng)建節(jié)點時,在每一個級別中基本上同時生成asCase和asResult鏈接。通過在處理輸入時生成asCase鏈接來創(chuàng)建AsCase樹枝。每一個級別上的asCase樹的asCase樹枝提供是如何通過將代表數(shù)據(jù)集元素的節(jié)點按順序組合為子組件等等到最終產(chǎn)物,創(chuàng)建級別每一個子組件和最終產(chǎn)物的直接記錄。asCase樹的樹枝還代表樹中的節(jié)點的一個可能的分層關(guān)系。
asResult鏈接的生成創(chuàng)建了一系列互鎖樹,每一個互鎖樹都從一個單獨的根下垂。在一個級別中可能有多個此類型的根。這具有記錄在輸入中遇到的數(shù)據(jù)集元素之間的所有其他關(guān)系的結(jié)果。如前所述的信息是通過構(gòu)建的而不是顯式存儲在樹的節(jié)點中的互鎖樹的林的結(jié)構(gòu)來捕獲的,以便實際上作為輸入接收的數(shù)據(jù)判斷構(gòu)建的互鎖樹的林的結(jié)構(gòu)。asResult樹的林的結(jié)構(gòu)確保了,可以在需要的任何其他上下文中訪問如此存儲的信息。因此,數(shù)據(jù)倉庫是自組織的,從下面的描述中就可以看出。
另外,將使用用于生成基于樹的數(shù)據(jù)倉庫的系統(tǒng)來執(zhí)行操作,該系統(tǒng)可以具有處理器;連接到處理器的存儲器;以及用于創(chuàng)建基于樹的數(shù)據(jù)倉庫的至少一個級別的基于樹的數(shù)據(jù)倉庫生成器,所述基于樹的數(shù)據(jù)倉庫的至少一個級別包括第一樹、第二樹以及至少第三樹,所述第一樹中包括第一根和多個節(jié)點中的至少一個節(jié)點,所述第二樹中包括第二根和第一樹的至少一個節(jié)點,所述第三樹中包括第三根和第一樹的多個節(jié)點中的至少一個節(jié)點。
優(yōu)選情況下,為評估來自包括了包含計數(shù)字段和所述節(jié)點之間的鏈接的節(jié)點的互鎖樹數(shù)據(jù)倉庫的由互鎖樹數(shù)據(jù)倉庫表示的數(shù)據(jù)的集合,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,并可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,存在asResult和asCase鏈接,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間的路徑中在所述根節(jié)點和所述任何其他節(jié)點之間提供指向,其中,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,并且在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑中包含至少一個子組件節(jié)點,該方法可以執(zhí)行下列步驟確定所述數(shù)據(jù)倉庫內(nèi)的上下文以及其對應(yīng)值;確定所述上下文內(nèi)的焦點以及其對應(yīng)值;使用所述上下文和所述焦點的對應(yīng)值,計算所述上下文內(nèi)的所述焦點的發(fā)生概率。
確定上下文和其對應(yīng)值的步驟本身可以是多步驟過程,并可以具有下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過從至少一個根節(jié)點的asResult列表遍歷到至少一個根節(jié)點的對應(yīng)的子組件節(jié)點,然后遍歷所述對應(yīng)的子組件節(jié)點到所述子組件節(jié)點的每一個對應(yīng)的最終產(chǎn)物節(jié)點之間的asCase鏈接,從所述至少一個根節(jié)點,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
“邏輯表達式”包括至少一個邏輯運算符,如但不限于,AND、OR、NOT、GREATERTHAN、LESSTHAN、XNOR、EQUALTO和這樣的邏輯運算符的任何組合。
我們還顯示了,可以評估互鎖樹數(shù)據(jù)倉庫中的數(shù)據(jù)的集合,其中,可以根據(jù)下列過程來確定上下文和其對應(yīng)值選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過沿著所述路徑,使用Case鏈接,從所有可能的最終產(chǎn)物節(jié)點反向朝著主根的方向遍歷,并且在每一個子組件節(jié)點使用其Result鏈接定位根節(jié)點,并將其與所述至少一個根節(jié)點進行比較,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑,忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
評估由互鎖樹數(shù)據(jù)倉庫表示的數(shù)據(jù)的集合的方法也可以按如下方式來進行確定所述數(shù)據(jù)集內(nèi)的上下文以及其對應(yīng)值;確定沿著上下文的每一個路徑的位置;確定所述上下文內(nèi)的焦點以及其對應(yīng)值;計算沿著所述上下文內(nèi)的路徑的所述位置和最終產(chǎn)物之間的所述焦點的發(fā)生概率。
當(dāng)按如此方式進行時,確定沿著上下文的每一個路徑的位置的步驟可以具有下列步驟從所述互鎖樹數(shù)據(jù)倉庫的根節(jié)點或基本根節(jié)點中選擇一個根節(jié)點,從上下文的每一個路徑中的所述根節(jié)點的或基本根節(jié)點的asResult列表遍歷到其對應(yīng)的子組件節(jié)點。
并且,確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過從至少一個根節(jié)點的asResult列表遍歷到至少一個根節(jié)點的對應(yīng)的子組件節(jié)點,然后遍歷所述對應(yīng)的子組件節(jié)點到所述子組件節(jié)點的每一個對應(yīng)的最終產(chǎn)物節(jié)點之間的asCase鏈接,從所述至少一個根節(jié)點,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
如果它在最后列出的步驟集之后,則確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過沿著所述路徑,使用Case鏈接,從所有可能的最終產(chǎn)物節(jié)點反向朝著主根的方向遍歷,并且在每一個子組件節(jié)點使用其Result鏈接定位根節(jié)點,并將其與所述至少一個根節(jié)點進行比較,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
評估由互鎖樹數(shù)據(jù)倉庫表示的數(shù)據(jù)的集合的再一個方法,其中,該方法可以包括下列步驟確定所述數(shù)據(jù)集內(nèi)的上下文以及其對應(yīng)值;確定沿著上下文的每一個路徑的位置;確定所述上下文內(nèi)的焦點以及其對應(yīng)值;計算沿著所述上下文內(nèi)的路徑的所述位置和主根之間的所述焦點的發(fā)生概率。
在此再一個方法中,確定沿著上下文的每一個路徑的位置的步驟包括下列步驟從所述互鎖樹數(shù)據(jù)倉庫的根節(jié)點或基本根節(jié)點中選擇一個根節(jié)點,從上下文的每一個路徑中的所述根節(jié)點的或基本根節(jié)點的asResult列表遍歷到其對應(yīng)的子組件節(jié)點。
并且,確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過從至少一個根節(jié)點的asResult列表遍歷到至少一個根節(jié)點的對應(yīng)的子組件節(jié)點,然后遍歷所述對應(yīng)的子組件節(jié)點到所述子組件節(jié)點的每一個對應(yīng)的最終產(chǎn)物節(jié)點之間的asCase鏈接,從所述至少一個根節(jié)點,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
或者,確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過沿著所述路徑,使用Case鏈接,從所有可能的最終產(chǎn)物節(jié)點反向朝著主根的方向遍歷,并且在每一個子組件節(jié)點使用其Result鏈接定位根節(jié)點,并將其與所述至少一個根節(jié)點進行比較,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
另一個替代方法是,確定上下文和其對應(yīng)值的步驟包括下列步驟
按照所述互鎖樹數(shù)據(jù)倉庫的最終產(chǎn)物節(jié)點,選擇所有可能的路徑,忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
在幾乎任何情況下,確定焦點和其對應(yīng)值的步驟包括下列步驟從所述互鎖樹數(shù)據(jù)倉庫的根節(jié)點或基本根節(jié)點中選擇至少一個根節(jié)點的焦點約束列表,所述至少一個根節(jié)點通過邏輯表達式來關(guān)聯(lián);通過從至少一個根節(jié)點的asResult列表到任何對應(yīng)的子組件節(jié)點的遍歷,然后遍歷所述對應(yīng)的子組件節(jié)點的到其對應(yīng)的最終產(chǎn)物節(jié)點的asCase鏈接,從所述至少一個根節(jié)點,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑。
忽略那些不在建立的上下文內(nèi)的路徑,以及還忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成焦點的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點,以及添加構(gòu)成所述焦點的那些一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取焦點計數(shù)。
此外,在幾乎任何情況下,確定焦點和其對應(yīng)值的步驟包括下列步驟從所述互鎖樹數(shù)據(jù)倉庫的根節(jié)點或基本根節(jié)點中選擇至少一個根節(jié)點的焦點約束列表,所述至少一個根節(jié)點通過邏輯表達式來關(guān)聯(lián);通過沿著路徑從建立的上下文內(nèi)的所有最終產(chǎn)物節(jié)點反向朝著它們的主根節(jié)點的方向遍歷,所述路徑可以使用建立的上下文內(nèi)的所述最終產(chǎn)物節(jié)點的Case鏈接來進行標(biāo)識,并且在每一個子組件節(jié)點中,使用Result鏈接來進行遍歷,以定位根節(jié)點,并將其與所述至少一個根節(jié)點進行比較,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成焦點的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取焦點計數(shù)。
此外,在使用邏輯表達式的情況下,它可以是任何表達式。如此,它應(yīng)該包括至少一個邏輯運算符,如但不限于,AND、OR、NOT、GREATERTHAN、LESSTHAN、XNOR、EQUALTO和這樣的邏輯運算符的任何組合。
優(yōu)選的結(jié)構(gòu)通常包括節(jié)點和所述節(jié)點之間的鏈接,所述節(jié)點具有多個數(shù)據(jù)字段,所述多個數(shù)據(jù)字段中至少有兩個數(shù)據(jù)字段包含指針,所述至少兩個指針中的一個是Case指針,所述至少兩個指針的另一個是Result指針,至少一個節(jié)點具有至少一個指向指針列表的附加指針,在所述節(jié)點具有關(guān)聯(lián)的asCase列表的情況下,所述指向指針列表的附加指針中的一個是asCase列表,在所述節(jié)點具有關(guān)聯(lián)的asResult列表的情況下,所述指向指針列表的附加指針中的另一個是asResult列表,其中,所述節(jié)點包含計數(shù)字段,其中,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,其中,所述節(jié)點可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間提供指向,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑上包含至少一個子組件節(jié)點,并且所述asResult鏈接在根節(jié)點或最終產(chǎn)物節(jié)點和子組件節(jié)點或最終產(chǎn)物節(jié)點之間在它們之間的所述路徑上提供指向,其中,所述基本節(jié)點還具有一個字段,該字段具有值。
優(yōu)選情況下,該結(jié)構(gòu)由一組程序指令構(gòu)成,該組程序指令當(dāng)被激活時配置計算機系統(tǒng),以產(chǎn)生所述結(jié)構(gòu)。
可以從包含程序指令集的計算機可讀取的介質(zhì)中可用的所述程序指令集創(chuàng)建該結(jié)構(gòu)。
優(yōu)選情況下,計數(shù)字段包含強度變量,強度變量是在對應(yīng)于涉及包含所述計數(shù)字段的節(jié)點的活動的各種預(yù)先確定的遍歷類型的各種強度下可變化。
優(yōu)選情況下,asCase和asResult列表存儲在所述互鎖樹結(jié)構(gòu)之外的單獨的數(shù)據(jù)結(jié)構(gòu)中,其中,所述單獨的數(shù)據(jù)結(jié)構(gòu)通過指針與所述互鎖樹結(jié)構(gòu)中的相關(guān)的節(jié)點關(guān)聯(lián)。
該結(jié)構(gòu)的另一個優(yōu)選形式被描述為包括節(jié)點和所述節(jié)點之間的鏈接的結(jié)構(gòu),所述節(jié)點具有多個數(shù)據(jù)字段,所述多個數(shù)據(jù)字段中至少有兩個數(shù)據(jù)字段包含指針,所述至少兩個指針中的一個是Case指針,所述至少兩個指針的另一個是Result指針,至少一個節(jié)點具有至少一個指向指針列表的附加指針,在所述節(jié)點具有關(guān)聯(lián)的asCase列表的情況下,所述指向指針列表的附加指針中的一個是asCase列表,在所述節(jié)點具有關(guān)聯(lián)的asResult列表的情況下,所述指向指針列表的附加指針中的另一個是asResult列表,其中,對于每一種預(yù)先確定的遍歷方式給所述節(jié)點提供一個子節(jié)點,所述子節(jié)點包含計數(shù)字段,用于記錄所述節(jié)點以預(yù)先確定的方式進行的遍歷,其中,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,其中,所述節(jié)點可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間提供指向,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑上包含至少一個子組件節(jié)點,并且所述asResult鏈接在根節(jié)點或最終產(chǎn)物節(jié)點和子組件節(jié)點或最終產(chǎn)物節(jié)點之間在它們之間的所述路徑上提供指向,其中,所述基本節(jié)點還具有一個字段,該字段具有值。
本發(fā)明的結(jié)構(gòu)的另一個優(yōu)選形式包括節(jié)點和所述節(jié)點之間的鏈接,所述節(jié)點具有多個數(shù)據(jù)字段,所述多個數(shù)據(jù)字段中至少有兩個數(shù)據(jù)字段包含指針,所述至少兩個指針中的一個是Case指針,所述至少兩個指針的另一個是Result指針,至少一個節(jié)點具有至少一個指向指針列表的附加指針,在所述節(jié)點具有關(guān)聯(lián)的asCase列表的情況下,所述指向指針列表的附加指針中的一個是asCase列表,在所述節(jié)點具有關(guān)聯(lián)的asResult列表的情況下,所述指向指針列表的附加指針中的另一個是asResult列表,其中,所述節(jié)點包含一個額外的字段,其中,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,其中,所述節(jié)點可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間提供指向,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑上包含至少一個子組件節(jié)點,并且所述asResult鏈接在根節(jié)點或最終產(chǎn)物節(jié)點和子組件節(jié)點或最終產(chǎn)物節(jié)點之間在它們之間的所述路徑上提供指向,其中,所述基本節(jié)點還具有一個字段,該字段具有值。
在此最后一個描述的形式中,所述額外的字段優(yōu)選情況下是計數(shù)字段。
當(dāng)與所附的圖形閱讀時,可以更好地了解前面的摘要,以及本發(fā)明的實施例的下面詳細描述。為了說明本發(fā)明,在圖形中顯示了本發(fā)明的示范性結(jié)構(gòu);然而,本發(fā)明不僅限于所說明的特定方法。在圖形中圖1是其中可以實現(xiàn)本發(fā)明的各個方面的示范性計算環(huán)境;圖2a說明了根據(jù)本發(fā)明的一個實施例的用于從互鎖樹數(shù)據(jù)倉庫生成數(shù)據(jù)并訪問數(shù)據(jù)的示范性系統(tǒng);圖2b說明了用于從互鎖樹數(shù)據(jù)庫生成信息并訪問信息的示范性方法;圖3a顯示了根據(jù)本發(fā)明的一個實施例的圖2a的示范性互鎖樹數(shù)據(jù)倉庫的比較詳細的視圖;圖3b顯示了根據(jù)本發(fā)明的一個實施例的圖3a的互鎖樹數(shù)據(jù)倉庫的示范性節(jié)點的比較詳細的視圖;圖3c顯示了根據(jù)本發(fā)明的一個方面的圖3a的互鎖樹數(shù)據(jù)倉庫的鏈接列表;圖4顯示了根據(jù)本發(fā)明的一個實施例的存儲在存儲器中的圖2的示范性數(shù)據(jù)集元素集;圖5a-e描述了圖2的互鎖樹,以及根據(jù)本發(fā)明的一個實施例生成互鎖樹時互鎖樹的節(jié)點的對應(yīng)的內(nèi)容;圖6是根據(jù)本發(fā)明的一個方面的生成互鎖樹的示范性過程的流程圖;圖7a顯示了根據(jù)本發(fā)明的一個實施例的另一個互鎖樹數(shù)據(jù)倉庫和對應(yīng)的節(jié)點;圖7b顯示了根據(jù)本發(fā)明的一個方面的圖7a的互鎖樹數(shù)據(jù)倉庫的鏈接列表;圖8顯示了根據(jù)本發(fā)明的實施例的其他互鎖樹數(shù)據(jù)倉庫;圖9a顯示了根據(jù)本發(fā)明的一個實施例的另一個互鎖樹數(shù)據(jù)倉庫;圖9b顯示了根據(jù)本發(fā)明的一個實施例的圖9a的互鎖樹數(shù)據(jù)倉庫的節(jié)點的示范性內(nèi)容;圖10顯示了根據(jù)本發(fā)明的一個實施例的另一個互鎖樹數(shù)據(jù)倉庫;以及圖11是根據(jù)本發(fā)明的一個實施例的從互鎖樹數(shù)據(jù)倉庫訪問數(shù)據(jù)的示范性過程的流程圖。
圖12A和B顯示了具有至少一個額外的字段的示范性互鎖樹數(shù)據(jù)倉庫的詳細視圖。
圖13是根據(jù)本發(fā)明的優(yōu)選實施例的最不復(fù)雜的互鎖樹數(shù)據(jù)倉庫的說明。
圖14A-D是流程圖。
具體實施例方式
概述如下所述的系統(tǒng)和方法創(chuàng)建了包括互連的樹的林至少一個級別的數(shù)據(jù)倉庫。數(shù)據(jù)倉庫的每一個級別的互連的樹的林捕獲有關(guān)代表級別開始的節(jié)點和數(shù)據(jù)集元素(創(chuàng)建子組件節(jié)點)或子組件節(jié)點和數(shù)據(jù)集元素節(jié)點或子組件節(jié)點和代表迭代過程中的級別結(jié)束指示符的導(dǎo)致生成由被asCase樹枝和多個asResult樹鏈接的節(jié)點組成單個asCase樹的節(jié)點的組合的信息。asCase樹枝的節(jié)點從第一根下垂。例如,請參看圖3a,節(jié)點302、312、314和316是從第一開始指示符根302下垂的示范性asCase樹。AsResult樹包括下列樹節(jié)點306和312(一個asResult樹),節(jié)點304和314(第二asResult樹),節(jié)點308和316(第三asResult樹)和節(jié)點310和318(第四asResult樹)。第asResult樹是asResult樹的特殊實例,因為根(節(jié)點310)代表了結(jié)束指示符。
為了查看其最基本形式的結(jié)構(gòu),請參閱圖13,其中,顯示了互鎖樹數(shù)據(jù)倉庫結(jié)構(gòu)的最小的單元,具有通過鏈接16-19連接的節(jié)點11-15。基本結(jié)構(gòu)將具有通過鏈接16連接到子組件節(jié)點14的主根(第一根,節(jié)點11)。第3根(基本根)節(jié)點12還將通過鏈接17連接到子組件節(jié)點14。(如此,節(jié)點14是節(jié)點12的數(shù)據(jù)中指出的實例,即,節(jié)點14的數(shù)據(jù)是基本節(jié)點12的數(shù)據(jù)的實例)。節(jié)點15通過鏈接19連接到節(jié)點14,路徑1l-16-14-19-15可以叫做從主根開始和最終產(chǎn)物節(jié)點15結(jié)束的路徑或線程。(路徑可以是鏈接和節(jié)點的任何連接線)。最終產(chǎn)物節(jié)點還是第2根節(jié)點(所述節(jié)點的末端)13的實例,并通過鏈接18連接到它。
給定級別的asCase樹的每一個樹枝以將代表級別開始指示符的節(jié)點和代表數(shù)據(jù)集元素的節(jié)點組合為子組件節(jié)點開始。子組件節(jié)點可以反復(fù)地同數(shù)據(jù)集元素節(jié)點相結(jié)合為另一個子組件節(jié)點。子組件可以同代表級別結(jié)束指示符的節(jié)點相結(jié)合,以創(chuàng)建最終產(chǎn)物節(jié)點。此過程可以重復(fù),并可能導(dǎo)致形成從第一根下垂的多個asCase樹枝。
例如,如果特定互鎖樹結(jié)構(gòu)的不可分的基本組件是字母數(shù)字的,則子組件可以是不是單詞的字母的組合,最終產(chǎn)物可以是單詞?;蛘?,子組件可以是包括部分庫存品編號或訂購編號的字母數(shù)字的組合,最終產(chǎn)物可以是完整的庫存品或訂購編號,這里只是舉應(yīng)用于本發(fā)明的輸入的字母數(shù)字universe的兩個可能的用途。
一個級別的最終產(chǎn)物可以是下一個級別的數(shù)據(jù)集元素。最終產(chǎn)物數(shù)據(jù)集元素可以用來生成子組件的下一級別,方式與較低級別的數(shù)據(jù)集元素用來創(chuàng)建較低級別的子組件和最終產(chǎn)物的方式相同。例如,在上文所描述的特定互鎖樹結(jié)構(gòu)中,一個級別(單詞)的最終產(chǎn)物可以是從中可以創(chuàng)建較高級別最終產(chǎn)物(句子)的數(shù)據(jù)集元素。此過程可以重復(fù)任意次,在數(shù)據(jù)倉庫中創(chuàng)建asCase樹的任意個級別。
為繼續(xù)上文所描述的示例,較高的級別,使用單詞作為級別數(shù)據(jù)集元素,可以包括句子。句子可以組合起來,以創(chuàng)建段落(較高的級別)等等。另外,還可以分解較高級別的數(shù)據(jù)集元素,以生成互鎖樹數(shù)據(jù)倉庫的較低級別。在本發(fā)明的一個實施例中,從級別結(jié)束指示符啟動的asResult樹被用來定義下一級別的數(shù)據(jù)集元素。結(jié)束指示符是互鎖樹數(shù)據(jù)倉庫的倒序的第二根,如本發(fā)明的一個實施例中的asCase樹所定義的。
在創(chuàng)建節(jié)點時,在每一個級別中基本上同時生成asCase和asResult鏈接。asCase鏈接代表到從中創(chuàng)建節(jié)點的兩個節(jié)點的第一個節(jié)點的鏈接??梢岳斫猓谔幚磔斎霑r,通過生成asCase鏈接,可以創(chuàng)建asCase樹的asCase樹枝。每一個級別的asCase樹枝提供是如何創(chuàng)建級別每一個子組件和最終產(chǎn)物的直接記錄。因此,asCase樹枝可以用于任何目的,知道子組件和最終產(chǎn)物是如何創(chuàng)建的是有用的。例如,如果到互鎖樹生成器的輸入包括正確拼寫的單詞的universe,則所生成的互鎖樹的所產(chǎn)生的asCase鏈接可以用作拼寫檢查程序,這里只是列出數(shù)據(jù)倉庫的公用程序的許多可能的示例中的一個示例。
另外,asCase樹的樹枝還代表asCase樹中的節(jié)點的一個可能的分層關(guān)系。例如,如果互鎖樹生成器接收到的數(shù)據(jù)是“Tom銷售了100個PA。Bill銷售了40個NJ”,所生成的asCase樹包括“銷售員的上下文內(nèi)的州信息”上下文或?qū)哟谓Y(jié)構(gòu)中的數(shù)據(jù)的視圖。
asResult鏈接代表到從中創(chuàng)建節(jié)點的兩個節(jié)點的第二個節(jié)點的鏈接。asResult鏈接的生成創(chuàng)建了一系列互鎖樹,其中,每一個asResult樹都從包括數(shù)據(jù)集元素的根下垂。這具有記錄數(shù)據(jù)倉庫中的元素和asCase樹之間的所有遇到的關(guān)系的結(jié)果。即,asResult樹捕獲互鎖樹的節(jié)點的所有可能的上下文。asResult樹可以用于任何目的,知道節(jié)點之間的上下文或關(guān)系是有用的。例如,如果對互鎖樹數(shù)據(jù)倉庫生成器的輸入包括若干銷售數(shù)據(jù),包括銷售員姓名、星期幾、商品編號和州、所生成的互鎖樹數(shù)據(jù)倉庫的所產(chǎn)生的asResult鏈接可以用來從同一個互鎖樹數(shù)據(jù)倉庫中提取下列信息“哪個銷售員在特定的州銷售?”“星期一銷售了多少商品?”“銷售員Bob在星期一和星期二銷售了多少商品?”等等,無需創(chuàng)建數(shù)據(jù)倉庫的多個副本。
可以使用存儲在asResult樹來分類子組件和最終產(chǎn)物??梢岳斫猓缜八龅男畔嶋H是通過構(gòu)建的而不是顯式存儲在樹的子組件和最終產(chǎn)物節(jié)點中的互鎖樹數(shù)據(jù)倉庫的結(jié)構(gòu)來存儲的。由于只有互鎖樹數(shù)據(jù)倉庫的根節(jié)點才可以包括數(shù)據(jù),因此,可以沿asResult鏈接反向而行到根節(jié)點,以判斷子組件或最終產(chǎn)物是否屬于由根節(jié)點所代表的數(shù)據(jù)的類。根據(jù)如下所述的過程,進一步可以理解,此功能使數(shù)據(jù)倉庫為自組織的。例如,如果對互鎖樹數(shù)據(jù)倉庫生成器的輸入是“CAT TAB”,則存儲在所產(chǎn)生的互鎖樹數(shù)據(jù)倉庫的結(jié)構(gòu)中的信息可以用來判斷兩個最終產(chǎn)物“BOT-C-A-T-EOT”和“BOT-T-A-B-EOT”包含元素“A”,或換句話說,包含“A”的子組件/最終產(chǎn)物的類包括“BOT-C-A-T-EOT”和“BOT-T-A-B-EOT”。此外,通過沿包含“A”的節(jié)點的asCase鏈接而行,可以沿著asCase樹的樹枝查找包含“A”的其他子組件和最終產(chǎn)物。
在本發(fā)明的一個實施例中,節(jié)點之間的鏈接是雙向的。例如,代表字母“A”的根節(jié)點可以包括指向節(jié)點A的asResultList中的節(jié)點BOT-C-A的指針,而節(jié)點BOT-C-A可以包括指向節(jié)點A的指針作為其asResult指針,依次類推。
在本發(fā)明的另一個實施例中,節(jié)點之間的鏈接是單向的。例如,在本實施例中,節(jié)點BOT-C-A包括指向節(jié)點BOT-C的asCase指針和指向代表A根節(jié)點的asResult指針,但根節(jié)點A不包括指向其asResultList中的節(jié)點BOT-C-A的指針。那些精通本技術(shù)的人員將認(rèn)識到,雖然仍可以判斷涉及哪些節(jié)點屬于類別A的信息,但是,這樣做可能需要搜索所有節(jié)點。
示范性計算環(huán)境圖1是其中可以實現(xiàn)本發(fā)明的各個方面的示范性計算機系統(tǒng)100的方框圖。計算機系統(tǒng)100可以是任何合適的系統(tǒng),如但不限于大型機、小型計算機、IBM兼容的個人計算機,Unix工作站或網(wǎng)絡(luò)計算機。那些精通相關(guān)技術(shù)的人將認(rèn)識到,本發(fā)明的設(shè)備可以適用于任何計算機系統(tǒng),包括但不限于多用戶計算機系統(tǒng)或單用戶計算機。如圖1所示,計算機系統(tǒng)100包括連接到主存儲器104的中央處理單元(CPU)102,輔助存儲器接口106,終端接口108,以及網(wǎng)絡(luò)接口110。這些系統(tǒng)組件通過系統(tǒng)總線160連接起來。輔助存儲器接口106用來連接存儲設(shè)備,如但不限于DASD設(shè)備190,將存儲在如但不限于磁盤195之類的磁盤上的數(shù)據(jù)倉庫到計算機系統(tǒng)100。
包含了計算機系統(tǒng)100的整個虛擬存儲器的主存儲器104,包括了操作系統(tǒng)122和應(yīng)用程序124,還可以包括互鎖樹數(shù)據(jù)倉庫126?;ユi樹數(shù)據(jù)倉庫126可以用來提供這樣的數(shù)據(jù)倉庫可以以多個上下文模式對該數(shù)據(jù)倉庫快速進行搜索,以查找數(shù)據(jù),而不需要數(shù)據(jù)的重復(fù)。計算機系統(tǒng)100可以使用已知的虛擬尋址機制,這種機制允許計算機系統(tǒng)100的程序這樣操作似乎它們可以訪問大型單個存儲實體而不是訪問諸如主存儲器104和DASD設(shè)備190之類的多個較小的存儲實體。因此,盡管顯示的操作系統(tǒng)122、應(yīng)用程序124,以及互鎖樹數(shù)據(jù)倉庫126駐留在主存儲器104上,那些精通相關(guān)技術(shù)的人將認(rèn)識到,這些元件不一定都完全同時位于主存儲器104中。
盡管顯示的計算機系統(tǒng)100只包括單個CPU和系統(tǒng)總線,但是,那些精通相關(guān)技術(shù)的人將理解,可以使用包括多個CPU和/或總線的系統(tǒng)來實現(xiàn)本發(fā)明??梢允褂媒K端接108來將一個或多個終端連接到計算機系統(tǒng)100。引用的終端可以是啞終端,或完全可編程的工作站,可以被用來使系統(tǒng)管理員和用戶與計算機系統(tǒng)100進行通信。
可以使用網(wǎng)絡(luò)接口110來將其他計算機系統(tǒng)和/或工作站連接到計算機系統(tǒng)100。網(wǎng)絡(luò)接110所連接的網(wǎng)絡(luò)可以是局域網(wǎng)(LAN)、廣域網(wǎng)(WAN),內(nèi)部網(wǎng)、extranet或因特網(wǎng),或任何其他合適的網(wǎng)絡(luò)。操作系統(tǒng)122可以是諸如OS/2、WINDOWS、AIX、UNIX、LINUX之類的操作系統(tǒng)或任何其他合適的操作系統(tǒng)。
應(yīng)用程序124可以是訪問存儲在互鎖樹數(shù)據(jù)倉庫126中的數(shù)據(jù)的任何類型的應(yīng)用程序。如此,應(yīng)用程序可以包括數(shù)據(jù)分析應(yīng)用程序、數(shù)據(jù)倉儲應(yīng)用程序、入侵檢測系統(tǒng),這里僅舉幾個例子,雖然本發(fā)明不僅限于此。
互鎖樹數(shù)據(jù)倉庫126提供能使用戶訪問相同數(shù)據(jù)倉庫以獲取與任何上下文關(guān)聯(lián)的信息的數(shù)據(jù)倉庫結(jié)構(gòu)。這里所使用的術(shù)語“數(shù)據(jù)”可以包括任何類型的計算機存儲的信息,如但不限于數(shù)字、文本、圖形、公式、表、音頻、視頻、多媒體或其任何組合?;ユi樹數(shù)據(jù)倉庫126可以作為應(yīng)用程序124的一部分、作為操作系統(tǒng)122的一部分或作為可以用于為各式各樣的應(yīng)用程序提供數(shù)據(jù)倉庫的單獨的數(shù)據(jù)倉庫產(chǎn)品。
盡管是在完全運轉(zhuǎn)的計算機系統(tǒng)的上下文中描述本發(fā)明的,但是,那些精通本技術(shù)的普通人員將認(rèn)識到,本發(fā)明能夠作為各種各樣的形式的程序產(chǎn)品進行分發(fā),本發(fā)明同樣適用,不管用于進行分發(fā)的信號攜帶介質(zhì)的特定類型是什么。攜帶這樣的信號的介質(zhì)的示例包括但不僅限于軟盤、硬盤驅(qū)動器、CD-ROM、電的、光學(xué)、無線的數(shù)字和模擬通信鏈路或其他合適的介質(zhì)。
用于生成和訪問互鎖樹數(shù)據(jù)倉庫的系統(tǒng)和方法圖2a說明了根據(jù)本發(fā)明的一個實施例的用于從構(gòu)成了數(shù)據(jù)倉庫的互鎖樹林生成數(shù)據(jù)并訪問數(shù)據(jù)的示范性系統(tǒng)200。一個實施例中的用于生成互鎖樹數(shù)據(jù)倉庫的子系統(tǒng)250包括互鎖樹生成器202、一組數(shù)據(jù)集元素206,用來生成示范性互鎖樹數(shù)據(jù)倉庫208的輸入數(shù)據(jù)204。或者,可以從輸入數(shù)據(jù)204派生數(shù)據(jù)集元素集206。
用于從互鎖樹數(shù)據(jù)倉庫208訪問信息的子系統(tǒng)251可以包括互鎖樹數(shù)據(jù)倉庫208,如上所述,和/或用于接收數(shù)據(jù)請求212、處理數(shù)據(jù)請求212并返回請求的信息的互鎖樹數(shù)據(jù)倉庫存取器210。
圖2b說明了用于從互鎖樹數(shù)據(jù)庫生成信息并訪問信息的示范性方法。在步驟260中,如下面比較全面地描述的,生成互鎖樹數(shù)據(jù)倉庫。在步驟262中,接收需要互鎖樹數(shù)據(jù)倉庫中的信息的請求。在步驟264中,從互鎖樹數(shù)據(jù)倉庫中檢索信息。
生成互鎖樹數(shù)據(jù)倉庫例如,假設(shè)輸入數(shù)據(jù)204包括代表一個單詞(例如,“CAT”)的字母數(shù)字字符的流。在此情況下,數(shù)據(jù)集元素206可以是字母表中的字母集,并可以包括一個或多個字符,以代表分隔符或開始單詞/單詞結(jié)束的概念。分隔符可以包括字母數(shù)字字符,如但不限于空白(“”)、逗號(“,”),和句點(“.”)。
互鎖樹數(shù)據(jù)倉庫208包括許多根、許多非根節(jié)點和非根節(jié)點之間的或根和非根節(jié)點之間的許多鏈接或連接。互鎖樹數(shù)據(jù)倉庫208的每一個根和非根節(jié)點都包括一對指針(Case指針和Result指針)和一對列表指針(指向asCaseList的指針和指向asResultList的指針)。此外,根還可以包括代表值或?qū)χ档囊玫臄?shù)據(jù)。
圖3a是示范性互鎖樹數(shù)據(jù)倉庫208的比較詳細的視圖。某些節(jié)點,特別是,在本示例中,根節(jié)點302(BOT)和310(EOT),代表諸如開始指示符或結(jié)束指示符之類的概念,根節(jié)點304(A)、306(C)、308(T)代表數(shù)據(jù)集元素,而其他節(jié)點,特別是,節(jié)點312(BOT-C)、314(BOT-C-A)、316(BOT-C-A-T)和318(BOT-C-A-T-EOT)代表了代表開始指示符的節(jié)點和代表數(shù)據(jù)集元素的節(jié)點順序合成為代表子組件的節(jié)點,該子組件與數(shù)據(jù)集元素組合成為另一個子組件,依次類推,直到子組件與代表結(jié)束指示符的節(jié)點組合,從而創(chuàng)建代表最終產(chǎn)物的節(jié)點。在此情況下,捕獲來自一連串字母(后面分隔符(即,一連串字母“CAT”,后面是分隔符“”或空白字符))的單詞的順序合成。輸入中的分隔符可以用來區(qū)別最終產(chǎn)物。例如,值得注意的是,分隔單詞的字符可以指出一個單詞的末尾和另一個單詞的開始。例如,在字符串“CATS ARE”中,“CATS”和“ARE”之間的空白字符既表示單詞“CATS”的末尾,又表示單詞“ARE”的開始。因此,諸如輸入中的空白字符之類的分隔符可以被創(chuàng)建的節(jié)點中的諸如“BOT”之類的開始指示符替代,或被諸如“EOT”之類的結(jié)束指示符替代,如下面比較全面地描述的。
諸如根節(jié)點304、306和308之類的節(jié)點這里被稱為基本節(jié)點,因為這些節(jié)點代表數(shù)據(jù)集元素,并包括用來構(gòu)成可分的單元(子組件和最終產(chǎn)物)的不可分的單元。諸如312、314和316之類的節(jié)點這里被稱為子組件或子組件節(jié)點,因為這些節(jié)點代表諸如開始指示符之類的概念指示符和代表數(shù)據(jù)集元素的節(jié)點的組合,或子組件和代表代表數(shù)據(jù)集元素的的不包括最終產(chǎn)物的節(jié)點的組合或子組件和代表結(jié)束指示符的包括最終產(chǎn)物的節(jié)點的組合。諸如節(jié)點318之類的節(jié)點代表最終產(chǎn)物。在所引用的示例中,數(shù)據(jù)集元素是字母,子組件代表了不包括單詞的字母的組合,最終產(chǎn)物是單詞。值得注意的是,根節(jié)點集包括在本示例中表示單詞開始的“BOT”和表示單詞末尾的“EOT”??梢岳斫猓癇OT”和“EOT”代表首尾指示符,但本發(fā)明不僅限于此。也可以考慮使用其他這樣的指示符,如果不存在一個或兩個這樣的指示符。在本發(fā)明的一個實施例中,由于從節(jié)點到代表EOT概念的根節(jié)點而將最終產(chǎn)物與子組件區(qū)分開。
可以理解,盡管在給定示例中,輸入的universe是可用來派生單詞的字母數(shù)字字符集,但是,本發(fā)明沒有這樣的限制。例如,輸入的universe可以是文本,如字母(可以用來派生單詞)或單詞(可以用來派生詞組或句子),或者,也可以是可以用來派生基因組的氨基酸,進程中使用的有限資源,概念、像素集、圖像、聲音、數(shù)字、模擬測量或值或由基本單元構(gòu)成的可以被數(shù)字化和按順序組合以生成最終產(chǎn)物的任何其他合適的universe。通常,根據(jù)本發(fā)明的一個實施例,基本單元以優(yōu)化的序列組合。
除了上文所描述的節(jié)點之外,互鎖樹數(shù)據(jù)倉庫208還可以包括節(jié)點之間的許多連接或鏈接,如鏈接320、322、324和326,以及鏈接328、330、332和334。本發(fā)明的一個實施例中的鏈接320、322、324和326以及鏈接328、330、332和334是雙向的,即,根節(jié)點(BOT)和節(jié)點318(BOT-C-A-T-EOT)之間的通道通過鏈接320、322、324和326遍歷,或者,也可以通過鏈接326、324、322和320來遍歷。鏈接320、322、324和326(用實線表示)這里被稱為asCase鏈接。鏈接328、330、332和334(用虛線表示)這里被稱為asResult鏈接。同樣,在本發(fā)明的一個實施例中,鏈接328、330、332和334是雙向的,因為節(jié)點C 306中的指針指向節(jié)點BOT-C 312,節(jié)點BOT-C 312中的指針指向節(jié)點C 306,節(jié)點A 304中的指針指向節(jié)點BOT-C-A 314,節(jié)點BOT-C-A 314中的指針指向節(jié)點A 304等等。
圖3b顯示了互鎖樹數(shù)據(jù)倉庫208的示范性節(jié)點中包括的信息。示范性節(jié)點340可以代表子組件或最終產(chǎn)物。示范性節(jié)點340可以包括指向子組件或最終產(chǎn)物340的第一部分的指針(指向case342的指針,這里也被稱為“asCase”),指向子組件或最終產(chǎn)物340第二部分的指針(指向結(jié)果344的指針,這里也被稱為“asResult”),指向asCaseList 346的指針,其節(jié)點340是第一部分和指向AsResultList 348的指針的子組件或最終產(chǎn)物的鏈接列表,其節(jié)點340是第二部分的組件或最終產(chǎn)物的鏈接列表。
示范性節(jié)點341代表基本節(jié)點。圖12A和12B還在后面的描述具有的某些功能所需要的額外的字段的段落中引用。示范性節(jié)點341包括Null指針(指向case 342的指針,這里也被稱為“asCase”),第二Null指針(指向結(jié)果344的指針,這里也被稱為“asResult”),指向asCaseList 346的指針,其根節(jié)點341是第一部分和指向AsResultList 348的指針的子組件或最終產(chǎn)物的鏈接列表,其根節(jié)點341是第二部分和值349的組件或最終產(chǎn)物的鏈接列表。值349可以包含實際值,代表條件或狀態(tài),可以包含指針或?qū)χ档囊玫鹊取R虼?,在本發(fā)明的一個實施例中,代表開始指示符概念或條件的根節(jié)點將具有空值asResultList,因為開始指示符永遠不會是子組件的第二部分,代表數(shù)據(jù)倉庫元素的根節(jié)點將具有空值asCaseList,因為數(shù)據(jù)集元素永遠不會是子組件的第一部分,代表結(jié)束指示符概念或條件的根節(jié)點將具有空值asCaseList,因為結(jié)束指示符永遠不會是子組件的第一部分。最后由較低級別的最終產(chǎn)物組成的根節(jié)點將具有空值asCaseList,因為最終產(chǎn)物充當(dāng)下一級別的數(shù)據(jù)集元素。
互鎖樹數(shù)據(jù)倉庫的所有節(jié)點還可以包括代表與所述節(jié)點關(guān)聯(lián)的數(shù)據(jù)的額外的字段。這可以使用與圖3b的說明相似的說明來說明,這里使用了圖12A和12B。也是在這些新圖12A和12B中,子組件和基本節(jié)點字段被顯示為字段塊中的字段,只作說明。
圖2A顯示了示范性節(jié)點20。此節(jié)點20可以包括字符串字段作為額外的字段,該字段包含顯示了由此節(jié)點代表的所有元素的序列。包括此元素的序列的字符串字段的添加對于調(diào)試是有幫助的。這樣的額外的字段可以有許多用途,諸如節(jié)點20之類的節(jié)點不必只限于一個額外的字段。
圖12B所示的示范性節(jié)點30還包括計數(shù)字段31。計數(shù)字段被初始化,并隨著強度變量增大,該變量的值隨著計數(shù)字段被引用時的條件而變化。強度變量被定義為至少具有一個不變值的數(shù)學(xué)實體。通過使這一項如此寬廣,強度變量填充的計數(shù)字段可以被用來將本發(fā)明的互鎖樹結(jié)構(gòu)應(yīng)用于處理忘記、錯誤的記錄數(shù)據(jù)、記錄哪一個實體正在進行查詢,記錄正在使用的查詢的類型的進程,以及在使用數(shù)據(jù)時可能派生出的其他進程。強度變量的一個簡單形式是單一序數(shù)字段值,如“1”,用來增大或減少計數(shù)字段,以記錄一個節(jié)點被訪問或遍歷的次數(shù)。
此外,對于這些不同的功能,強度變量可以以不同速率和在不同的方向改變。不同的強度的一個簡單示例可以是,每次查詢遍歷一個節(jié)點時添加值+1,如果一個包含該特定節(jié)點(或節(jié)點的該特定序列)的路徑被認(rèn)為是一個錯誤(由于某種原因,對于本說明不重要),如當(dāng)一個序列在使用之后被發(fā)現(xiàn)有拼寫錯誤,或在傳感器發(fā)現(xiàn)包含危險化學(xué)制品的地區(qū)的情況下,或者如果人的兒童模擬器“接觸”和在模擬中在熱風(fēng)爐中“燒了其本身”。強度變量的替代方式是使用單獨的節(jié)點來容納每一種節(jié)點遍歷的新值,如此,在類型1、類型2、體驗1、體驗2等等到無限大的查詢過程中,節(jié)點被訪問的情況下,創(chuàng)建一個簇。在此結(jié)構(gòu)的現(xiàn)實應(yīng)用中,計數(shù)字段中的強度變量提供對這一問題的最簡單的,也是當(dāng)前最佳的方法,然而,隨著信息處理系統(tǒng)的成熟,應(yīng)該考慮和重新考慮此替代方法或其他替代方案。如果考慮此替代方法,使用單獨的節(jié)點,甚至使用基本或根節(jié)點以記錄涉及節(jié)點的每一種類型的遍歷的數(shù)量的計數(shù)的方法,將是實現(xiàn)此方法的一種方式。
如此,在一個用途中,當(dāng)將新數(shù)據(jù)加入到互鎖樹數(shù)據(jù)倉庫中時,可以增大計數(shù)字段,但當(dāng)對互鎖樹數(shù)據(jù)倉庫進行查詢時,可以省略增大計數(shù)字段的操作,對于新數(shù)據(jù),產(chǎn)生一個較大的值,對于查詢,不會有任何變化。相應(yīng)地,必須選擇此強度變量,以便適用于本發(fā)明所針對的問題。
添加計數(shù)字段,以促進由互鎖樹結(jié)構(gòu)代表的知識庫的使用,當(dāng)搜索諸如頻率和概率之類的統(tǒng)計信息時,特別有用。
請參閱圖12A,在該圖中,顯示了另一個示范性節(jié)點20。注意,此節(jié)點20可以是具有值字段22的基本節(jié)點20A,或子組件節(jié)點或最終產(chǎn)物節(jié)點20B(缺少值字段22),但在任何一種情況下,它將具有額外的字段21。
圖12B顯示了額外的字段的特定實例,其中,節(jié)點形式30(基本節(jié)點30A(具有值字段32)或子組件或最終產(chǎn)物節(jié)點30B)兩者都具有額外的字段31,這是是計數(shù)字段。
圖3c顯示了互鎖樹數(shù)據(jù)倉庫208的asResult鏈接列表。鏈接350是通過設(shè)置節(jié)點C 306到節(jié)點BOT-C 302的asResultList中的指針而建立的,鏈接352通過設(shè)置節(jié)點A 304到節(jié)點BOT-C-A 314的asResultList中的指針而建立的,鏈接354是通過設(shè)置節(jié)點T 308到節(jié)點BOT-C-A-T 318的asResultList中的指針而建立的鏈接356是通過節(jié)點EOT 310到節(jié)點BOT-C-A-T-EOT 318的asResultList中的指針而建立的。
圖4描述了存儲器104中的示范性數(shù)據(jù)集元素206 BOT、A-Z和EOT的示范性存儲??梢钥闯?,在本示例中,BOT存儲在位置0,A存儲在位置5,等等,EOT存儲在135??梢岳斫?,數(shù)據(jù)集元素的放置只是示范性的,數(shù)據(jù)集元素的任何合適的放置都是可以的。圖5a-e描述了互鎖樹數(shù)據(jù)倉庫208和互鎖樹數(shù)據(jù)倉庫208的節(jié)點的對應(yīng)的內(nèi)容,互鎖樹數(shù)據(jù)倉庫208是在本發(fā)明的示范性實施例中生成的。圖6是根據(jù)本發(fā)明的一個實施例的用于生成互鎖樹數(shù)據(jù)倉庫208的示范性過程600的流程圖。
請同時參看圖4、5和6,在步驟602中,初始化互鎖樹數(shù)據(jù)倉庫。在本發(fā)明的一個實施例中,初始化包括將“當(dāng)前指針”設(shè)置到將要創(chuàng)建的互鎖樹數(shù)據(jù)倉庫的根節(jié)點。在本發(fā)明的另一個實施例中,初始化包括將“當(dāng)前指針”設(shè)置到現(xiàn)有的互鎖樹數(shù)據(jù)倉庫的根。
此外,數(shù)據(jù)集元素可以加載到存儲器中,并進行初始化。在本發(fā)明的一個實施例中,用下列值初始化根節(jié)點(例如,圖5a的根節(jié)點BOT 302,A 535a,...EOT 559a)Case指針=空值,Result指針=空值,指向asCaseList的指針=空值,asCaseList=空值,指向asResultList的指針=空值,asResultList=空值,以及指向數(shù)據(jù)集元素或概念/條件指示符或其表示法的值。
此時,互鎖樹數(shù)據(jù)倉庫,如,根據(jù)本發(fā)明的一個實施例的互鎖樹數(shù)據(jù)倉庫500a,可以包括單個節(jié)點302(BOT),在此情況下,表示一個單詞的開始。方框圖502a的節(jié)點302包括一對指針(被初始化為空值的Case指針504a和Result指針506a)和一對列表指針(被初始化為空值的指向asCaseList的指針和指向asResultList的指針)和值(被初始化為某個值的值511a,這里描述為BOT)。為便于理解,在圖5中,方框圖502a,圖502b-e中的單元508a和類似的單元,互鎖樹數(shù)據(jù)倉庫實際上代表了指向關(guān)聯(lián)的asCaseList的指針的所有圖中,顯示了關(guān)聯(lián)的asCaseList的當(dāng)前內(nèi)容。同樣,互鎖樹數(shù)據(jù)倉庫實際上代表了指向關(guān)聯(lián)的asResultList的指針的圖502b-e中的單元510a和類似的單元,顯示了關(guān)聯(lián)的asResultList的當(dāng)前內(nèi)容。
AsCaseList(例如,asCaseList 508a)和AsResultList(例如,asResultList 510a)可以作為鏈接列表來實現(xiàn)。在另一個實施例中,asCaseList(例如,asCaseList 508a)和AsResultList(例如,asResultList 510a)作為大小可配置的連續(xù)的存儲器位置的塊來分配,如但不限于數(shù)組,指向asCaseList的指針被設(shè)置為asCaseList存儲塊的開始位置,指向asResultList的指針被設(shè)置為asResultList存儲塊的開始位置。
在步驟604中,接收輸入。在本發(fā)明的一個實施例中,“當(dāng)前指針”的值被設(shè)置為“前一指針”,“當(dāng)前指針”被設(shè)置為輸入。在給定的示例中,接收到的輸入為“C”。在步驟604中,對輸入進行驗證。在給定的示例中,這涉及檢查“C”是否為有效的數(shù)據(jù)集元素?!癈”的確是有效的元素,位于存儲器104中的位置15中。
在步驟606中,如果節(jié)點已經(jīng)不存在,則創(chuàng)建互鎖樹數(shù)據(jù)倉庫中的節(jié)點,將其初始化,并存儲在存儲器中的某個位置。在示例中,創(chuàng)建互鎖樹數(shù)據(jù)倉庫208中的節(jié)點312,代表BOT-C,節(jié)點BOT-C312的Case指針、Result指針、指向asCaseList的指針、asCaseList、指向asResultList的指針,以及asResultList,被初始化為空值,BOT-C存儲在存儲器104的位置140處。
在步驟608中,根據(jù)本發(fā)明的一個實施例,創(chuàng)建在步驟606中創(chuàng)建的節(jié)點的鏈接。通過將新節(jié)點的Case指針設(shè)置為前一指針的值,并將新節(jié)點的Result指針設(shè)置為當(dāng)前指針的值,來定義新節(jié)點。圖5b的互鎖樹數(shù)據(jù)倉庫500b顯示了創(chuàng)建鏈接之后的互鎖樹數(shù)據(jù)倉庫208。方框圖502b顯示了創(chuàng)建鏈接之后的節(jié)點BOT 302、C306和BOT-C 312的內(nèi)容。通過將節(jié)點BOT 302與節(jié)點C 306順序組合來創(chuàng)建子組件BOT-C 312。因此,設(shè)置了Case指針和Result指針的下列值節(jié)點BOT-C 312的Case指針520b被設(shè)置為0(存儲器104中的節(jié)點BOT 302的位置),節(jié)點BOT-C 312的Result指針522b被設(shè)置為15(存儲器104中的基本節(jié)點C 306的位置)。
在本發(fā)明的一個實施例中,除了創(chuàng)建從新節(jié)點到從中派生的新節(jié)點的節(jié)點的鏈接,通過將指向新節(jié)點的位置的指針添加到從中派生了新節(jié)點的節(jié)點的鏈接列表,asCaseList和asResultList,創(chuàng)建asCaseList和asResultList鏈接。指針可以添加到列表的末尾,添加到列表的開始,也可以插入列表內(nèi)的某處。另外,也可以維護許多列表。例如,除了其中按照最頻繁地被訪問的順序維護了指針的有序列表之外,節(jié)點的asCaseList可以包括其中指針被添加到鏈接列表的末尾的順序列表??梢岳斫?,雖然給定的示例引用了一個有序列表和一個順序列表,但是,本發(fā)明不僅限于此,列表的任何組合和任何數(shù)量都在本發(fā)明的范圍內(nèi)。有序列表可以按照最近更新、最后一次的訪問、或更新或訪問的頻率,或按照任何其他合適的排序規(guī)則來進行排序。
建立到新節(jié)點的鏈接將指向新節(jié)點的指針添加到前一指針的asCaseList,并添加到當(dāng)前指針的asResultList。在本示例中,通過將節(jié)點BOT-C 312的Case指針520b設(shè)置為節(jié)點BOT 302的位置(位置0)來生成雙向鏈接320(方框圖503b的鏈接320a),通過將指向節(jié)點BOT-C 312的位置(位置140)的指針添加到asCaseList 508b來更新節(jié)點BOT 302的asCaseList 508b(鏈接320b)。設(shè)置了Case指針520a,因為節(jié)點BOT 302是節(jié)點BOT-C312的定義節(jié)點之一。更新了AsCaseList 508b,因為在合成從中創(chuàng)建節(jié)點BoT-C 312的兩個節(jié)點中的第一個節(jié)點(節(jié)點BOT-C 312)時使用節(jié)點BOT 302。AsCaseList 508b目前包含空集(即,asCaseList 508b是空的)。因為節(jié)點BOT-C 312位于存儲器104中的位置140,因此,asCaseList 508b從空值更新為140。假設(shè)asCaseList 508b包括非零集,則節(jié)點BOT-C 312位置140將以上文討論的任何一種方式添加到asCaseList 508b中。
同樣,通過將節(jié)點BOT-C 312的Result指針522b設(shè)置為節(jié)點C的位置(位置15)來生成雙向鏈接328(方框圖503b的鏈接328a),通過將指向節(jié)點BOT-C 312的位置的指針添加到asResultList 518b來更新基本節(jié)點BOT 306的asResultList 518b(鏈接328b)。設(shè)置了Result指針522b,因為節(jié)點C 306是節(jié)點BOT-C 312的定義節(jié)點之一。更新了AsResultList 518b,因為節(jié)點C 306包括從中創(chuàng)建節(jié)點BOT-C 312的兩個節(jié)點的第二個節(jié)點,(因此,鏈接328b 叫做asResult鏈接)。AsResultList 518b目前包含空集,(即,asresultlist 518b是空的)。因為節(jié)點BOT-C 312位于存儲器104中的位置140,因此,asResultList 518b從空值更新為140。假設(shè)asResultList 518b包括非零集,則節(jié)點BOT-C 312位置140將以上文討論的任何一種方式添加到asResultList 518b中。
此時,已經(jīng)創(chuàng)建了圖5b中描述的數(shù)據(jù)倉庫,互鎖樹數(shù)據(jù)倉庫500b。在圖5b中的方框圖503b中比較詳細地顯示了相同結(jié)構(gòu)。值得注意的是,鏈接320b代表了指向節(jié)點BOT-C 312的位置的指針,并是節(jié)點BOT 302的asCaseList 508b中的第一個元素,鏈接328b代表指向節(jié)點BOT-C 312的位置的指針,并是節(jié)點C 306的asResultList 518b中的第一個元素。鏈接320a代表了從節(jié)點BOT-C 312到其第一部分(節(jié)點BOT 302)的指針,而鏈接328a代表了從節(jié)點BOT-C 312到其第二部分(節(jié)點C 306)的指針。在步驟610中,判斷是否有更多輸入。在此情況下,有更多輸入,因此,處理返回到步驟604。在步驟604中,接收輸入。在給定的示例中,接收到的輸入為“A”。在步驟604中,對輸入進行驗證。在給定的示例中,這涉及檢查“A”是否為有效的數(shù)據(jù)集元素。“A”的確是有效的元素,位于存儲器104中的位置5中。
在步驟606中,如果節(jié)點已經(jīng)不存在,則創(chuàng)建互鎖樹數(shù)據(jù)倉庫中的節(jié)點,將其初始化,并存儲在存儲器中的某個位置。在示例中,創(chuàng)建互鎖樹數(shù)據(jù)倉庫208中的節(jié)點314,代表BOT-C-A、節(jié)點BOT-C-A 314的Case指針、Result指針、指向asCaseList的指針、asCaseList、指向asResultList的指針,以及asResultList,被初始化為空值,節(jié)點BOT-C-A 314存儲在存儲器104的位置145處。
在步驟608中,根據(jù)本發(fā)明的一個實施例,創(chuàng)建在步驟606中創(chuàng)建的節(jié)點的鏈接。圖5c顯示了創(chuàng)建鏈接之后的互鎖樹數(shù)據(jù)倉庫500c。方框圖502c中顯示了節(jié)點BOT 302、C 306、A 304、BOT-C312和BOT-C-A 314的內(nèi)容。通過將節(jié)點BOT-C 312與節(jié)點A304順序組合來創(chuàng)建子組件BOT-C-A 314。因此,設(shè)置了Case指針和Result指針的下列值節(jié)點BOT-C-A 314的Case指針528c被設(shè)置為140(鏈接322a),這是存儲器104中的基本節(jié)點BOT-C312的位置,節(jié)點BOT-C-A 314的Result指針530c被設(shè)置為5(鏈接330a),這是存儲器104中的基本節(jié)點A 304的位置。
通過將Case指針528c設(shè)置為140(鏈接322a)并通過將指向存儲器104中的節(jié)點BOT-C-A 314的位置的指針添加到節(jié)點BOT-C 312的asCaseList 524c(鏈接322b),生成雙向鏈接322。更新了AsCaseList 524e,因為節(jié)點BOT-C 312包括從中創(chuàng)建節(jié)點BOT-C-A 314的兩個節(jié)點中的第一個節(jié)點。在創(chuàng)建鏈接322b之前,節(jié)點BOT-C 312的asCaseList 524c包含了空集(即,asCaseList524c是空的)。因為節(jié)點BOT-C-A 314位于存儲器104中的位置145,因此,asCaseList 524c從空值更新為145。假設(shè)asCaseList 524c包括非零集,則節(jié)點BOT-C-A 314位置145將以上文討論的任何一種方式添加到asCaseList 524c中。
同樣,通過將節(jié)點BOT-C-A 314的Result指針530c設(shè)置為5,并通過將指向節(jié)點BOT-C-A 314的位置的指針添加到節(jié)點A304的asResultList 542c而更新基本節(jié)點A 304的asResultList542c,生成雙向鏈接330。更新了AsResultList 542c,因為節(jié)點A 304包括從中創(chuàng)建節(jié)點BOT-C-A 314的兩個節(jié)點中的第二個節(jié)點。在創(chuàng)建鏈接330b之前,AsResultList 542e包含了空集,(即,AsResultList542c是空的)。因為節(jié)點BOT-C-A 314位于存儲器104中的位置145,因此,asResultList 542c從空值更新為145。假設(shè)AsResultList542c包括非零集,則節(jié)點BOT-C-A 314位置145將以上文討論的任何一種方式添加到AsResultList 542e中。
此時,已經(jīng)創(chuàng)建了圖5c中描述的數(shù)據(jù)倉庫,互鎖樹數(shù)據(jù)倉庫500c。在圖5c中的方框圖503c中比較詳細地顯示了相同結(jié)構(gòu)。值得注意的是,鏈接322b代表了指向節(jié)點BOT-C-A 314的位置的指針,并是節(jié)點BOT-C 312的asCaseList 524c中的第一個元素,鏈接330b代表指向節(jié)點BOT-C-A 314的位置的指針,并且145是節(jié)點A 304的AsResultList 542c中的第一個元素。鏈接322a代表了從節(jié)點BOT-C-A 314到其第一部分(節(jié)點BOT-C 312)的指針,而鏈接330a代表了從節(jié)點BOT-C-A 314到其第二部分(節(jié)點A304)的指針。
在步驟610中,判斷是否有更多輸入。在此情況下,有更多輸入,因此,處理返回到步驟604。在步驟604中,接收輸入。在給定的示例中,接收到的輸入為“T”。在步驟604中,對輸入進行驗證。在給定的示例中,這涉及檢查“T”是否為有效的數(shù)據(jù)集元素?!癟”的確是有效的數(shù)據(jù)集元素,位于存儲器104中的位置100中。
在步驟606中,如果節(jié)點已經(jīng)不存在,則創(chuàng)建互鎖樹數(shù)據(jù)倉庫中的節(jié)點,將其初始化,并存儲在存儲器中的某個位置。在示例中,創(chuàng)建互鎖樹數(shù)據(jù)倉庫208中的節(jié)點316,代表BOT-C-A-T 316,Case指針、Result指針、指向asCaseList的指針、asCaseList、指向asResultList的指針,以及asResultList,被初始化為空值,節(jié)點BOT-C-A-T 316存儲在存儲器104的位置150處。
在步驟608中,創(chuàng)建在步驟606中創(chuàng)建的節(jié)點的鏈接。圖5d顯示了創(chuàng)建鏈接之后的互鎖樹數(shù)據(jù)倉庫500d。方框圖502d中顯示了節(jié)點BOT 302、C 306、A 304、T 308、BOT-C 312、BOT-C-A 314和BOT-C-A-T 316的內(nèi)容。通過將節(jié)點BOT-C-A 314與節(jié)點T308順序組合來創(chuàng)建子組件BOT-C-A-T 316。因此,為節(jié)點BOT-C-A-T 316設(shè)置了Case指針和Result指針的下列值Case指針544d被設(shè)置為145(存儲器104中的節(jié)點BOT-C-A 314的位置),Result指針546d被設(shè)置為100(存儲器104中的基本節(jié)點T 308的位置)。
通過將Case指針544d設(shè)置為140并將指向存儲器104中的節(jié)點BOT-C-A 314的位置(位置150)的指針添加到節(jié)點BOT-C-A 314的asCaseList 532d,生成雙向鏈接324。更新了AsCaseList 532d,因為節(jié)點BOT-C-A 314包括從中創(chuàng)建節(jié)點BOT-C-A-T 316的兩個節(jié)點中的第一個節(jié)點。在創(chuàng)建鏈接324之前,節(jié)點BOT-C-A 314的asCaseList 532d包含空集。因為節(jié)點BOT-C-A-T位于存儲器104中的位置150,因此,asCaseList 532d從空值更新為150。假設(shè)節(jié)點BOT-C-A 314的asCaseList 532d包含數(shù)據(jù),則150將以上文概述的任何一種方式添加到列表中。
同樣,通過將Result指針546d設(shè)置為100并通過將指向節(jié)點BOT-C-A-T 316的位置的指針添加到asResultList 558d來更新asResultList,生成雙向鏈接332。更新了AsResultList 558d,因為節(jié)點T 308包括從中創(chuàng)建節(jié)點BOT-C-A-T 316的兩個節(jié)點中的第二個節(jié)點。在創(chuàng)建鏈接332之前,基本節(jié)點T 308的asResultList558d包含空集,因此,空集被替換為150(存儲器104中的節(jié)點BOT-C-A-T 316的位置)。假設(shè)asResultList 558d包含數(shù)據(jù),則150將以上文概述的任何一種方式添加到列表中。
此時,已經(jīng)創(chuàng)建了圖5d中描述的數(shù)據(jù)倉庫,互鎖樹數(shù)據(jù)倉庫500d。那些精通本技術(shù)的人員將理解,可以顯示互鎖樹數(shù)據(jù)倉庫500d的比較詳細的表示法,類似于圖5c中的互鎖樹數(shù)據(jù)倉庫500c的方框圖503c所描述的。
在步驟610中,判斷是否有更多輸入。在此情況下,有更多輸入,因此,處理返回到步驟604。在步驟604中,接收輸入。在給定的示例中,接收到的輸入為“”或空白字符。在步驟604中,對輸入進行驗證。在給定的示例中,這涉及檢查本空白字符是否為有效的數(shù)據(jù)集元素??瞻鬃址拇_是有效元素在此情況下,是表示單詞“CAT”的末尾的分隔符。如此,在本發(fā)明的一個實施例中,位于位置135處的節(jié)點EOT 310被添加到子組件BOT-C-A-T 316以創(chuàng)建最終產(chǎn)物或monad,在此情況下是一個單詞。
在步驟606中,如果節(jié)點已經(jīng)不存在,則創(chuàng)建互鎖樹數(shù)據(jù)倉庫中的節(jié)點,將其初始化,并存儲在存儲器中的某個位置。在示例中,創(chuàng)建互鎖樹數(shù)據(jù)倉庫208中的節(jié)點318,代表節(jié)點BOT-C-A-T-EOT 318,節(jié)點BOT-C-A-T-EOT 318的Case指針、Result指針、指向asCaseList的指針、asCaseList、指向asResultList的指針和asResultList被初始化為空值,節(jié)點BOT-C-A-T-EOT 318存儲在存儲器104的位置150處。
在步驟608中,創(chuàng)建在步驟606中創(chuàng)建的節(jié)點的鏈接。圖5e顯示了創(chuàng)建鏈接之后的互鎖樹數(shù)據(jù)倉庫500e。方框圖502e顯示了創(chuàng)建鏈接之后的節(jié)點BOT 302、C 306、A 304、T 308、EOT 310、BOT-C 312、BOT-C-A 314、BOT-C-A-T 316和BOT-C-A-T-EOT318的內(nèi)容。通過將節(jié)點BOT-C-A-T 316與節(jié)點EOT 310順序組合來創(chuàng)建最終產(chǎn)物318(BOT-C-A-T-EOT)。因此,設(shè)置了節(jié)點BOT-C-A-T-EOT 318的Case指針和Result指針的下列值最終產(chǎn)物BOT-C-A-T-EOT 318的Case指針568e被設(shè)置為150(存儲器104中的節(jié)點BOT-C-A-T 316的位置),最終產(chǎn)物BOT-C-A-T-EOT 318的Result指針570e被設(shè)置為135(存儲器104中的元素節(jié)點EOT 135的位置)。
通過將最終產(chǎn)物BOT-C-A-T-EOT 318的Case指針568e設(shè)置為150并將指向存儲器中的節(jié)點BOT-C-A-T 316的位置的指針添加到節(jié)點BOT-C-A-T 316的asCaseList 548e,生成雙向鏈接326。更新了AsCaseList 548e,因為節(jié)點BOT-C-A 314包括從中創(chuàng)建節(jié)點BOT-C-A-T 316的兩個節(jié)點中的第一個節(jié)點。在創(chuàng)建鏈接334之前,節(jié)點BOT-C-A-T 316的asCaseList 548e包含了空集(即,asCaseList 548e是空的)。因為節(jié)點BOT-C-A-T 316位于存儲器104中的位置155,因此,節(jié)點BOT-C-A-T 316從空值更新為155。假設(shè)asCaseList 548e包括非零集,則節(jié)點BOT-C-A-T位置155將以上文討論的任何一種方式添加到asCaseList 548e中。
同樣,通過將最終產(chǎn)物BOT-C-A-T-EOT 318的Result指針570e設(shè)置為135以及通過將指向節(jié)點BOT-C-A-T-EOT 318的位置的指針添加到節(jié)點EOT 310的asResultList 566e來更新節(jié)點EOT 310的asResultList 566e,生成雙向鏈接334。更新了AsResultList 566e,因為節(jié)點EOT 310包括從中創(chuàng)建節(jié)點BOT-C-A-T-EOT 318的兩個節(jié)點的第二個節(jié)點,(因此,鏈接334叫做asResult鏈接)。在創(chuàng)建鏈接334之前,AsResultList 566e包含了空集,(即,AsResultList 566e是空的)。因為節(jié)點BOT-C-A-T-EOT 318位于存儲器104中的位置155,因此,asResultList 566e從空值更新為155。假設(shè)AsResultList 566e包括非零集,則節(jié)點BOT-C-A-T-EOT 318位置155將以上文討論的任何一種方式添加到AsResultList 566e中。
此時,已經(jīng)創(chuàng)建了圖5e中描述的數(shù)據(jù)倉庫,互鎖樹數(shù)據(jù)倉庫500e。那些精通本技術(shù)的人員將理解,可以顯示互鎖樹數(shù)據(jù)倉庫500e的比較詳細的表示法,類似于圖5c中的互鎖樹數(shù)據(jù)倉庫500c的方框圖503c所描述的。
在步驟610中,判斷是否有更多輸入。在此情況下,沒有更多輸入,因此,處理在步驟612中結(jié)束。
現(xiàn)在假設(shè)輸入204包含“CAT TAB”而不是“CAT”。按照上面的過程執(zhí)行。在處理輸入直到“CAT”時,創(chuàng)建圖5e的互鎖樹數(shù)據(jù)倉庫500e。然而,在步驟610中,有更多輸入,因此,處理繼續(xù),最終產(chǎn)生圖7a的互鎖樹數(shù)據(jù)倉庫700a。方框圖702a中顯示了對應(yīng)的節(jié)點BOT 302、C 306、A 304、T 308、B 718、EOT 310、BOT-C 312、BOT-C-A 314、BOT-C-A-T-316、BOT-C-A-T-EOT 318、BOT-T 703、BOT-T-A 705、BOT-T-A-B 707和BOT-T-A-B-EOT 709。值得注意的是,節(jié)點BOT-T 703、BOT-T-A 705、BOT-T-A-B 707和BOT-T-A-B-EOT 709都已經(jīng)添加到互鎖樹數(shù)據(jù)倉庫500e中,以創(chuàng)建互鎖樹數(shù)據(jù)倉庫700a。
在此過程中,創(chuàng)建了asCase鏈接701、704、706和708,創(chuàng)建了asResult鏈接710、712、714和716。節(jié)點BOT-T 703的AsCase指針720f被設(shè)置為0(節(jié)點BOT 302的位置)。節(jié)點BOT-T 703的AsResult指針722f被設(shè)置為100(節(jié)點T 308的位置)。節(jié)點BOT-T-A 705的AsCase指針728f被設(shè)置為170(節(jié)點BOT-T 703的位置)。節(jié)點BOT-T-A 705的AsResult指針730f被設(shè)置為5(節(jié)點A 304的位置)。
通過將170(BOT-T 703的位置)和節(jié)點BOT 302的asCaseList 508f相加來創(chuàng)建AsCase鏈接701,以便asCaseList508f包括140(BOT-C 312的位置)和170(BOT-T 703的位置)兩者。通過將175(BOT-T-A的位置)和節(jié)點BOT-T 703的asCaseList 724f相加來創(chuàng)建AsCase鏈接704。通過將180(BOT-T-A-B的位置)和節(jié)點BOT-T-A 705的asCaseList 732f相加來創(chuàng)建AsCase鏈接706。
通過將170(BOT-T 703的位置)和節(jié)點T 308的asResultList 558f相加來創(chuàng)建AsResult鏈接710,以便asResultList 558f包括150(節(jié)點BOT-C-A-T的位置)和170(BOT-T 703的位置)兩者。通過將175(BOT-T-A的位置)和節(jié)點A 304的asResultList 542f相加來創(chuàng)建AsResult鏈接712,以便asResultList 542f包括145(節(jié)點BOT-C-A 314的位置)和175(BOT-T-A的位置)兩者。通過將180(節(jié)點BOT-T-A-B 707的位置)和節(jié)點B 718的asResultList 742f相加來創(chuàng)建AsResult鏈接714。因為節(jié)點B 718的asResultList 742f以前是空值,因此,節(jié)點B 718的asResultList 742f只包含180(節(jié)點BOT-T-A-B 707的位置)。通過將185(BOT-T-A-B-EOT 709的位置)和節(jié)點EOT310的asResultList 566f相加來創(chuàng)建AsResult鏈接716,以便asResultList 566f包括155(節(jié)點BOT-C-A-T-EOT 318的位置)和185(BOT-T-A-B-EOT 185的位置)。
現(xiàn)在假設(shè)輸入204包含“CATS CATHODE”而不是“CAT”。按照上面的過程執(zhí)行。在處理輸入“CAT”時,創(chuàng)建圖5d的互鎖樹數(shù)據(jù)倉庫。在步驟610中,發(fā)現(xiàn)有更多輸入,因此,處理繼續(xù)。在處理輸入“CATS”之后,生成了圖8的互鎖樹數(shù)據(jù)倉庫800a。發(fā)現(xiàn)有更多輸入。在處理“CATHODE”時,沒有創(chuàng)建BOT-C、BOT-C-A和BOT-C-A的新節(jié)點,因為它們已經(jīng)存在。處理額外的輸入“SCATHODE”,產(chǎn)生圖8的互鎖樹數(shù)據(jù)倉庫800b。對那些精通本技術(shù)的人員顯而易見的,所產(chǎn)生的樹是自組織的,以便所產(chǎn)生的互鎖樹數(shù)據(jù)倉庫的結(jié)構(gòu)取決于接收到的輸入。
現(xiàn)在假設(shè)輸入204包含“CATS ARE FURRY”而不是“CAT”。圖9a顯示了在本發(fā)明的一個實施例中生成的互鎖樹數(shù)據(jù)倉庫900。輸入中的指示符的存在,在本示例中,詞組末尾或句子末尾指示符(例如,“FURRY”之后的句點),可以觸發(fā)將一個級別的最終產(chǎn)物(BOT-C-A-T-EOT 908、BOT-A-R-E-EOT 906、BOT-F-U-R-R-Y-EOT 904)組合成下一個級別的子組件,即,一個級別(例如,級別1910)最終產(chǎn)物節(jié)點(例如,諸如“CATS”、“ARE”和“FURRY”之類的單詞)可以變成代表下一級別(例如,級別2912)的數(shù)據(jù)集元素的根節(jié)點。因此,節(jié)點“BOT-CATS-ARE-FURRY-EOT”902是代表句子“CATS AREFURRY”的單個節(jié)點。
在本發(fā)明的一個實施例中,代表較高級別的數(shù)據(jù)集元素的節(jié)點不包含數(shù)據(jù)或數(shù)據(jù)的表示方法或概念;即,代表較高級別的數(shù)據(jù)集元素的基本根節(jié)點只包含指向較低級別中的節(jié)點的指針。例如,圖9b顯示了圖9a的某些節(jié)點的內(nèi)容。值得注意的是,節(jié)點BOT-C-A-T-S-EOT被用作級別2912的基本根節(jié)點(節(jié)點908的asResultList 914包含300,節(jié)點BOS-CATS 916的位置,而節(jié)點BOS-CATS 916的asResult指針918包含200,節(jié)點BOT-C-A-T-S-EOT 908的位置)等等。
可以生成任何合適數(shù)量的級別。例如,在文本中,級別可以代表字母、單詞、句子、段落、章節(jié)、圖書、圖書館等等??梢岳斫?,雖然在示范圖中顯示了互鎖樹數(shù)據(jù)倉庫的兩個級別(級別1910和級別2912),但是,本發(fā)明不僅限于此。可以構(gòu)建任意個級別的互鎖樹數(shù)據(jù)倉庫。因為本示例的universe是文本,即,構(gòu)成單詞(最終產(chǎn)物的一個級別)的字母的組合,本發(fā)明的此實施例中的單詞的組合的結(jié)果是詞組或句子(最終產(chǎn)物的另一個級別)。句子可以組合起來以構(gòu)成段落,段落可以組合起來,以構(gòu)成章節(jié)等等。
可以進一步理解,取決于輸入universe,最終產(chǎn)物可以代表單詞、短語、句子等等之外的實體。僅舉一個例子如果輸入是包括染色體的氨基酸的序列,一個最終產(chǎn)物可以代表基因或等位基因。
現(xiàn)在假設(shè)輸入204包括諸如下列記錄的數(shù)據(jù)記錄Bill Tuesday 40 sold PABill Monday 103 sold NJBill Monday 100 trial PATom Monday 80 sold PATom Monday 13 trial NJ在本發(fā)明的一個實施例中,數(shù)據(jù)集元素包括被諸如但不限于空白字符之類的分隔符分隔的信息的字段。在一個實施例中,數(shù)據(jù)集元素由輸入派生而來,雖然可以理解,如上所述,本發(fā)明不僅限于此。到現(xiàn)在為止在輸入數(shù)據(jù)中遇到的數(shù)據(jù)集元素是銷售員姓名(Bill和Tom)、星期幾(星期一、星期二),商品編號(40、103、100、80、13),狀態(tài)(銷售,試用)和州(PA,NJ)。在本發(fā)明的一個實施例中,將從此輸入中產(chǎn)生圖10的互鎖樹數(shù)據(jù)倉庫1000。在圖10中,由于空間原因,沒有顯示節(jié)點的第一部分。例如,雖然節(jié)點1002被標(biāo)記為“Bill”,節(jié)點1002實際上代表“BOT-Bill”。雖然節(jié)點1002被標(biāo)記為“Tuesday”,節(jié)點1004實際上代表“BOT-Bill-Tuesday”等等。
從互鎖樹數(shù)據(jù)倉庫中訪問信息在圖11中顯示了訪問存儲在互鎖樹數(shù)據(jù)倉庫中的信息的方法。在步驟1102中,接收要從互鎖樹數(shù)據(jù)倉庫中檢索的信息的請求。可以將待檢索的信息的請求轉(zhuǎn)換為可以由互鎖樹存取器處理的形式。在步驟1104中,訪問被指出的節(jié)點。在步驟1106中,檢索適當(dāng)?shù)腶sCaseList和/或asResultList。在步驟1108中,沿適當(dāng)?shù)腶sCaseList或asResultList而行,以檢索所需要的信息。在步驟1110中,收集并返回所請求的信息。
例如,再次請參看圖7a,包括asResult鏈接328、330、332、334、710、712、714和716的數(shù)據(jù)倉庫700a可以用來確定上下文的諸如下列問題的答案“哪些節(jié)點包括字母A?”,“A在哪些字母前面或后面?”,“哪些(或多少)單詞包括字母A?”,“哪些單詞既包含字母A又包含T?”,“哪些單詞包含A并且A前面有T?”和數(shù)不清的其他問題。(可以理解,雖然為便于理解,在示例問題中指定了特定的字母,但是可以替代任何數(shù)據(jù)集元素或單元組。)例如,在本發(fā)明的一個實施例中,通過遵循代表數(shù)據(jù)集元素的特定節(jié)點的asResultList中包含的指針,可以判斷包含所需要的數(shù)據(jù)集元素的節(jié)點和最終產(chǎn)物。訪問asresultlist,并沿列表中的每一個指針而行,直到與該節(jié)點關(guān)聯(lián)的asCase樹枝。如果需要最終產(chǎn)物,則沿asCase樹枝樹而行,直到樹枝的葉節(jié)點。
在本發(fā)明的一個實施例中,對信息的請求采用指定約束(根據(jù)角度,可以被視為“上下文”或“焦點”)的形式。例如,對信息的請求可以是約束的列表的的形式。約束的列表可以嵌套,也可以是獨立的。在本發(fā)明的一個實施例中,查找每一個列出的約束的AsResultList,查找每一個約束的每一個AsResultList內(nèi)的每一個節(jié)點的樹枝,沿樹枝而行,到它們的最終產(chǎn)物,選擇每一個約束的每一個asResultList內(nèi)的每一個樹枝的最終產(chǎn)物的交叉點。通過首先約束數(shù)據(jù)倉庫以檢索一組數(shù)據(jù),然后該組數(shù)據(jù)被用作被進一步約束的數(shù)據(jù)集,來查找嵌套的約束。
在定義約束時可以使用邏輯運算符。一個人可以說,一個人正在查找標(biāo)識“人”、“位置”AND“東西”的節(jié)點,其中,AND將是指定所有“人”、“位置”和“東西”的集合的連接器的邏輯運算符,即,所有節(jié)點可以通過被稱為“人”、“位置”和“東西”的基本節(jié)點或根節(jié)點來進行標(biāo)識。互鎖樹結(jié)構(gòu)給出查詢,ARE(另一個邏輯運算符)“東西”的所有“人”AND“位置”將被約束到答案,不管項目“東西”是怎么被標(biāo)識的。如果在構(gòu)建結(jié)構(gòu)時,“東西”決不會指向“位置”,那么,在查詢中將不會查到所有其他“東西”。如果在結(jié)合進結(jié)構(gòu)中時,人被視為“東西”,在查詢中也會查到它們。
邏輯運算符可以呈現(xiàn)許多形式,如AND、OR、NOT、GreaterThan、XNOR、EqualTo等等,也可以將它們組合起來。所有這樣的邏輯運算符和其組合都可以在本發(fā)明內(nèi)使用。根據(jù)上下文上的過程,比較數(shù)學(xué)表達式也是可以使用的。查找銷售了100以上汽車的所有銷售員,可能是取決于一個比較數(shù)學(xué)表達式的查詢,例如,表達式將是汽車銷售數(shù)量>100的銷售員。
在本發(fā)明的一個實施例中,焦點判斷返回的信息。在其中數(shù)據(jù)集元素是字母,并且指定的約束是特定字母的兩級別數(shù)據(jù)倉庫(級別1最終產(chǎn)物包括單詞,級別2包括句子)的情況下,指定焦點(focus)為“單詞”將導(dǎo)致只返回單詞,指定焦點為“句子”將導(dǎo)致只返回句子。從第一級別檢索最終產(chǎn)物將導(dǎo)致返回單詞。如此,“焦點”標(biāo)識上下文內(nèi)所需的信息類型。從第二級別檢索最終產(chǎn)物將導(dǎo)致返回句子。在一個實施例中,為檢索句子,沿每一個單詞的asResultList而行,直到下一個級別,并沿指定的樹枝而行,直到其最終產(chǎn)物,以檢索包括指定的字母的句子。
在一個實施例中,通過沿具有級別開始指示符作為其根的樹而行,可以查找以約束開始的所有最終產(chǎn)物(例如,可以查找以指定字母開始的所有單詞。)同樣,可以查找具有指定約束的所有最終產(chǎn)物,或指定位置中的指定約束(例如,具有特定字母的所有單詞或在指定列中具有指定字母的所有單詞)。同樣,通過沿具有級別結(jié)束指示符作為根的樹而行,可以查找以指定約束結(jié)束的所有最終產(chǎn)物(例如,以指定字母結(jié)束的所有單詞。)可以指定多個約束和/或焦點。
例如,假設(shè)需要包含諸如字母(例如,字母“B”)之類的數(shù)據(jù)集元素的樹的asCase樹枝的第一個節(jié)點。在一個實施例中,從存儲器中檢索代表數(shù)據(jù)元素的基本根節(jié)點(例如,節(jié)點B 718),訪問其asResultList(例如,asResultList 742f),以返回通過某些子組件與基本根節(jié)點(例如,節(jié)點B 718)組合而創(chuàng)建的節(jié)點的位置。訪問asResultList中的節(jié)點。在本示例中,訪問位置180,該位置保留了節(jié)點BOT-T-A-B 707。如此,節(jié)點BOT-T-A-B 707是互鎖樹數(shù)據(jù)倉庫700a中的包括字母“B”的表示法的節(jié)點。為查找形成的最終產(chǎn)物,通過反復(fù)檢索被訪問的節(jié)點的asCaseList,直到被檢索到的asCaseList是空值,沿著asCase樹枝而行(例如,在本示例中,包含節(jié)點BOT-T 703、節(jié)點BOT-T-A 705、節(jié)點BOT-T-A-B 707和節(jié)點BOT-T-A-B-EOT 709的樹枝)。例如,為判斷包含數(shù)據(jù)集元素B 718的單詞是“TAB”,訪問節(jié)點BOT-T-A-B 707的asCaseList 740f,以檢索位置185。訪問位置185的內(nèi)容,以檢索asCaseList 748f。由于asCaseList 748f是Null指針,因此,已經(jīng)到達最終產(chǎn)物。
仍請參看圖7a,現(xiàn)在假設(shè)需要包含字母“A”的所有asCase樹枝的第一個節(jié)點。從存儲器中檢索基本根節(jié)點A 304,并訪問其asResultList 542f,以返回位置145和175。訪問包含節(jié)點BOT-C-A314的第一位置145。節(jié)點BOT-C-A 314是數(shù)據(jù)結(jié)構(gòu)700a的包括字母“A”的第一樹枝中的第一節(jié)點。為查找形成的最終產(chǎn)物,通過反復(fù)檢索節(jié)點的asCaseList,直到被檢索到的asCaseList是空值,沿著asCase樹枝(例如,在本示例中,包含節(jié)點BOT-C 312、節(jié)點BOT-C-A 314、節(jié)點BOT-C-A-T 316和節(jié)點BOT-C-A-T-EOT 318的樹枝)、樹枝的asCase鏈接而行。例如,為判斷包含數(shù)據(jù)集元素A 304的單詞是“CAT”,訪問節(jié)點BOT-C-A 314的asCaseList740f,以檢索位置145。訪問位置145(節(jié)點BOT-C-A 314)的內(nèi)容,以檢索asCaseList 532f,150。訪問位置145(節(jié)點BOT-C-A 314)的內(nèi)容,以檢索asCaseList 548f,155。訪問位置155(節(jié)點BOT-C-A-T-EOT 318)的內(nèi)容,以檢索asCaseList 572f。由于asCaseList 572f是Null指針,因此,已經(jīng)到達最終產(chǎn)物。
訪問包含節(jié)點BOT-T-A 705的下一個位置175。節(jié)點BOT-T-A 705是互鎖樹數(shù)據(jù)倉庫700a的包括字母“A”的第二樹枝中的第一節(jié)點。為查找形成的最終產(chǎn)物,通過反復(fù)檢索節(jié)點的asCaseList,直到被檢索到的asCaseList是空值,沿著asCase樹枝(例如,在本示例中,包含節(jié)點BOT-T 703、節(jié)點BOT-T-A 705、節(jié)點BOT-T-A-B 707和節(jié)點BOT-T-A-B-EOT 709樹枝),樹枝的asCase鏈接而行。例如,為判斷包含數(shù)據(jù)集元素A 304的第二個單詞單詞是“TAB”,訪問節(jié)點BOT-T-A-B 707的asCaseList 740f,以檢索位置185。訪問位置185的內(nèi)容,以檢索asCaseList 748f。由于asCaseList 748f是Null指針,因此,已經(jīng)到達最終產(chǎn)物。
再次請參看圖7a,現(xiàn)在假設(shè)需要包含字母“A”和“T”的所有asCase樹枝的第一個節(jié)點。如前面所描述的,從存儲器中檢索基本根節(jié)點A 304,并訪問其asResultList 542f,以返回位置145和175。訪問包含節(jié)點BOT-C-A 314的第一位置145。節(jié)點BOT-C-A314是互鎖樹數(shù)據(jù)倉庫700a的包括字母“A”的第一樹枝中的第一節(jié)點。為查找形成的最終產(chǎn)物,通過反復(fù)檢索節(jié)點的asCaseList,直到被檢索到的asCaseList是空值,沿著asCase樹枝(例如,在本示例中,包含節(jié)點BOT-C 312、節(jié)點BOT-C-A 314、節(jié)點BOT-C-A-T316和節(jié)點BOT-C-A-T-EOT 318的樹枝)、樹枝的asCase鏈接而行。例如,為判斷包含數(shù)據(jù)集元素A 304的單詞是“CAT”,訪問節(jié)點BOT-C-A 314的asCaseList 740f,以檢索位置145。訪問位置145(節(jié)點BOT-C-A 314)的內(nèi)容,以檢索asCaseList 532f,150。訪問位置145(節(jié)點BOT-C-A 314)的內(nèi)容,以檢索asCaseList 548f,155。訪問位置155(節(jié)點BOT-C-A-T-EOT 318)的內(nèi)容,以檢索asCaseList 572f。由于asCaseList 572f是Null指針,因此,已經(jīng)到達最終產(chǎn)物。最終產(chǎn)物節(jié)點BOT-C-A-T-EOT 318包含數(shù)據(jù)集元素A。
訪問包含節(jié)點BOT-T-A 705的下一個位置175。節(jié)點BOT-T-A 705是互鎖樹數(shù)據(jù)倉庫700a的包括字母“A”的第二樹枝中的第一節(jié)點。為查找形成的最終產(chǎn)物,通過反復(fù)檢索節(jié)點的asCaseList,直到被檢索到的asCaseList是空值,沿著asCase樹枝(例如,在本示例中,包含節(jié)點BOT-T 703、節(jié)點BOT-T-A 705、節(jié)點BOT-T-A-B 707和節(jié)點BOT-T-A-B-EOT 709樹枝),樹枝的asCase鏈接而行。例如,為判斷包含數(shù)據(jù)集元素A 304的第二個單詞單詞是“TAB”,訪問節(jié)點BOT-T-A-B 707的asCaseList 740f,以檢索位置185。訪問位置185的內(nèi)容,以檢索asCaseList 748f。由于asCaseList 748f是Null指針,因此,已經(jīng)到達最終產(chǎn)物。最終產(chǎn)物節(jié)點BOT-T-A-B-EOT 709包含數(shù)據(jù)集元素A。
接下來,從存儲器中檢索基本根節(jié)點T 308,并訪問其asResultList 558f,以返回位置150和170。訪問包含節(jié)點BOT-C-A-T 316的第一位置150。節(jié)點BOT-C-A-T 316是互鎖樹數(shù)據(jù)倉庫700a的包括字母“T”的第一樹枝中的第一節(jié)點。為查找形成的最終產(chǎn)物,通過反復(fù)檢索節(jié)點的asCaseList,直到被檢索到的asCaseList是空值,沿著asCase樹枝(例如,在本示例中,包含節(jié)點BOT-C 312、節(jié)點BOT-C-A 314、節(jié)點BOT-C-A-T 316和節(jié)點BOT-C-A-T-EOT 318的樹枝)、樹枝的asCase鏈接而行。例如,為判斷包含不可分的基本單元T 308的單詞是“CAT”,訪問節(jié)點BOT-C-A 314的asCaseList 532f,以檢索位置145。訪問位置145(節(jié)點BOT-C-A 314)的內(nèi)容,以檢索asCaseList 532f,150。訪問位置145(節(jié)點BOT-C-A 314)的內(nèi)容,以檢索asCaseList 548f,155。訪問位置155(節(jié)點BOT-C-A-T-EOT 318)的內(nèi)容,以檢索asCaseList 572f。由于asCaseList 572f是Null指針,因此,已經(jīng)到達最終產(chǎn)物。最終產(chǎn)物節(jié)點BOT-C-A-T-EOT 318包含數(shù)據(jù)集元素T。
訪問包含節(jié)點BOT-T 703的下一個位置170。節(jié)點BOT-T703是互鎖樹數(shù)據(jù)倉庫700a的包括字母“T”的第二樹枝中的第一節(jié)點。為查找形成的最終產(chǎn)物,通過反復(fù)檢索節(jié)點的asCaseList,直到被檢索到的asCaseList是空值,沿著asCase樹枝(例如,在本示例中,包含節(jié)點BOT-T 703、節(jié)點BOT-T-A 705、節(jié)點BOT-T-A-B707和節(jié)點BOT-T-A-B-EOT 709樹枝),樹枝的asCase鏈接而行。例如,為判斷包含數(shù)據(jù)集元素T 308的第二個單詞單詞是“TAB”,訪問節(jié)點BOT-T-A-B 707的asCaseList 740f,以檢索位置185。訪問位置185的內(nèi)容,以檢索asCaseList 748f。由于asCaseList 748f是Null指針,因此,已經(jīng)到達最終產(chǎn)物。最終產(chǎn)物節(jié)點BOT-T-A-B-EOT 709包含數(shù)據(jù)集元素T。如此,包含A和T的最終產(chǎn)物包括包含A的最終產(chǎn)物集與包含T的最終產(chǎn)物集的交集,或,在此情況下BOT-C-A-T-EOT 318和BOT-T-A-B-EOT 709。
在本發(fā)明的一個實施例中,顯示或打印檢索到的信息。為顯示或打印檢索到的信息,從最終產(chǎn)物到開始(BOT)反向沿asCase樹而行。在沿著asCase樹的每一個節(jié)點中,Result指針(指向從中派生了節(jié)點的第二個部分)用來判斷基本根節(jié)點代表了什么。如果互鎖樹數(shù)據(jù)倉庫包括一個以上的級別,則Result指針指向較低級別的最終產(chǎn)物,必須執(zhí)行相同的過程,直到檢索到最低級別的基本根節(jié)點。
現(xiàn)在請參看圖10,假設(shè)需要星期二銷售的物品總數(shù)。對那些精通本技術(shù)的人員顯而易見的,不是遍歷整個數(shù)據(jù)倉庫中的所有節(jié)點,在本發(fā)明的一個實施例中,要檢索此信息,只需要檢索基本根節(jié)點1006和1008的asResultList。遍歷樹枝51010,因為代表星期二1006的基本節(jié)點指向節(jié)點1004,并且因為代表銷售1008的基本節(jié)點指向節(jié)點1026,遍歷樹枝41012,因為代表銷售1008的基本節(jié)點指向節(jié)點1028。不必遍歷樹枝11015、21014和31013。從沿基本節(jié)點1006和1008指向的樹枝而行所返回的最終產(chǎn)物的交集包括代表Bill Tuesday 40sold PA的節(jié)點1030。
銷售的物品數(shù)量可以通過沿從節(jié)點1024到代表數(shù)量40(未顯示)的根節(jié)點的指針而行來確定??梢岳斫猓瞬襟E可以在發(fā)現(xiàn)最終產(chǎn)物的交叉點之后,或者,也可以在遍歷樹枝時檢索和存儲此信息。
現(xiàn)在請參看圖14A-E,其中,描述了用于評估具有計數(shù)字段(如圖12B的計數(shù)字段)的互鎖樹數(shù)據(jù)倉庫由代表的數(shù)據(jù)的集合的方法。
在圖14A中,任務(wù)40a是評估我們在討論的互鎖樹結(jié)構(gòu)的數(shù)據(jù)倉庫中的某些所需要的數(shù)據(jù)。為此,我們必須首先作出相關(guān)上下文的判斷40b。這在圖14B中進行了描述。相關(guān)上下文41a開始就選擇期望值41b,其中,標(biāo)識了具有這樣的值的根節(jié)點。接下來,發(fā)現(xiàn)只具有所選擇的值的所有路徑。在優(yōu)選實施例中,如那些精通相關(guān)技術(shù)的人所認(rèn)識的,步驟41d,即,忽略具有非相容值的所有路徑,可以以各種方式與步驟41c組合,使得該過程更有效,然而這樣的組合將必然取決于數(shù)據(jù)的類型和數(shù)據(jù)倉庫內(nèi)的值,因此,它們被顯示為單獨的步驟。
在確定上下文40b之后,下一個步驟是根據(jù)查詢的特性,確定焦點或位置或兩者40c。
在圖14D中,我們可以看到,通過查找42b與當(dāng)前位置的節(jié)點的值相關(guān)的根節(jié)點來判斷42a位置。
在圖14C中,通過選擇值的焦點約束列表,從而標(biāo)識相關(guān)根節(jié)點43b,作出焦點判斷40c。
返回到圖14E中的上下文(或停留在被該上下文包圍的區(qū)域內(nèi)),我們確保44a,在將計數(shù)44c合計之前,我們忽略上下文中的不在如查詢確定的焦點和/或位置44b里的所有計數(shù)。
上文所描述的方法和系統(tǒng)可以以存儲在諸如軟盤、CD-ROM、DVD-ROM、DVD-RAM、硬盤驅(qū)動器之類的計算機可讀的介質(zhì)或任何其他機器可讀的存儲介質(zhì)上的程序代碼(即,指令)的形式來實現(xiàn),其中,當(dāng)程序代碼被加載到諸如計算機之類的機器中并由機器執(zhí)行時,機器變成實踐本發(fā)明的設(shè)備。本發(fā)明也可以以通過某些傳輸介質(zhì)(如通過電線或電纜,通過光纖,通過網(wǎng)絡(luò),包括因特網(wǎng)或內(nèi)部網(wǎng),或任何其他形式的傳輸)傳輸?shù)某绦虼a的形式來實現(xiàn),其中,當(dāng)接收到程序代碼并加載到諸如計算機之類的機器中并由機器執(zhí)行時,機器變成實踐本發(fā)明的設(shè)備。當(dāng)在通用處理器上實現(xiàn)時,程序代碼與處理器結(jié)合,以提供與特定邏輯電路類似地工作的唯一設(shè)備。程序代碼可以以諸如C、C++或Java之類的高級程序設(shè)計語言來實現(xiàn)?;蛘?,程序代碼也可以以匯編或機器語言來實現(xiàn)。在任何情況下,語言都可以是編譯的或解釋的語言。
值得注意的是,前面所提供的示例只是為了說明,決不能理解為對本發(fā)明的限制。例如,互鎖樹數(shù)據(jù)倉庫可以使用面向?qū)ο蟮募夹g(shù)、過程技術(shù)、這些技術(shù)的混合技術(shù)或任何其他合適的方法來實現(xiàn)。此外,雖然所提供的示例顯示了存儲在存儲器中的數(shù)據(jù)集元素,那些精通本技術(shù)的人員將理解,此功能可以以許多不同的方式來實現(xiàn)。例如,本發(fā)明也使用存儲在多個遠程機器上的許多不同的universe的數(shù)據(jù)集元素的許多不同集。
權(quán)利要求
1.一種用于生成基于樹的數(shù)據(jù)倉庫的系統(tǒng),包括處理器;連接到處理器的存儲器;以及用于創(chuàng)建基于樹的數(shù)據(jù)倉庫的至少一個級別的基于樹的數(shù)據(jù)倉庫生成器,所述基于樹的數(shù)據(jù)倉庫的至少一個級別包括第一樹、第二樹以及至少第三樹,所述第一樹中包括第一根和多個節(jié)點中的至少一個節(jié)點,所述第二樹中包括第二根和第一樹的至少一個節(jié)點,所述第三樹中包括第三根和第一樹的多個節(jié)點中的至少一個節(jié)點。
2.一種評估由互鎖樹數(shù)據(jù)倉庫表示的數(shù)據(jù)的集合的方法,所述數(shù)據(jù)倉庫包括含有計數(shù)字段的節(jié)點和所述節(jié)點之間的鏈接,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,并可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,存在asResult和asCase鏈接,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間提供指向,其中,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,并且在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑中包含至少一個子組件節(jié)點,所述方法包括下列步驟確定所述數(shù)據(jù)倉庫內(nèi)的上下文以及其對應(yīng)值;確定所述上下文內(nèi)的焦點以及其對應(yīng)值;使用所述上下文和所述焦點的對應(yīng)值,計算所述上下文內(nèi)的所述焦點的發(fā)生概率。
3.根據(jù)權(quán)利要求2所述的評估數(shù)據(jù)的集合的方法,其中,所述確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過從至少一個根節(jié)點的asResult列表遍歷到至少一個根節(jié)點的對應(yīng)的子組件節(jié)點,然后遍歷所述對應(yīng)的子組件節(jié)點到所述子組件節(jié)點的每一個對應(yīng)的最終產(chǎn)物節(jié)點之間的asCase鏈接,從所述至少一個根節(jié)點,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
4.根據(jù)權(quán)利要求2所述的評估數(shù)據(jù)的集合的方法,其中,所述確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過沿著所述路徑,使用Case鏈接,從所有可能的最終產(chǎn)物節(jié)點反向朝著主根的方向遍歷,并且在每一個子組件節(jié)點使用其Result鏈接定位根節(jié)點,并將其與所述至少一個根節(jié)點進行比較,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
5.一種評估由互鎖樹數(shù)據(jù)倉庫表示的數(shù)據(jù)的集合的方法,所述數(shù)據(jù)倉庫包括含有計數(shù)字段的節(jié)點和所述節(jié)點之間的鏈接,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,并可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,存在asResult和asCase鏈接,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間提供指向,其中,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,并且在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑中包含至少一個子組件節(jié)點,所述方法包括下列步驟確定所述數(shù)據(jù)集內(nèi)的上下文以及其對應(yīng)值;確定沿著上下文的每一個路徑的位置;確定所述上下文內(nèi)的焦點以及其對應(yīng)值;計算沿著所述上下文內(nèi)的路徑的所述位置和最終產(chǎn)物之間的所述焦點的發(fā)生概率。
6.根據(jù)權(quán)利要求5所述的評估數(shù)據(jù)的集合的方法,其中,確定沿著上下文的每一個路徑的位置的步驟包括下列步驟從所述互鎖樹數(shù)據(jù)倉庫的根節(jié)點或基本根節(jié)點中選擇一個根節(jié)點,從上下文的每一個路徑中的所述根節(jié)點的或基本根節(jié)點的asResult列表遍歷到其對應(yīng)的子組件節(jié)點。
7.根據(jù)權(quán)利要求5所述的評估數(shù)據(jù)的集合的方法,其中,所述確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過從至少一個根節(jié)點的asResult列表遍歷到至少一個根節(jié)點的對應(yīng)的子組件節(jié)點,然后遍歷所述對應(yīng)的子組件節(jié)點到所述子組件節(jié)點的每一個對應(yīng)的最終產(chǎn)物節(jié)點之間的asCase鏈接,從所述至少一個根節(jié)點,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
8.根據(jù)權(quán)利要求7所述的評估數(shù)據(jù)的集合的方法,其中,所述確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過沿著所述路徑,使用Case鏈接,從所有可能的最終產(chǎn)物節(jié)點反向朝著主根的方向遍歷,并且在每一個子組件節(jié)點使用其Result鏈接定位根節(jié)點,并將其與所述至少一個根節(jié)點進行比較,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
9.一種評估由互鎖樹數(shù)據(jù)倉庫表示的數(shù)據(jù)的集合的方法,所述數(shù)據(jù)倉庫包括含有計數(shù)字段的節(jié)點和所述節(jié)點之間的鏈接,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,并可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,存在asResult和asCase鏈接,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間提供指向,其中,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,并且在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑中包含至少一個子組件節(jié)點,所述方法包括下列步驟確定所述數(shù)據(jù)集內(nèi)的上下文以及其對應(yīng)值;確定沿著上下文的每一個路徑的位置;確定所述上下文內(nèi)的焦點以及其對應(yīng)值;計算沿著所述上下文內(nèi)的路徑的所述位置和主根之間的所述焦點的發(fā)生概率。
10.根據(jù)權(quán)利要求9所述的評估數(shù)據(jù)的集合的方法,其中,確定沿著上下文的每一個路徑的位置的步驟包括下列步驟從所述互鎖樹數(shù)據(jù)倉庫的根節(jié)點或基本根節(jié)點中選擇一個根節(jié)點,從上下文的每一個路徑中的所述根節(jié)點的或基本根節(jié)點的asResult列表遍歷到其對應(yīng)的子組件節(jié)點。
11.根據(jù)權(quán)利要求9所述的評估數(shù)據(jù)的集合的方法,其中,所述確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過從至少一個根節(jié)點的asResult列表遍歷到至少一個根節(jié)點的對應(yīng)的子組件節(jié)點,然后遍歷所述對應(yīng)的子組件節(jié)點到所述子組件節(jié)點的每一個對應(yīng)的最終產(chǎn)物節(jié)點之間的asCase鏈接,從所述至少一個根節(jié)點,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
12.根據(jù)權(quán)利要求9所述的評估數(shù)據(jù)的集合的方法,其中,所述確定上下文和其對應(yīng)值的步驟包括下列步驟選擇上下文約束列表,所述上下文約束列表包含由所述互鎖樹數(shù)據(jù)倉庫的至少一個根節(jié)點表示的值,其中,所述上下文約束列表上的至少一個根節(jié)點的全部都通過邏輯表達式彼此關(guān)聯(lián);通過沿著所述路徑,使用Case鏈接,從所有可能的最終產(chǎn)物節(jié)點反向朝著主根的方向遍歷,并且在每一個子組件節(jié)點使用其Result鏈接定位根節(jié)點,并將其與所述至少一個根節(jié)點進行比較,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
13.根據(jù)權(quán)利要求9所述的評估數(shù)據(jù)的集合的方法,其中,所述確定上下文和其對應(yīng)值的步驟包括下列步驟按照所述互鎖樹數(shù)據(jù)倉庫的最終產(chǎn)物節(jié)點,選擇所有可能的路徑,忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成上下文的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取上下文計數(shù)。
14.根據(jù)權(quán)利要求2、5、9或12中的任何一個權(quán)利要求所述的評估數(shù)據(jù)的集合的方法,其中,所述確定焦點和其對應(yīng)值的步驟包括下列步驟從所述互鎖樹數(shù)據(jù)倉庫的根節(jié)點或基本根節(jié)點中選擇至少一個根節(jié)點的焦點約束列表,所述至少一個根節(jié)點通過邏輯表達式來關(guān)聯(lián);通過從至少一個根節(jié)點的asResult列表到任何對應(yīng)的子組件節(jié)點的遍歷,然后遍歷所述對應(yīng)的子組件節(jié)點的到其對應(yīng)的最終產(chǎn)物節(jié)點的asCase鏈接,從所述至少一個根節(jié)點,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略那些不在建立的上下文內(nèi)的路徑,以及還忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成焦點的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點,以及添加構(gòu)成所述焦點的那些一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取焦點計數(shù)。
15.根據(jù)權(quán)利要求2、5、9或12中的任何一個權(quán)利要求所述的評估數(shù)據(jù)的集合的方法,其中,所述確定焦點和其對應(yīng)值的步驟包括下列步驟從所述互鎖樹數(shù)據(jù)倉庫的根節(jié)點或基本根節(jié)點中選擇至少一個根節(jié)點的焦點約束列表,所述至少一個根節(jié)點通過邏輯表達式來關(guān)聯(lián);通過沿著路徑從建立的上下文內(nèi)的所有最終產(chǎn)物節(jié)點反向朝著它們的主根節(jié)點的方向遍歷,所述路徑可以使用建立的上下文內(nèi)的所述最終產(chǎn)物節(jié)點的Case鏈接來進行標(biāo)識,并且在每一個子組件節(jié)點中,使用Result鏈接來進行遍歷,以定位根節(jié)點,并將其與所述至少一個根節(jié)點進行比較,按照最終產(chǎn)物節(jié)點,標(biāo)識一個或多個路徑;忽略具有到這樣的基本根節(jié)點的鏈接的那些路徑,所述基本根節(jié)點的值字段不符合所述邏輯表達式,如此構(gòu)成焦點的結(jié)果節(jié)點集中只包括沿著沒有被忽略的那些路徑的節(jié)點;以及添加那些沒有被忽略的一個或多個路徑的最終產(chǎn)物節(jié)點的計數(shù),以獲取焦點計數(shù)。
16.根據(jù)權(quán)利要求4、6、7、8、9、11、12或14中的任何一個權(quán)利要求所述的評估數(shù)據(jù)的集合的方法,其中,所述邏輯表達式包括至少一個邏輯運算符,如但不限于,AND、OR、NOT、GREATERTHAN、LESSTHAN、XNOR、EQUALTO和這樣的邏輯運算符的任何組合。
17.一種包括節(jié)點和所述節(jié)點之間的鏈接的結(jié)構(gòu),所述節(jié)點具有多個數(shù)據(jù)字段,所述多個數(shù)據(jù)字段中至少有兩個包含指針,所述至少兩個指針中的一個是Case指針,所述至少兩個指針的另一個是Result指針,至少一個節(jié)點具有至少一個指向指針列表的附加指針,在所述節(jié)點具有關(guān)聯(lián)的asCase列表的情況下,所述指向指針列表的附加指針中的一個是asCase列表,在所述節(jié)點具有關(guān)聯(lián)的asResult列表的情況下,所述指向指針列表的附加指針中的另一個是asResult列表,其中,所述節(jié)點包含計數(shù)字段,其中,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,其中,所述節(jié)點可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間提供指向,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑上包含至少一個子組件節(jié)點,并且所述asResult鏈接在根節(jié)點或最終產(chǎn)物節(jié)點和子組件節(jié)點或最終產(chǎn)物節(jié)點之間在它們之間的所述路徑上提供指向,其中,所述基本節(jié)點還具有一個字段,該字段具有值。
18.根據(jù)權(quán)利要求17所述的結(jié)構(gòu),所述結(jié)構(gòu)由一組程序指令構(gòu)成,該組程序指令當(dāng)被激活時配置計算機系統(tǒng),以產(chǎn)生所述結(jié)構(gòu)。
19.包含如權(quán)利要求18所述的程序指令集的計算機可讀取的介質(zhì)。
20.根據(jù)權(quán)利要求17所述的結(jié)構(gòu),其中,所述計數(shù)字段包含強度變量,所述強度變量是在對應(yīng)于涉及包含所述計數(shù)字段的節(jié)點的活動的各種預(yù)先確定的遍歷類型的各種強度下可修改。
21.根據(jù)權(quán)利要求17中所述的結(jié)構(gòu),其中,所述asCase和所述asResult列表存儲在所述互鎖樹結(jié)構(gòu)之外的單獨的數(shù)據(jù)結(jié)構(gòu)中,其中,所述單獨的數(shù)據(jù)結(jié)構(gòu)通過指針與所述互鎖樹結(jié)構(gòu)中的相關(guān)的節(jié)點關(guān)聯(lián)。
22.一種包括節(jié)點和所述節(jié)點之間的鏈接的結(jié)構(gòu),所述節(jié)點具有多個數(shù)據(jù)字段,所述多個數(shù)據(jù)字段中至少有兩個包含指針,所述至少兩個指針中的一個是Case指針,所述至少兩個指針的另一個是Result指針,至少一個節(jié)點具有至少一個指向指針列表的附加指針,在所述節(jié)點具有關(guān)聯(lián)的asCase列表的情況下,所述指向指針列表的附加指針中的一個是asCase列表,在所述節(jié)點具有關(guān)聯(lián)的asResult列表的情況下,所述指向指針列表的附加指針中的另一個是asResult列表,其中,對于每一種預(yù)先確定的遍歷方式給所述節(jié)點提供一個子節(jié)點,所述子節(jié)點包含計數(shù)字段,用于記錄所述節(jié)點以預(yù)先確定的方式進行的遍歷,其中,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,其中,所述節(jié)點可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間提供指向,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑上包含至少一個子組件節(jié)點,并且所述asResult鏈接在根節(jié)點或最終產(chǎn)物節(jié)點和子組件節(jié)點或最終產(chǎn)物節(jié)點之間在它們之間的所述路徑上提供指向,其中,所述基本節(jié)點還具有一個字段,該字段具有值。
23.一種包括節(jié)點和所述節(jié)點之間的鏈接的結(jié)構(gòu),所述節(jié)點具有多個數(shù)據(jù)字段,所述多個數(shù)據(jù)字段中至少有兩個包含指針,所述至少兩個指針中的一個是Case指針,所述至少兩個指針的另一個是Result指針,至少一個節(jié)點具有至少一個指向指針列表的附加指針,在所述節(jié)點具有關(guān)聯(lián)的asCase列表的情況下,所述指向指針列表的附加指針中的一個是asCase列表,在所述節(jié)點具有關(guān)聯(lián)的asResult列表的情況下,所述指向指針列表的附加指針中的另一個是asResult列表,其中,所述節(jié)點包含一個額外的字段,其中,所述節(jié)點包括根節(jié)點,其中,有至少一個主根節(jié)點和至少一個基本根節(jié)點,其中,所述節(jié)點可以包括其他根節(jié)點,所述節(jié)點還包括至少一個結(jié)束思考節(jié)點、至少一個子組件節(jié)點、以及至少一個最終產(chǎn)物節(jié)點,其中,所述asResult鏈接在根節(jié)點和任何其他節(jié)點之間提供指向,所述asCase鏈接在至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間提供指向,在所述至少一個主根節(jié)點和至少一個最終產(chǎn)物節(jié)點之間的路徑上包含至少一個子組件節(jié)點,并且所述asResult鏈接在根節(jié)點或最終產(chǎn)物節(jié)點和子組件節(jié)點或最終產(chǎn)物節(jié)點之間在它們之間的所述路徑上提供指向,其中,所述基本節(jié)點還具有一個字段,該字段具有值。
24.根據(jù)權(quán)利要求23所述的結(jié)構(gòu),其中,所述的額外的字段是計數(shù)字段。
全文摘要
生成和/或訪問由包括互連的樹的林所構(gòu)成的基于樹的數(shù)據(jù)倉庫?;跇涞臄?shù)據(jù)倉庫包括從第一根節(jié)點下垂的第一樹,并可以包括多個樹枝。第一樹的每一個樹枝都在葉節(jié)點中結(jié)束(圖3c 350)。每一個葉節(jié)點都可以代表最終產(chǎn)物,或子組件節(jié)點。同一個基于樹的數(shù)據(jù)倉庫的第二根鏈接到代表最終產(chǎn)物的每一個葉節(jié)點(圖3c 356)。最后,基于樹的數(shù)據(jù)倉庫包括多個樹,其中,這些樹中的每一個樹的根節(jié)點都可以被描述為基本節(jié)點。這些樹中的每一個樹的基本根節(jié)點都可以鏈接到第一樹的一個或多個樹枝中的一個或多個節(jié)點(圖9a)。基于樹的數(shù)據(jù)倉庫的節(jié)點只包含指向基于樹的數(shù)據(jù)倉庫中的其他節(jié)點的指針,并可以包含額外的字段,其中,一個字段可以是計數(shù)字段。另外,描述了獲取一個或多個定義的焦點內(nèi)的所需要的上下文所標(biāo)識的涉及特定節(jié)點的變量的一致性的概率的裝置。此外,還顯示了邏輯運算符對涉及這樣的變量的查詢的應(yīng)用。
文檔編號G06F17/30GK1781093SQ200480011369
公開日2006年5月31日 申請日期2004年2月27日 優(yōu)先權(quán)日2003年3月10日
發(fā)明者詹尼·坎貝爾·馬扎加蒂 申請人:尤尼西斯公司