提供查询的属性的方法和系统转让专利

申请号 : CN200380101903.9

文献号 : CN1705945B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 理查德·D·德廷杰理查德·J·史蒂文斯

申请人 : 国际商业机器公司

摘要 :

公开了一种用于访问数据的系统、方法和产品。一般而言,通过以一个或多个相关标准(203)配置的查询(202)来帮助数据访问。相关标准(203)的存在帮助引入附加的相关逻辑以将其应用到查询条件(204)。一般而言,可以考虑基于时间、物理位置和年龄支持实体的相关的相关标准(203)。

权利要求 :

1.一种添加查询逻辑的方法,该方法包括:

接收包括一个或多个逻辑字段以及一个或多个预定义的相关属性的查询,每个相关属性与具有针对逻辑字段的预定义关系的字段规范相关联;

对于所接收的查询中的每个逻辑字段:

确定在所接收的查询中所引用的相关属性是否经由与所述逻辑字段的预定义的关系支持该逻辑字段,并且如果支持,则基于所述给定的相关属性的字段规范生成查询逻辑以及将所生成的查询逻辑施加到所述接收的查询。

2.如权利要求1所述的方法,其中,至少两个不同的相应字段规范与给定相关属性相关联。

3.如权前述利要求之一所述的方法,其中,所述基于所述给定的相关属性的字段规范生成查询逻辑包括根据为逻辑字段定义的访问方法构建查询谓词,并且指定访问物理数据的方法。

4.如权利要求3所述的方法,其中所述相关属性可以是年龄、时间和位置之一。

5.如权利要求1所述的方法,其中,所述基于所述给定的相关属性的字段规范生成查询逻辑包括:确定应用于查询的两个条件的逻辑字段的范围相关属性;以及构建表达式,以计算通过与逻辑字段相关联的字段规范所计算的、并对应于该范围相关属性的每个值之间的差值。

6.如权利要求3所述的方法,在根据为逻辑字段定义的访问方法构建查询谓词之前,还包括:为一个或多个逻辑字段的具体逻辑字段指定多个相关属性中的哪些相关属性得到支持;以及为该具体逻辑字段指定用于计算所支持的相关属性的值的字段规范。

7.如权利要求6所述的方法,其中,指定多个相关属性中的哪些相关属性得到支持包括:为具体逻辑字段指定两个或更多个相关属性。

8.如权利要求7所述的方法,其中所述相关属性可以是年龄、时间和位置之一或者是颜色、重量、体积、长度和宽度之一。

9.一种添加查询逻辑的系统,该系统包括:

用于接收包括一个或多个逻辑字段以及一个或多个预定义的相关属性的查询的装置,每个相关属性与具有针对逻辑字段的预定义关系的字段规范相关联;

用于针对所接收的查询中的每个逻辑字段确定在所接收的查询中所引用的相关属性是否经由与所述逻辑字段的预定义的关系支持该逻辑字段的装置;以及用于响应于针对所述查询中的每个逻辑字段确定在所述查询中所引用的相关属性是经由与所述逻辑字段的预定义的关系支持该逻辑字段,基于所述给定的相关属性的字段规范生成查询逻辑的装置;以及用于将所生成的查询逻辑施加到所接收的查询的装置。

说明书 :

提供查询的属性的方法和系统

技术领域

[0001] 本发明一般涉及数据处理,特别涉及使用一个或多个相关标准访问数据。

背景技术

[0002] 数据库是计算机化的信息存储和检索系统。关系数据库管理系统是使用关系技术来存储和检索数据的计算机数据库管理系统(DBMS)。最普及的数据库类型是关系数据库,即数据被定义成可以以多种不同方式对其进行重新组织和访问的表式数据库。
[0003] 与特定架构无关,在DBMS中,请求实体(例如,应用程序或操作系统)通过发出数据库访问请求来要求对指定数据库的访问。这样的请求例如可包括简单的目录查询请求或事务,以及用来在数据库中读取、改变和添加指定记录的事务的组合。这些请求使用高级查询语言如结构化查询语言(SQL)来创建。示例性地,SQL用来创建用于从数据库,如国际商业机器公司(IBM)的DB2、Microsoft的SQL Server以及来自Oracle、Sybase和Computer Associates的数据库产品获得信息和更新数据库的交互式查询。术语“查询”是指一组用于从所存储的数据库检索数据的命令。查询采取让编程人员和程序选择、插入、更新、找出数据位置等等的命令语言的形式。
[0004] 当针对存储在数据库或数据仓库中的信息构造复杂的查询时,经常期望基于公共属性使作为查询的数据实体相关。例如,可基于以下发生的所有实体或事件使数据实体相关:(i)在给定时间点或在给定时间范围内发生;(ii)相互同时或者在给定时间间隔内发生;(iii)在可以多种不同方式定界的相同地点发生(例如,相同街道地址、城市、县、州、邮政编码或国家);(iv)当正被讨论的个人或项目为给定年龄或者在给定年龄范围内时发生;以及(v)当与正被讨论的所有数据实体相关联的年龄相同时发生。
[0005] 构造这样的复杂查询的典型方法涉及以附加谓词(predicate)扩增查询,以把作为查询的每个数据实体的公共相关属性的逻辑包括在内。不幸的是,该方法要求较深入地理解所涉及数据和作为查询的特定数据实体的物理关系(例如,数据实体是否支持时间、年龄或地点的概念)。作为例子,考虑对于识别被发现其肝酶级别高于特定阈值并且其接受了医治肝异常的手术的目前60岁或更大的男性感兴趣的用户。采用SQL,对应的查询可采取查询1的形式。
[0006] SQL查询1
[0007]
[0008] 现在假定用户希望窄化所返回的数据,以仅包括该人是在三十日内接受了测试和治疗的那些情况。如查询2所示,这可通过以附加的谓词扩展SQL查询1以选择在相同时间范围内发生的测试和手术事件来完成。
[0009] SQL查询2
[0010]
[0011] 在另一情况下,用户可能希望识别具有相同的标准组合的人,但是将结果限于当接受测试和治疗时其年龄在40和50之间的那些人。如查询3所示,这将需要将不同的谓词集添加到基本查询。
[0012] SQL查询3
[0013]
[0014] 前述例子示出,虽然基本查询在每种情况下保持不变,但是添加附加的谓词来实现由查询检查的实体之间的期望相关。结果,为访问期望数据而施加在最终用户上的负担是相当重的。
[0015] 因此,需要一种在查询内实现相关逻辑的方式。

发明内容

[0016] 本发明一般涉及一种用于使用一个或多个相关标准访问数据的方法、系统和产品。
[0017] 一个实施例提供了一种提供被配置成将查询逻辑添加到从由一个或多个逻辑字段定义的抽象查询生成的查询的属性的方法。该方法包括为特定逻辑字段指定支持多个相关属性中的哪些相关属性;以及为特定逻辑字段指定用于计算所支持的相关属性的值的定义。
[0018] 另一个实施例提供了一种提供被配置成将查询逻辑添加到从由一个或多个逻辑字段定义的抽象查询生成的查询的属性的方法。该方法包括,针对多个逻辑字段中的每一个,为特定逻辑字段指定支持多个相关属性中的哪些相关属性;以及针对多个逻辑字段中的每一个,为特定逻辑字段指定用于计算所支持的相关属性的值的定义;其中为两个不同逻辑字段指定的、用于计算特定相关属性的值的定义中的至少两个是不同的。
[0019] 另一个实施例提供了一种将查询逻辑添加到从由一个或多个逻辑字段定义的抽象查询生成的查询的方法。该方法包括,针对抽象查询的每个条件:构建可执行查询组成部分(contribution);确定抽象查询是否包括应用到该条件的逻辑字段的多个相关标准中的至少一个,其中该多个相关标准中的每一个具有用于计算值的对应相关属性定义,并且其中为给定相关标准定义至少两个不同的对应相关属性定义。
[0020] 另一个实施例提供了一种包含程序的计算机可读介质,其中当被执行时,该程序执行将查询逻辑添加到从由一个或多个逻辑字段定义的抽象查询生成的查询的操作。该操作包括,针对抽象查询的每个条件:构建可执行查询组成部分;确定抽象查询是否包括应用到该条件的逻辑字段的多个相关标准中的至少一个,其中该多个相关标准中的每一个具有用于计算值的对应相关属性定义,并且其中为给定相关标准定义至少两个不同的对应相关属性定义。
[0021] 另一个实施例提供了一种计算机可读介质,其包括存储在其上的信息,该信息包括:查询规范,其包括多个用于定义抽象查询的逻辑字段;为该多个逻辑字段中的至少一个指定的至少一个相关属性定义,其中相关属性定义包括名称和用于计算相关属性相关属性定义的值的定义;以及运行时组件,其可执行,以响应于接收对数据发出的抽象查询而执行操作,其中该抽象查询根据查询规范来定义,并且以为其指定了该至少一个相关属性定义的该至少一个逻辑字段来配置。该操作包括计算该至少一个逻辑字段的相关属性值。
[0022] 另一个实施例提供了一种计算机可读介质,其包括存储在其上的信息,该信息包括:查询规范,其包括多个用于定义抽象查询的逻辑字段;为该多个逻辑字段中的至少两个指定的多个相关属性定义,其中每个相关属性定义包括名称和用于计算相关属性定义的值的定义;以及运行时组件,其可执行,以响应于接收对数据发出的抽象查询而执行操作,其中该抽象查询根据查询规范来定义,并且以为其指定了该至少一个相关属性定义的该至少一个逻辑字段来配置。该操作包括计算该至少一个逻辑字段的相关属性值。

附图说明

[0023] 通过参考在附图中示出的本发明实施例对上面简要概述的本发明进行更具体的描述,可以详细地理解并获得实现本发明上述特性的方式。
[0024] 然而,要注意的是,附图仅示出本发明的典型实施例,因此其不被认为是限制其范围,相反,本发明可以包括其它等效的实施例。
[0025] 图1是计算机系统的一个实施例;
[0026] 图2A是本发明一个实施例的软件组件的逻辑/物理视图;
[0027] 图2B是抽象查询和数据存储库(repository)抽象的逻辑视图;
[0028] 图3A-C是示出运行时(runtime)组件的操作的流程图;以及
[0029] 图4是示出运行时组件的操作的流程图。

具体实施方式

[0030] 介绍
[0031] 本发明一般涉及一种用于访问数据的系统、方法和产品。一般而言,通过以一个或多个相关标准配置的查询,帮助数据访问。相关标准的存在帮助引入附加的相关逻辑以将其应用到查询条件。一般而言,可以考虑基于时间、物理位置和年龄支持实体的相关的相关标准。
[0032] 在一个实施例中,相关属性被实现为数据逻辑模型的一部分。逻辑模型在此称作数据存储库抽象层,其提供底层数据存储库的逻辑视图。以这种方式,与在物理上表示数据的特定方式无关地创建数据。还提供查询抽象层,并且该查询抽象层基于数据存储库抽象层。运行时组件执行抽象查询到可针对特定物理数据表示而使用的形式的翻译。
[0033] 为方便起见,这里使用术语“相关”来引用作为数据存储库抽象层的一部分定义的查询标准和属性。术语“相关”传达本发明的一方面,其中查询逻辑可被应用到关于公共实体(common entity)的两个或更多个查询条件。然而,在另一方面,查询逻辑也可被应用到仅一个查询条件。从下文可以清楚,优点仍将由最终用户来实现,因为最终用户没有确定要如何计算实体的负担。同样地,在查询条件与例如特定时间、位置或年龄属性之间发生“相关”(相对于简单地两个或更多个查询条件之间的相关)。值得注意的是,相关属性作为整体应用于查询,并且将影响与支持特定类型的相关属性的所有条件字段相关联的数据选择逻辑。
[0034] 本发明的一个实施例被实现为与计算机系统,例如图1所示和下面所述的计算机系统,一起使用的程序产品。该程序产品的程序定义这些实施例的功能(包括这里所述的方法),并且可以包含在各种信号承载介质上。示例性信号承载介质包括但不限于:(i)永久性地存储在不可写入存储介质(例如,计算机内的只读存储器装置,如可由CD-ROM驱动器读取的CD-ROM盘)上的信息;(ii)存储在可写入存储介质(例如,磁盘驱动器内的软盘或者硬盘驱动器)上的可变更信息;或者(iii)通过通信介质,例如通过计算机或包括无线通信的电话网络传达给计算机的信息。后面的实施例具体包括从因特网或其它网络下载的信息。当承载引导本发明的功能的计算机可读指令时,这些信号承载介质表示本发明的实施例。
[0035] 一般而言,被执行以实现本发明实施例的例程可以是操作系统或特定应用程序、组件、程序、模块、对象或指令序列的一部分。本发明的软件典型地包括大量指令,它们将被本地计算机翻译成可机读格式以及由此的可执行指令。另外,程序包括本地驻留于程序或者在存储器或存储装置中找到的变量和数据结构。另外,以下描述的各种程序可以根据在本发明的特定实施例中实现它们的应用程序来标识。然而,应当理解,下面任何特定的术语仅是为了方便起见而使用的,因此本发明不应当局限于仅在由这样的术语标识和/或暗示的任何特定应用程序中使用。
[0036] 环境的物理视图
[0037] 图1示出可实现本发明实施例的连网系统100的方框图。一般而言,连网系统100包括客户端(例如用户的)计算机102(示出了三个这样的客户端计算机102)和至少一个服务器104(一个这样的服务器104)。客户端计算机102和服务器计算机104通过网络126连接。一般而言,网络126可以是局域网(LAN)和/或广域网(WAN)。在特定实施例中,网络126是因特网。
[0038] 客户端计算机102包括通过总线130连接到存储器112、存储装置114、输入装置116、输出装置119和网络接口装置118的中央处理单元(CPU)110。输入装置116可以是向客户端计算机102提供输入的任何装置。例如,可以使用键盘、小键盘、光笔、触摸屏、跟踪球或语音识别单元、音频/视频播放器等等。输出装置119可以是向用户提供输出的任何装置,例如任何传统显示屏。虽然与输入装置116分开示出,但是可以组合输出装置119和输入装置116。例如,可以使用具有集成触摸屏的显示屏、具有集成键盘的显示器或者与文本语音转换器组合的语音识别单元。
[0039] 网络接口装置118可以是被配置成允许通过网络126在客户端计算机102和服务器计算机104之间进行网络通信的任何出/入(entry/exit)装置。例如,网络接口装置118可以是网络适配器或其它网络接口卡(NIC)。
[0040] 存储装置114优选地是直接访问存储装置(DASD)。虽然它被示出为单个单元,但是它可以是固定和/或可移动存储装置,如固定盘驱动器、软盘驱动器、磁带驱动器、可移动存储卡或光学存储装置的组合。存储器112和存储装置114可以是跨越多个初级和次级存储装置的一个虚拟地址空间的一部分。
[0041] 存储器112优选地是大得足以保存本发明的必要程序和数据结构的随机存取存储器。虽然存储器112被示出为单个实体,但是应当理解,存储器112实际上可包括多个模块,并且存储器112可存在于从高速寄存器和高速缓冲存储器到较低速但较大的DRAM芯片的多个级别。
[0042] 示例性地,存储器112包含操作系统124。可优选使用的示例性操作系统,包括Linux和Microsoft(微软)的 。更一般地,可使用任何支持这里公开的功能的操作系统。
[0043] 存储器112还被示出为包含浏览器程序122,当在CPU 110上执行时,提供对在各个服务器104之间导航并且定位一个或多个服务器104上的网络地址的支持。在一个实施例中,浏览器程序122包括基于万维网的图形用户界面(GUI),其允许用户显示超文本标记语言(HTML)信息。然而,更一般地,浏览器程序122可以是能够呈现从服务器计算机104传输的信息的任何程序(优先地基于GUI)。
[0044] 服务器计算机104在物理上可以以类似于客户端计算机102的方式布置。从而,服务器计算机104被一般性地示出为包括通过总线136相互耦接的CPU130、存储器132、以及存储装置134。存储器132可以是大得足以保存位于服务器计算机104上的必要程序和数据结构的随机存取存储器。
[0045] 服务器计算机104一般处于驻留在存储器132中的所示操作系统138的控制之下。操作系统138的例子包括IBM 、UNIX、Microsoft 等等。更一般地,可使用任何支持这里所述的功能的操作系统。
[0046] 存储器132还包括一个或多个应用程序140和抽象查询接口146。应用程序140和抽象查询接口146是这样的软件产品,其包括在不同的时候驻留在计算机系统100中的不同存储器和存储装置中的多条指令。当由服务器104中的一个或多个处理器130读取和执行时,应用程序140和抽象查询接口146使计算机系统100执行对于执行实施本发明的各方面的步骤或元素所需的步骤。应用程序140(并且更一般地,任何请求实体,包括操作系统138,以及处于最高层的用户)对数据库(例如,数据库1561...156N,统称作数据库156)发出查询。示例性地,数据库156被示出为存储装置134中的数据库管理系统(DBMS)的一部分。数据库156代表任何数据集合而与特定物理表示无关。作为示例,数据库156可根据关系大纲(schema)(可通过SQL查询来访问)或者根据XML大纲(可通过XML查询来访问)来组织。然而,本发明不限于特定大纲,并且考虑向目前未知的大纲的扩展。这里所用的术语“大纲”一般性地是指数据的特定安排。
[0047] 在一个实施例中,由应用程序140发出的查询根据与每个应用程序140一起包括的应用程序查询规范142来定义。由应用程序140发出的查询可以是预定义的(即被硬编码为应用程序140的一部分)或者可以响应于输入(例如,用户输入)而生成。在任何情况下,查询(这里称作“抽象查询”)使用由抽象查询接口146定义的逻辑字段来组合/执行。具体地说,在抽象查询中使用的逻辑字段由抽象查询接口146的数据存储库抽象组件148定义。抽象查询由运行时组件150执行,其中运行时组件150首先将抽象查询变换成与包含在DBMS 154中的数据的物理表示一致的形式。
[0048] 在一个实施例中,数据存储库抽象组件148以相关属性162配置。相关属性162例如可指定可施加在用于定义查询条件之间的关系的逻辑字段上的空间和时间约束。运行时组件150的相关算法151用来施行由相关属性162指定的规则。为此,运行时组件150可维护包括范围(span)标准列表170、单独(individual)标准列表172和范围字段列表174的临时数据结构。
[0049] 在一个实施例中,由用户通过图形用户界面(GUI)指定查询的各元素。GUI的内容由应用程序140生成。在特定实施例中,GUI内容是超文本标记语言(HTML)内容,其可以通过浏览器程序122在客户端计算机系统102上呈现。从而,存储器132包括超文本传输协议(http)服务器进程152(例如,万维网服务器),其被配置成服务来自客户端计算机102的请求。例如,服务器进程152可响应访问示例性地驻留在服务器104上的数据库156的请求。对数据库156中的数据的进入客户端请求调用应用程序140。当由处理器130执行时,应用程序140使服务器计算机104执行实施本发明的各方面的步骤或元素,包括访问数据库156。在一个实施例中,应用程序140包括多个小服务程序,其被配置成构建然后由浏览器程序122呈现的GUI元素。
[0050] 图1只是连网的客户端计算机102和服务器计算机104的一种硬件/软件配置。本发明的实施例可应用于任何同等的硬件配置,而与计算机系统是否是复杂的多用户计算设备、单用户工作站或者没有其自己的非易失性存储装置的网络设备无关。此外,应当理解,虽然引用了特定标记语言,包括HTML,但是本发明不限于特定语言、标准或版本。从而,本领域的技术人员应当认识到,本发明可适用于其它标记语言以及非标记语言,并且本发明也适用于特定标记语言的将来改变以及目前未知的其它语言。同样地,图1所示的http服务器进程152仅是示例性的,并且可以考虑被配置成支持任何已知和未知协议的其它实施例。
[0051] 环境的逻辑/运行时视图
[0052] 图2A-2B示出本发明的各组件的示例性关系视图200。请求实体(例如,应用程序140之一)发出由请求实体的各自应用程序查询规范142定义的查询202。所得到的查询
202在此一般性地称作“抽象查询”,因为该查询根据抽象(即逻辑)字段而非采用对DBMS
154中的底层物理数据实体的直接引用来组合。结果,可以定义与所使用的特定底层数据表示无关的抽象查询。在一个实施例中,应用程序查询规范142可包括用于数据选择的标准(选择标准204)、用于使查询的一个或多个(并且更典型地为两个或更多个)条件相关的标准(相关标准203)和根据选择标准204返回的字段的显式规范(返回数据规范206)。
[0053] 下面表I示出图2B所示的抽象查询202的详细信息。作为示例,抽象查询202采用XML来定义。然而,也可以有利地使用任何其它语言。
[0054] 表I-抽象查询示例
[0055]
[0056] 示例性地,表I所示的抽象查询包括选择规范(第001-009行)和结果规范(第010-014行),其中选择规范包含选择标准。在一个实施例中,选择标准(这里也称作“条件”)包括字段名称(用于逻辑字段)、比较操作符(=、>、<等)以及值表达式(即字段所比较的)。在一个实施例中,结果规范是要作为查询执行的结果而返回的抽象字段列表。
抽象查询中的结果规范可包括字段名称和排序标准。示例性地,相关标准是Age(年龄)相关标准和Span(Time)(范围(时间))相关标准。这些相关标准均被应用到该查询的一个或多个条件。在本例中,Age相关标准将附加逻辑添加到用来选择特定诊断和测试结果值的各个谓词。Span(Time)标准将附加逻辑添加到该查询,作为一个整体,在这种情况下,仅选择其诊断和测试结果相互在5日内的那些病人。
[0057] 作为比较,下面表示与表I的抽象查询对应的SQL查询。
[0058] SQL查询4
[0059]
[0060] 注意,用户具有根据需要将相关逻辑应用到每个条件的负担。相反,在本发明中,相关标准被应用到在数据存储库抽象组件148中存在其预定义相关属性的每个条件。下面将更详细地描述此点上数据存储库抽象组件148的各方面。
[0061] 在一个实施例中,相关标准203、选择标准204以及返回数据规范206均可通过用户界面例如浏览器程序122由用户指定。为此,用户界面可针对相关标准203、选择标准204以及返回数据规范206的每一个,包括单独的输入字段,从而组合抽象查询202。
[0062] 由应用程序查询规范142规定且用来组合抽象查询202的逻辑字段由数据存储库抽象组件148定义。一般而言,数据存储库抽象组件148暴露(expose)作为逻辑字段集的信息,其中该逻辑字段集可在由应用程序140(其可以响应于用户输入查询条件)发出的查询(例如,抽象查询202)内使用,以指定数据选择的标准、用于查询条件的相关的标准,并指定从查询操作返回的结果数据的形式。逻辑字段独立于在DBMS 154中使用的底层数据表示来定义,从而允许形成与底层数据表示松散耦合的查询。
[0063] 一般而言,数据存储库抽象组件148包括多个字段规范2081、2082、...(作为示例而示出六个),其统称为字段规范208。具体地说,为可用于组合抽象查询的每个逻辑字段提供字段规范。在一个实施例中,字段规范208包括逻辑字段名称2101、2102...(统称为字段名称210)和关联的访问方法2121、2122..(统称为访问方法212)。在示例性实施例中,字段规范208还包括一个或多个范畴(category)名称2161、2162和2163(统称为范畴名称216)。范畴名称关联一组逻辑字段名称。例如,在图2B中,字段规范2081和2082是Demographic(人口统计)范畴2161的一部分,字段规范2083、2084和2085是Diagnostics(诊断)范畴2162的一部分,并且字段规范2086、2087和2088是Tests(测试)范畴2162的一部分。然而,范畴的使用仅代表特定实施例,并且其它实施例不采用范畴。
[0064] 访问方法212将逻辑字段名称关联(映射)到数据库(例如,数据库156之一)中的特定物理数据表示2141、2142...214N。作为示例,图2A示出两个数据表示,即XML数据表示2141和关系数据表示2142。然而,也可以考虑表示已知或未知的任何其它数据表示的物理数据表示214N。
[0065] 在一个实施例中,单个数据存储库抽象组件148包含两个或更多个物理数据表示214的字段规范(与关联的访问方法)。在可选实施例中,为每个单独的物理数据表示214提供不同的单个数据存储库抽象组件148。在另一个实施例中,提供多个数据存储库抽象组件148,其中每个数据存储库抽象组件148暴露相同底层物理数据(其可包括一个或多个物理数据表示214)的不同部分。以这种方式,单个应用程序140可以由多个用户同时使用,以访问相同的底层数据,其中由各自的数据存储库抽象组件148确定向应用程序暴露的底层数据的特定部分。
[0066] 根据所要支持的不同类型的逻辑字段的数目,考虑任意数目的访问方法。在一个实施例中,提供对简单字段、过滤字段和组合字段的访问方法。字段规范2081和2082分别是简单字段访问方法2121和2122的例子。简单字段被直接映射到底层物理数据表示中的特定实体(例如,映射到给定数据库表和列的字段)。作为示例,图2B所示的简单字段访问方法2121将逻辑字段名称2101(“FirstName(名)”)映射到名称为“patient(病人)”的表中名称为“f_name”的列。过滤字段(图2中未示出例子)标识关联的物理实体,并且提供用来定义物理数据表示内的特定项目子集的规则。过滤字段的例子是映射到邮政编码(ZIP code)的物理表示、并且将该数据仅限于为纽约州定义的那些邮政编码的New York ZIP code(纽约州邮政编码)字段。组合访问方法(例如,2131和2132)使用作为访问方法定义的一部分而提供的表达式,从一个或多个物理字段计算逻辑字段。以这种方式,可以计算在底层数据表示中不存在的信息。一个例子是通过将销售价格字段乘以销售税率而组合的销售税字段。
[0067] 可以考虑,底层数据的任何给定数据类型(例如,日期、十进制数字等)的格式可以变化。从而,在一个实施例中,字段规范208包括类型属性,其反映底层数据的格式。然而,在另一个实施例中,字段规范208的数据格式不同于关联的底层物理数据,在这种情况下,访问方法负责以由请求实体采取的适当格式返回数据。因此,访问方法必须知道采取数据的什么格式(即,根据逻辑字段)以及底层物理数据的实际格式。然后,访问方法可以将底层物理数据转换成逻辑字段的格式。
[0068] 作为例子,图2所示的数据存储库抽象组件148的字段规范208表示被映射到在关系数据表示2142中表示的数据的逻辑字段。然而,数据存储库抽象组件148的其它实例将逻辑字段映射到其它物理数据表示,如XML。
[0069] 还可以以相关属性(在图1中统一地作为相关属性162示出)配置字段规范208中的一个或多个。例如,Diagnosis(诊断)字段规范2083包括Age(年龄)相关属性2181和Time(时间)相关属性2182,并且Test Result(测试结果)字段规范2086也包括Age(年龄)相关属性2181和Time(时间)相关属性2182。应当注意的是,不是每一个字段规范都需要具有相关属性。
[0070] 一般地,相关属性标识逻辑字段可与其相关的实体/事件。在一个实施例中,逻辑字段可与时间(特定时间点或时间范围)、物理位置和年龄相关。因此,在一个实施例中,相关属性标识可用来约束与逻辑字段相关联的数据实例的空间或时间维数(dimension)。然而,更一般地,可将相关属性定义为考虑在查询操作中涉及的各个实体的其他特性,例如:颜色、重量、体积、长度、宽度等。从图2B可以看出,与每个字段定义相关联的相关属性一般包括“Name(名称)”和“Fieldref(字段引用)”。Name提供用于根据对应字段(为其定义相关属性)可与什么相关来标识相关属性的句柄。例如,相关属性2181被给予名称“Age(年龄)”,其表示对应逻辑字段可与年龄相关。在本例中,Age相关属性2181和Time相关属性
2182是“Diagnosis”逻辑字段2103和“Test Result”逻辑字段2106的字段规范的一部分。
“Fieldref”提供特定逻辑字段的相关属性的定义。例如,“Diagnosis”逻辑字段2103的Age相关属性2181的“Fieldref”指定称作“AgeAtDiagnosis(诊断时的年龄)”的定义。在本实施例中,“AgeAtDiagnosis”是另一个逻辑字段2105,其也是Diagnostics(诊断)范畴
2162的一部分。更具体地说,如上所定义的那样,“AgeAtDiagnosis”逻辑字段2105是组合字段。在本例中,组合逻辑字段2105接收Diagnosis Date(诊断日期)和Birth Date(生日日期)作为输入参数,并且获得这两个参数值之间的差值。以这种方式,Age相关属性可采取各种各样的定义。例如,根据测试时的年龄(Fieldref=“AgeAtTest(测试时的年龄)”)定义为逻辑字段Test Result2106指定的Age相关属性2181。“AgeAtTest”逻辑字段2108是组合字段,其接收Test Date和Birth Date作为输入,并且获得差值,由此计算测试时的年龄。
[0071] 在工作时,当发出以相关标准配置的抽象查询(例如,表I和图2B的抽象查询202所示的抽象查询)以便执行时,相关算法151采取确定对其应用了相关标准的每个条件是否支持相关标准的步骤。这使用对应数据存储库抽象组件148中的信息来完成,其中数据存储库抽象组件148为由抽象查询202引用的逻辑字段定义必要的元数据和访问方法信息。具体地说,检查数据存储库抽象组件148的相关属性162,以查看对于抽象查询的指定逻辑字段支持哪些相关标准。对于支持相关标准的每个逻辑字段,将附加谓词添加到被生成以表示抽象查询的可执行查询语句。
[0072] 对应于图2B所示的示例性数据存储库抽象组件148可参照表II作进一步的说明。作为示例,数据存储库抽象组件使用XML来定义。然而,可以有利地使用任何其它语言。
[0073] 表II-数据存储库抽象示例
[0074]
[0075]
[0076]
[0077] 现在将参照图3描述用于由运行时组件150处理抽象查询的一个实施例。在运行时组件150接收到抽象查询以便处理的情况下,在步骤302进入查询处理方法300。此外,运行时组件150读取和解析抽象查询的实例,并且定位各个选择标准、相关标准和期望的结果字段。在步骤304,针对抽象查询中的每个相关标准,进入并执行循环。在步骤306,运行时组件150确定标准是否是范围类型标准,即基于每个数据实体之间的时间间隔使数据实体相关的标准。例如,图2B所示的抽象查询包括相关标准“Span(Time)<5”,其指定对其应用时间相关属性的抽象查询数据实体必须相互在五个时间单位(示例性地为日)之内。如果(在步骤306)标准是范围类型标准,则在步骤308将标准添加到范围标准列表170(还参见图1)。然后,方法300返回到步骤304,以开始处理下一个相关标准。如果(在步骤306)标准不是范围类型标准,则在步骤310将标准添加到单独标准列表170(还参见图1)。然后,方法300返回到步骤304,以开始处理下一个相关标准。
[0078] 一旦抽象查询中的每个相关标准都被处理,则方法300继续到步骤312,其中针对每个具有选择标准的条件进入循环。回想一下,在一个实施例中,条件可包括字段名称(用于逻辑字段)、比较操作符(=、>、<等)以及值表达式(即字段所比较的)。在步骤314,运行时组件150使用来自抽象查询条件的字段名称,在数据存储库抽象148中查询该字段的定义。然后,运行时组件150为正被处理的逻辑字段构建(步骤316)可执行查询组成部分(Executable Query Contribution)。如这里所定义的,可执行查询组成部分是用来根据当前逻辑字段执行数据选择的可执行查询的一部分。可执行查询是采用诸如SQL和XML Query(查询)的语言表示的查询,并且与给定物理数据存储库(例如,关系数据库或XML存储库)的数据一致。从而,使用可执行查询来从由图1所示的数据库156所代表的物理数据存储库定位和检索数据。然后,在步骤318将为当前字段生成的可执行查询组成部分添加到可执行查询语句。
[0079] 在步骤320,运行时组件150确定正被处理的条件的字段是否具有与范围标准列表170中的相关标准对应的相关属性(即,在数据存储库抽象组件148中)。如果是,则在步骤322,将字段添加到范围字段列表174。在一个实施例中,为每种类型的范围相关属性提供范围字段列表174(一个列表用于Span(Time),另一个用于Span(Location(位置))等)。然而,在另一个实施例中,在该步骤创建单个范围字段列表,当处理单独范围相关标准(下面描述该处理)时,从该列表选择字段的子集。然后,方法300返回到步骤312,以开始处理下一个选择标准条件。然而,如果步骤320被否定回答,则处理继续到步骤324,其中运行时组件150确定正被处理的字段是否具有与单独标准列表172中的相关标准对应的相关属性(即,在数据存储库抽象组件148中)。如果否,则处理返回到步骤312。否则,在步骤326,从数据存储库抽象组件148检索正被处理的字段的相关属性的字段定义。在步骤328,运行时组件150从相关标准和字段相关属性定义构建查询谓词。在步骤330,将谓词添加到可执行查询。然后,处理返回到步骤312。
[0080] 当通过在步骤312进入的循环处理了每一个选择标准条件时,方法300继续到步骤332,其中针对范围字段列表174中的每个字段对(为其定义了相同相关属性的字段的无序排列),进入循环。在步骤334,运行时组件150为该对中的每个字段检索相关属性的字段定义(即,来自数据存储库抽象组件148)。在步骤336,运行时组件150构建用来计算每个字段属性定义之间的绝对差值的表达式(例如,ABS(DAYS(testdate(测试日期)-diagdate(诊断日期))))。将该表达式与范围标准进行组合,以形成包括该字段对的范围查询谓词(例如,ABS(DAYS(testdate-diagdate))>5)。然后,在步骤340将该谓词添加到可执行查询,并且针对范围字段列表174中的下一个字段对,处理返回到步骤332。一旦每个字段对都被处理,则方法300结束,并且准备执行查询。
[0081] 参照图4描述用于根据步骤316和步骤328构建逻辑字段的可执行查询组成部分的方法400的一个实施例。在步骤402,方法400查询与当前逻辑字段相关联的访问方法是否是简单访问方法。如果是,则基于物理数据位置信息构建(步骤404)可执行查询组成部分,然后根据上述方法300继续进行处理。否则,处理继续到步骤406,以查询与当前逻辑字段相关联的访问方法是否是过滤访问方法。如果是,则基于某物理数据实体的物理数据位置信息构建(步骤408)可执行查询组成部分。在步骤410,以用于与物理数据实体相关联的子集数据的附加逻辑(过滤选择)扩展可执行查询组成部分。然后,根据上述方法300继续进行处理。
[0082] 如果访问方法不是过滤访问方法,则处理从步骤406进入步骤412,其中方法400查询访问方法是否是组合访问方法。如果访问方法是组合访问方法,则在步骤414定位和检索组合字段表达式中每个子字段引用的物理数据位置。在步骤416,以组合字段表达式的物理字段位置信息替代组合字段表达式的逻辑字段引用,由此生成可执行查询组成部分。然后,根据上述方法300继续进行处理。
[0083] 如果访问方法不是组合访问方法,则处理从步骤412进入步骤418。步骤418代表可被考虑为本发明实施例的任何其它访问方法类型。然而,应当理解,可以考虑其中实现少于全部可用访问方法的实施例。例如,在特定实施例中,仅使用简单访问方法。在另一个实施例中,仅使用简单访问方法和过滤访问方法。
[0084] 如前所述,在查询条件中引用的逻辑字段将定义相关属性和“FieldRef”,其中“FieldRef”标识定义了如何解释查询条件字段的给定相关属性的另一个逻辑字段。使用“被引用”的逻辑字段和与相关属性相关联的逻辑执行图4的方法400。例如,如果相关标准是Age>50并且Test字段包括FieldRef为AgeAtTest的Age的定义,则方法400根据条件AgeAtTest>50构建查询谓词。
[0085] 如上所述,如果逻辑字段指定不同于底层物理数据的数据格式,则可能有必要执行数据转换。在一个实施例中,当根据方法400构建逻辑字段的可执行查询组成部分时,对每个相应的访问方法执行初始转换。例如,可以作为步骤404、408和416的一部分或者紧接在其后执行转换。在步骤322执行查询之后,执行随后的从物理数据格式到逻辑字段格式的转换。当然,如果逻辑字段定义的格式与底层物理数据相同,则不需要转换。
[0086] 前面例子涉及医疗领域,并且关于时间、位置和年龄说明了相关属性。然而,本发明不限于此,并且可考虑向任何数据库环境和数据类型的扩展。例如,如上所述,可定义这样的相关属性,其考虑在查询操作中涉及的各个实体的其他特性,例如:颜色、重量、体积、长度、宽度等。考虑下面可为其定义对应数据抽象组件的抽象查询(表III)。
[0087] 表III-抽象查询示例
[0088]
[0089] 该抽象查询被设计成基于为地毯类型、墙纸图案和油漆类型指定的标准选择一组地毯、墙纸和油漆组合。假定这里的每个实体(地毯、墙纸和油漆)定义了“color(颜色)”的相关属性,则相关条件Span(Color)<10将所选组合限定为在颜色上类似的组合。Span(Color)的可能定义将是在红、绿和蓝含量上彼此在“n”个单位之内的颜色的RGB值。
[0090] 从而,数据存储库抽象组件148提供各种优点。在一方面,通过定义应用程序查询规范和底层数据表示之间的松散耦合来实现优点。不是采用特定表、列和关系信息对应用程序进行编码,例如使用SQL的情况,而是应用程序以更抽象的方式定义数据查询需求,然后,在运行时将这些需求绑定到特定物理数据表示。本发明的松散查询-数据耦合使得,即使修改底层数据表示或者如果要与相比于在开发请求实体时所使用的是全新的物理数据表示一起使用请求实体,请求实体(例如,应用程序)也能够工作。在修改或重构给定物理数据表示的情况下,更新对应的数据存储库抽象,以反映对底层物理数据模型做出的改变。相同的逻辑字段集可供查询使用,只是绑定于物理数据模型中的不同实体或位置。结果,即使对应的物理数据模型发生了重大的改变,针对抽象查询接口而编写的请求实体也继续不变地工作。在与开发请求实体时使用相比、与全新的物理数据表示一起使用请求实体的情况下,新的物理数据模型可使用相同的技术(例如,关系数据库)、但遵循不同的命名策略和组织信息(例如,不同的大纲)来被实现。新大纲将包含可使用简单、过滤和组合字段访问方法技术映射到应用程序所需的逻辑字段集的信息。可选地,新的物理表示可使用用于表示类似信息的可选技术(例如,使用基于XML的数据存储库,而非关系数据库系统)。在任何情况下,通过提供映射在查询中引用的字段与新物理数据模型中的位置和物理表示的可选数据存储库抽象,被编写成使用抽象查询接口的现有请求实体可以容易地移植成使用新的物理数据表示。
[0091] 此外,与抽象查询和底层数据抽象模型一起使用全局相关属性大大简化了描述包括高度数据相关和分析的复杂数据查询逻辑的任务。此外,基本数据选择逻辑与相关逻辑的分离使得有可能快速地再次使用相同的基本查询,但是采用不同的相关条件。
[0092] 关于最终用户,数据存储库抽象消除了与表达相关的数据查询相关联的大部分复杂性。具体地说,最终用户不再需要担心哪些查询选择条件支持给定相关方案,并且不再具有必须理解如何为在查询中涉及的每个新实体表达基于事件和/或基于实体(例如,基于时间、面向位置等)的逻辑的负担。
[0093] 虽然数据存储库抽象模型的使用提供了这些和其它优点,但是应当强调的是,本领域的技术人员可以容易地认识到,可以与数据存储库抽象组件148分离地实现相关属性的目的和功能。例如,实施例提供附加的元数据,以补充由基于SQL的查询实现使用的表和列信息。在这种情况下,给定列的元数据将标识诸如Age的相关属性和标识如何为在列中表示的实体计算年龄的关联SQL查询表达式。然后,SQL查询预处理器可获取初始SQL查询和一个或多个相关条件作为输入,并且以附加谓词扩增SQL查询,以考虑所提供的相关条件。这将通过扫描对支持来自该相关条件集的相关属性的列的引用、并且基于为给定列的特定相关属性的定义而定义的查询表达式生成附加的SQL WHERE子句谓词来完成。
[0094] 应当注意的是,这里对特定值、定义、编程语言和例子的任何引用仅仅为了示例说明的目的。从而,本发明不局限于任何特定说明和例子。此外,虽然本发明的各方面是参照SELECTION(选择)操作来描述的,但是也可考虑其它输入/输出操作,包括公知的操作,如ADD(添加)、MODIFY(修改)、INSERT(插入)、DELETE(删除)等。当然,特定访问方法可对抽象查询功能的类型施加限制,其中可使用利用该特定访问方法的字段来定义抽象查询功能。例如,包括组合访问方法的字段不是MODIFY、INSERT和DELETE的可行目标。
[0095] 虽然前文涉及本发明的多个实施例,但是在不脱离本发明的基本范围的情况下可以设计本发明的其它和另外实施例,并且其范围由所附权利要求确定。