首页> 中国专利> 用于XML查询的通用的输出构造器

用于XML查询的通用的输出构造器

摘要

一种可以插入到DTD中的映射语言允许从数据源到XML的自动映射。映射一方面从数据源中的实体之间的对应的建立产生,另一方面从列表与标量之间的对应的建立产生。映射语言包括两种构造:绑定规范与数值规范。数值规范与数值或选择声明相关联。绑定规范包括至少一个变量/表达式对。构造可以插入到DTD中以产生注释过的DTD。

著录项

  • 公开/公告号CN1478235A

    专利类型发明专利

  • 公开/公告日2004-02-25

    原文格式PDF

  • 申请/专利权人 国际商业机器公司;

    申请/专利号CN01817299.7

  • 发明设计人 陈世魁;骆明凌;

    申请日2001-10-02

  • 分类号G06F17/30;

  • 代理机构72001 中国专利代理(香港)有限公司;

  • 代理人吴立明;王勇

  • 地址 美国纽约州

  • 入库时间 2023-12-17 15:13:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-11-28

    未缴年费专利权终止 IPC(主分类):G06F17/30 授权公告日:20080917 终止日期:20111002 申请日:20011002

    专利权的终止

  • 2008-09-17

    授权

    授权

  • 2004-05-05

    实质审查的生效

    实质审查的生效

  • 2004-02-25

    公开

    公开

说明书

技术领域

本发明涉及信息检索和数据集成领域,更特别地涉及用于处理一个或多个可扩展标识语言(XML)查询的方法和设备。

背景技术

可扩展标识语言(XML)正在成为最重要的文档和数据表达及传输格式之一。例如,可以用XML描述商业文档以方便Internet传输和万维网访问。越来越多的用户和新应用正在开始要求它们的输入和输出为XML格式。

在98年2月10日W3C建议“可扩展标识语言(XML)1.0”中详细描述了XML。然而,这里提供了了解本发明所必需的XML的特征。

对XML文档来说,存在着文档类型定义(DTD)的概念。每个DTD描述一组(可能无限大)XML文档的结构。XML文档可以有一个相关联的DTD或者根本没有对应的DTD。当XML文档与一个DTD相关联时,它的结构必须符合该DTD的规格。如果XML文档在语法上正确并且其中的标记都正确地嵌套,这个XML文档就是“结构良好”的。如果XML文档符合一个特定的DTD,那么该文档就是“有效”的。

XML查询语言,例如XML-QL和XQL,使用户能够询问XML文档问题并且通常还以XML文档的格式返回答案。XML寻址机制,例如XPath,识别XML文档中的元素。为了讨论方便起见,我们把它们都称为XML查询语言。

目前的XML查询机制通常包含下列逻辑步骤:

    1.查询范围识别:通常有一个或多个XML文档或者一些文

档中的一个或多个XML元素被识别为在查询范围内。

    2.过滤:从查询范围选择要用作结果的数据条目。

    3.输出构造:把所选的数据条目转换并构造为某些想要的

输出格式和结构。

XML文档可以被制作成一个树,见98年10月1日W3C建议“文档对象模型(DOM)1级规范”。XML查询语言的过滤步骤通常或者标识出数据或元素列表(基于标量的过滤),或者标识出子树的列表(基于子树的过滤)。查询语言可以提供一种构造机制并在输出构造步骤中把该列表转换成一个XML文档。对子树的情况来说,每个子树都会以查询范围中某些选中的元素作为根。

当前查询机制的构造步骤是高度非结构化和特别的。一些查询语言,例如XML-QL,允许上述三个步骤嵌套或递归混合。大部分构造步骤基于XML实例而不基于DTD。这意味着这些查询的输出是“结构良好”的,但不是必定有效(符合DTD)的XML文档。

在很多情况下,有必要使一个XML查询的输出XML文档符合一个特定的DTD。在电子商务应用中,贸易伙伴可能已经对所交换的XML文档必须符合的DTD相互达成了协议。如果查询输出是有效的,其咎可以被贸易伙伴立即使用。虽然这样的任务在查询输出的特别操作过程中非常可能出现,但仍然不便并且很难确保正确性。此外,迄今为止提出的XML查询语言或表达式并没有在不同的查询语言或表达式之间进行融合。

发明内容

因此,本发明提供一种处理一个或多个可扩展标识语言(XML)查询的方法,该方法包含下列步骤:响应一个或多个XML查询,生成一个把预定的一个文档类型定义(DTD)映射到要访问的一个或多个数据源的映射构造;根据该映射构造对这一个或多个XML查询求值;生成由查询求值产生的XML文档,其中产生的XML文档符合预定的DTD。

优选地提供用于查询和访问来自诸如集成XML文档的不同数据源的数据方法和设备,以确保查询输出符合用户的DTD选择,并根据不同XML查询的组合产生XML文档。

映射构造优选地包括一个绑定规范并且一个或多个XML查询被绑定到一个或多个绑定变量。

并且优选地依照映射构造的绑定规范来对一个或多个XML查询求值并把求值结果分配到一个或多个绑定变量。

本发明优选地提供确保查询输出符合用户的DTD选择的方法和设备。下面是优先允许的内容:(i)DTD的选择;(ii)一个或多个XML查询与DTD的集成;(iii)依照所提供的算法,用XML查询所选择的数据作为XML文档的内容,自动产生符合DTD的XML文档。

应该理解可以用一种或多种XML查询语言来书写一个或多个XML查询。而且,生成的XML文档可以是与一种或多种XML查询语言相关联的多于一个XML查询的组合。产生的XML文档也可以是一个或多个XML查询以及一个或多个非XML查询的组合。此外,DTD优选地由用户指定。

在优选实施方案中,映射构造生成步骤包括下列步骤:(i)确定合适的DTD构造:(ii)把构造绑定到变量;(iii)把变量与从XML查询的范围识别和过滤阶段获得的部分XML结果关联到一起;(iv)用值函数把变量分发到合适的DTD构造。此外,该方法优选地包括从范围识别和过滤阶段接受基于标量的结果。并且还从范围识别和过滤阶段接受基于子树的结果。该方法优选地还包括把绑定在值产生函数和其它绑定函数中的至少一个当中用作参数的步骤。此外,该方法优选地还包括使用顺序级联的绑定构造解析嵌套或递归过滤查询构造的步骤。

在优选实施方案中,查询求值步骤包括组合不同的用于对来自不同XML查询语言的XML查询求值的解析和求值机制。优选地允许绑定变量用在不同查询语言的一个或多个XML查询中。此外,优选地用绑定变量作为参数对不同查询语言的一个或多个XML查询求值。

在优选实施方案中,合成XML文档生成步骤包括下列步骤:(i)从根元素递归地遍历DTD构造;和(ii)在一个解析绑定函数后把绑定变量和对XML查询求值关联在一起,直到查找到一个叶子构造,其中部分XML结果是通过对相关的值函数求值获得的。产生的XML文档优选地是在在遍历返回阶段通过添加封装了部分XML结果的XML标记而构成的。

下面将要介绍,本发明的方法学优先地使用美国序列号09/446,627(代理摘要编号YOR9-1999-0929)中所描述的DTD源注解(DTDSA)方法,该专利在1999年12月17日提交,题为“用于在数据集和XML文档之间转换的方法和设备”。在该文档上已经放置了一个副本。然而,应该理解本发明并不局限于DTDSA机制。也就是说,可以使用其它机制或方法。仅仅作为示例,可以采用IBM DB2扩展器(IBM公司,纽约Armonk),它保存了连接DTD和一个单独文件中的DB2数据库的映射信息。

在另外一方面,本发明提供用于处理一个或多个可扩展标识语言查询的设备,该方法包括下列步骤:用于响应一个或多个XML查询产生把预定的文档类型定义(DTD)映射到要访问的一个或多个数据源的映射构造的装置;依照该映射构造对一个或多个XML查询求值的装置;生成由求值结果产生的XML文档的装置,其中合成的XML文档符合预定的DTD。

然而在另外一方面,本发一种明提供用于处理一个或多个可扩展标识语言(XML)查询的产品,包括机器可读介质,该机器可读介质包含在执行时实现下列步骤的一个或多个程序:响应一个或多个XML查询产生把预定的文档类型定义(DTD)映射到要访问的一个或多个数据源的映射构造;依照该映射构造对一个或多个XML查询求值;生成由查询求值产生的XML文档,其中产生的XML文档符合预定的DTD。

然而在另一方面中,本发明提供用于处理一个或多个可扩展标识语言(XML)查询的基于计算机的设备,该设备包括:一个文档检索引擎,该引擎响应一个或多个XML查询和响应一个或多个XML查询而把预定的文档类型定义(DTD)映射到一个或多个要访问的数据源的预定的映射构造,其中文档检索引擎用于(1)依照映射构造对一个或多个XML查询求值;(2)生成从查询求值产生的XML文档,其中产生的XML文档符合预定的DTD。

下面是优选实施方案中用于XML查询的通用输出构造器提供的优点的一些实例。用户能够选择一个任意的DTD并使用该DTD给出查询输出。能够使用XPath或用户选作查询模式匹配机制的任意其它XML查询语言。优选实施方案允许相互集成多个不同或相同查询语言的查询或表达式并产生一个单独的输出XML文档。前述查询可以是相关联的。可以把XML查询和其它数据查询或访问机制(例如,结构化查询语言SQL)集成在一起以产生一个单独的XML输出文档。也可以关联前述XML查询和其它数据查询或访问命令。

附图说明

现在只以举例的形式并参考下列附图来描述本发明的优选实施方案:

图1是说明当前XML查询语言的框图;

图2是依照本发明的一种实施方案的用于XML查询的通用输出构造器的框图;

图3A和图3B是依照本发明的一种优选实施方案的说明使用DTDSA和查询生成XML的一种算法的流程图;

图4是依照本发明的一种优选实施方案的说明DTDSA中变量的关联和分发的图示;

图5是依照本发明的一种实施方案说明适合采用用于XML查询的通用输出构造器的硬件实现的框图;

图6A是说明关系模式的一个实例的图表;

图6B是说明DTD的一个实例的图表;

图6C是说明依照优选的映射语言注释的DTD的图表;

图6D是说明依据本发明的一个优选方案的特别是与图6A、6B和6C的实例有关的有向无环图;

图6E是说明根据本发明的一个优选实施方案为图6A、6B、6C和6D中所描绘的实例检索的XML文档的图表。

具体实施方式

在XML规范中使用了许多概念和构造。然而,它们中有一些是含蓄的引用而没有明确规定,其它的一些在使用时没有给定名称。为了方便说明,对这些概念和构造尤其是下表中的概念和构造进行定义并赋名。在列“给定名称”中,如果其值为“previous work”,则意味着该概念用在早期工作中,例如符合上面引用的美国序列号09/466,627中所描述的DTDSA机制,但在DTD规范中没有定义。如果其值为“XML Spec”,则意味着引用该概念,有时出现在产生式规则中,但在DTD规范中没有明确定义。有些术语是用递归方式定义的,每个术语都有一个用括号包起来的缩写。

术语定义给定名称重复符号‘?’、‘*’或‘+’Previouswork
元素名(ENAME)用在元素类型声明中的名字XML Spec选择列表(CLIST)一列由‘(’和‘)’包括并由‘|’分隔的cp,即“(cp|cp|…|cp)”XML Spec终端选择列表(TLIST)一列“#PCDATA”和ENAME,每个仅出现一次,由‘(’和‘)’包括并由‘|’分隔,即“(#PCDATA|ENAME|ENAME……|ENAME)”Previouswork序列(SEQ)一列由‘(’和‘)’包括并由‘|’分隔的cp,即“(cp|cp|…|cp)”XML Spec内容单元(CU)ENAME、CLIST、SEQ或TCLISTPreviouswork内容粒子(CP)一个后面可随意地跟重复符号的内容单元,即(Name|choice|seq)(‘?’|‘*’|‘+’)?XML spec内容规范与DTD产生式规则中的‘contentspec’匹配的部分。也就是说,该部分在DTD元素类型声明中跟在ENAME之后在‘>’之前XML Spec子内容规范(children)后面可随意地跟重复符号的选择或序列内容单元的内容规范XML Spec混合内容规范(mixed)“(#PCDATA)”子表达式,或者可跟一个‘*’重复符号的终端选择列表XML SpecPCDATA声明#PCDATAXML Spec属性定义(ATD)包括ENAME、类型(例如CDATA、ID、IDREF等)和一个缺省声明的部分XML Spec值定义PCDATA声明或属性定义Previouswork元素类型定义(ED)包括“<!ELEMENT”的部分,后跟一人ENAME、content-sepc和一个“>”Previouswork属性列表声明包括“<!ATTLIST”的部分,后跟一个ENAME、一列ATD和一个“>”Previouswork
 DTD声明元素类型声明和属性列表声明Previouswork DTD构造一个DTD声明,一个内容规范或内容规范中的一个子表达式,或者一个属性列表声明(或属性列表声明中的一个子表达式)Previouswork

另外,列变量是其值为列标识的变量。行变量是其值为一个表中的一行的变量。行变量定义在特定的表上,并且可以使有该表格中的一行作为它的值。向量变量是其值为一列对象的变量,包括值(或标量)、变量以及其它向量,由“<”和“>”包括,例如v=<100,<1,“ab”,10>,x>。

下面依照优选实施方案对本发明进行详细描述。这样的描述将说明用于对来自诸如集成XML文档的多个数据来源的数据进行查询和访问的不同方法和设备,用于确保查询输出符合用户所选的DTD,并用于根据不同XML语言的组合生成XML文档。

如上所述,在DTD和关系模式间映射的优选实施方案是DTD源注释(DTDSA),如上面引用的美国序列号09/466,627中所描述的。换句话说,DTD和关系模式之间的映射被编码在DTD中作为注释。在相关的DTD构造之后立即定义绑定和数值规范。建立DTD和下层数据之间的映射的方法是通过把数值规范与每个#PCDATA、属性定义和选择列表相关联,把绑定规范与每个以拖尾重复标号结尾的DTD构造相关联,还可以有选择地把绑定规范与其它DTD构造相关联。数值规范是包括变量的参数化的公式,其中,当用一个数据对象来替代其中的每个变量时,其产生一个文本值。绑定规范是一个变量和表达式对。表达式可以是一列数据对象、一个识别一列数据对象的公式,或者一个包含变量的参数化公式,其中,当用一个数据对象来代替其中的每个变量时,其产生一列数据对象。在下面题为“DTDSA映射”一节中提供了对本发明的优选实施方案中所用的DTDSA机制的更详细的描述。

     (a)列表产生函数L()

     函数L(XQ)采用XML查询的输出XQ,并在一个列表中返

回XQ的过滤步骤的结果。假定XQ有n个过滤变量ai,i=1,……,

n,并返回k个列表{a11,a12,………,a1n}、{a21,a22,………,

a2n}、………、{ak1,ak2,……,akn}。L(XQ)返回一列向量:

    {(a11,a12,………,a1n),(a21,a22,………,a2n),……,(ak1

ak2,……,akn)}。

如果XQ使用基于标量的过滤,每个aij是一个标量。如果XQ使用基于子树的过滤,每个aij是一个子树。

    (b)绑定规范

绑定规范的用法和语义与使用基于标量或子树过滤的XML查询

语言相同。

    给定一个DTD和一组XML查询,能够形成一个使用所选择的数

据,即,在如下查询的过滤步骤,构造有效的XML文档的DTDSA。

一个XML查询的过滤步骤与一个绑定变量相关以形成如下绑定规

范:

    ::b:=L(XQ)

    其中XQ是XML查询,b是绑定变量,ai是XQ中的过滤变量,

i=1,2,……,n。

    语义如下:

    使用这里所描述的DTDSA绑定规范语言使由L(XQ)返回的值

(向量)的列表与b相关,即这些值被依次绑定到b,带注释的DTD

构造的每个实例绑定一个值。

    绑定到b的值可以用在其它绑定规范或数值规范中。这里使用

了下面对b的引用的注释:

    b指整个向量(ai1,ai2,...ain),b.aj指绑定到b的当前向量中

的第j个字段。如果当前向量是由L(XQ)返回的列表中的第i个,

则b.aj=aij

    (c)使用基于标量的过滤的XML查询

    使用基于标量的过滤的XML查询的数值规范的用法和语义与这

里所描述的原始的DTDSA定义中的相同。

    对绑定规范来说,用法可以包括单个XML查询、多个XML查询

(相关或不相关)以及非XML查询。

    1.一个XML查询构造

    XQ用作与根元素相关联的绑定规范的绑定函数,每个DTD

构造例如#PCDATA、选择列表、CDATA或枚举类型都由一个数值

规范注释,该数值规范是b.ai或b.ai上的函数

    2.多个不相关XML查询构造:

    每个XML查询都被用作一个绑定规范的绑定函数,函数的

绑定规范。

    3.多个相关XML查询构造:

    每个XML查询都被用作一个绑定规范的绑定函数,这些函

数的绑定规范。XML的输入参数可以是b.ai的形式,其中b是

另一绑定规范的绑定变量。

    4.多个相关和不相关XML以及非XML查询的构造:

    与纯XML查询情况相同,但有些查询可以是非XML查询。

    (d)使用基于子树的过滤的XML查询

绑定规范的语法和语义保持相同。

::b:=L(XQ(C,xs))

这里b是绑定变量,XQ是一个XML查询函数,C是一个XML查询范围,xs是查询(过滤)串。

注意,这种情况下的L(XQ)返回{(a11,a12,………,a1n),(a21,a22,………,a2n),……,(ak1,ak2,……,akn)},其中每个aij是一个子树,b被依次绑定到一列子树向量。

让f()是一个将对一个或多个绑定变量的引用作为输入并返回一个子树的函数。让y=f(b1,b2,...,bm),其中bi(i=1,2,...,m)是对绑定变量的引用。例如,y可以是b.aj

(e)在数值规范中使用绑定变量

在数值规范中可能出现两种类型的函数:i.g(y)和h(b),这里g()和h()各自返回一个标量数值。ii.XQ(y,xs)和XQ(b,xs),这里XQ()是一个XML查询,xs是一个查询串。

“:g(y)”或“:h(b)”形式的数值规范注释一个#pcdata、选择列表、cdata或枚举类型,并为所注释的构造提供数值。

“:XQ(y,xs)”或“XQ(b,xs)”形式的数值规范注释一个元素E。由XQ返回的子树ST用作由优选实施方案的方法构造成的最终文档中的E的一个实例。

本发明优选地提供两种策略用于使用ST作为元素E的实例:

1.测试策略:如果ST符合由E及其后代所描述的DTD部分,就接受ST为E的一个实例。否则,就拒绝它,并且或者使用一些缺省值用于该实例或者放弃查询输出构造过程。

2.变换策略:如果ST符合由E及其后代所描述的DTD部分,就接受ST为E的一个实例。否则,用一些变换算法来把ST变换为符合E的ST’。

(f)在其它绑定规范中使用绑定变量

绑定到XML查询输出的绑定变量可以用在如下的其它绑定规范中:

::x:=L(XQ(b,xs)),或

::x:=L(XQ(f(b),xs)),或

::x:=L(XQ({f1(b1),f2(b2),...,fm(bm)},xs))

其中

xs是一个查询(过滤)串,

b,和bi(i=1,2,...,m)是绑定变量

f,和fi(i=1,2,.....,m)是采用一列子树并返回一个子树的函数

(g)为嵌套过滤/构造使用级联绑定

大多数XML查询语言允许递归定义构造和过滤阶段。让F1C1F2C2.........FnCn表示一个递归定义的查询,这里Fi是第i个过滤阶段,Ci是第i个构造阶段,i=1,2,.......n。假定F1定义a11,a12,.......,F2定义a21,a22,.......,Fn定义an1,an2,.........,在Fk中可以使用或访问aij,k>i,在Ck中,k>=i。

可以具有下级串联绑定:

::Xn:=BFn........::X2:=BF2::X1:=BF1

其中BFi是绑定函数,i=1,2,......,n,并且

BF1返回(定义)<a11,a12,....>,

BF2返回<a21,a22,.......>,

BFn返回<an1,an2,.......>,xi.aij也可以是BFk的一个参数,k>i现在参照附图,其中相同的数字代表相同或相似的元素,从图1开始,图1是描绘通用XML查询语言的三个阶段的框图。第一阶段是范围确定阶段,确定查询范围,由模块140表示。第二阶段是过滤或选择阶段,选择参与查询的数据,由模块130表示。第三阶段是构造阶段,从所选数据构造XML输出,由模块120表示。这三个阶段可以如箭头110指示用递归定义以形成嵌套的循环重复。这三个阶段的结果是一个结构良好的XML文档。

图2是依照本发明的一种实施方案说明用于XML查询的通用输出构造器方法的框图。如图所示,DTD 200可以用来自不同查询语言的不同表达式来注释,以形成指导访问和变换引擎305从不同类型的数据源获取数据的映射构造DTDSA 312。用户能够向该引擎提供输入参数310,接收一个有效的XML文档315作为输出。映射构造可以用原始的DTDSA映射表达式240、包括范围确定(模块212)和过滤(模块210)阶段的查询语言(例如,XQL 230)、包括额外的构造阶段的查询语言例如XML-QL 220)以及上述所有表达式和语言的混合体来书写。如果查询语言包括构造阶段,将忽略图1中所示作为构造阶段的第三阶段。查询语言220和230可以为访问XML存储池225和235描述映射构造,而原始的DTDSA映射表达式240可以为关系数据库系统245描述映射构造。原始的DTDSA映射表达式包括例如,如下在图6A到图6E的上下文中所说明和描述的数值规范和绑定规范。

应该理解通用输出构造器优选地由引擎305和映射框架DTDSA 312组成。然而,在替代实施方案中,通用输出构造器可以被看作只包括访问DTDSA 312的引擎305。

图3A和图3B依照优选实施方案描绘一种根据DTDSA中所包括的新的映射产生XML文档的方法。该方法利用上述带有改进的DTDSA方法,DTDSA方法用于计算绑定规范中的XML查询并把结果分配给绑定变量,如模块350所示。应该理解图3B中所示的元件可以用不同形式的硬件、软件或软硬组合来实现。优选地,这些软件用元件在一个或多个具有处理器、存储器和输入/输出接口的更适于编程的通用数字计算机上实现,图5显示了这种计算机的一个示例。

任何情况下,图3A描绘了一个表示使用DTDSA的XML合成算法的框图。文档检索和合成引擎或算法305接收输入参数名和数值对310,例如(A=1,B=100),并根据所提供的DTDSA 312生成返回XML文档315。图3B显示了算法305的内部流程图。

一开始,该算法把DTDSA 312解析成易于操作的内部格式,例如一个有向无环图,并且为环境变量准备输入参数,如模块320所示(即,读入DTDSA作为一个图结构;接受输入并加入ENV)。随后该算法在内部DTDSA结构上执行宽度优先搜索(BFS),用一个先进先出队列来跟踪访问过的结构结点集合。BFS遍历包括一个标准过程,该过程设置队列的初始值(把文档根元素和初始环境变量添加到队尾)(模块325)、重复取队列直到队列为空(模块330)并为取得的每个结点和环境变量(模块335一从队头取一个结点和ENV)执行操作(如下面的模块340所示)以产生部分XML组件并添加所有子结点(如果有的话)和新的环境变量/值到队列(模块345)。如模块340所示,对访问过的表示数据类型或属性类型的结点的操作包括:(1)用取得的环境变量/值解析在DTDSA的绑定或数值规范中定义的与数据类型和属性相关联的未绑定的变量(对未绑定变量的解析可能涉及访问数据源和预定的函数计算);(2)计算绑定规范中不同查询语言的XML查询并把结果分配到绑定变量(模块350);(3)根据当前DTDSA结点名(ENAME)作为标记以及解析后的内容作为值或属性产生部分XML组件;(4)把新产生的变量/值对添加到环境变量(ENV)。

现在参照图4,图4说明了DTDSA中变量的关联与分发。如图所示,特定实例中的DTDSA可以表示为:

<!ELEMENT PO(buyer,seller)

::x:=XML-QL/XQL/XPath/original map>

<!ELEMENT buyer(name,addr).

<!ELEMENT name(#PCDATA:x.a)>

<!ELEMENT addr(#PCDATA:x.b)>

这里‘x’是绑定变量,‘a’和‘b’是XML查询中的过滤变量,‘a’和‘b’在DTDSA被分别引用为‘x.a’和‘x.b’。关联与查询结果在其中被绑定到变量的绑定规范有关,称‘x’由数字410引用。分发与DTDSA中绑定的变量的使用有关。例如,在引用数字420处的‘x.a’取得由一个关系数据库的‘x’绑定的行中的列‘a’的值,或者由一个XML存储池的‘x’绑定的XML组件中的标记‘a’的内容。

图5是说明依照本发明的实施例的用于XML查询的通用输出构造器的硬件实现的框图。应该理解XML查询的通用输出构造器(即引擎305,优选地,DTDSA 312(图2和图3))可以实现在一个这样的计算机系统上或者多个分离的此类计算机系统上,例如以客户机-服务器关系实现。例如,引擎305可以作为用Java TM Servlet(Java以及所有基于Java的商标和标识都是Sun微系统有限公司在美国和其它国家的商标或注册商标)编写的服务器端应用程序运行,或者是由Internet浏览器执行的客户端应用程序。

如图所示,该计算机系统是依照处理器502、存储器504和I/O设备506实现的。应该注意这里所用的术语“处理器”的意图在于包括任意处理设备,例如一个包括CPU(中央处理单元)和/或其它处理电路的设备。这里所用的术语“存储器”的意图在于包括与处理器或CPU相关的存储器,例如RAM、ROM、固定存储设备(例如硬盘)、可移动存储设备(例如磁盘)、闪存,等等。另外,这里所用的术语“输入/输出设备”或“I/O设备”的意图在于包括一个或多个输入设备,例如用于输入数据到处理单元的键盘,和/或用于表示与处理单元相关的结果的一种或多种输出设备,例如CRT显示器和/或打印机。还应该理解术语“处理器”可以指多种处理设备以及可以由其它处理设备共享的与处理设备相关的多种元件。因此,包括执行这里所描述的优选实施方案的方法的指令或代码的软件部件可以存储在一个或多个相关存储设备中(例如ROM、因定或可移动存储器)并在准备使用时被部分或全部装入(例如,装入到RAM中)并由CPU执行。

DTDSA映射

如上所述,DTD和关系模式之间的映射的优选实现方法是DTD源注释(DTDSA),如上面引用的美国序列号09/466,627中所描述的那样。下面是对这种DTDSA机制的详细描述。

图6A示例性地包括四个关系表,也称为关系模式,定单(“PO”)1305、公司1310、项目1315和产品1320。

表1305有三列,订单标识符(“POID”)、买主和卖主。表中各行有数字索引值指向列的值。订单号100与买主20和卖主10相关联。

表1310有三列:公司标识(“COID”)、名称和地址(“ADDR”)。表中各行关联数字和实际的公司名称及地址。因而数字10与公司IBM相关,其地址为New York,数字20与Citibank公司相关,其地址也为New York。

表1315有三列:POID、产品标识(“PRODID”)和数量。行1330和1335关联订单标识数与产品标识号和数量。在图中,订单100与两种产品标识相关,35678和35694,对这两种产品分别订购20K和100K。

表1320有三列,PRODID、名字和描述。表中各行关联产品标识35678和“THINKPAD TM”,关联产品标识35694和服务器。

图6A中的箭头说明不同字段间的外部键关系。例如,PO中POID=100的记录1325通过箭头1340和1345与POID=100的项目表中的两个记录1330和1335有关。类似地,记录1330和1335通过箭头1350与记录1355和1360有关。

图6B显示了文档类型定义的一个示例。如上所述,XML使用DTD来规定文档。DTD非常灵活并且能够规定任意数量的不同文档。图6B只显示了一个简单的例子,其中指定了订单。

行1301显示了变量PO的定义。在类树方式中,该定义引入了子定义,即“id”定义在行1302、“buyer”定义在行1303、“seller”定义在行1304、“lineitem”定义在行1307。1320上“lineitem”后的星号表示这个特性可以在订单中重复任意多次。“id”1302、“address”1311、“prodname”1308和“amount”1310的定义使用#PCDATA命令从数据存储设备直接获得数据。“buyer”和“seller”的定义在1323和1324上有属性列表。Lineitem的定义还引入了子定义,行1308上的“prodname”和行1310上的“amount”。

图6B是根据图6A中的关系模式进行注解的,并且产生的带注释的DTD(DTDSA)被描绘在图6C中。图6C显示了依照优选的映射语言,即:DTDSA注释的DTD。优选的映射语言包括两种构造:绑定规范和数值规范。

图6D显示了特别与图6A、6B和6C中的实例有关的有向无环图。根据BFS遍历顺序发生一系列分解。图6的数字1905、1910、1915、1920、1935和1945处的分解分别对应于图6C的数字1505、1510、1515、1520、1525、1535和1545处的绑定/数值规范。用x=100的数字1510处的绑定规范的解析涉及poid=100的表PO访问并导入记录r<100,20,10>,如1910所示。1505中的绑定规范使用记录r来导出它的第三个参数,PO.poid(r)为100,对w,即行(lineitem,poid,100)的解析需要它。既然在表lineitem中有两个POID=100的记录,如图6A中的数字1330和1335所示,w被分配两个记录,如数字1905所示。这样的绑定可以用来导出由“*”和“+”标记的边导出一种数据类型的多次出现,如数字1902所示。变量w的两个记录可以用来导出两个XML组件项目,如数字1925所示。也可以类似地导出具有数值规范的属性值。例如,如数字1920所示,数据类型buyer的带有前缀@的属性名可以通过从用数字1935所示的r导出数字1535处的绑定规范来得到解析过的值s。

图6E显示了为图6A、6B、6C和6D中的实例所获得的XML文档。根据输入x=100,该文档是一个ID为100的PO。共取得并组成了两个项目,如2010和2015所示。还显示了属性,如2005和2010所示。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号