用于存储和访问互锁树数据仓库中的数据的系统和方法

文档序号:6482783阅读:187来源:国知局
专利名称:用于存储和访问互锁树数据仓库中的数据的系统和方法
技术领域
本发明涉及计算领域,具体来说,涉及将数据存储在数据仓库中并访问其中的数据的领域。
背景技术
在开发软件时开发人员所作出的一个基本选择是选择适当的数据结构以便于组织和引用数据。有许多不同类型的数据结构,包括链接列表、堆栈、树、数组及其他。每一个数据结构都与某些优点和局限关联。
一个频繁使用的数据结构是树。树的一种常见形式由叫做节点的元素的有限集构成,从根到一个或多个内部节点链接在一起,其中每一个节点都可以链接到一个或多个节点,最终以许多叶节点结束。通常,与根比较近的节点是远离根的节点的父节点。远离根的节点叫做父节点的子节点。数据通常存储在节点中,并可以使用从根到节点到叶和从父节点到子节点的链接来引用。因此,分层或顺序关系可以是存储在树结构的节点中的数据。分层关系也可以被理解为上下文关系,每一个节点都可在其父节点的上下文内被访问。
树数据结构的一个局限是,通常,一个树只能代表一个层次结构。例如,销售活动的根节点可以具有许多从根节点下垂的节点,每一个节点都代表特定推销员。每一个销售员节点都可以具有子节点,每一个销售员子节点都代表位于特定州的销售。因此,在销售员的上下文内可以轻松地访问此树,以查找州信息,即,此树可以用来有效地回答问题“销售员Bob在哪个州进行销售?”如果不是按销售员访问州数据,而需求州的上下文内的销售员数据,(即,我们希望回答问题“哪个销售员在得克萨斯州销售?”),则必须创建另一个树,代表州的节点从根销售员活动下垂,代表销售员的子节点可以从该节点中下垂。创建另一个树的替代方法将是遍历整个树,以提取所希望的信息。
如果一个结构可以记录数据内的所有可能的上下文关系是有帮助的,从而实现用标准树数据结构无法实现的效率。

发明内容
生成和/或访问包括互连的树的林所构成的一个或多个级别的基于树的数据仓库。基于树的数据仓库的每一个级别包括从第一根节点下垂的第一树,并可以包括多个树枝。第一根可以代表诸如但不限于级别开始指示符之类的概念。第一树的每一个树枝都在叶节点中结束。每一个叶节点都可以代表最终产物,如下面比较全面地描述的。基于树的数据仓库的同一个级别的第二根链接到代表最终产物的第一树的每一个叶节点。因此,第二根基本上是第一树或第一树的子集的倒序的根,但第一树不重复。第二根可以代表诸如但不限于级别结束指示符之类的概念。最后,基于树的数据仓库包括多个树,其中,这些树中的每一个树的根节点都可以包括诸如数据集元素或数据集元素的表示法之类的数据。这种根节点这里被称为基本根节点。这些树中的每一个树的基本根节点都可以链接到非复制的第一树的一个或多个树枝中的一个或多个节点。基于树的数据仓库的非根节点只包含指向基于树的数据仓库中的其他节点的指针。包括基于树的数据仓库的每一个级别的树林中的树的根也由指示器组成,然而,根节点也可以包含代表信息的数据(即,包含是或代表诸如数据集元素之类的数据或诸如级别开始或级别结束指示符之类的概念的数据);基于树的数据仓库的所有其他节点只指向其他节点,不包含数据。在本发明的一个实施例中,数据是与字符关联的整数,像素表示法、诸如开始指示符、结束指示符、字段指示符的开始等等条件,尽管本发明不仅限于此。可以生成和访问上文所描述的基于树的数据仓库的多个级别;较低级别的最终产物变成下一级别的基本根节点。
生成和访问互锁树数据仓库。数据仓库包括构成了从第一根下垂的一个asCase树的asCase树枝的多根树,这里叫做主根,asResult树枝构成了从多重根下垂的多个asResult树。asResult树的一个特殊实例包括链接到上文所描述的asCase树的一个或多个最终产物叶节点的根节点。因此,此asResult树可以轻松地按照倒序访问在最终产物中结束的asCase树的树枝。此asResult树也可以用来定义下一级别的基本根节点。这些基本根节点可以代表由较低级别的最终产物集组成的下一级别的数据集元素。
互锁树数据仓库可以通过组合代表级别开始指示符的节点和代表数据集元素的节点以构成代表子组件的节点,捕获有关在输入文件中遇到的数据集元素之间的关系的信息。子组件节点可以同代表数据集元素的节点相结合,以生成迭代子进程位于另一个子组件节点。将子组件节点与代表级别结束指示符的节点组合可以创建级别最终产物节点。将级别开始节点与数据集元素节点组合以创建子组件以及将子组件与数据集元素节点组合的过程本身可以迭代,以生成一个级别中的多个asCase树枝。AsResult树还可以通过指向asCase树中的一个或多个节点的asResult树的根,链接或连接到asCase树中的节点。
一个级别的最终产物可以是代表数据集元素的基本根节点,它们组合起来以生成子组件的下一级别。此过程可以重复任意次,创建asCase树的任意个级别。另外,还可以分解一个级别的基本根节点以生成较低级别的节点和根。一个级别的最终产物节点,通过较低级别的asResult树的特殊实例,即,具有代表较低级别的结束指示符的根节点的较低级别的的asResult树,变成下一级别的基本根节点。如此,具有代表较低级别的结束指示符的根节点的较低级别的asResult树是第二根,较低级别的asCase树的反转。
在本发明的一个实施例中,在创建节点时,在每一个级别中基本上同时生成asCase和asResult链接。通过在处理输入时生成asCase链接来创建AsCase树枝。每一个级别上的asCase树的asCase树枝提供是如何通过将代表数据集元素的节点按顺序组合为子组件等等到最终产物,创建级别每一个子组件和最终产物的直接记录。asCase树的树枝还代表树中的节点的一个可能的分层关系。
asResult链接的生成创建了一系列互锁树,每一个互锁树都从一个单独的根下垂。在一个级别中可能有多个此类型的根。这具有记录在输入中遇到的数据集元素之间的所有其他关系的结果。如前所述的信息是通过构建的而不是显式存储在树的节点中的互锁树的林的结构来捕获的,以便实际上作为输入接收的数据判断构建的互锁树的林的结构。asResult树的林的结构确保了,可以在需要的任何其他上下文中访问如此存储的信息。因此,数据仓库是自组织的,从下面的描述中就可以看出。
另外,将使用用于生成基于树的数据仓库的系统来执行操作,该系统可以具有处理器;连接到处理器的存储器;以及用于创建基于树的数据仓库的至少一个级别的基于树的数据仓库生成器,所述基于树的数据仓库的至少一个级别包括第一树、第二树以及至少第三树,所述第一树中包括第一根和多个节点中的至少一个节点,所述第二树中包括第二根和第一树的至少一个节点,所述第三树中包括第三根和第一树的多个节点中的至少一个节点。
优选情况下,为评估来自包括了包含计数字段和所述节点之间的链接的节点的互锁树数据仓库的由互锁树数据仓库表示的数据的集合,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,并可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,存在asResult和asCase链接,其中,所述asResult链接在根节点和任何其他节点之间的路径中在所述根节点和所述任何其他节点之间提供指向,其中,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,并且在所述至少一个主根节点和至少一个最终产物节点之间的路径中包含至少一个子组件节点,该方法可以执行下列步骤确定所述数据仓库内的上下文以及其对应值;确定所述上下文内的焦点以及其对应值;使用所述上下文和所述焦点的对应值,计算所述上下文内的所述焦点的发生概率。
确定上下文和其对应值的步骤本身可以是多步骤过程,并可以具有下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过从至少一个根节点的asResult列表遍历到至少一个根节点的对应的子组件节点,然后遍历所述对应的子组件节点到所述子组件节点的每一个对应的最终产物节点之间的asCase链接,从所述至少一个根节点,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
“逻辑表达式”包括至少一个逻辑运算符,如但不限于,AND、OR、NOT、GREATERTHAN、LESSTHAN、XNOR、EQUALTO和这样的逻辑运算符的任何组合。
我们还显示了,可以评估互锁树数据仓库中的数据的集合,其中,可以根据下列过程来确定上下文和其对应值选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过沿着所述路径,使用Case链接,从所有可能的最终产物节点反向朝着主根的方向遍历,并且在每一个子组件节点使用其Result链接定位根节点,并将其与所述至少一个根节点进行比较,按照最终产物节点,标识一个或多个路径,忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
评估由互锁树数据仓库表示的数据的集合的方法也可以按如下方式来进行确定所述数据集内的上下文以及其对应值;确定沿着上下文的每一个路径的位置;确定所述上下文内的焦点以及其对应值;计算沿着所述上下文内的路径的所述位置和最终产物之间的所述焦点的发生概率。
当按如此方式进行时,确定沿着上下文的每一个路径的位置的步骤可以具有下列步骤从所述互锁树数据仓库的根节点或基本根节点中选择一个根节点,从上下文的每一个路径中的所述根节点的或基本根节点的asResult列表遍历到其对应的子组件节点。
并且,确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过从至少一个根节点的asResult列表遍历到至少一个根节点的对应的子组件节点,然后遍历所述对应的子组件节点到所述子组件节点的每一个对应的最终产物节点之间的asCase链接,从所述至少一个根节点,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
如果它在最后列出的步骤集之后,则确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过沿着所述路径,使用Case链接,从所有可能的最终产物节点反向朝着主根的方向遍历,并且在每一个子组件节点使用其Result链接定位根节点,并将其与所述至少一个根节点进行比较,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
评估由互锁树数据仓库表示的数据的集合的再一个方法,其中,该方法可以包括下列步骤确定所述数据集内的上下文以及其对应值;确定沿着上下文的每一个路径的位置;确定所述上下文内的焦点以及其对应值;计算沿着所述上下文内的路径的所述位置和主根之间的所述焦点的发生概率。
在此再一个方法中,确定沿着上下文的每一个路径的位置的步骤包括下列步骤从所述互锁树数据仓库的根节点或基本根节点中选择一个根节点,从上下文的每一个路径中的所述根节点的或基本根节点的asResult列表遍历到其对应的子组件节点。
并且,确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过从至少一个根节点的asResult列表遍历到至少一个根节点的对应的子组件节点,然后遍历所述对应的子组件节点到所述子组件节点的每一个对应的最终产物节点之间的asCase链接,从所述至少一个根节点,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
或者,确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过沿着所述路径,使用Case链接,从所有可能的最终产物节点反向朝着主根的方向遍历,并且在每一个子组件节点使用其Result链接定位根节点,并将其与所述至少一个根节点进行比较,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
另一个替代方法是,确定上下文和其对应值的步骤包括下列步骤
按照所述互锁树数据仓库的最终产物节点,选择所有可能的路径,忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
在几乎任何情况下,确定焦点和其对应值的步骤包括下列步骤从所述互锁树数据仓库的根节点或基本根节点中选择至少一个根节点的焦点约束列表,所述至少一个根节点通过逻辑表达式来关联;通过从至少一个根节点的asResult列表到任何对应的子组件节点的遍历,然后遍历所述对应的子组件节点的到其对应的最终产物节点的asCase链接,从所述至少一个根节点,按照最终产物节点,标识一个或多个路径。
忽略那些不在建立的上下文内的路径,以及还忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成焦点的结果节点集中只包括沿着没有被忽略的那些路径的节点,以及添加构成所述焦点的那些一个或多个路径的最终产物节点的计数,以获取焦点计数。
此外,在几乎任何情况下,确定焦点和其对应值的步骤包括下列步骤从所述互锁树数据仓库的根节点或基本根节点中选择至少一个根节点的焦点约束列表,所述至少一个根节点通过逻辑表达式来关联;通过沿着路径从建立的上下文内的所有最终产物节点反向朝着它们的主根节点的方向遍历,所述路径可以使用建立的上下文内的所述最终产物节点的Case链接来进行标识,并且在每一个子组件节点中,使用Result链接来进行遍历,以定位根节点,并将其与所述至少一个根节点进行比较,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成焦点的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取焦点计数。
此外,在使用逻辑表达式的情况下,它可以是任何表达式。如此,它应该包括至少一个逻辑运算符,如但不限于,AND、OR、NOT、GREATERTHAN、LESSTHAN、XNOR、EQUALTO和这样的逻辑运算符的任何组合。
优选的结构通常包括节点和所述节点之间的链接,所述节点具有多个数据字段,所述多个数据字段中至少有两个数据字段包含指针,所述至少两个指针中的一个是Case指针,所述至少两个指针的另一个是Result指针,至少一个节点具有至少一个指向指针列表的附加指针,在所述节点具有关联的asCase列表的情况下,所述指向指针列表的附加指针中的一个是asCase列表,在所述节点具有关联的asResult列表的情况下,所述指向指针列表的附加指针中的另一个是asResult列表,其中,所述节点包含计数字段,其中,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,其中,所述节点可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,所述asResult链接在根节点和任何其他节点之间提供指向,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,在所述至少一个主根节点和至少一个最终产物节点之间的路径上包含至少一个子组件节点,并且所述asResult链接在根节点或最终产物节点和子组件节点或最终产物节点之间在它们之间的所述路径上提供指向,其中,所述基本节点还具有一个字段,该字段具有值。
优选情况下,该结构由一组程序指令构成,该组程序指令当被激活时配置计算机系统,以产生所述结构。
可以从包含程序指令集的计算机可读取的介质中可用的所述程序指令集创建该结构。
优选情况下,计数字段包含强度变量,强度变量是在对应于涉及包含所述计数字段的节点的活动的各种预先确定的遍历类型的各种强度下可变化。
优选情况下,asCase和asResult列表存储在所述互锁树结构之外的单独的数据结构中,其中,所述单独的数据结构通过指针与所述互锁树结构中的相关的节点关联。
该结构的另一个优选形式被描述为包括节点和所述节点之间的链接的结构,所述节点具有多个数据字段,所述多个数据字段中至少有两个数据字段包含指针,所述至少两个指针中的一个是Case指针,所述至少两个指针的另一个是Result指针,至少一个节点具有至少一个指向指针列表的附加指针,在所述节点具有关联的asCase列表的情况下,所述指向指针列表的附加指针中的一个是asCase列表,在所述节点具有关联的asResult列表的情况下,所述指向指针列表的附加指针中的另一个是asResult列表,其中,对于每一种预先确定的遍历方式给所述节点提供一个子节点,所述子节点包含计数字段,用于记录所述节点以预先确定的方式进行的遍历,其中,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,其中,所述节点可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,所述asResult链接在根节点和任何其他节点之间提供指向,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,在所述至少一个主根节点和至少一个最终产物节点之间的路径上包含至少一个子组件节点,并且所述asResult链接在根节点或最终产物节点和子组件节点或最终产物节点之间在它们之间的所述路径上提供指向,其中,所述基本节点还具有一个字段,该字段具有值。
本发明的结构的另一个优选形式包括节点和所述节点之间的链接,所述节点具有多个数据字段,所述多个数据字段中至少有两个数据字段包含指针,所述至少两个指针中的一个是Case指针,所述至少两个指针的另一个是Result指针,至少一个节点具有至少一个指向指针列表的附加指针,在所述节点具有关联的asCase列表的情况下,所述指向指针列表的附加指针中的一个是asCase列表,在所述节点具有关联的asResult列表的情况下,所述指向指针列表的附加指针中的另一个是asResult列表,其中,所述节点包含一个额外的字段,其中,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,其中,所述节点可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,所述asResult链接在根节点和任何其他节点之间提供指向,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,在所述至少一个主根节点和至少一个最终产物节点之间的路径上包含至少一个子组件节点,并且所述asResult链接在根节点或最终产物节点和子组件节点或最终产物节点之间在它们之间的所述路径上提供指向,其中,所述基本节点还具有一个字段,该字段具有值。
在此最后一个描述的形式中,所述额外的字段优选情况下是计数字段。


当与所附的图形阅读时,可以更好地了解前面的摘要,以及本发明的实施例的下面详细描述。为了说明本发明,在图形中显示了本发明的示范性结构;然而,本发明不仅限于所说明的特定方法。在图形中图1是其中可以实现本发明的各个方面的示范性计算环境;图2a说明了根据本发明的一个实施例的用于从互锁树数据仓库生成数据并访问数据的示范性系统;图2b说明了用于从互锁树数据库生成信息并访问信息的示范性方法;图3a显示了根据本发明的一个实施例的图2a的示范性互锁树数据仓库的比较详细的视图;图3b显示了根据本发明的一个实施例的图3a的互锁树数据仓库的示范性节点的比较详细的视图;图3c显示了根据本发明的一个方面的图3a的互锁树数据仓库的链接列表;图4显示了根据本发明的一个实施例的存储在存储器中的图2的示范性数据集元素集;图5a-e描述了图2的互锁树,以及根据本发明的一个实施例生成互锁树时互锁树的节点的对应的内容;图6是根据本发明的一个方面的生成互锁树的示范性过程的流程图;图7a显示了根据本发明的一个实施例的另一个互锁树数据仓库和对应的节点;图7b显示了根据本发明的一个方面的图7a的互锁树数据仓库的链接列表;图8显示了根据本发明的实施例的其他互锁树数据仓库;图9a显示了根据本发明的一个实施例的另一个互锁树数据仓库;图9b显示了根据本发明的一个实施例的图9a的互锁树数据仓库的节点的示范性内容;图10显示了根据本发明的一个实施例的另一个互锁树数据仓库;以及图11是根据本发明的一个实施例的从互锁树数据仓库访问数据的示范性过程的流程图。
图12A和B显示了具有至少一个额外的字段的示范性互锁树数据仓库的详细视图。
图13是根据本发明的优选实施例的最不复杂的互锁树数据仓库的说明。
图14A-D是流程图。
具体实施例方式
概述如下所述的系统和方法创建了包括互连的树的林至少一个级别的数据仓库。数据仓库的每一个级别的互连的树的林捕获有关代表级别开始的节点和数据集元素(创建子组件节点)或子组件节点和数据集元素节点或子组件节点和代表迭代过程中的级别结束指示符的导致生成由被asCase树枝和多个asResult树链接的节点组成单个asCase树的节点的组合的信息。asCase树枝的节点从第一根下垂。例如,请参看图3a,节点302、312、314和316是从第一开始指示符根302下垂的示范性asCase树。AsResult树包括下列树节点306和312(一个asResult树),节点304和314(第二asResult树),节点308和316(第三asResult树)和节点310和318(第四asResult树)。第asResult树是asResult树的特殊实例,因为根(节点310)代表了结束指示符。
为了查看其最基本形式的结构,请参阅图13,其中,显示了互锁树数据仓库结构的最小的单元,具有通过链接16-19连接的节点11-15。基本结构将具有通过链接16连接到子组件节点14的主根(第一根,节点11)。第3根(基本根)节点12还将通过链接17连接到子组件节点14。(如此,节点14是节点12的数据中指出的实例,即,节点14的数据是基本节点12的数据的实例)。节点15通过链接19连接到节点14,路径1l-16-14-19-15可以叫做从主根开始和最终产物节点15结束的路径或线程。(路径可以是链接和节点的任何连接线)。最终产物节点还是第2根节点(所述节点的末端)13的实例,并通过链接18连接到它。
给定级别的asCase树的每一个树枝以将代表级别开始指示符的节点和代表数据集元素的节点组合为子组件节点开始。子组件节点可以反复地同数据集元素节点相结合为另一个子组件节点。子组件可以同代表级别结束指示符的节点相结合,以创建最终产物节点。此过程可以重复,并可能导致形成从第一根下垂的多个asCase树枝。
例如,如果特定互锁树结构的不可分的基本组件是字母数字的,则子组件可以是不是单词的字母的组合,最终产物可以是单词。或者,子组件可以是包括部分库存品编号或订购编号的字母数字的组合,最终产物可以是完整的库存品或订购编号,这里只是举应用于本发明的输入的字母数字universe的两个可能的用途。
一个级别的最终产物可以是下一个级别的数据集元素。最终产物数据集元素可以用来生成子组件的下一级别,方式与较低级别的数据集元素用来创建较低级别的子组件和最终产物的方式相同。例如,在上文所描述的特定互锁树结构中,一个级别(单词)的最终产物可以是从中可以创建较高级别最终产物(句子)的数据集元素。此过程可以重复任意次,在数据仓库中创建asCase树的任意个级别。
为继续上文所描述的示例,较高的级别,使用单词作为级别数据集元素,可以包括句子。句子可以组合起来,以创建段落(较高的级别)等等。另外,还可以分解较高级别的数据集元素,以生成互锁树数据仓库的较低级别。在本发明的一个实施例中,从级别结束指示符启动的asResult树被用来定义下一级别的数据集元素。结束指示符是互锁树数据仓库的倒序的第二根,如本发明的一个实施例中的asCase树所定义的。
在创建节点时,在每一个级别中基本上同时生成asCase和asResult链接。asCase链接代表到从中创建节点的两个节点的第一个节点的链接。可以理解,在处理输入时,通过生成asCase链接,可以创建asCase树的asCase树枝。每一个级别的asCase树枝提供是如何创建级别每一个子组件和最终产物的直接记录。因此,asCase树枝可以用于任何目的,知道子组件和最终产物是如何创建的是有用的。例如,如果到互锁树生成器的输入包括正确拼写的单词的universe,则所生成的互锁树的所产生的asCase链接可以用作拼写检查程序,这里只是列出数据仓库的公用程序的许多可能的示例中的一个示例。
另外,asCase树的树枝还代表asCase树中的节点的一个可能的分层关系。例如,如果互锁树生成器接收到的数据是“Tom销售了100个PA。Bill销售了40个NJ”,所生成的asCase树包括“销售员的上下文内的州信息”上下文或层次结构中的数据的视图。
asResult链接代表到从中创建节点的两个节点的第二个节点的链接。asResult链接的生成创建了一系列互锁树,其中,每一个asResult树都从包括数据集元素的根下垂。这具有记录数据仓库中的元素和asCase树之间的所有遇到的关系的结果。即,asResult树捕获互锁树的节点的所有可能的上下文。asResult树可以用于任何目的,知道节点之间的上下文或关系是有用的。例如,如果对互锁树数据仓库生成器的输入包括若干销售数据,包括销售员姓名、星期几、商品编号和州、所生成的互锁树数据仓库的所产生的asResult链接可以用来从同一个互锁树数据仓库中提取下列信息“哪个销售员在特定的州销售?”“星期一销售了多少商品?”“销售员Bob在星期一和星期二销售了多少商品?”等等,无需创建数据仓库的多个副本。
可以使用存储在asResult树来分类子组件和最终产物。可以理解,如前所述的信息实际是通过构建的而不是显式存储在树的子组件和最终产物节点中的互锁树数据仓库的结构来存储的。由于只有互锁树数据仓库的根节点才可以包括数据,因此,可以沿asResult链接反向而行到根节点,以判断子组件或最终产物是否属于由根节点所代表的数据的类。根据如下所述的过程,进一步可以理解,此功能使数据仓库为自组织的。例如,如果对互锁树数据仓库生成器的输入是“CAT TAB”,则存储在所产生的互锁树数据仓库的结构中的信息可以用来判断两个最终产物“BOT-C-A-T-EOT”和“BOT-T-A-B-EOT”包含元素“A”,或换句话说,包含“A”的子组件/最终产物的类包括“BOT-C-A-T-EOT”和“BOT-T-A-B-EOT”。此外,通过沿包含“A”的节点的asCase链接而行,可以沿着asCase树的树枝查找包含“A”的其他子组件和最终产物。
在本发明的一个实施例中,节点之间的链接是双向的。例如,代表字母“A”的根节点可以包括指向节点A的asResultList中的节点BOT-C-A的指针,而节点BOT-C-A可以包括指向节点A的指针作为其asResult指针,依次类推。
在本发明的另一个实施例中,节点之间的链接是单向的。例如,在本实施例中,节点BOT-C-A包括指向节点BOT-C的asCase指针和指向代表A根节点的asResult指针,但根节点A不包括指向其asResultList中的节点BOT-C-A的指针。那些精通本技术的人员将认识到,虽然仍可以判断涉及哪些节点属于类别A的信息,但是,这样做可能需要搜索所有节点。
示范性计算环境图1是其中可以实现本发明的各个方面的示范性计算机系统100的方框图。计算机系统100可以是任何合适的系统,如但不限于大型机、小型计算机、IBM兼容的个人计算机,Unix工作站或网络计算机。那些精通相关技术的人将认识到,本发明的设备可以适用于任何计算机系统,包括但不限于多用户计算机系统或单用户计算机。如图1所示,计算机系统100包括连接到主存储器104的中央处理单元(CPU)102,辅助存储器接口106,终端接口108,以及网络接口110。这些系统组件通过系统总线160连接起来。辅助存储器接口106用来连接存储设备,如但不限于DASD设备190,将存储在如但不限于磁盘195之类的磁盘上的数据仓库到计算机系统100。
包含了计算机系统100的整个虚拟存储器的主存储器104,包括了操作系统122和应用程序124,还可以包括互锁树数据仓库126。互锁树数据仓库126可以用来提供这样的数据仓库可以以多个上下文模式对该数据仓库快速进行搜索,以查找数据,而不需要数据的重复。计算机系统100可以使用已知的虚拟寻址机制,这种机制允许计算机系统100的程序这样操作似乎它们可以访问大型单个存储实体而不是访问诸如主存储器104和DASD设备190之类的多个较小的存储实体。因此,尽管显示的操作系统122、应用程序124,以及互锁树数据仓库126驻留在主存储器104上,那些精通相关技术的人将认识到,这些元件不一定都完全同时位于主存储器104中。
尽管显示的计算机系统100只包括单个CPU和系统总线,但是,那些精通相关技术的人将理解,可以使用包括多个CPU和/或总线的系统来实现本发明。可以使用终端接108来将一个或多个终端连接到计算机系统100。引用的终端可以是哑终端,或完全可编程的工作站,可以被用来使系统管理员和用户与计算机系统100进行通信。
可以使用网络接口110来将其他计算机系统和/或工作站连接到计算机系统100。网络接110所连接的网络可以是局域网(LAN)、广域网(WAN),内部网、extranet或因特网,或任何其他合适的网络。操作系统122可以是诸如OS/2、WINDOWS、AIX、UNIX、LINUX之类的操作系统或任何其他合适的操作系统。
应用程序124可以是访问存储在互锁树数据仓库126中的数据的任何类型的应用程序。如此,应用程序可以包括数据分析应用程序、数据仓储应用程序、入侵检测系统,这里仅举几个例子,虽然本发明不仅限于此。
互锁树数据仓库126提供能使用户访问相同数据仓库以获取与任何上下文关联的信息的数据仓库结构。这里所使用的术语“数据”可以包括任何类型的计算机存储的信息,如但不限于数字、文本、图形、公式、表、音频、视频、多媒体或其任何组合。互锁树数据仓库126可以作为应用程序124的一部分、作为操作系统122的一部分或作为可以用于为各式各样的应用程序提供数据仓库的单独的数据仓库产品。
尽管是在完全运转的计算机系统的上下文中描述本发明的,但是,那些精通本技术的普通人员将认识到,本发明能够作为各种各样的形式的程序产品进行分发,本发明同样适用,不管用于进行分发的信号携带介质的特定类型是什么。携带这样的信号的介质的示例包括但不仅限于软盘、硬盘驱动器、CD-ROM、电的、光学、无线的数字和模拟通信链路或其他合适的介质。
用于生成和访问互锁树数据仓库的系统和方法图2a说明了根据本发明的一个实施例的用于从构成了数据仓库的互锁树林生成数据并访问数据的示范性系统200。一个实施例中的用于生成互锁树数据仓库的子系统250包括互锁树生成器202、一组数据集元素206,用来生成示范性互锁树数据仓库208的输入数据204。或者,可以从输入数据204派生数据集元素集206。
用于从互锁树数据仓库208访问信息的子系统251可以包括互锁树数据仓库208,如上所述,和/或用于接收数据请求212、处理数据请求212并返回请求的信息的互锁树数据仓库存取器210。
图2b说明了用于从互锁树数据库生成信息并访问信息的示范性方法。在步骤260中,如下面比较全面地描述的,生成互锁树数据仓库。在步骤262中,接收需要互锁树数据仓库中的信息的请求。在步骤264中,从互锁树数据仓库中检索信息。
生成互锁树数据仓库例如,假设输入数据204包括代表一个单词(例如,“CAT”)的字母数字字符的流。在此情况下,数据集元素206可以是字母表中的字母集,并可以包括一个或多个字符,以代表分隔符或开始单词/单词结束的概念。分隔符可以包括字母数字字符,如但不限于空白(“”)、逗号(“,”),和句点(“.”)。
互锁树数据仓库208包括许多根、许多非根节点和非根节点之间的或根和非根节点之间的许多链接或连接。互锁树数据仓库208的每一个根和非根节点都包括一对指针(Case指针和Result指针)和一对列表指针(指向asCaseList的指针和指向asResultList的指针)。此外,根还可以包括代表值或对值的引用的数据。
图3a是示范性互锁树数据仓库208的比较详细的视图。某些节点,特别是,在本示例中,根节点302(BOT)和310(EOT),代表诸如开始指示符或结束指示符之类的概念,根节点304(A)、306(C)、308(T)代表数据集元素,而其他节点,特别是,节点312(BOT-C)、314(BOT-C-A)、316(BOT-C-A-T)和318(BOT-C-A-T-EOT)代表了代表开始指示符的节点和代表数据集元素的节点顺序合成为代表子组件的节点,该子组件与数据集元素组合成为另一个子组件,依次类推,直到子组件与代表结束指示符的节点组合,从而创建代表最终产物的节点。在此情况下,捕获来自一连串字母(后面分隔符(即,一连串字母“CAT”,后面是分隔符“”或空白字符))的单词的顺序合成。输入中的分隔符可以用来区别最终产物。例如,值得注意的是,分隔单词的字符可以指出一个单词的末尾和另一个单词的开始。例如,在字符串“CATS ARE”中,“CATS”和“ARE”之间的空白字符既表示单词“CATS”的末尾,又表示单词“ARE”的开始。因此,诸如输入中的空白字符之类的分隔符可以被创建的节点中的诸如“BOT”之类的开始指示符替代,或被诸如“EOT”之类的结束指示符替代,如下面比较全面地描述的。
诸如根节点304、306和308之类的节点这里被称为基本节点,因为这些节点代表数据集元素,并包括用来构成可分的单元(子组件和最终产物)的不可分的单元。诸如312、314和316之类的节点这里被称为子组件或子组件节点,因为这些节点代表诸如开始指示符之类的概念指示符和代表数据集元素的节点的组合,或子组件和代表代表数据集元素的的不包括最终产物的节点的组合或子组件和代表结束指示符的包括最终产物的节点的组合。诸如节点318之类的节点代表最终产物。在所引用的示例中,数据集元素是字母,子组件代表了不包括单词的字母的组合,最终产物是单词。值得注意的是,根节点集包括在本示例中表示单词开始的“BOT”和表示单词末尾的“EOT”。可以理解,“BOT”和“EOT”代表首尾指示符,但本发明不仅限于此。也可以考虑使用其他这样的指示符,如果不存在一个或两个这样的指示符。在本发明的一个实施例中,由于从节点到代表EOT概念的根节点而将最终产物与子组件区分开。
可以理解,尽管在给定示例中,输入的universe是可用来派生单词的字母数字字符集,但是,本发明没有这样的限制。例如,输入的universe可以是文本,如字母(可以用来派生单词)或单词(可以用来派生词组或句子),或者,也可以是可以用来派生基因组的氨基酸,进程中使用的有限资源,概念、像素集、图像、声音、数字、模拟测量或值或由基本单元构成的可以被数字化和按顺序组合以生成最终产物的任何其他合适的universe。通常,根据本发明的一个实施例,基本单元以优化的序列组合。
除了上文所描述的节点之外,互锁树数据仓库208还可以包括节点之间的许多连接或链接,如链接320、322、324和326,以及链接328、330、332和334。本发明的一个实施例中的链接320、322、324和326以及链接328、330、332和334是双向的,即,根节点(BOT)和节点318(BOT-C-A-T-EOT)之间的通道通过链接320、322、324和326遍历,或者,也可以通过链接326、324、322和320来遍历。链接320、322、324和326(用实线表示)这里被称为asCase链接。链接328、330、332和334(用虚线表示)这里被称为asResult链接。同样,在本发明的一个实施例中,链接328、330、332和334是双向的,因为节点C 306中的指针指向节点BOT-C 312,节点BOT-C 312中的指针指向节点C 306,节点A 304中的指针指向节点BOT-C-A 314,节点BOT-C-A 314中的指针指向节点A 304等等。
图3b显示了互锁树数据仓库208的示范性节点中包括的信息。示范性节点340可以代表子组件或最终产物。示范性节点340可以包括指向子组件或最终产物340的第一部分的指针(指向case342的指针,这里也被称为“asCase”),指向子组件或最终产物340第二部分的指针(指向结果344的指针,这里也被称为“asResult”),指向asCaseList 346的指针,其节点340是第一部分和指向AsResultList 348的指针的子组件或最终产物的链接列表,其节点340是第二部分的组件或最终产物的链接列表。
示范性节点341代表基本节点。图12A和12B还在后面的描述具有的某些功能所需要的额外的字段的段落中引用。示范性节点341包括Null指针(指向case 342的指针,这里也被称为“asCase”),第二Null指针(指向结果344的指针,这里也被称为“asResult”),指向asCaseList 346的指针,其根节点341是第一部分和指向AsResultList 348的指针的子组件或最终产物的链接列表,其根节点341是第二部分和值349的组件或最终产物的链接列表。值349可以包含实际值,代表条件或状态,可以包含指针或对值的引用等等。因此,在本发明的一个实施例中,代表开始指示符概念或条件的根节点将具有空值asResultList,因为开始指示符永远不会是子组件的第二部分,代表数据仓库元素的根节点将具有空值asCaseList,因为数据集元素永远不会是子组件的第一部分,代表结束指示符概念或条件的根节点将具有空值asCaseList,因为结束指示符永远不会是子组件的第一部分。最后由较低级别的最终产物组成的根节点将具有空值asCaseList,因为最终产物充当下一级别的数据集元素。
互锁树数据仓库的所有节点还可以包括代表与所述节点关联的数据的额外的字段。这可以使用与图3b的说明相似的说明来说明,这里使用了图12A和12B。也是在这些新图12A和12B中,子组件和基本节点字段被显示为字段块中的字段,只作说明。
图2A显示了示范性节点20。此节点20可以包括字符串字段作为额外的字段,该字段包含显示了由此节点代表的所有元素的序列。包括此元素的序列的字符串字段的添加对于调试是有帮助的。这样的额外的字段可以有许多用途,诸如节点20之类的节点不必只限于一个额外的字段。
图12B所示的示范性节点30还包括计数字段31。计数字段被初始化,并随着强度变量增大,该变量的值随着计数字段被引用时的条件而变化。强度变量被定义为至少具有一个不变值的数学实体。通过使这一项如此宽广,强度变量填充的计数字段可以被用来将本发明的互锁树结构应用于处理忘记、错误的记录数据、记录哪一个实体正在进行查询,记录正在使用的查询的类型的进程,以及在使用数据时可能派生出的其他进程。强度变量的一个简单形式是单一序数字段值,如“1”,用来增大或减少计数字段,以记录一个节点被访问或遍历的次数。
此外,对于这些不同的功能,强度变量可以以不同速率和在不同的方向改变。不同的强度的一个简单示例可以是,每次查询遍历一个节点时添加值+1,如果一个包含该特定节点(或节点的该特定序列)的路径被认为是一个错误(由于某种原因,对于本说明不重要),如当一个序列在使用之后被发现有拼写错误,或在传感器发现包含危险化学制品的地区的情况下,或者如果人的儿童模拟器“接触”和在模拟中在热风炉中“烧了其本身”。强度变量的替代方式是使用单独的节点来容纳每一种节点遍历的新值,如此,在类型1、类型2、体验1、体验2等等到无限大的查询过程中,节点被访问的情况下,创建一个簇。在此结构的现实应用中,计数字段中的强度变量提供对这一问题的最简单的,也是当前最佳的方法,然而,随着信息处理系统的成熟,应该考虑和重新考虑此替代方法或其他替代方案。如果考虑此替代方法,使用单独的节点,甚至使用基本或根节点以记录涉及节点的每一种类型的遍历的数量的计数的方法,将是实现此方法的一种方式。
如此,在一个用途中,当将新数据加入到互锁树数据仓库中时,可以增大计数字段,但当对互锁树数据仓库进行查询时,可以省略增大计数字段的操作,对于新数据,产生一个较大的值,对于查询,不会有任何变化。相应地,必须选择此强度变量,以便适用于本发明所针对的问题。
添加计数字段,以促进由互锁树结构代表的知识库的使用,当搜索诸如频率和概率之类的统计信息时,特别有用。
请参阅图12A,在该图中,显示了另一个示范性节点20。注意,此节点20可以是具有值字段22的基本节点20A,或子组件节点或最终产物节点20B(缺少值字段22),但在任何一种情况下,它将具有额外的字段21。
图12B显示了额外的字段的特定实例,其中,节点形式30(基本节点30A(具有值字段32)或子组件或最终产物节点30B)两者都具有额外的字段31,这是是计数字段。
图3c显示了互锁树数据仓库208的asResult链接列表。链接350是通过设置节点C 306到节点BOT-C 302的asResultList中的指针而建立的,链接352通过设置节点A 304到节点BOT-C-A 314的asResultList中的指针而建立的,链接354是通过设置节点T 308到节点BOT-C-A-T 318的asResultList中的指针而建立的链接356是通过节点EOT 310到节点BOT-C-A-T-EOT 318的asResultList中的指针而建立的。
图4描述了存储器104中的示范性数据集元素206 BOT、A-Z和EOT的示范性存储。可以看出,在本示例中,BOT存储在位置0,A存储在位置5,等等,EOT存储在135。可以理解,数据集元素的放置只是示范性的,数据集元素的任何合适的放置都是可以的。图5a-e描述了互锁树数据仓库208和互锁树数据仓库208的节点的对应的内容,互锁树数据仓库208是在本发明的示范性实施例中生成的。图6是根据本发明的一个实施例的用于生成互锁树数据仓库208的示范性过程600的流程图。
请同时参看图4、5和6,在步骤602中,初始化互锁树数据仓库。在本发明的一个实施例中,初始化包括将“当前指针”设置到将要创建的互锁树数据仓库的根节点。在本发明的另一个实施例中,初始化包括将“当前指针”设置到现有的互锁树数据仓库的根。
此外,数据集元素可以加载到存储器中,并进行初始化。在本发明的一个实施例中,用下列值初始化根节点(例如,图5a的根节点BOT 302,A 535a,...EOT 559a)Case指针=空值,Result指针=空值,指向asCaseList的指针=空值,asCaseList=空值,指向asResultList的指针=空值,asResultList=空值,以及指向数据集元素或概念/条件指示符或其表示法的值。
此时,互锁树数据仓库,如,根据本发明的一个实施例的互锁树数据仓库500a,可以包括单个节点302(BOT),在此情况下,表示一个单词的开始。方框图502a的节点302包括一对指针(被初始化为空值的Case指针504a和Result指针506a)和一对列表指针(被初始化为空值的指向asCaseList的指针和指向asResultList的指针)和值(被初始化为某个值的值511a,这里描述为BOT)。为便于理解,在图5中,方框图502a,图502b-e中的单元508a和类似的单元,互锁树数据仓库实际上代表了指向关联的asCaseList的指针的所有图中,显示了关联的asCaseList的当前内容。同样,互锁树数据仓库实际上代表了指向关联的asResultList的指针的图502b-e中的单元510a和类似的单元,显示了关联的asResultList的当前内容。
AsCaseList(例如,asCaseList 508a)和AsResultList(例如,asResultList 510a)可以作为链接列表来实现。在另一个实施例中,asCaseList(例如,asCaseList 508a)和AsResultList(例如,asResultList 510a)作为大小可配置的连续的存储器位置的块来分配,如但不限于数组,指向asCaseList的指针被设置为asCaseList存储块的开始位置,指向asResultList的指针被设置为asResultList存储块的开始位置。
在步骤604中,接收输入。在本发明的一个实施例中,“当前指针”的值被设置为“前一指针”,“当前指针”被设置为输入。在给定的示例中,接收到的输入为“C”。在步骤604中,对输入进行验证。在给定的示例中,这涉及检查“C”是否为有效的数据集元素。“C”的确是有效的元素,位于存储器104中的位置15中。
在步骤606中,如果节点已经不存在,则创建互锁树数据仓库中的节点,将其初始化,并存储在存储器中的某个位置。在示例中,创建互锁树数据仓库208中的节点312,代表BOT-C,节点BOT-C312的Case指针、Result指针、指向asCaseList的指针、asCaseList、指向asResultList的指针,以及asResultList,被初始化为空值,BOT-C存储在存储器104的位置140处。
在步骤608中,根据本发明的一个实施例,创建在步骤606中创建的节点的链接。通过将新节点的Case指针设置为前一指针的值,并将新节点的Result指针设置为当前指针的值,来定义新节点。图5b的互锁树数据仓库500b显示了创建链接之后的互锁树数据仓库208。方框图502b显示了创建链接之后的节点BOT 302、C306和BOT-C 312的内容。通过将节点BOT 302与节点C 306顺序组合来创建子组件BOT-C 312。因此,设置了Case指针和Result指针的下列值节点BOT-C 312的Case指针520b被设置为0(存储器104中的节点BOT 302的位置),节点BOT-C 312的Result指针522b被设置为15(存储器104中的基本节点C 306的位置)。
在本发明的一个实施例中,除了创建从新节点到从中派生的新节点的节点的链接,通过将指向新节点的位置的指针添加到从中派生了新节点的节点的链接列表,asCaseList和asResultList,创建asCaseList和asResultList链接。指针可以添加到列表的末尾,添加到列表的开始,也可以插入列表内的某处。另外,也可以维护许多列表。例如,除了其中按照最频繁地被访问的顺序维护了指针的有序列表之外,节点的asCaseList可以包括其中指针被添加到链接列表的末尾的顺序列表。可以理解,虽然给定的示例引用了一个有序列表和一个顺序列表,但是,本发明不仅限于此,列表的任何组合和任何数量都在本发明的范围内。有序列表可以按照最近更新、最后一次的访问、或更新或访问的频率,或按照任何其他合适的排序规则来进行排序。
建立到新节点的链接将指向新节点的指针添加到前一指针的asCaseList,并添加到当前指针的asResultList。在本示例中,通过将节点BOT-C 312的Case指针520b设置为节点BOT 302的位置(位置0)来生成双向链接320(方框图503b的链接320a),通过将指向节点BOT-C 312的位置(位置140)的指针添加到asCaseList 508b来更新节点BOT 302的asCaseList 508b(链接320b)。设置了Case指针520a,因为节点BOT 302是节点BOT-C312的定义节点之一。更新了AsCaseList 508b,因为在合成从中创建节点BoT-C 312的两个节点中的第一个节点(节点BOT-C 312)时使用节点BOT 302。AsCaseList 508b目前包含空集(即,asCaseList 508b是空的)。因为节点BOT-C 312位于存储器104中的位置140,因此,asCaseList 508b从空值更新为140。假设asCaseList 508b包括非零集,则节点BOT-C 312位置140将以上文讨论的任何一种方式添加到asCaseList 508b中。
同样,通过将节点BOT-C 312的Result指针522b设置为节点C的位置(位置15)来生成双向链接328(方框图503b的链接328a),通过将指向节点BOT-C 312的位置的指针添加到asResultList 518b来更新基本节点BOT 306的asResultList 518b(链接328b)。设置了Result指针522b,因为节点C 306是节点BOT-C 312的定义节点之一。更新了AsResultList 518b,因为节点C 306包括从中创建节点BOT-C 312的两个节点的第二个节点,(因此,链接328b 叫做asResult链接)。AsResultList 518b目前包含空集,(即,asresultlist 518b是空的)。因为节点BOT-C 312位于存储器104中的位置140,因此,asResultList 518b从空值更新为140。假设asResultList 518b包括非零集,则节点BOT-C 312位置140将以上文讨论的任何一种方式添加到asResultList 518b中。
此时,已经创建了图5b中描述的数据仓库,互锁树数据仓库500b。在图5b中的方框图503b中比较详细地显示了相同结构。值得注意的是,链接320b代表了指向节点BOT-C 312的位置的指针,并是节点BOT 302的asCaseList 508b中的第一个元素,链接328b代表指向节点BOT-C 312的位置的指针,并是节点C 306的asResultList 518b中的第一个元素。链接320a代表了从节点BOT-C 312到其第一部分(节点BOT 302)的指针,而链接328a代表了从节点BOT-C 312到其第二部分(节点C 306)的指针。在步骤610中,判断是否有更多输入。在此情况下,有更多输入,因此,处理返回到步骤604。在步骤604中,接收输入。在给定的示例中,接收到的输入为“A”。在步骤604中,对输入进行验证。在给定的示例中,这涉及检查“A”是否为有效的数据集元素。“A”的确是有效的元素,位于存储器104中的位置5中。
在步骤606中,如果节点已经不存在,则创建互锁树数据仓库中的节点,将其初始化,并存储在存储器中的某个位置。在示例中,创建互锁树数据仓库208中的节点314,代表BOT-C-A、节点BOT-C-A 314的Case指针、Result指针、指向asCaseList的指针、asCaseList、指向asResultList的指针,以及asResultList,被初始化为空值,节点BOT-C-A 314存储在存储器104的位置145处。
在步骤608中,根据本发明的一个实施例,创建在步骤606中创建的节点的链接。图5c显示了创建链接之后的互锁树数据仓库500c。方框图502c中显示了节点BOT 302、C 306、A 304、BOT-C312和BOT-C-A 314的内容。通过将节点BOT-C 312与节点A304顺序组合来创建子组件BOT-C-A 314。因此,设置了Case指针和Result指针的下列值节点BOT-C-A 314的Case指针528c被设置为140(链接322a),这是存储器104中的基本节点BOT-C312的位置,节点BOT-C-A 314的Result指针530c被设置为5(链接330a),这是存储器104中的基本节点A 304的位置。
通过将Case指针528c设置为140(链接322a)并通过将指向存储器104中的节点BOT-C-A 314的位置的指针添加到节点BOT-C 312的asCaseList 524c(链接322b),生成双向链接322。更新了AsCaseList 524e,因为节点BOT-C 312包括从中创建节点BOT-C-A 314的两个节点中的第一个节点。在创建链接322b之前,节点BOT-C 312的asCaseList 524c包含了空集(即,asCaseList524c是空的)。因为节点BOT-C-A 314位于存储器104中的位置145,因此,asCaseList 524c从空值更新为145。假设asCaseList 524c包括非零集,则节点BOT-C-A 314位置145将以上文讨论的任何一种方式添加到asCaseList 524c中。
同样,通过将节点BOT-C-A 314的Result指针530c设置为5,并通过将指向节点BOT-C-A 314的位置的指针添加到节点A304的asResultList 542c而更新基本节点A 304的asResultList542c,生成双向链接330。更新了AsResultList 542c,因为节点A 304包括从中创建节点BOT-C-A 314的两个节点中的第二个节点。在创建链接330b之前,AsResultList 542e包含了空集,(即,AsResultList542c是空的)。因为节点BOT-C-A 314位于存储器104中的位置145,因此,asResultList 542c从空值更新为145。假设AsResultList542c包括非零集,则节点BOT-C-A 314位置145将以上文讨论的任何一种方式添加到AsResultList 542e中。
此时,已经创建了图5c中描述的数据仓库,互锁树数据仓库500c。在图5c中的方框图503c中比较详细地显示了相同结构。值得注意的是,链接322b代表了指向节点BOT-C-A 314的位置的指针,并是节点BOT-C 312的asCaseList 524c中的第一个元素,链接330b代表指向节点BOT-C-A 314的位置的指针,并且145是节点A 304的AsResultList 542c中的第一个元素。链接322a代表了从节点BOT-C-A 314到其第一部分(节点BOT-C 312)的指针,而链接330a代表了从节点BOT-C-A 314到其第二部分(节点A304)的指针。
在步骤610中,判断是否有更多输入。在此情况下,有更多输入,因此,处理返回到步骤604。在步骤604中,接收输入。在给定的示例中,接收到的输入为“T”。在步骤604中,对输入进行验证。在给定的示例中,这涉及检查“T”是否为有效的数据集元素。“T”的确是有效的数据集元素,位于存储器104中的位置100中。
在步骤606中,如果节点已经不存在,则创建互锁树数据仓库中的节点,将其初始化,并存储在存储器中的某个位置。在示例中,创建互锁树数据仓库208中的节点316,代表BOT-C-A-T 316,Case指针、Result指针、指向asCaseList的指针、asCaseList、指向asResultList的指针,以及asResultList,被初始化为空值,节点BOT-C-A-T 316存储在存储器104的位置150处。
在步骤608中,创建在步骤606中创建的节点的链接。图5d显示了创建链接之后的互锁树数据仓库500d。方框图502d中显示了节点BOT 302、C 306、A 304、T 308、BOT-C 312、BOT-C-A 314和BOT-C-A-T 316的内容。通过将节点BOT-C-A 314与节点T308顺序组合来创建子组件BOT-C-A-T 316。因此,为节点BOT-C-A-T 316设置了Case指针和Result指针的下列值Case指针544d被设置为145(存储器104中的节点BOT-C-A 314的位置),Result指针546d被设置为100(存储器104中的基本节点T 308的位置)。
通过将Case指针544d设置为140并将指向存储器104中的节点BOT-C-A 314的位置(位置150)的指针添加到节点BOT-C-A 314的asCaseList 532d,生成双向链接324。更新了AsCaseList 532d,因为节点BOT-C-A 314包括从中创建节点BOT-C-A-T 316的两个节点中的第一个节点。在创建链接324之前,节点BOT-C-A 314的asCaseList 532d包含空集。因为节点BOT-C-A-T位于存储器104中的位置150,因此,asCaseList 532d从空值更新为150。假设节点BOT-C-A 314的asCaseList 532d包含数据,则150将以上文概述的任何一种方式添加到列表中。
同样,通过将Result指针546d设置为100并通过将指向节点BOT-C-A-T 316的位置的指针添加到asResultList 558d来更新asResultList,生成双向链接332。更新了AsResultList 558d,因为节点T 308包括从中创建节点BOT-C-A-T 316的两个节点中的第二个节点。在创建链接332之前,基本节点T 308的asResultList558d包含空集,因此,空集被替换为150(存储器104中的节点BOT-C-A-T 316的位置)。假设asResultList 558d包含数据,则150将以上文概述的任何一种方式添加到列表中。
此时,已经创建了图5d中描述的数据仓库,互锁树数据仓库500d。那些精通本技术的人员将理解,可以显示互锁树数据仓库500d的比较详细的表示法,类似于图5c中的互锁树数据仓库500c的方框图503c所描述的。
在步骤610中,判断是否有更多输入。在此情况下,有更多输入,因此,处理返回到步骤604。在步骤604中,接收输入。在给定的示例中,接收到的输入为“”或空白字符。在步骤604中,对输入进行验证。在给定的示例中,这涉及检查本空白字符是否为有效的数据集元素。空白字符的确是有效元素在此情况下,是表示单词“CAT”的末尾的分隔符。如此,在本发明的一个实施例中,位于位置135处的节点EOT 310被添加到子组件BOT-C-A-T 316以创建最终产物或monad,在此情况下是一个单词。
在步骤606中,如果节点已经不存在,则创建互锁树数据仓库中的节点,将其初始化,并存储在存储器中的某个位置。在示例中,创建互锁树数据仓库208中的节点318,代表节点BOT-C-A-T-EOT 318,节点BOT-C-A-T-EOT 318的Case指针、Result指针、指向asCaseList的指针、asCaseList、指向asResultList的指针和asResultList被初始化为空值,节点BOT-C-A-T-EOT 318存储在存储器104的位置150处。
在步骤608中,创建在步骤606中创建的节点的链接。图5e显示了创建链接之后的互锁树数据仓库500e。方框图502e显示了创建链接之后的节点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的内容。通过将节点BOT-C-A-T 316与节点EOT 310顺序组合来创建最终产物318(BOT-C-A-T-EOT)。因此,设置了节点BOT-C-A-T-EOT 318的Case指针和Result指针的下列值最终产物BOT-C-A-T-EOT 318的Case指针568e被设置为150(存储器104中的节点BOT-C-A-T 316的位置),最终产物BOT-C-A-T-EOT 318的Result指针570e被设置为135(存储器104中的元素节点EOT 135的位置)。
通过将最终产物BOT-C-A-T-EOT 318的Case指针568e设置为150并将指向存储器中的节点BOT-C-A-T 316的位置的指针添加到节点BOT-C-A-T 316的asCaseList 548e,生成双向链接326。更新了AsCaseList 548e,因为节点BOT-C-A 314包括从中创建节点BOT-C-A-T 316的两个节点中的第一个节点。在创建链接334之前,节点BOT-C-A-T 316的asCaseList 548e包含了空集(即,asCaseList 548e是空的)。因为节点BOT-C-A-T 316位于存储器104中的位置155,因此,节点BOT-C-A-T 316从空值更新为155。假设asCaseList 548e包括非零集,则节点BOT-C-A-T位置155将以上文讨论的任何一种方式添加到asCaseList 548e中。
同样,通过将最终产物BOT-C-A-T-EOT 318的Result指针570e设置为135以及通过将指向节点BOT-C-A-T-EOT 318的位置的指针添加到节点EOT 310的asResultList 566e来更新节点EOT 310的asResultList 566e,生成双向链接334。更新了AsResultList 566e,因为节点EOT 310包括从中创建节点BOT-C-A-T-EOT 318的两个节点的第二个节点,(因此,链接334叫做asResult链接)。在创建链接334之前,AsResultList 566e包含了空集,(即,AsResultList 566e是空的)。因为节点BOT-C-A-T-EOT 318位于存储器104中的位置155,因此,asResultList 566e从空值更新为155。假设AsResultList 566e包括非零集,则节点BOT-C-A-T-EOT 318位置155将以上文讨论的任何一种方式添加到AsResultList 566e中。
此时,已经创建了图5e中描述的数据仓库,互锁树数据仓库500e。那些精通本技术的人员将理解,可以显示互锁树数据仓库500e的比较详细的表示法,类似于图5c中的互锁树数据仓库500c的方框图503c所描述的。
在步骤610中,判断是否有更多输入。在此情况下,没有更多输入,因此,处理在步骤612中结束。
现在假设输入204包含“CAT TAB”而不是“CAT”。按照上面的过程执行。在处理输入直到“CAT”时,创建图5e的互锁树数据仓库500e。然而,在步骤610中,有更多输入,因此,处理继续,最终产生图7a的互锁树数据仓库700a。方框图702a中显示了对应的节点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。值得注意的是,节点BOT-T 703、BOT-T-A 705、BOT-T-A-B 707和BOT-T-A-B-EOT 709都已经添加到互锁树数据仓库500e中,以创建互锁树数据仓库700a。
在此过程中,创建了asCase链接701、704、706和708,创建了asResult链接710、712、714和716。节点BOT-T 703的AsCase指针720f被设置为0(节点BOT 302的位置)。节点BOT-T 703的AsResult指针722f被设置为100(节点T 308的位置)。节点BOT-T-A 705的AsCase指针728f被设置为170(节点BOT-T 703的位置)。节点BOT-T-A 705的AsResult指针730f被设置为5(节点A 304的位置)。
通过将170(BOT-T 703的位置)和节点BOT 302的asCaseList 508f相加来创建AsCase链接701,以便asCaseList508f包括140(BOT-C 312的位置)和170(BOT-T 703的位置)两者。通过将175(BOT-T-A的位置)和节点BOT-T 703的asCaseList 724f相加来创建AsCase链接704。通过将180(BOT-T-A-B的位置)和节点BOT-T-A 705的asCaseList 732f相加来创建AsCase链接706。
通过将170(BOT-T 703的位置)和节点T 308的asResultList 558f相加来创建AsResult链接710,以便asResultList 558f包括150(节点BOT-C-A-T的位置)和170(BOT-T 703的位置)两者。通过将175(BOT-T-A的位置)和节点A 304的asResultList 542f相加来创建AsResult链接712,以便asResultList 542f包括145(节点BOT-C-A 314的位置)和175(BOT-T-A的位置)两者。通过将180(节点BOT-T-A-B 707的位置)和节点B 718的asResultList 742f相加来创建AsResult链接714。因为节点B 718的asResultList 742f以前是空值,因此,节点B 718的asResultList 742f只包含180(节点BOT-T-A-B 707的位置)。通过将185(BOT-T-A-B-EOT 709的位置)和节点EOT310的asResultList 566f相加来创建AsResult链接716,以便asResultList 566f包括155(节点BOT-C-A-T-EOT 318的位置)和185(BOT-T-A-B-EOT 185的位置)。
现在假设输入204包含“CATS CATHODE”而不是“CAT”。按照上面的过程执行。在处理输入“CAT”时,创建图5d的互锁树数据仓库。在步骤610中,发现有更多输入,因此,处理继续。在处理输入“CATS”之后,生成了图8的互锁树数据仓库800a。发现有更多输入。在处理“CATHODE”时,没有创建BOT-C、BOT-C-A和BOT-C-A的新节点,因为它们已经存在。处理额外的输入“SCATHODE”,产生图8的互锁树数据仓库800b。对那些精通本技术的人员显而易见的,所产生的树是自组织的,以便所产生的互锁树数据仓库的结构取决于接收到的输入。
现在假设输入204包含“CATS ARE FURRY”而不是“CAT”。图9a显示了在本发明的一个实施例中生成的互锁树数据仓库900。输入中的指示符的存在,在本示例中,词组末尾或句子末尾指示符(例如,“FURRY”之后的句点),可以触发将一个级别的最终产物(BOT-C-A-T-EOT 908、BOT-A-R-E-EOT 906、BOT-F-U-R-R-Y-EOT 904)组合成下一个级别的子组件,即,一个级别(例如,级别1910)最终产物节点(例如,诸如“CATS”、“ARE”和“FURRY”之类的单词)可以变成代表下一级别(例如,级别2912)的数据集元素的根节点。因此,节点“BOT-CATS-ARE-FURRY-EOT”902是代表句子“CATS AREFURRY”的单个节点。
在本发明的一个实施例中,代表较高级别的数据集元素的节点不包含数据或数据的表示方法或概念;即,代表较高级别的数据集元素的基本根节点只包含指向较低级别中的节点的指针。例如,图9b显示了图9a的某些节点的内容。值得注意的是,节点BOT-C-A-T-S-EOT被用作级别2912的基本根节点(节点908的asResultList 914包含300,节点BOS-CATS 916的位置,而节点BOS-CATS 916的asResult指针918包含200,节点BOT-C-A-T-S-EOT 908的位置)等等。
可以生成任何合适数量的级别。例如,在文本中,级别可以代表字母、单词、句子、段落、章节、图书、图书馆等等。可以理解,虽然在示范图中显示了互锁树数据仓库的两个级别(级别1910和级别2912),但是,本发明不仅限于此。可以构建任意个级别的互锁树数据仓库。因为本示例的universe是文本,即,构成单词(最终产物的一个级别)的字母的组合,本发明的此实施例中的单词的组合的结果是词组或句子(最终产物的另一个级别)。句子可以组合起来以构成段落,段落可以组合起来,以构成章节等等。
可以进一步理解,取决于输入universe,最终产物可以代表单词、短语、句子等等之外的实体。仅举一个例子如果输入是包括染色体的氨基酸的序列,一个最终产物可以代表基因或等位基因。
现在假设输入204包括诸如下列记录的数据记录Bill Tuesday 40 sold PABill Monday 103 sold NJBill Monday 100 trial PATom Monday 80 sold PATom Monday 13 trial NJ在本发明的一个实施例中,数据集元素包括被诸如但不限于空白字符之类的分隔符分隔的信息的字段。在一个实施例中,数据集元素由输入派生而来,虽然可以理解,如上所述,本发明不仅限于此。到现在为止在输入数据中遇到的数据集元素是销售员姓名(Bill和Tom)、星期几(星期一、星期二),商品编号(40、103、100、80、13),状态(销售,试用)和州(PA,NJ)。在本发明的一个实施例中,将从此输入中产生图10的互锁树数据仓库1000。在图10中,由于空间原因,没有显示节点的第一部分。例如,虽然节点1002被标记为“Bill”,节点1002实际上代表“BOT-Bill”。虽然节点1002被标记为“Tuesday”,节点1004实际上代表“BOT-Bill-Tuesday”等等。
从互锁树数据仓库中访问信息在图11中显示了访问存储在互锁树数据仓库中的信息的方法。在步骤1102中,接收要从互锁树数据仓库中检索的信息的请求。可以将待检索的信息的请求转换为可以由互锁树存取器处理的形式。在步骤1104中,访问被指出的节点。在步骤1106中,检索适当的asCaseList和/或asResultList。在步骤1108中,沿适当的asCaseList或asResultList而行,以检索所需要的信息。在步骤1110中,收集并返回所请求的信息。
例如,再次请参看图7a,包括asResult链接328、330、332、334、710、712、714和716的数据仓库700a可以用来确定上下文的诸如下列问题的答案“哪些节点包括字母A?”,“A在哪些字母前面或后面?”,“哪些(或多少)单词包括字母A?”,“哪些单词既包含字母A又包含T?”,“哪些单词包含A并且A前面有T?”和数不清的其他问题。(可以理解,虽然为便于理解,在示例问题中指定了特定的字母,但是可以替代任何数据集元素或单元组。)例如,在本发明的一个实施例中,通过遵循代表数据集元素的特定节点的asResultList中包含的指针,可以判断包含所需要的数据集元素的节点和最终产物。访问asresultlist,并沿列表中的每一个指针而行,直到与该节点关联的asCase树枝。如果需要最终产物,则沿asCase树枝树而行,直到树枝的叶节点。
在本发明的一个实施例中,对信息的请求采用指定约束(根据角度,可以被视为“上下文”或“焦点”)的形式。例如,对信息的请求可以是约束的列表的的形式。约束的列表可以嵌套,也可以是独立的。在本发明的一个实施例中,查找每一个列出的约束的AsResultList,查找每一个约束的每一个AsResultList内的每一个节点的树枝,沿树枝而行,到它们的最终产物,选择每一个约束的每一个asResultList内的每一个树枝的最终产物的交叉点。通过首先约束数据仓库以检索一组数据,然后该组数据被用作被进一步约束的数据集,来查找嵌套的约束。
在定义约束时可以使用逻辑运算符。一个人可以说,一个人正在查找标识“人”、“位置”AND“东西”的节点,其中,AND将是指定所有“人”、“位置”和“东西”的集合的连接器的逻辑运算符,即,所有节点可以通过被称为“人”、“位置”和“东西”的基本节点或根节点来进行标识。互锁树结构给出查询,ARE(另一个逻辑运算符)“东西”的所有“人”AND“位置”将被约束到答案,不管项目“东西”是怎么被标识的。如果在构建结构时,“东西”决不会指向“位置”,那么,在查询中将不会查到所有其他“东西”。如果在结合进结构中时,人被视为“东西”,在查询中也会查到它们。
逻辑运算符可以呈现许多形式,如AND、OR、NOT、GreaterThan、XNOR、EqualTo等等,也可以将它们组合起来。所有这样的逻辑运算符和其组合都可以在本发明内使用。根据上下文上的过程,比较数学表达式也是可以使用的。查找销售了100以上汽车的所有销售员,可能是取决于一个比较数学表达式的查询,例如,表达式将是汽车销售数量>100的销售员。
在本发明的一个实施例中,焦点判断返回的信息。在其中数据集元素是字母,并且指定的约束是特定字母的两级别数据仓库(级别1最终产物包括单词,级别2包括句子)的情况下,指定焦点(focus)为“单词”将导致只返回单词,指定焦点为“句子”将导致只返回句子。从第一级别检索最终产物将导致返回单词。如此,“焦点”标识上下文内所需的信息类型。从第二级别检索最终产物将导致返回句子。在一个实施例中,为检索句子,沿每一个单词的asResultList而行,直到下一个级别,并沿指定的树枝而行,直到其最终产物,以检索包括指定的字母的句子。
在一个实施例中,通过沿具有级别开始指示符作为其根的树而行,可以查找以约束开始的所有最终产物(例如,可以查找以指定字母开始的所有单词。)同样,可以查找具有指定约束的所有最终产物,或指定位置中的指定约束(例如,具有特定字母的所有单词或在指定列中具有指定字母的所有单词)。同样,通过沿具有级别结束指示符作为根的树而行,可以查找以指定约束结束的所有最终产物(例如,以指定字母结束的所有单词。)可以指定多个约束和/或焦点。
例如,假设需要包含诸如字母(例如,字母“B”)之类的数据集元素的树的asCase树枝的第一个节点。在一个实施例中,从存储器中检索代表数据元素的基本根节点(例如,节点B 718),访问其asResultList(例如,asResultList 742f),以返回通过某些子组件与基本根节点(例如,节点B 718)组合而创建的节点的位置。访问asResultList中的节点。在本示例中,访问位置180,该位置保留了节点BOT-T-A-B 707。如此,节点BOT-T-A-B 707是互锁树数据仓库700a中的包括字母“B”的表示法的节点。为查找形成的最终产物,通过反复检索被访问的节点的asCaseList,直到被检索到的asCaseList是空值,沿着asCase树枝而行(例如,在本示例中,包含节点BOT-T 703、节点BOT-T-A 705、节点BOT-T-A-B 707和节点BOT-T-A-B-EOT 709的树枝)。例如,为判断包含数据集元素B 718的单词是“TAB”,访问节点BOT-T-A-B 707的asCaseList 740f,以检索位置185。访问位置185的内容,以检索asCaseList 748f。由于asCaseList 748f是Null指针,因此,已经到达最终产物。
仍请参看图7a,现在假设需要包含字母“A”的所有asCase树枝的第一个节点。从存储器中检索基本根节点A 304,并访问其asResultList 542f,以返回位置145和175。访问包含节点BOT-C-A314的第一位置145。节点BOT-C-A 314是数据结构700a的包括字母“A”的第一树枝中的第一节点。为查找形成的最终产物,通过反复检索节点的asCaseList,直到被检索到的asCaseList是空值,沿着asCase树枝(例如,在本示例中,包含节点BOT-C 312、节点BOT-C-A 314、节点BOT-C-A-T 316和节点BOT-C-A-T-EOT 318的树枝)、树枝的asCase链接而行。例如,为判断包含数据集元素A 304的单词是“CAT”,访问节点BOT-C-A 314的asCaseList740f,以检索位置145。访问位置145(节点BOT-C-A 314)的内容,以检索asCaseList 532f,150。访问位置145(节点BOT-C-A 314)的内容,以检索asCaseList 548f,155。访问位置155(节点BOT-C-A-T-EOT 318)的内容,以检索asCaseList 572f。由于asCaseList 572f是Null指针,因此,已经到达最终产物。
访问包含节点BOT-T-A 705的下一个位置175。节点BOT-T-A 705是互锁树数据仓库700a的包括字母“A”的第二树枝中的第一节点。为查找形成的最终产物,通过反复检索节点的asCaseList,直到被检索到的asCaseList是空值,沿着asCase树枝(例如,在本示例中,包含节点BOT-T 703、节点BOT-T-A 705、节点BOT-T-A-B 707和节点BOT-T-A-B-EOT 709树枝),树枝的asCase链接而行。例如,为判断包含数据集元素A 304的第二个单词单词是“TAB”,访问节点BOT-T-A-B 707的asCaseList 740f,以检索位置185。访问位置185的内容,以检索asCaseList 748f。由于asCaseList 748f是Null指针,因此,已经到达最终产物。
再次请参看图7a,现在假设需要包含字母“A”和“T”的所有asCase树枝的第一个节点。如前面所描述的,从存储器中检索基本根节点A 304,并访问其asResultList 542f,以返回位置145和175。访问包含节点BOT-C-A 314的第一位置145。节点BOT-C-A314是互锁树数据仓库700a的包括字母“A”的第一树枝中的第一节点。为查找形成的最终产物,通过反复检索节点的asCaseList,直到被检索到的asCaseList是空值,沿着asCase树枝(例如,在本示例中,包含节点BOT-C 312、节点BOT-C-A 314、节点BOT-C-A-T316和节点BOT-C-A-T-EOT 318的树枝)、树枝的asCase链接而行。例如,为判断包含数据集元素A 304的单词是“CAT”,访问节点BOT-C-A 314的asCaseList 740f,以检索位置145。访问位置145(节点BOT-C-A 314)的内容,以检索asCaseList 532f,150。访问位置145(节点BOT-C-A 314)的内容,以检索asCaseList 548f,155。访问位置155(节点BOT-C-A-T-EOT 318)的内容,以检索asCaseList 572f。由于asCaseList 572f是Null指针,因此,已经到达最终产物。最终产物节点BOT-C-A-T-EOT 318包含数据集元素A。
访问包含节点BOT-T-A 705的下一个位置175。节点BOT-T-A 705是互锁树数据仓库700a的包括字母“A”的第二树枝中的第一节点。为查找形成的最终产物,通过反复检索节点的asCaseList,直到被检索到的asCaseList是空值,沿着asCase树枝(例如,在本示例中,包含节点BOT-T 703、节点BOT-T-A 705、节点BOT-T-A-B 707和节点BOT-T-A-B-EOT 709树枝),树枝的asCase链接而行。例如,为判断包含数据集元素A 304的第二个单词单词是“TAB”,访问节点BOT-T-A-B 707的asCaseList 740f,以检索位置185。访问位置185的内容,以检索asCaseList 748f。由于asCaseList 748f是Null指针,因此,已经到达最终产物。最终产物节点BOT-T-A-B-EOT 709包含数据集元素A。
接下来,从存储器中检索基本根节点T 308,并访问其asResultList 558f,以返回位置150和170。访问包含节点BOT-C-A-T 316的第一位置150。节点BOT-C-A-T 316是互锁树数据仓库700a的包括字母“T”的第一树枝中的第一节点。为查找形成的最终产物,通过反复检索节点的asCaseList,直到被检索到的asCaseList是空值,沿着asCase树枝(例如,在本示例中,包含节点BOT-C 312、节点BOT-C-A 314、节点BOT-C-A-T 316和节点BOT-C-A-T-EOT 318的树枝)、树枝的asCase链接而行。例如,为判断包含不可分的基本单元T 308的单词是“CAT”,访问节点BOT-C-A 314的asCaseList 532f,以检索位置145。访问位置145(节点BOT-C-A 314)的内容,以检索asCaseList 532f,150。访问位置145(节点BOT-C-A 314)的内容,以检索asCaseList 548f,155。访问位置155(节点BOT-C-A-T-EOT 318)的内容,以检索asCaseList 572f。由于asCaseList 572f是Null指针,因此,已经到达最终产物。最终产物节点BOT-C-A-T-EOT 318包含数据集元素T。
访问包含节点BOT-T 703的下一个位置170。节点BOT-T703是互锁树数据仓库700a的包括字母“T”的第二树枝中的第一节点。为查找形成的最终产物,通过反复检索节点的asCaseList,直到被检索到的asCaseList是空值,沿着asCase树枝(例如,在本示例中,包含节点BOT-T 703、节点BOT-T-A 705、节点BOT-T-A-B707和节点BOT-T-A-B-EOT 709树枝),树枝的asCase链接而行。例如,为判断包含数据集元素T 308的第二个单词单词是“TAB”,访问节点BOT-T-A-B 707的asCaseList 740f,以检索位置185。访问位置185的内容,以检索asCaseList 748f。由于asCaseList 748f是Null指针,因此,已经到达最终产物。最终产物节点BOT-T-A-B-EOT 709包含数据集元素T。如此,包含A和T的最终产物包括包含A的最终产物集与包含T的最终产物集的交集,或,在此情况下BOT-C-A-T-EOT 318和BOT-T-A-B-EOT 709。
在本发明的一个实施例中,显示或打印检索到的信息。为显示或打印检索到的信息,从最终产物到开始(BOT)反向沿asCase树而行。在沿着asCase树的每一个节点中,Result指针(指向从中派生了节点的第二个部分)用来判断基本根节点代表了什么。如果互锁树数据仓库包括一个以上的级别,则Result指针指向较低级别的最终产物,必须执行相同的过程,直到检索到最低级别的基本根节点。
现在请参看图10,假设需要星期二销售的物品总数。对那些精通本技术的人员显而易见的,不是遍历整个数据仓库中的所有节点,在本发明的一个实施例中,要检索此信息,只需要检索基本根节点1006和1008的asResultList。遍历树枝51010,因为代表星期二1006的基本节点指向节点1004,并且因为代表销售1008的基本节点指向节点1026,遍历树枝41012,因为代表销售1008的基本节点指向节点1028。不必遍历树枝11015、21014和31013。从沿基本节点1006和1008指向的树枝而行所返回的最终产物的交集包括代表Bill Tuesday 40sold PA的节点1030。
销售的物品数量可以通过沿从节点1024到代表数量40(未显示)的根节点的指针而行来确定。可以理解,此步骤可以在发现最终产物的交叉点之后,或者,也可以在遍历树枝时检索和存储此信息。
现在请参看图14A-E,其中,描述了用于评估具有计数字段(如图12B的计数字段)的互锁树数据仓库由代表的数据的集合的方法。
在图14A中,任务40a是评估我们在讨论的互锁树结构的数据仓库中的某些所需要的数据。为此,我们必须首先作出相关上下文的判断40b。这在图14B中进行了描述。相关上下文41a开始就选择期望值41b,其中,标识了具有这样的值的根节点。接下来,发现只具有所选择的值的所有路径。在优选实施例中,如那些精通相关技术的人所认识的,步骤41d,即,忽略具有非相容值的所有路径,可以以各种方式与步骤41c组合,使得该过程更有效,然而这样的组合将必然取决于数据的类型和数据仓库内的值,因此,它们被显示为单独的步骤。
在确定上下文40b之后,下一个步骤是根据查询的特性,确定焦点或位置或两者40c。
在图14D中,我们可以看到,通过查找42b与当前位置的节点的值相关的根节点来判断42a位置。
在图14C中,通过选择值的焦点约束列表,从而标识相关根节点43b,作出焦点判断40c。
返回到图14E中的上下文(或停留在被该上下文包围的区域内),我们确保44a,在将计数44c合计之前,我们忽略上下文中的不在如查询确定的焦点和/或位置44b里的所有计数。
上文所描述的方法和系统可以以存储在诸如软盘、CD-ROM、DVD-ROM、DVD-RAM、硬盘驱动器之类的计算机可读的介质或任何其他机器可读的存储介质上的程序代码(即,指令)的形式来实现,其中,当程序代码被加载到诸如计算机之类的机器中并由机器执行时,机器变成实践本发明的设备。本发明也可以以通过某些传输介质(如通过电线或电缆,通过光纤,通过网络,包括因特网或内部网,或任何其他形式的传输)传输的程序代码的形式来实现,其中,当接收到程序代码并加载到诸如计算机之类的机器中并由机器执行时,机器变成实践本发明的设备。当在通用处理器上实现时,程序代码与处理器结合,以提供与特定逻辑电路类似地工作的唯一设备。程序代码可以以诸如C、C++或Java之类的高级程序设计语言来实现。或者,程序代码也可以以汇编或机器语言来实现。在任何情况下,语言都可以是编译的或解释的语言。
值得注意的是,前面所提供的示例只是为了说明,决不能理解为对本发明的限制。例如,互锁树数据仓库可以使用面向对象的技术、过程技术、这些技术的混合技术或任何其他合适的方法来实现。此外,虽然所提供的示例显示了存储在存储器中的数据集元素,那些精通本技术的人员将理解,此功能可以以许多不同的方式来实现。例如,本发明也使用存储在多个远程机器上的许多不同的universe的数据集元素的许多不同集。
权利要求
1.一种用于生成基于树的数据仓库的系统,包括处理器;连接到处理器的存储器;以及用于创建基于树的数据仓库的至少一个级别的基于树的数据仓库生成器,所述基于树的数据仓库的至少一个级别包括第一树、第二树以及至少第三树,所述第一树中包括第一根和多个节点中的至少一个节点,所述第二树中包括第二根和第一树的至少一个节点,所述第三树中包括第三根和第一树的多个节点中的至少一个节点。
2.一种评估由互锁树数据仓库表示的数据的集合的方法,所述数据仓库包括含有计数字段的节点和所述节点之间的链接,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,并可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,存在asResult和asCase链接,其中,所述asResult链接在根节点和任何其他节点之间提供指向,其中,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,并且在所述至少一个主根节点和至少一个最终产物节点之间的路径中包含至少一个子组件节点,所述方法包括下列步骤确定所述数据仓库内的上下文以及其对应值;确定所述上下文内的焦点以及其对应值;使用所述上下文和所述焦点的对应值,计算所述上下文内的所述焦点的发生概率。
3.根据权利要求2所述的评估数据的集合的方法,其中,所述确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过从至少一个根节点的asResult列表遍历到至少一个根节点的对应的子组件节点,然后遍历所述对应的子组件节点到所述子组件节点的每一个对应的最终产物节点之间的asCase链接,从所述至少一个根节点,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
4.根据权利要求2所述的评估数据的集合的方法,其中,所述确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过沿着所述路径,使用Case链接,从所有可能的最终产物节点反向朝着主根的方向遍历,并且在每一个子组件节点使用其Result链接定位根节点,并将其与所述至少一个根节点进行比较,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
5.一种评估由互锁树数据仓库表示的数据的集合的方法,所述数据仓库包括含有计数字段的节点和所述节点之间的链接,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,并可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,存在asResult和asCase链接,其中,所述asResult链接在根节点和任何其他节点之间提供指向,其中,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,并且在所述至少一个主根节点和至少一个最终产物节点之间的路径中包含至少一个子组件节点,所述方法包括下列步骤确定所述数据集内的上下文以及其对应值;确定沿着上下文的每一个路径的位置;确定所述上下文内的焦点以及其对应值;计算沿着所述上下文内的路径的所述位置和最终产物之间的所述焦点的发生概率。
6.根据权利要求5所述的评估数据的集合的方法,其中,确定沿着上下文的每一个路径的位置的步骤包括下列步骤从所述互锁树数据仓库的根节点或基本根节点中选择一个根节点,从上下文的每一个路径中的所述根节点的或基本根节点的asResult列表遍历到其对应的子组件节点。
7.根据权利要求5所述的评估数据的集合的方法,其中,所述确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过从至少一个根节点的asResult列表遍历到至少一个根节点的对应的子组件节点,然后遍历所述对应的子组件节点到所述子组件节点的每一个对应的最终产物节点之间的asCase链接,从所述至少一个根节点,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
8.根据权利要求7所述的评估数据的集合的方法,其中,所述确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过沿着所述路径,使用Case链接,从所有可能的最终产物节点反向朝着主根的方向遍历,并且在每一个子组件节点使用其Result链接定位根节点,并将其与所述至少一个根节点进行比较,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
9.一种评估由互锁树数据仓库表示的数据的集合的方法,所述数据仓库包括含有计数字段的节点和所述节点之间的链接,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,并可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,存在asResult和asCase链接,其中,所述asResult链接在根节点和任何其他节点之间提供指向,其中,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,并且在所述至少一个主根节点和至少一个最终产物节点之间的路径中包含至少一个子组件节点,所述方法包括下列步骤确定所述数据集内的上下文以及其对应值;确定沿着上下文的每一个路径的位置;确定所述上下文内的焦点以及其对应值;计算沿着所述上下文内的路径的所述位置和主根之间的所述焦点的发生概率。
10.根据权利要求9所述的评估数据的集合的方法,其中,确定沿着上下文的每一个路径的位置的步骤包括下列步骤从所述互锁树数据仓库的根节点或基本根节点中选择一个根节点,从上下文的每一个路径中的所述根节点的或基本根节点的asResult列表遍历到其对应的子组件节点。
11.根据权利要求9所述的评估数据的集合的方法,其中,所述确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过从至少一个根节点的asResult列表遍历到至少一个根节点的对应的子组件节点,然后遍历所述对应的子组件节点到所述子组件节点的每一个对应的最终产物节点之间的asCase链接,从所述至少一个根节点,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
12.根据权利要求9所述的评估数据的集合的方法,其中,所述确定上下文和其对应值的步骤包括下列步骤选择上下文约束列表,所述上下文约束列表包含由所述互锁树数据仓库的至少一个根节点表示的值,其中,所述上下文约束列表上的至少一个根节点的全部都通过逻辑表达式彼此关联;通过沿着所述路径,使用Case链接,从所有可能的最终产物节点反向朝着主根的方向遍历,并且在每一个子组件节点使用其Result链接定位根节点,并将其与所述至少一个根节点进行比较,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
13.根据权利要求9所述的评估数据的集合的方法,其中,所述确定上下文和其对应值的步骤包括下列步骤按照所述互锁树数据仓库的最终产物节点,选择所有可能的路径,忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成上下文的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取上下文计数。
14.根据权利要求2、5、9或12中的任何一个权利要求所述的评估数据的集合的方法,其中,所述确定焦点和其对应值的步骤包括下列步骤从所述互锁树数据仓库的根节点或基本根节点中选择至少一个根节点的焦点约束列表,所述至少一个根节点通过逻辑表达式来关联;通过从至少一个根节点的asResult列表到任何对应的子组件节点的遍历,然后遍历所述对应的子组件节点的到其对应的最终产物节点的asCase链接,从所述至少一个根节点,按照最终产物节点,标识一个或多个路径;忽略那些不在建立的上下文内的路径,以及还忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成焦点的结果节点集中只包括沿着没有被忽略的那些路径的节点,以及添加构成所述焦点的那些一个或多个路径的最终产物节点的计数,以获取焦点计数。
15.根据权利要求2、5、9或12中的任何一个权利要求所述的评估数据的集合的方法,其中,所述确定焦点和其对应值的步骤包括下列步骤从所述互锁树数据仓库的根节点或基本根节点中选择至少一个根节点的焦点约束列表,所述至少一个根节点通过逻辑表达式来关联;通过沿着路径从建立的上下文内的所有最终产物节点反向朝着它们的主根节点的方向遍历,所述路径可以使用建立的上下文内的所述最终产物节点的Case链接来进行标识,并且在每一个子组件节点中,使用Result链接来进行遍历,以定位根节点,并将其与所述至少一个根节点进行比较,按照最终产物节点,标识一个或多个路径;忽略具有到这样的基本根节点的链接的那些路径,所述基本根节点的值字段不符合所述逻辑表达式,如此构成焦点的结果节点集中只包括沿着没有被忽略的那些路径的节点;以及添加那些没有被忽略的一个或多个路径的最终产物节点的计数,以获取焦点计数。
16.根据权利要求4、6、7、8、9、11、12或14中的任何一个权利要求所述的评估数据的集合的方法,其中,所述逻辑表达式包括至少一个逻辑运算符,如但不限于,AND、OR、NOT、GREATERTHAN、LESSTHAN、XNOR、EQUALTO和这样的逻辑运算符的任何组合。
17.一种包括节点和所述节点之间的链接的结构,所述节点具有多个数据字段,所述多个数据字段中至少有两个包含指针,所述至少两个指针中的一个是Case指针,所述至少两个指针的另一个是Result指针,至少一个节点具有至少一个指向指针列表的附加指针,在所述节点具有关联的asCase列表的情况下,所述指向指针列表的附加指针中的一个是asCase列表,在所述节点具有关联的asResult列表的情况下,所述指向指针列表的附加指针中的另一个是asResult列表,其中,所述节点包含计数字段,其中,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,其中,所述节点可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,所述asResult链接在根节点和任何其他节点之间提供指向,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,在所述至少一个主根节点和至少一个最终产物节点之间的路径上包含至少一个子组件节点,并且所述asResult链接在根节点或最终产物节点和子组件节点或最终产物节点之间在它们之间的所述路径上提供指向,其中,所述基本节点还具有一个字段,该字段具有值。
18.根据权利要求17所述的结构,所述结构由一组程序指令构成,该组程序指令当被激活时配置计算机系统,以产生所述结构。
19.包含如权利要求18所述的程序指令集的计算机可读取的介质。
20.根据权利要求17所述的结构,其中,所述计数字段包含强度变量,所述强度变量是在对应于涉及包含所述计数字段的节点的活动的各种预先确定的遍历类型的各种强度下可修改。
21.根据权利要求17中所述的结构,其中,所述asCase和所述asResult列表存储在所述互锁树结构之外的单独的数据结构中,其中,所述单独的数据结构通过指针与所述互锁树结构中的相关的节点关联。
22.一种包括节点和所述节点之间的链接的结构,所述节点具有多个数据字段,所述多个数据字段中至少有两个包含指针,所述至少两个指针中的一个是Case指针,所述至少两个指针的另一个是Result指针,至少一个节点具有至少一个指向指针列表的附加指针,在所述节点具有关联的asCase列表的情况下,所述指向指针列表的附加指针中的一个是asCase列表,在所述节点具有关联的asResult列表的情况下,所述指向指针列表的附加指针中的另一个是asResult列表,其中,对于每一种预先确定的遍历方式给所述节点提供一个子节点,所述子节点包含计数字段,用于记录所述节点以预先确定的方式进行的遍历,其中,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,其中,所述节点可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,所述asResult链接在根节点和任何其他节点之间提供指向,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,在所述至少一个主根节点和至少一个最终产物节点之间的路径上包含至少一个子组件节点,并且所述asResult链接在根节点或最终产物节点和子组件节点或最终产物节点之间在它们之间的所述路径上提供指向,其中,所述基本节点还具有一个字段,该字段具有值。
23.一种包括节点和所述节点之间的链接的结构,所述节点具有多个数据字段,所述多个数据字段中至少有两个包含指针,所述至少两个指针中的一个是Case指针,所述至少两个指针的另一个是Result指针,至少一个节点具有至少一个指向指针列表的附加指针,在所述节点具有关联的asCase列表的情况下,所述指向指针列表的附加指针中的一个是asCase列表,在所述节点具有关联的asResult列表的情况下,所述指向指针列表的附加指针中的另一个是asResult列表,其中,所述节点包含一个额外的字段,其中,所述节点包括根节点,其中,有至少一个主根节点和至少一个基本根节点,其中,所述节点可以包括其他根节点,所述节点还包括至少一个结束思考节点、至少一个子组件节点、以及至少一个最终产物节点,其中,所述asResult链接在根节点和任何其他节点之间提供指向,所述asCase链接在至少一个主根节点和至少一个最终产物节点之间提供指向,在所述至少一个主根节点和至少一个最终产物节点之间的路径上包含至少一个子组件节点,并且所述asResult链接在根节点或最终产物节点和子组件节点或最终产物节点之间在它们之间的所述路径上提供指向,其中,所述基本节点还具有一个字段,该字段具有值。
24.根据权利要求23所述的结构,其中,所述的额外的字段是计数字段。
全文摘要
生成和/或访问由包括互连的树的林所构成的基于树的数据仓库。基于树的数据仓库包括从第一根节点下垂的第一树,并可以包括多个树枝。第一树的每一个树枝都在叶节点中结束(图3c 350)。每一个叶节点都可以代表最终产物,或子组件节点。同一个基于树的数据仓库的第二根链接到代表最终产物的每一个叶节点(图3c 356)。最后,基于树的数据仓库包括多个树,其中,这些树中的每一个树的根节点都可以被描述为基本节点。这些树中的每一个树的基本根节点都可以链接到第一树的一个或多个树枝中的一个或多个节点(图9a)。基于树的数据仓库的节点只包含指向基于树的数据仓库中的其他节点的指针,并可以包含额外的字段,其中,一个字段可以是计数字段。另外,描述了获取一个或多个定义的焦点内的所需要的上下文所标识的涉及特定节点的变量的一致性的概率的装置。此外,还显示了逻辑运算符对涉及这样的变量的查询的应用。
文档编号G06F17/30GK1781093SQ200480011369
公开日2006年5月31日 申请日期2004年2月27日 优先权日2003年3月10日
发明者詹尼·坎贝尔·马扎加蒂 申请人:尤尼西斯公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1