CN1997995B - 使用转换有效评估查询 - Google Patents

使用转换有效评估查询 Download PDF

Info

Publication number
CN1997995B
CN1997995B CN2005800208780A CN200580020878A CN1997995B CN 1997995 B CN1997995 B CN 1997995B CN 2005800208780 A CN2005800208780 A CN 2005800208780A CN 200580020878 A CN200580020878 A CN 200580020878A CN 1997995 B CN1997995 B CN 1997995B
Authority
CN
China
Prior art keywords
abstract syntax
sql
xquery
internal memory
expression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN2005800208780A
Other languages
English (en)
Other versions
CN1997995A (zh
Inventor
刘振华
穆拉利达尔·克里希纳普拉萨德
阿南德·马尼库蒂
詹姆士·沃纳
张辉
维卡斯·阿罗拉
苏珊·M·科佐沃洛斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/948,523 external-priority patent/US7516121B2/en
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN1997995A publication Critical patent/CN1997995A/zh
Application granted granted Critical
Publication of CN1997995B publication Critical patent/CN1997995B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/83Querying
    • G06F16/835Query processing
    • G06F16/8358Query translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database

Abstract

提供了一种用于处理查询的技术,包括:接收查询,其中,查询指定特定操作;确定查询包括使用第一查询语言的第一部分和使用第二查询语言的第二部分;为第一部分生成第一内存中表示;为第二部分生成第二内存中表示;基于第一内存中表示和第二内存中表示生成第三内存中表示;并且基于第三内存中表示执行特定操作。

Description

使用转换有效评估查询
技术领域
本发明涉及查询处理。更具体地,本发明涉及使用转换(translation)有效评估查询。
背景技术
在这部分所描述的方法可以被推行,但未必是先前构想或推行的方法。因此,除非在此另外指出,否则在这部分所描述的方法不是该申请的权利要求的现有技术,并且也不承认为包含在该部分的现有技术。
关系数据库管理系统(RDBMS)将信息存储在表中,其中,每条数据存储在特定的行和列。在给定行中的信息通常与特定对象相关,并且在给定列中的信息通常涉及信息的特定目录。例如,表的每行可对应于特定的雇员,表的各列可对应于雇员名字、雇员社会安全号,以及雇员薪水。
用户通过与数据库应用程序进行交互来从数据库检索信息并对数据库进行更新。用户动作通过数据库应用程序被转换为查询。数据库应用程序将查询提交给数据库服务器。数据库服务器通过访问在查询中指定的表对查询作出响应,以确定存储在表中的哪个信息满足该查询。通过数据库服务器检索满足查询的信息并将其传输至数据库应用程序。可选地,用户可通过使用命令行或图形界面构造查询并将查询直接提交给数据库服务器来直接向数据库服务器请求信息。
提交给数据库服务器的查询必须遵守特定查询语言的语法规则。一种流行的查询语言,即,通常所说的结构化查询语言(SQL),为用户提供了指定将要被检索信息的多种方式。另一种基于可扩展标记语言(XML)的查询是XML查询语言(XQuery)。XML查询语言可具有多种语法表示(syntactic representation)。例如,其中一个是人可读的版本,以及另一个是XML表示(XQueryX)。在www.w3.org/TR/xquery处的2004年7月23日的“XQuery 1.0:AnXML Query Language”W3C工作草案中描述了XQuery。在www.w3.org/TR/xqueryx处的2003年12月19日的“XML Syntax forXQuery 1.0(XQueryX).”W3C工作草案中描述了XQueryX。在www.w3.org/TR/xpath20处的2003年11月12日的“XML PathLanguage(XPath)2.0.”W3C工作草案中描述了另一种相关技术XPath。XQuery和XQueryX可使用用于路径遍历的XPath。
为了在RDBMS中实施XQuery支持,一种被称作协处理器方法的方法将通用XQuery处理器嵌入到RDBMS引擎中,并且使XQuery处理器代表RDBMS SQL处理器执行XQuery。协处理器方法使SQL处理器将XQuery协处理器看作黑箱。在执行SQL语句期间,SQL处理器通过传递查询的XQuery部分的文本以及必要的XML值作为XQuery处理器的输入来处理查询的XQuery部分。然后,XQuery处理器将处理查询的XQuery部分的结果返回给SQL处理器,并且SQL处理器执行任何其他由查询所指定的适当操作。
协处理器方法具有许多问题.首先,XQuery处理器不知道用于存储XML数据的任何底层技术.因此,XQuery处理器需要完全物化的XML作为输入.因此,必须由RDBMS构造或物化XQuery处理器所需的XML输入.通常XQuery所需要的XML输入存储在数据库中并且可被“撕碎(shred)”成一个或部分XML元素,并且那些XML元素可存储在一个或多个关系或对象关系表中.在这些条件下,物化XML数据的过程是耗费时间和资源的,因此使得协处理方法效率低下.
协处理方法的第二个问题是引入的查询的XQuery部分不能使用引入的查询的SQL部分来进行优化(反之亦然)。具体地,XQuery处理器不能优化查询的SQL部分;并且SQL处理器不能优化查询的XQuery部分。因此,查询的SQL部分和XQuery部分被分别优化(如果完全的话),这不是最理想的。另外,查询XQuery部分中所需数据的底层存储将以不同于XML的形式存储(例如,被分成多个XMLType列)。由于XQuery处理器不知道底层数据存储的形式,所以XQuery处理器不能基于存储信息来最优化XQuery操作的执行。
当XQuery处理器被调用多次时,出现协处理器的第三个问题,在原始查询中第一XQuery的输出变成第二XQuery的输入。例如,在第一XQuery的输出必须作为输入传递给第二XQuery的情况下,第一XQuery的输出必须生成为XML。这要求在确定第一XQuery的结果后,XQuery处理器必须在XML文档中将结果物化为XML,并且将XML文档发送至SQL处理器。然后,SQL处理器将XML文档连同第二XQuery一起传递回XQuery处理器。然后,XQuery处理器将检索和处理与XML文档在一起的第二XQuery。这构成了大量的浪费通信和计算步骤以及浪费的带宽。
因此,显然需要克服上述协处理器方法不足的技术。
附图说明
通过附图中的实例示出了本发明,但不是为了限制本发明,其中,相同的参考标号表示相似的元件,其中:
图1是描述用于使用转换有效评估查询的系统框图。
图2是描述用于使用转换有效评估查询的过程的流程图。
图3是示出可以实施本发明实施例的计算机系统的框图。
具体实施方式
描述了用于使用转换有效评估查询的技术。在以下的描述中,为了说明的目的,阐述了许多具体细节以提供对本发明的透彻理解。然而,显而易见,没有这些具体细节也可以实施本发明。在其他实例中,众所周知的结构和器件以框图的形式示出,以避免不必要地使本发明不清楚。
1.0绪论
此处描述的技术决不限于任何特定实施例或实施例的方面。此处所描述的技术的一个实例实施例是接收SQL、XQuery、和XQueryX形式的查询的数据库服务器。描述该实施例只是为了说明性的目的。
当数据库服务器接收查询时,其确定查询的任何部分是否使用不同于SQL的查询语言(例如,XQuery或XQueryX)。对于每个这样的部分,数据库服务器解析该部分并将其编译为关于非SQL查询语言的抽象语法形式的抽象语法树(AST)。这里,将这样的AST称作“非SQL AST”或称作关于特定查询语言的AST,例如XQuery AST.然后,将非SQLAST转换为关于SQL的抽象语法形式的AST.这里,这种AST被称作“SQLAST”.对非SQL查询语言(例如,XQuery或XQueryX)形式的查询的每部分重复该过程.SQL形式的查询的每部分也被编译成SQL AST。然后,数据库服务器合并对应于查询的每部分的所有AST。然后,能够最优化并执行合并的AST或将其存储起来用于以后执行。
此处描述的技术至少应用于具有一种或多种说明性查询语言形式的查询的一个或多个部分的查询。说明性查询语言使得能够指定将要从数据源中检索的信息,而不需要指定怎样检索信息。
2.0XML数据库操作
一些RDBMS和对象-关系数据库系统(ORDBMS)支持“XML”或“XMLType”作为原始数据类型。使用XMLType,用户可通过使用XML表或表的XMLType列将XML文档存储在数据库中。此外,用户可通过使用SQL/XML出版函数(publishing function)(例如,XMLElement、XMLConcat等)将其关系数据转换为XMLType视图。XQuery可通过诸如XMLQuery的函数(其能够对XMLType值进行查询)用在SQL中。XMLTable函数使得能够将XML值(可能来自一个或多个XMLType列或从XQuery返回的值)转换为虚拟关系表。考虑称作“purchaseOrder”的表是XMLType表的实例,其中,每行存储purchaseOrder XML文档实例。每个XML文档实例具有类似于以下的内容。
<PurchaseOrder>
 <ShippingAddress>345,35 Ave,Berkeley,CA 94613<ShippingAddress>
 <items>
 <lineitem><name>XQueryBook</name><price>46</price></lineitem>
 <lineitem><name>SQL/XML
 Guide</name><price>78</price><lineitem>
    </items>
  </PurchaseOrder>
下列SQL语句(XQuery嵌入在XMLQuery函数中)发现所有purchaseOrder XML文档实例(具有价格高于四十五的购买物品)的ShippingAddress:
select xmlquery(‘for $i in/PurchaseOrder where $i/items/lineitem/price>
45 return $i/ShippingAddress’passing value(p)returning content)
from purchaserOrder p;
这是一个通过XMLTable构造将XML文档实例转换为关系表的实例:
select xt.name,xt.price
from purchaseOrder p,xmltable(‘/PurchaseOrder/items/lineitem’passing
value(p)
                                 columns
                                     name varchar2(20)path‘name’,
                                     price number path‘price’)xt;
3.0系统综述
图1是描述用于使用转换有效评估查询的系统框图。
图1中示出的系统包括数据库服务器150。数据库服务器150是逻辑机。数据库服务器150包括非SQL解析器(parser)单元110a、SQL解析器单元110b、编译器单元120、转换器单元130、以及进一步查询处理单元140。单元110a、110b、120、130和140中的每一个均可以为逻辑机。每个逻辑机可在单独的物理计算机上运行或者可在与一个或多个其它逻辑机相同的物理计算机上运行。在下面题为硬件综述的部分详细描述计算机以及其他物理机和逻辑机的各种实施例。在一个实施例中,单元110-140中的每一个均是运行在一个或多个计算机上的一个或多个处理器上的软件单元,并且那些在一个或多个计算机上的一个或多个处理器组成了数据库服务器150。数据库服务器150可包括此处未描述的其他软件单元。单元110-140均可为同一软件程序的一部分或者可为分离的软件程序的一部分。也就是说,单独的软件程序可执行单元110-140中两个或多个的功能。可选地,第一软件程序可执行用于特定单元110-140的一些函数,以及第二软件单元可执行用于特定单元110-140的其他函数。
非SQL分析器单元110a将非SQL查询或查询的一部分作为输入,并将其转换为第二表示(representation)(例如SQL)。例如,非SQL解析器单元110a可为XQuery解析器单元110a,其将XQuery查询作为输入,并将其转换为XQueryX表示。编译器单元120将查询作为输入并生成查询的内存中表示(in-memory representation)。例如,编译器单元120可将XQueryX查询作为输入并将其编译为XQuery AST。在一个实施例中,编译器单元可将输入查询视为使用一种以上的查询语言,并且每种查询语言的查询被编译为内存中表示的不同格式。例如,SQL查询可被编译为SQL AST,而XQueryX查询可被编译为XQuery AST。可选地,一种或多种不同查询语言的查询可被编译为与内存中表示类似或相同的格式。在可选实施例中,存在用于每种查询语言的分离的解析器单元110a和110b以及编译器单元120。例如,可能存在XQuery分析器单元110a和SQL分析器单元110b。
转换单元130在内存中表示的各种格式中转换。例如,转换器单元130可将XQuery AST转换为等效SQL AST,反之亦然。
进一步查询处理单元140将内存中表示作为输入,并且基于查询的内存中表示来提供查询优化、存储、和/或查询的执行。进一步查询处理单元140还可执行以下步骤:将查询或查询一部分的一个或多个内存中表示进行合并,以及基于合并的内存中表示执行查询优化、存储、和/或查询或多个查询的执行。
数据库服务器150通信地连接到数据库160。数据库160可为关系数据库、面向对象的数据库、文件、储存库、或存储在机器可读介质上的任何形式的结构化数据。数据库服务器150可基于由编译器单元120、转换器单元130、或进一步查询处理单元140所生成的内存中表示来执行(例如,使用进一步查询处理单元140)对数据库160的查询所需的特定操作。在各个实施例中,通过光、红外、或无线电信号传输、直接电缆连接、无线网络、局域网(LAN)、广域网(WAN)、无线局域网(WLAN)、互联网、或任何适当的通信机制来实现连接。
4.0功能综述
图2是描述使用转换有效评估查询的过程的流程图。
在步骤205中,接收查询.该查询可以为任何适当的格式.例如,该查询可以为SQL、XQuery、或XQueryX的形式.该查询还可使用用于寻址标记语言文档一部分的语言,例如XPath.该查询可包含一个或多个“部分”.每一部分可使用与每个其他部分不同的格式.例如,在图1中,数据库服务器150可接收包含SQL和XQuery部分的查询:
select xmlquery(‘for $i in/PurchaseOrder where $i/items/lineitem/price>
45 return $i/ShippingAddress’passing value(p)returning content)
from purchaserOrder p;
其中,查询的外部为SQL的形式,在xmlquery(...)内的查询部分为XQuery的形式。查询还可为单一格式。
在步骤207中,为了检测是否有查询的部分为一种或多种查询语言形式而处理查询。一旦在步骤207中检测到查询的部分,则执行检查以确定查询是否包含XQuery(步骤210)或SQL(步骤230)。在其他实施例中,将执行其他检查以确定查询是否包含其他特定查询语言(例如,XQueryX)形式的语句,并且对于那些其他查询语言形式的查询,来执行类似于用于XQuery(步骤210-225)或SQL(步骤230-245)的那些步骤。
在步骤210中,执行检查以确定查询是否包含XQuery。检测查询包含将要以XQuery执行的操作可包括搜索并发现XQuery指示器或函数调用。例如,非SQL解析器单元110a可解析查询并检测XMLQuery函数,从而确定包含在括号中的查询为XQuery格式。在各个实施例中,步骤210还包括确定查询是否包含XQueryX或XPath,并且对找到的任何XQueryX或XPath查询或子查询执行后续步骤220-225。
如果查询不包含XQuery,则执行步骤242。步骤242在下面描述。可选地,如果查询不包含XQuery或SQL语句,而且只包含数据库服务器150不能识别的元素,则可向查询提交器或系统管理程序发送消息指示查询格式不可识别。
如果查询包含XQuery,则在步骤220中,解析查询的XQuery部分并将其编译为XQuery AST。可使用任何适当的解析器解析查询的XQuery部分。然后,解析的XQuery被编译为XQuery的内存中表示。以和后面步骤兼容的方式安排查询的XQuery部分的内存中表示的格式。此处描述的技术不限于任何特定的内存中表示。此处描述的实例将使用抽象语法树。AST捕获查询的语义同时去除语法细节。
XQuery形式的查询部分的AST将使用关于XQuery的特定抽象语法。在步骤225中,查询的XQuery部分的XQuery AST被转换为关于SQL的特定抽象语法形式的等效SQL AST。依次转换AST中的每一项。在一个实施例中,在AST的“叶”或最深级别的元素从XQery相关的抽象语法转换为SQL相关的抽象语法。然后转换次最低级别上的节点。从底向上一次一级的处理AST的“较高”级。可选地,转换AST叶的一个或多个,并且一旦转换了AST中这些叶的子节点则转换这些叶的父节点。在题为XQuery转换的部分以及在‘706中给出XQuery语句被转换为哪种SQL语句的细节。一旦XQuery被转换为等效SQL AST,则在步骤245中等效SQL AST可稍后与任何其他SQL AST合并(下面描述)。
在执行步骤225之后,然后,在步骤242中,执行检查以确定是否需要处理查询的任何其他部分.如果需要处理查询的更多部分,则执行步骤207.可选地,如果需要处理查询的更多部分,则可以执行步骤210或230.如果没有查询的更多部分需要处理,则执行步骤245.通常,可处理使用数据库服务器150支持的语言的原始查询的任何部分.例如,如果查询具有第一XQuery部分、第二XQuery部分、以及SQL部分,则对于第一XQuery部分和第二XQuery部分的每一个执行步骤210-225,并且对于查询的SQL部分执行步骤230-240.然后合并查询的编译部分(下面参照步骤245-255进行描述).
在步骤230中,执行检查以确定查询是否包含SQL。例如,SQL解析器单元110b可以解析查询(在步骤207中)并且检测查询的SQL部分,从而确定查询包含SQL(在步骤230中)。如果查询不包含SQL,则执行步骤242。步骤242在上面进行了描述。如果查询包含SQL,则在步骤240中,查询的SQL部分被解析并被编译为SQL AST。上面关于步骤220给出了解析和编译XQuery形式的查询的各个实施例。用于解析和编译SQL(或任何查询语言)形式的查询的技术类似于对XQuery所描述的那些,但可使用用于解析的SQL解析器和SQL语法规则。所得到的内存中表示(例如,SQLAST)包含关于SQL的抽象语法的查询的SQL部分的语义。
在执行步骤240之后,随后在步骤242中,执行检查以确定是否需要处理查询的任何其它部分。一旦查询的任何XQuery部分被解析、编译、转换为SQL AST,并且查询的任何SQL部分已经被解析和编译为SQL AST,则在步骤245中,代表查询不同部分的AST可被合并。合并AST可包括形成用于查询的新AST,并且指向或复制代表查询不同部分的AST。可选地,代表查询不同部分的一个或多个AST可指向或合并代表查询不同部分的一个或多个其他AST。合并的AST使用SQL相关的抽象语法并且代表整个查询。例如,在图1中,进一步查询处理单元140合并在步骤225和240中生成的AST。
在步骤250中,合并的AST用作最优化查询的基础。由于整个查询以单一的抽象语法表示,所以任何适当的单一抽象语法最优化技术可用于最优化查询。在步骤255中,最优化的查询被执行或存储起来用于以后执行。
此处所描述的技术的各个实施例使得能够基于单一抽象语法的AST存储或执行包含多种查询语言形式的子查询的查询。这些技术的实施例的优点之一是:由于代表查询的AST使用单一抽象语法,所以整个查询可被最优化,就好像它最初以单一查询语言写成。
此处所描述技术的各个实施例能够使查询以第一查询语言(例如,XQuery)形式到达,并且使查询被处理并转换为第二查询语言的等效形式(例如,SQL)。当第二查询语言可用的处理或最优化技术在某些方面优于第一查询语言时,这可能是有利的。例如,考虑没有XQuery优化程序,但却具有SQL查询优化程序的系统。使用此处描述的技术,如果查询以XQuery格式到达,则可以处理查询,并且可生成SQL AST。然后,可以使用SQL查询优化程序来最优化SQL AST。然后,可以代替原始XQuery来执行优化的等效查询(如由最优化SQL AST所表示),从而节省查询处理时间。
在此处论述的实例中,数据库服务器150接收非SQL查询或查询的一部分,并将它们转换为SQL。然而,此处描述的技术不限于这样的实施例。例如,在其他实施例中,在数据库应用程序和数据库服务器150之间充当中间件的中间层服务器可执行如这里所述的转换。然后,转换的SQL查询将被发送至数据库服务器150并在其上执行。
就从一种抽象语法到另一种的转换而论提出此处所描述的技术。在此处所描述的技术的其他实施例中,使用第一语法(例如,XQuery)的查询的部分在被编译为抽象语法之前,可被转换为第二语法(例如,SQL)。
5.0XQUERY转换
如上所述,此处描述的技术用于将一种抽象语法的AST转换为另一种抽象语法的AST。下面是对在XQuery AST和SQL AST之间转换的描述。
5.1表达式转换
XQuery表达式被重写为其等效SQL表达式。例如,XQuery的文字映射为SQL的字符串或数值文字(OPNTSTR)。下面的表列出了通用表达式到其SQL当量(equivalent)的映射。部分5.2描述了单个XQuery运算符和函数到SQL运算符的映射。
5.1.1有效布尔值
在下列类型的表达式的处理期间,隐含地计算序列的有效布尔值(EFB):
·逻辑表达式(and,or)
·fn:not函数
·FLWOR表达式的WHERE子句
·谓词(predicates)的特定类型,例如,a[b]
·条件表达式(if)
·量化表达式(some,every)
在下列情况下,有效布尔值返回“false(假)”。否则其返回“true(真)”。
·空序列
·布尔值为假
·类型xs的零长度值:string(字符串)或xdt:untypedAtomic
·等于零的数值
·xs:double(双精度型)或xs:float(浮点值)NaN
实例规则:为将EFB(expr)映射到SQL,应用下列规则:
I)将expr转换为其SQL当量。
II)如果expr的静态类型显示量词为1(即,单个expr)则
i.如果类型是布尔型并且SQL类型也是布尔型(即,其被映射到逻辑运算符之一),则什么也不做
ii.如果类型是布尔型并且SQL类型是数值,则加上IS NOTNULL(case<expr>when 1 then 1 else null)
iii.如果类型是数值则加上IS NOT NULL(case<expr>when 0 then 0 when NaN then 0 else 1)
iv.如果类型是任何其他标量,则加上IS NOT NULL(expr)
III)如果expr的静态类型显示量词为*或+,则
i.如果类型是数值或布尔型-将集合转换为子查询并且在上面加上下列子查询表达式-EXISTS(select*from(select count(*)cnt,sum(value(p))sm from table(xmlsequence(<expr>))x where(x.cnt=1 and x.sm=1)or(x.cnt>1))
ii.对于所有其他类型,在<expr>为非子查询操作数的情况下将其映射为IS NOT NULL(<expr>),或者如果expr为SQL子查询则将其映射为EXISTS(<expr>)。
5.1.2值的原子化
在许多地方需要原子化(atomization)和转换为标量值。通过静态类型分析来确定原子化。在XQuery中,使用fn:data()函数来表示。
fn:data()函数的结果是通过将以下规则应用到输入序列中每一项而生成的原子值(atomic value)序列。
·如果该项是原子值,则返回原子值
·如果项是节点,则返回其类型值
原子化用于处理下列类型的表达式:
·算术表达式
·比较表达式
·函数调用和返回
·Cast(转换)表达式
·计算元素和属性构造器
当重写原子化时,如果底层SQL对象是XMType(或节点),则OPTXT2SQLT运算符用于将节点值转换为等效SQL类型。
实例规则:每当需要原子化并且底层SQL对象类型不是标量时,就添加具有期望类型的OPTXT2SQLT运算符。OPTXT2SQLT获取输入XML和SQL类型以转换结果并且将值原子化为结果。
5.1.3文字表达式
XQuery的文字表达式被转换为SQL文字。布尔型被映射为数字0&1。例如,表达式“1”被映射为具有值“1”的STRTCONS。数值文字被映射为类型NUMBER的SQL文字,以及字符串文字被映射为具有类型VARCHAR2的SQL文字。
实例规则:将XQuery文字映射为具有适当类型信息的SQL文字。在字符串文字的情况下,如果它>4k,则映射为一组concat操作,其中empty_clob在开头。
Big_String_Literal->empty_clob()||4kliteral1||4kliteral2...||literalnOPTTCA(OPTTCA(OPTTCA(OPTECLOB,literal1),literal2),...literaln)
5.1.4内置类型构造器,CAST表达式
XQuery CAST和类型构造器被映射到SQL TO_CHAR、TO_NUMBER和XMLCast。XMLCast用于显式地转换到用户定义的简单类型(例如,hatsize),并且用于将简单标量类型转换为XML值(用于进入函数等...)
下表解释了XML数据类型到其当量的映射。构造器列用于检查值的有效性(例如,字节可能<127且大于-128)。如果静态类型表明表达式是正确类型(或子类型),则可能不需要构造器。可以执行常数合并(constant folding)以除去构造器。
实例规则:检查要转换的数据类型。如果输入是常量,则检查边界,以及如果合适的话引发错误。否则,如果其为数值数据类型,则添加TO_NUMBER和边界检查。如果其为数据类型,则将其转换为具有适当格式的TIMESTAMP_TZ。
  XML数据类型   SQL数据类型   SQL转换实例
  xs:integer(整数)_   NUMBER   TO_NUMBER(<expr>)
  xs:positiveInteger(正整数)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_POSITIVEINTEGER)
  XML数据类型   SQL数据类型   SQL转换实例
  xs:negativeInteger(负整数)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_NEGATIVEINTEGER)
  xs:nonPositiveInteger(非正整数)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_NONPOSITIVEINTEGER)
  xs:nonNegativeInteger(非负整数)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_NONNEGATIVEINTEGER)
  xs:int(整数)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_INT)
  xs:short(短整型)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_SHORT)
  xs:double(双精度)   BINARY_DOUBLE   TO_BINARY_DOUBLE(<expr>)
  xs:float(浮点数)   BINARY_FLOAT   TO_BINARY_FLOAR(<expr>)
  xs:byte(字节)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_BYTE)
  xs:string(字符串)   VARchar2/CLOB   TO_char(<expr>)
  xs:unsignedByte(无符号字节)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_UNSIGNEDBYTE)
  xs:unsignedShort(无符号短整型)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_UNSIGNEDSHORT)
  xs:unsignedInt(无符号整数)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_UNSIGNEDINT)
  xs:long(长整型)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_LONG)
  xs:unsignedLong(无符号长整型)   NUMBER   OPTXMLCNV(TO_NUMBER(<expr>),QMTXT_UNSIGNEDLONG)
  xs:decimal(十进制)   NUMBER   TO_NUMBER(<expr>)
  xs:Boolean(布尔型)   NUMBER   Case<expr>when null then 0 when 0 then 0whenNaN then 0 else 1
  xs:base64Binary   RAW/BLOB   OPTXMLCNV(<expr>,QMTXT_BASE64BINARY)
  XML数据类型   SQL数据类型   SQL转换实例
  xs:hexBinary   RAW/BLOB   OPTXMLCNV(<expr>,QMTXT_HEXBINARY)
  xs:dateTime   TIMESTAMP_TZ   OPTXMLCNV(<expr>,QMTXT_DATETIMETZ)
  xs:time(时间)   TIMESTAMP_TZ   OPTXMLCNV(<expr>,QMTXT_TIMETZ)
  xs:date(日期)   TIMESTAMP_TZ   OPTXMLCNV(<expr>,QMTXT_DATETZ)
  xs:gday   TIMESTAMP_TZ   OPTXMLCNV(<expr>,QMTXT_GDAYTZ)
  xs:gMonth   TIMESTAMP_TZ   OPTXMLCNV(<expr>,QMTXT_GMONTHTZ)
  xs:GYearMonth   TIMESTAMP_TZ   OPTXMLCNV(<expr>,
  QMTXT_GYEARMONTHTZ)
 xs:GMonthDay   TIMESTAMP_TZ   OPTXMLCNV(<expr>,QMTXT_GMONTHDAYTZ)
 xs:gYear   TIMESTAMP_TZ   OPTXMLCNV(<expr>,QMTXT_GYEARTZ)
5.1.5序列构造器
XMLConcat()用于连接序列。然而,需要XML构造器来将标量值转换为XMLType。例如,序列构造器(1,2,3)被映射为XMLConcat(XMLCast(1),XMLCast(2),XMLCast(3))。
实例规则:迭代序列构造器的所有输入。对于每个表达式,将其转换为它的SQL当量。如果结果类型是简单标量(simple scalar),则在其上面添加XMLCast操作数。创建XMLConcat()以将结果连接为单XMLType。
5.1.6范围表达式
可通过使用OPTXNRNG()来处理范围表达式。参见运算符列表中的范围运算符。该范围运算符返回包含整数列的XMLType。
实例规则:映射到OPTXNRNG运算符。
5.1.7集合表达式(UNION、INTERSECT、MINUS、EXCEPT)
在值的并集的情况下,将集合操作变换为值操作。如果可将XMLType(Seq)映射到SQL UNION、INTERSECT、MINUS、和/或EXCEPT构造,那么这样做可以消除节点中的副本。
实例规则:将集合表达式映射到SQL UNION、INTERSECT、MINUS和EXCEPT构造。对XMLType使用排序/映射方法以执行节点等级操作。
5.1.8算术表达式
静态型别(static typing)确保输入可为数值或原子化(atomization)并且添加类型转换。转换仅仅将其转换为SQL算术表达式。
实例规则:将XQuery算术表达式转换为其SQL当量。参见用于各种运算符详细映射的运算符表。
5.1.9值比较表达式
静态型别确保输入可为标量值或原子化并且添加类型转换。转换仅仅将其转换为SQL比较表达式。
实例规则:将XQuery比较表达式转换为其SQL当量。参见用于各种运算符详细映射的运算符表。
5.1.10常规比较表达式
如果可能的话,静态类型检查可将任何常规比较表达式转换为值比较。如果两侧都是非集合值并且类型兼容,则将它们转换为值比较。例如,如果$po/PoNo的类型量词不是集合(*,+等),则表达式$po/PoNo=21可被转换为$po/PoNo eq 21。
如果两侧的静态类型信息都是已知的可兼容标量类型(例如,整数*),则将它们映射到EXISTS子查询。例如,$po//LineItems=21可被映射到EXISTS(select*fromTABLE(XMLSEQUENCE(<xpath-conv-for $po//LineItems>))x wherevalue(x)=21)。
如果静态类型未知(untypedAtomic*),则使用等效常规比较运算符。
实例规则:给定expr1 GCOMP expr2,检查两个表达式的静态类型的兼容性。
·如果两侧的类型都是untypedAtomic,则将它们都转换为VARCHAR2类型。
·如果一侧是untypedAtomic,而另一侧是数值,则将untypedAtomic值转换为BINARY_DOUBLE。
现在检查量词的类型(例如,量词(整数*)是*)。例如:
·如果两侧的量词是单元素(空或?),则将GCOMP映射到SQL值比较运算符。
·如果expr1量词类型是集合(*或+)并且expr2量词是单元素,则映射到
EXISTS(select null from TABLE(XMLSEQUENCE(expr1)x
           Where value(x)VCOMP expr2)(VCOMP
是值比较当量)
例如,$po//LineItemNo<20变为(假定
$po//LineItemNo的静态类型是整数*)
            EXISTS(select null from
TABLE(XMLSEQUENCE($po//LineItemNo)x
                   Where value(x)<20)
·如果expr2量词类型是集合(*或+)并且expr1量词是单元素,则映射到
EXISTS(select null from TABLE(XMLSEQUENCE(expr2)x
                 Where expr1 VCOMP value(x))
(VCOMP是值比较当量)
例如,20<$po//LineItemNo变为(假定
$po//LineItemNo的静态类型是整数*)
            EXISTS(select null from
TABLE(XMLSEQUENCE($po//LineItemNo)x
                             Where 20<value(x))
·如果两个表达式都是集合,则将表达式映射为
EXISTS(select null from TABLE(XMLSEQUENCE(expr1)x
            Where EXISTS(select null from
TABLE(XMLSEQUENCE(expr2)y
                  Where value(x)VCOMP value(y)))
例如,$po1//LineItemNo<$po2//LineItemNo变为
EXISTS(select null from
TABLE(XMLSEQUENCE($po1//LineItemNo)x
            Where EXISTS(select null from
TABLE(XMLSEQUENCE($po2//LineItemNo)y
                  Where value(x)<value(y)))
5.1.11节点比较表达式
通过使用对XMLType的排序方法来处理节点比较。它们被映射到SQL值比较运算符。
实例规则:如这里所述地映射到SQL值比较运算符。
5.1.12排序比较表达式
排序比较表达式用于FLWOR order by子句。这些被映射到SQLorder by子句表达式。
实例规则:将排序比较表达式映射到SQL order by子句。
5.1.13逻辑表达式(AND、OR、NOT)
XML逻辑表达式被映射到SQL逻辑表达式。SQL具有三值逻辑,但是空序列被映射到NULL,并且这对于非约束操作起作用。约束可能是重要问题,由于来自约束的NULL值被看作与约束相匹配。
实例规则:将逻辑表达式映射到SQL逻辑表达式(AND、OR)。在逻辑表达式作为顶级表达式(在WHERE子句或IF子句外)的情况下,向结果添加CASE表达式。例如,如果查询为表达式“a<20and b>30”,则将其映射到CASE WHEN(a<20 and b>30)then 1else 0。
5.1.14FLWOR表达式
FLWOR表达式被映射为SQL选择表达式。在SQL查询中,LET子句被映射为公共子表达式。for子句的RHS被映射到from子句,where子句被映射到SQL where子句,以及return子句被映射到SQL select子句。如果要将节点标识保存在查询中,则查询框被标记为NO_MERGE。
for<var>  in<rhs-expr1>,
    <var2>in<rhs-expr2>
where<cond-expression>
order by<o1>,<o2>..<on>
return<ret-expr>
被映射到
select/*+NO_MERGE*/XMLAGG(<sql-ret-expr>)
from TABLE(XMLSEQUENCE(<sql-rhs-expr1>)as“var1”
     TABLE(XMLSEQUENCE(<sql-rhs-expr2>)as“var2”
where<sql-cond>
order by<sql-o1>,<sql-o2>,..<sql-on>
实例1:简单FLWOR子句
for $i in(1,2,3)
where $i>1
return $i+2
被映射到
select xmlagg(XMLCast(XMLCast(value(“$i”)as number)+1 as xml))
from table(xmlsequence(xmlconcat(cast(1 as xmltype(sequence)),
                                 cast(2 as xmltype(sequence)),
                                 cast(3 as xmltype(sequence))))
                                 returning sequence)as“$i”
where XMLCast(value(“$i”)as number)>1
实例2:具有XPath表达式的FLWOR子句:
for $i in doc(“foo.xml”)/PurchaseOrder
where$i/PoNo=21
return<A>{$i}</A>
变为
select xmlagg(XMLElement(“A”,value(“$i”)))
from table(xmlsequence(extract(select extract(Res,’/Contents/*’)from
resource_view
where equals_path(res,’/foo.xml’)=1),
                                       ‘/PurchaseOrder’)))“$i”
where XMLCast(OPTXATG(value(“$i”,‘/PoNo’)as number)=21
5.1.14.1LET子句处理
如果不需要保存节点标识,则将LET子句内联到查询表达式(并且标记为公共子表达式)。否则使用LET子句表达式创建子查询作为其选择列表。将子查询标记为不可合并以防止视图合并。
保存了具有节点标识的实例:
for $i in doc(“foo.xml”)/PurchaseOrder//LineItems
let $j:=doc(“baditems.xml”)//BadItems
  where $i/ItemNo eq $j/ItemNo
  return($i,$j/BadItem)
变为
select xmlagg(xmlconcat(“$i”,OPTXATG(“$j”,’/BadItem’)))
  from
   (select/*+NO_MERGE*/value(“$I”)as“$I”,
             (select XMLAgg(OPTXATG(value(x))
               from table(xmlsequence(
                  extract(select extract(Res,’/Contents/*’)
                              from resource_view
                          where equals_path(res,’/baditems.xml’)=1),
                                      ‘//BadItems’)))“x”
             )as“$j”
from table(xmlsequence(OPTXATG(
OPTXATG(select extract(Res,’/Contents/*’)
                          from resource_view
                          where equals_path(res,’/foo.xml’)=1),
                                  ‘/PurchaseOrder’),
‘//LineItems)))“$i”
       )
where exists(select null from
table(xmlsequence(OPTXATG(“$j”,’/ItemNo’)))x
                 where XMLCast(OPTXATG(“$I”,’/ItemNo’)as number)
=XMLCast(x as number));
没有保存节点标识的实例:如果节点标识保存不是关键的,则可直接将LET子句内联到其自身表达式中。可通过要求用户具有指定节点标识不是必须的编译指示来实现这种最优化。这也可以通过检查全局以确定任何节点相关的操作是否被用在查询中来隐含地实现。
for $i in doc(“foo.xml”)/PurchaseOrder//LineItems
 let $j:=doc(“baditems.xml”)//BadItems
   where $i/ItemNo eq$j/ItemNo
   return $i
变为
select xmlagg(value(“$i”)
from table(xmlsequence(OPTXATG(
                          OPTXATG(
                           select extract(Res,’/Contents/*’)
                           from resource_view
                           where equals_path(res,’/foo.xml’)=1),
                         ‘/PurchaseOrder’),
                        ‘//LineItems)))“$i”
where exists(select null
                 from table(xmlsequence(
                       OPTXATG((select XMLAgg(OPTXATG(value(x))
                                       from table(xmlsequence(
                 extract(select extract(Res,’/Contents/*’)
         from resource_view
         where equals_path(res,’/baditems.xml’)=1),
              ‘//BadItems’)))“$j”
where XMLCast(OPTXATG(“$i”,’/ItemNo’)as number)=
       XMLCast(OPTXATG(“$j”,’/ItemNo’)as number));
实例技术:由于防止视图合并可能不利地影响查询性能,所以首先搜索FLWOR表达式的WHERE子句以查看是否它包括任何LET变量。如果没有,则可评估LET子句作为FLWOR子句的结果(连同返回值)。
例如,在以下查询中,
for $i in doc(“foo.xml”)/PurchaseOrder//LineItems
 let $j:=count(doc(“baditems.xml”)//BadItems[ItemNo=$i/ItemNo])
   where $i/ItemNo>200
   return $j
$j经常用于return子句,而不用于WHERE子句-使得在LET子句之前可以评估WHERE子句。该查询等效于
for $j in
   for $i in doc(“foo.xml”)/PurchaseOrder//LineItems
   where $i/ItemNo>200
   return
      count(doc(“baditems.xml”)//BadItems[ItemNo=$i/ItemNo]
        return $j
实例规则:规格化Type声明:如果FOR或LET子句包括任何类型声明,则检查对应于子句的表达式的静态类型。如果它与声明的类型相同或者是声明类型的子类型,则忽略类型声明。如果它是声明类型的父型,则在表达式上添加TREAT表达式,并将其映射到SQL。否则引发错误。For<var><type>:=<expr>被规格化为for<var>:=TREAT<expr>as<type>,然后映射到SQL。
将FOR、WHERE、LET和RETURN子句中的所有表达式转换为它们的SQL当量,将FOR子句表达式映射为SQL FROM子句(联合)。如果不需要保存节点标识,则内联LET子句表达式,无论它被在哪引用。例如:
For<var1>in<expr1>,<var2>in<expr2>
let<var3>in<expr3>
   where<cond-referencing-var3>
return<expr4>
被映射为
select xmlagg(<expr4>)/*inline var3 references with expr3*/
from table(xmlsequence(<expr1>)as“var1”,
      table(xmlsequence(<expr2>)as“var2”,...
where<cond-referencing-var3>/*inline var3 references with expr3*/
否则,如果要保存节点标识,则通过检查在LET子句中定义的变量是否用在WHERE子句中,来检查FLWOR表达式中的LET子句,以确定它们是否可在WHERE子句之前被评估。在内部查询块上添加NO_MERGE提示以表明不应发生视图合并。
如果需要在WHERE子句之前评估LET子句,则将LET子句表达式映射为选择列表子查询,并且将WHERE子句映射到外部查询块的SQL WHERE子句。例如:
For<var1>in<expr1>,<var2>in<expr2>
let<var3>in<expr3>
   where<cond-referencing-var3>
return<expr4>
被映射到
select xmlagg(<expr4>)
from    (select/*+NO_MERGE*/
                 value(“var1”)as“var1”,
                 value(“var2”)as“var2”,..
               <expr3>as“var3”
         from table(xmlsequence(<expr1>)as“var1”,
               table(xmlsequence(<expr2>)as“var2”,...
        )
where<cond-referencing-var3>
)
如果不需要在WHERE子句之前评估LET子句,则将LET子句表达式映射为选择列表子查询,但将WHERE子句映射到内部查询块的SQL WHERE子句。例如:
For<var1>in<expr1>,<var2>in<expr2>
let<var3>in<expr3>
   where<cond-not-referencing-var3>
return<expr4-refecencing-var3>
被映射到
select xmlagg(<expr4-referencing-var3>)
from
  (select/*+NO_MERGE*/
           value(“var1”)as“var1”,
           value(“var2”)as“var2”,..
           <expr3>as“var3”
     from table(xmlsequence(<expr1>)as“var1”,
                      table(xmlsequence(<expr2>)as“var2”,...
     where<cond-referencing-var3>
        )
5.1.15路径表达式
路径表达式被映射到SQL表达式。运算符OPTXATG被用于提取出路径表达式中的单个节点。它代表单步遍历。静态类型检查被用于最优化一些路径表达式转换。
5.1.15.1具有名称测试的路径步
这表示标准XPath 1.0路径表达式。将具有名称测试的简单路径遍历重写到OPTXATG运算符。静态类型检查用于断定各个步的类型和基数。这稍后将用于转换。在规格化之后,将谓词映射到关系WHERE子句。将涉及集合元素的常规比较映射到涉及值比较的子查询。如果没有静态类型检查信息可用,则假定每一步生成untypedAny。
基于输入自变量,将OPTXATG进一步优化(或压缩)。例如:
$i/PurchaseOrder/PoNo
被映射到
OPTXATG(OPTXATG($i,‘PurchaseOrder’),‘PoNo’)。
基于输入自变量,将OPTXATG进一步优化(或压缩)。例如表达式,
(<A><B>33</B></A>)/A/B
被映射到
OPTXATG(OPTXATG(XMLElement(“A”,XMLElement(“B”,33)),‘A’),‘B’)
提取A的XATG和创建A的XMLElement()被压缩,并且结果是对应于结果<B>33</B>的XMLElement(“B”,333)。
在第二实例中,将路径谓词映射到关系谓词:
$i/PurchaseOrder/PoNo eq 21
映射到
XMLCast(OPTXATG(OPTXATG($i,‘PurchaseOrder’),‘PoNo’)as
number)=21
如果在静态类型检查期间,PoNo的类型为可以转换为数值的原子值时,前一映射才有效。如果没有模式信息可用,则静态类型信息可能只产生PoNo是xs:anyType的事实。这种情况下的XMLCast可执行值的原子化,并且如果输入(PoNo)不是单个原子值或可转换为数值的元素,则引发错误。
如果使用常规比较运算符(=)并且类型信息未知,那么不得不将其看作集合比较。在这种情况下,使用值比较将路径谓词重写到TABLE子查询。例如:
$i/PurchaseOrder/PoNo=21
映射到
EXISTS(select null
      from table(xmlsequence(OPTXATG(OPTXATG($i,
‘PurchaseOrder’),‘PoNo’))))x
        where XMLCast(value(x)as number)=21)
也以类似的方式处理涉及路径步自身中谓词的路径表达式。例如:
$i/PurchaseOrder[PoNo eq 21]
映射到
select OPTXATG($i,‘PurchaseOrder’)
from dual
where XMLCast(OPTXATG(OPTXATG($i,‘PurchaseOrder’),‘PoNo’)
as number)=21
并且在没有模式输入的常规比较的情况下,
$i/PurchaseOrder[PoNo=21]
映射到
select XMLAGG(value(v))
from table(xmlsequence(OPTXATG($I,‘PurchaseOrder’))v
where exists(
         select null from
         table(xmlsequence(OPTXATG(value($v),‘PoNo’)))x
         where XMLCast(value(x)as number)=21);
5.1.15.2具有种类测试的路径步
种类测试包括检查节点类型(例如,text(),processing-instruction()等)。XQuery添加更多的类型检查集合,例如节点名称和节点模式类型。例如,$i/element(foo,bar)表示需要提取bar类型的名为foo的子元素。增加OPTXATG运算符以包含除节点名称以外的节点类型用于提取。
5.1.15.3具有过滤(filter)表达式的路径步
通过规格化路径表达式并且将表达式压入上下文节点(contextnode)来处理过滤表达式。例如,$i/PurchaseOrder/(for $j in LineItemsreturn count($j/Orders)可规格化为(for $j in$i/PurchaseOrder/LineItems return count($j/Orders))。
实例规则:对于路径表达式的每个步,如下地将其映射到SQL运算符:
a)如果步是名称测试,则将其映射到OPTXATG运算符。<expr><step><QName-or-wildcard>映射到OPTXATG(<expr>,<step>,<localname>,<namespace>)
b)如果步是种类测试,则将其映射到OPTXATG运算符,同时类型信息<expr><step><type>映射到OPTXATG(<expr>,<step>,<type>)
c)如果步是过滤步,则如下规格化表达式-<expr><step><filterexpr>被规格化为(for $m in<expr>return<filterexpr>,过滤表达式中的上下文节点变为$m.。然后这被重写到SQL。
例如,$i/PurchaseOrder/(for $j in LineItems returncount($j/Orders))被规格化为for $m in $i/PurchaseOrder return(for$j in $m/LineItems return count($j/Orders)),然后映射到SQL。
对于路径表达式中的谓词,可如下地检查包含谓词的表达式的静态类型:
a)如果静态类型表明表达式产生集合(量词=*或+),则创建具有该表达式的子查询并且将谓词映射到WHERE子句。
b)否则如果静态类型表明表达式产生单元素节点,则映射到SQL CASE表达式,同时谓词映射到CASE条件。
5.1.16条件表达式
If-then-else表达式被映射到SQL CASE WHEN表达式。
实例规则:给定if<expr1>then<expr2>else<expr3>。如果有必要的话(如通过静态类型检查所确定的),将有效布尔值运算符添加至expr1,并且将表达式映射到CASE WHEN<expr1>then<expr2>else<expr3>。
5.1.17量化表达式
量化表达式可被映射入SQL EXISTS子句。例如,为了找到至少一个行式项目数字出现在低劣项目列表中的所有订购单,
for $I in ora:view(“po_TAB”)//PurchaseOrder
where some $j in $i//LineItem satisfies
             for $k in ora:view(“bad items”)where $k//ItemNo=
$j/ItemNo return $k,
其中,“ora:view()”是从XML形式的关系表中返回数据的XQuery函数,可将其映射到
select value(“$I”)
from  “po_TAB”“$I”
where exists(
      select(select“$k”
                from(select value(p)“$k”from“bad_items”p)
                where OPTXATG(“$k”,’//ItemNo’)=
OPTXATG(“$j”,’/ItemNo’)
   )
   from(
     select value(“$j”)as“$j”
     from table(xmlsequence(OPTXATG(value(“$I”),‘//LineItem’)))“$j”
     )
 )
5.1.18直接元素构造器表达式
元素构造器被映射到XMLElement()运算符。元素内的属性被映射到XMLElement()运算符中的XMLAttributes()子句。
实例,
<A>{“21”}</A>is mapped to XMLelement(NAME“A”,‘21’)and
<A b=”21”>22</A>is mapped to XMLElement(NAME“A”,
XMLAttributes(21 as“b”),‘22’)
实例规则:使用用于属性构造的XMLAttributes()将任何元素构造器映射到XMLElement()。
5.1.19计算元素构造器表达式
计算元素构造器也被映射到XMLElement().作为元素构造器孩子(child)的任何计算属性构造器被优化并映射到XMLAttributes()子句.释放XMLElement()运算符以分配(allow)动态元素名称.还可以修改运算符以使独立式属性孩子变为元素的属性.
element{“a”}{“21”}
映射到
XMLElement(NAME EXPR‘a’,‘21’)
以及
element{“a”}{
   Attribute b{“21”}
   {22}
}
映射到
XMLElement(NAME EXPR‘a’,XMLAttributes(‘21’as“a”),‘22’)。
实例规则:将任何计算元素构造器映射到XMLElement(),以及将子属性构造器映射到XMLElement()。
5.1.20计算属性构造器表达式
通过使XMLAttribute()作为顶级SQL函数来处理属性构造器。
Attribute“a”{“21”}</A>
映射到
XMLAttribute(21 as“a”)
实例规则:将属性构造器映射到XMLAttribute。
5.1.21其他XML构造器表达式
实例规则:将XML构造器映射到等效SQL/XML标准函数。
  XMLComment   OPTXMLCOM
  XMLProcessingInstruction   OPTXMLPI
  CDataSection   OPTXMLCDATA
  ComputedElemConstructor   OPTXMLELEM
  ComputedAttributeConstructor   OPTXMLATTR
  ComputedDocumentConstructor   OPTXMLROOT
  ComputedTextConstructor   OPTXMLTXT
5.1.22类型切换(switch)表达式
类型切换表达式类似于if-then-else,除了它们对输入类型进行切换.可使用SQL运算符OPTXTYPCHK执行类型检查,其中,SQL运算符OPTXTYPCHK检查输入的XQuery类型,如果类型匹配则返回1.如果表达式的静态类型信息已知,则类型切换可被完全优化掉.对于静态类型检查信息可优化类型检查的大多数情况,可将OPTXTYPCHK运算符优化掉.
实例规则:将Typeswitch映射到Case表达式,并且使用OPTXTYPCHK以检查输入类型。给定
typeswitch<expr>
    case<var1>as<type1>return<expr1>
    case<var2>as<type2>return<expr2>
  default<exprn>
检查<expr>的静态类型。使其为etype。现在,对于每个Case表达式将etype与Case表达式中的type-i匹配。如果两种类型相同或etype是type-i的子类型,则将类型切换表达式优化掉,并且返回expr-i的SQL当量。如果type-i是etype的子类型,则将整个类型切换表达式映射到以下形式的SQL表达式
Case when OPTXTYPCHK(<expr>,<type1>)=1 then<expr1>
    When OPTXTYPCHK(<expr>,<type2>)=1 then<expr2>
else<exprn>
如果没有type-i处于etype的类型等级,则返回缺省表达式exprn的SQL当量。
5.1.23INSTANCEOF表达式
可使用OPTXTYPCHK运算符来评估instanceOf表达式,并且可使用输入表达式的静态类型来最优化instanceOf表达式。
实例规则:给定<expr1>instanceOf<type1>。检查<expr1>的静态类型是否与<type1>相同或者是<type1>的子类型。如果是这样,则除去表达式。如果静态类型是type1的父型,则映射到OPTXTYPCHK(<expr1>,<type1>)。否则是一个错误。
5.1.24可转换(castable)的表达式
可转换的表达式用于检查输入是否可转换为给定形式。可使用OPTCASTABLE运算符将它们映射到SQL,其中,OPTCASTABLE运算符可用于确定表达式是否可转换为其他类型。注意,如果输入的静态类型相同或是输入的子类型,则可以除去表达式。
实例规则:映射<expr>castable as <type>被映射到OPTXTYPCHK(<expr>,<type>)
5.1.25TREAT表达式
Treat表达式被映射到Case表达式。
实例规则:映射treat<expr>as<type>到CASE WHENOPTXTYPCHK(<expr>,<type>)=1 then<expr>else error() end。
5.1.26VALIDATE(验证)表达式
将验证表达式映射到XMLValidate()函数。XMLValidate()是接收模式类型(局部或全局)并返回验证的XML值或错误的SQL运算符。
实例规则:将validate<type><expr>映射到XMLValidate(<expr>,<type>)
验证表达式还可以被映射到XMLIsValid()函数。
5.1.27AGREGATE(聚集)表达式
XQuery允许聚集在查询中任何位置出现.这不是直接由SQL支持的.例如,下列查询返回其中具有21个以上行式项目的所有定购单.
for $i in doc(“Po.xml”)
where count($i/PurchaseOrder/LineItems)>21
return $i
使用子查询重写聚集以计算聚集。
select x.res
from(select res from resource_view where
  equals_path(res,’Po.xml’)=1)x
where(
       select count(value(z))
       from table(xmlsequence(OPTXATG(OPTXATG(x.res
,‘PurchaseOrder’),‘LineItems’)))z
       )>21;
实例规则:当将函数&运算符(F&O)映射到SQL表达式时,如果F&O是聚集,则将其映射到SQL子查询。将agg-func(<expr>)映射到(select sql-agg-func(value(p))from table(xmlsequence(<expr>))p)。
5.1.28多态运算符
由于XQuery允许算术和比较函数的重载以处理多种数据类型,所以到SQL运算符的映射可根据操作数的运行时间输入类型而变化。应用这种重载的XQuery运算符被称作“多态运算符”。
例如,考虑下列XQuery表达式:
declare $b xs:boolean external;
(if($b)then 3.3 else xs:date(″2001-08-25″))+
(if($b)then 44 else xdt:yearMonthDuration(″P5Y0M″)
根据外部变量$b运行时间的值,XQuery中的加法可转换为十进制加法(在这种情况下,它将十进制数3.3与44相加),或者可转换为具有年月持续时间的日期相加(在这种情况下,它将五年零个月加到日期‘2001-08-25’生成日期‘2006-08-25’)。
因此,可以只在运行时作出关于该表达式是否被映射到SQL十进制运算符或SQL日期相加运算符的决定。为了支持这种功能,此处描述的技术将算术表达式(其输入数据类型是通过静态类型检查确定的多态)映射到多态SQL算术运算符中。多态SQL算术运算符能够在运行时根据运行时间输入类型发送到适当的SQL算术运算符。
类似的转换同样用于多态XQuery比较函数。多态XQuery比较函数被映射到多态SQL值比较运算符。
如上所述,如果输入类型可在XQuery编译时间期间变化,则使用多态运算符可能是有利的。此外,例如,仍然可使用SQL十进制加法运算符代替多态SQL运算符来直接将非多态XQuery表达式(例如3.3+44)转换为非多态SQL表达式。
5.1.29用户定义的XQUERY和外部函数
XQuery支持以XQuery写的用户定义函数和在XQuery环境外部执行的外部函数。例如,可以使用诸如Java编程语言的编程语言来写函数体。
用户定义的XQuery函数可转换为Oracle PL/SQL(程序语言/结构化查询语言)函数。这可通过将用户定义的XQuery函数体从XQuery表达式转换为PL/SQL表达式来执行。另外,XQuery函数的调用可转换为SQL的PL/SQL函数的调用。
此处描述的技术还支持XQuery形式的外部用户定义的函数。例如,如果函数体是以Java编程语言写的,则可使用以目标语言(例如,Java用户定义的SQL函数)所写的SQL外部用户定义函数来将该函数映射到等效外部用户定义函数。因此,以Java、C、PL/SQL或任何其他适当语言执行的XQuery形式的外部用户定义函数可转换为以Java、C、PL/SQL、或由SQL系统支持的任何其他适当语言所写的用户定义PL/SQL函数。
5.1.30.XQUERY模块
XQuery支持模块。XQuery模块是能够被独立创建并导入或存入XQuery处理器的XQuery代码片段。XQuery模块可转换为能够被独立创建且存入数据库服务器的PL/SQL数据包。
5.2函数&运算符的映射
下表示出了XQuery运算符和标准函数(F&O)到现有的或新的SQL运算符的映射。
  Xquery运算符   SQL映射   优化的   注释
And(与) OPTAND   空序列返回空序列。对于这些情况,由于可能不满足WHERE子句,所以空对空(NULL onNULL)是可以的。
  Or(或)   OPTOR   -相同
OPTXGT OPTTGT   在常规比较可被规格化为值比较的情况下的优化。可转换为多态SQL运算符。可转换为具有如示出在部分5.1.10常规比较表达式中的值比较的SQL存在子查询.
  <   OPTXLT   OPTTLT   -同上-
  >=   OPTXGE   OPTTGE   -同上-
  <=   OPTXLE   OPTTLE   -同上-
  =   OPTXEQ   OPTTEQ   -同上-
  !=   OPTXNE   OPTTNE   -同上-
  Xquery运算符   SQL映射   优化的   注释
OPTTLT   在左边(LHS)是NULLABLE(例如,可选元素/属性)的情况下还加上ERROR_ON_NULL(LHS)如果i.b映射到空值则$i/b<20映射到i.b<20和error_on_null(i.b)。
gt OPTTGT   空序列返回空序列。对于这些情况,空对空(NULL onNULL)是可以的,由于可能不满足WHERE子句。可转换为多态SQL运算符。
  eq   OPTTEQ   -同上-
  ne   OPTTNE   -同上-
  le   OPTTLE   -同上-
  ge   OPTTGE   -同上-
  Node is   OPTTEQ   节点操作
  >>   OPTTGT   -相同-,
  Xquery运算符   SQL映射   优化的   注释
  <<   OPTTLT
  range(范围)   OPTXNRNG   范围运算符
Union(并) OPTXUJ OPTTUN   如果对XMLType(Seq)添加映射或排序方法,则可重用常规UNION/INTERSECT等。
  Intersect(交)   OPTXINTR   OPTTIS   -同上-
  except(差)   OPTXEXC   OPTTMI   -同上-
+ OPTTAD   对非字符输入添加TO_NUMBER()。可转换为多态SQL运算符。
  -   OPTTSU   -同上-
  Mult(乘)   OPTTMU   -同上-
  Xquery运算符   SQL映射   优化的   注释
div(除) OPTTDI  -同样-通过binary_float运算符处理-INF、+INF。如果XMLSchema数据类型是float/double,则可将LHS或RHS转换到binary_float或binary_double。
idiv   OPTTTR,OPTTDI 截尾(div)返回整数除法
  unary+   -  忽略
  unary-   OPTTNG
Mod OPTTMO  或者除数是正或非零(0)或两者都是,如果除数是0则结果是NaN-返回0。
  cast function(转换函数) 参见数据类型映射
  Node Functions(节点函数)
  Xquery运算符   SQL映射   优化的   注释
  fn:nodename(节点名称) OPTXNNAME XPath运算符
  fn:string(字符串)   OPTXSTRING  字符串转换
  fn:data(数据)   OPTXT2SQLT  这是原子化的SQL运算符。
  fn:base-uri   OPTXBURI
fn:document-uri OPTXDOCURI  特殊函数访问文档URI查找文件。XMLType任一部分或者对其转换以访问resource_view的ANY_PATH
  Error function(错误函数)
fn:error()   dbms_xquery.raiseError()
  fn:trace()   dbms_Xquery.trace()
  Xquery运算符   SQL映射   优化的   注释
  Math functions(数学函数)
  fn:abs(绝对值)   OPTTAB
  fn:ceiling   OPTTCE
  fn:floor   OPTTFL
  round   OPTTFL(a+0.5)  可加上0.5并使用floor:可以XQuery形式规格化为xf:floor(a+0.5)
  round-half-to-even   OPTXFLHE
  String functions(字符串函数)
  fn:codepoints-to-string   -  需要的NLS输入
  fn:string-to-codepoint   -  需要的NLS输入
  Xquery运算符   SQL映射   优化的   注释
fn:compare(比较) -  可相当于SQL中满足as case lhs<rhsthen-1 else case when lhs=rhs then 0else 1.
fn:concat OPTTCA  可映射到多个OPTTCA(SQL只取2个变量)
fn:string-join OPTXSJOIN OPTTCO   可利用concat运算符,但需要考虑空序列.
  fn:substring(子字符串)   OPTFL(x+0.5),OPTTSS   将ROUND加到所有输入自变量
  fn:string-length(字符串-长度)   OPTTLN
  fn:normalize-space(规格化-空间) OPTXSOPR 字符串操作(规格化空间)
  fn:normalize-unicode((规格化-单代码) OPTXSOPR NLS支持
  Xquery运算符   SQL映射   优化的   注释
  fn:upper-case   OPTTUP
  fn:lower-case   OPTTLO
  fn:translate(转换)   OPTTRA
  fn:escape-uri   OPTXSOPR   字符串函数(Escape URI)
  Substring functions(子字符串函数)
fn:contains(包含) OPTTFN   使用NULL-XQuery得到的结果显示contains((),″″)为真;需要校对支持(NLS)
fn:starts-with   OPTTSS,OPTFL(x+0.5) 子字符串位置=1;需要校对支持
fn:ends-with   OPTTSS,OPTFL(x+0.5)   子字符串位置=LENGTH(arg);需要校对支持
  Xquery运算符   SQL映射   优化的   注释
fn:substring-before   OPTTSS,OPTTFN   OPTTSS(expr,1,OPTTFN(expr));需要校对支持
fn:substring-after   OPTTSS,OPTTFN   OPTTSS(expr,OPTTFN(expr));需要校对支持
  String pattern match(字符串模式匹配)
fn:matches(匹配) OPTRXLIKE   s标志匹配n选项;在OPTRXLIKE中需要支持X选项
fn:replace(取代) OPTRXRPL   SQL取代字符串使用\数值,而XQuery使用$number引用子表达式。
  fn:tokenize   OPTXSTKN
  Boolean Operations(布尔操作)
  Xquery运算符   SQL映射   优化的   注释
  fn:true(真)
  fn:false(假)
  fn:NOT(非)
  Date operations(日期操作)
  fn:get-years-from-yearMonthDuration   OPTXTRCT
  fn:get-months-from-yearMonthDuration   OPTXTRCT
  fn:get-days-from-dayTimeDuration   OPTXTRCT
  fn:get-hours-from-da   OPTXTRCT
  yTimeDuration
  fn:get-minutes-from-dayTimeDuration   OPTXTRCT
  Xquery运算符   SQL映射   优化的   注释
  fn:get-seconds-from-dayTimeDuration   OPTXTRCT
  fn:get-year-from-dateTime   OPTXTRCT
  fn:get-month-from-dateTime   OPTXTRCT
  fn:get-day-from-dateTime   OPTXTRCT
  fn:get-hours-from-dateTime   OPTXTRCT
  fn:get-minutes-from-dateTime   OPTXTRCT
  fn:get-seconds-from-dateTime   OPTXTRCT
  fn:get-timezone-from-dateTime   OPTXTRCT   只获取TZ小时
  Xquery运算符   SQL映射   优化的   注释
  fn:get-year-from-date   OPTXTRCT
  fn:get-months-from-date   OPTXTRCT
  fn:get-day-from-date   OPTXTRCT
  fn:get-timezone-from-date   OPTXTRCT   只获取TZ小时
  fn:get-hour-from-time   OPTXTRCT
  fn:get-minutes-from-time   OPTXTRCT
  fn:get-seconds-from-time   OPTXTRCT
  fn:get-timezone-from-time   OPTXTRCT   只获取TZ小时
  Xquery运算符   SQL映射   优化的   注释
  fn:adjust-dateTime-to-timezone   OPTADD   需要包装。可使用现有函数来实现
fn:adjust-date-to-timezone OPTADD   Oracle没有日期+时区,只有时间戳+时区,日期->时间戳,时间部分是午夜
  fn:adjust-time-to-timezone   OPTADD
  fn:subtract-dateTimes-yielding-yearMonthDuration OPTTSU
  fn:subtract-dateTimes-yielding-day TimeDuration OPTTSU
  QNames
  fn:resolve-qname   OPTXQNM   Qname函数
  fn:expanded-qname   OPTXQNM
  Xquery运算符   SQL映射   优化的   注释
  fn:get-local-name-from-QName   OPTXQNM
  fn:get-namespace-ur   OPTXQNM
  i-from-QName
  fn:get-namepace-uri-for-prefix   OPTXQNM
  fn:get-in-scope-prefixes   OPTXQNM
  fn:resolve-uri   OPTXURI
  functions on nodes
  fn:name(名称)   OPTXNODE   节点运算符
  fn:local-name   OPTXNODE
  fn:namespace-uri   OPTXNODE
  fn:number(数值)   OPTXT2SQLT
  Xquery运算符   SQL映射   优化的   注释
  fn:lang   OPTXNODE
  fn:root(根)   OPTXNODE
  Sequence operations(序列操作)
fn:zero-or-one OPTXSOPR 忽略   检查序列基数。如果静态型别可发现occurance是0或1,则忽略该函数
fn:one-or-more OPTXSOPR 忽略   检查序列基数。如果静态型别可发现occurance是1或1,则忽略该函数
fn:exactly-one OPTXSOPR 忽略   检查序列基数。如果静态型别可发现occurance正好一次,则忽略该函数
  fn:boolean(布尔值)   OPTXGEB   忽略   计算有效布尔值
  fn:concatenate(连接)   OPTXMLCONC 可重用XMLConcat()
  Xquery运算符   SQL映射   优化的   注释
  fn:index-of   OPTXSINDX
  fn:empty(空)   IS NULL   转换为序列非空
fn:exists(存在)   EXISTS,NOTNULL   当对查询表达式操作时,这可转换为EXISTS子查询或转换为变量非空
fn:distinct-values OPTXSDIST   在特定情况下,这可被优化到选择DISTINCT子查询
  fn:insert-before   OPTXSOPR   序列操作(插入之前)
  fn:remove(除去)   OPTXSOPR   序列操作(除去)
  fn:reverse(反转)   OPTXSOPR   序列操作(反转)
  fn:subsequence(子序列)   OPTXSOPR   序列操作(子序列)
  fn:unordered   忽略   通过转换成分而使用
  Xquery运算符   SQL映射   优化的   注释
  Equals(等于)
fn:deep-equal OPTXDEEP   可使用XMLType映射方法函数来完成
  aggregate functions(聚集函数)
  fn:count(计数)   OPTTCO
  fn:avg(平均值)   OPTTAV   需要校对支持
  fn:max(最大值) OPTTMX -同上-
  fn:min(最小值) OPTTMN -同上-
  fn:sum   OPTTSUM   -同上-
  (求和)
  Xquery运算符   SQL映射   优化的   注释
  sequence generators(序列发生器)
  fn:id   OPTXNODE
  fn:idref   OPTXNODE
fn:doc  转换到(select xmlagg(res)fromresource_view whereequals_path(res,<arg>)=1)
fn:collection(集合)  转换到(select xmlagg(res)fromresource_view whereunder_path(res,<arg>)=1)
  Context positions(上下文位置)
  fn:position(位置)
  fn:last(最后)
  fn:current-dateTime(当前日期时间) STRTCTS
  Xquery运算符   SQL映射   优化的   注释
  fn:current-date(当前日期)   STRTCTS
  fn:current-time(当前时间) STRTCTS
  fn:default-collation(缺省-校对)
  fn:implicit-timezone   OPTSESTZ
  Oracle providedfunctions(Oracle提供的函数)
ora:view(视图)  在关系表且没有用于XMLType表的xmlelement(“ROW”)的情况下,转换到(select xmlagg(xmlelement(“ROW”,xmlforest(col1,col2...)from<table-name>)
  Xquery运算符   SQL映射   优化的   注释
ora:contains(包含)   OPTXMLCONT
  ora:sqrt(平方根)   OPTSQR
还提供了以下SQL运算符以执行XQuery相关的操作:OPTXTYPCHK对输入执行类型检查以使其符合给定的XQuery类型(例如,xs:整数).OPTXTYPCHK执行XPath提取操作.OPTXT2SQLT用于将XML类型转换为SQL(XMLCast(xmltype expras sqltype)。OPTSQL2XMLT用于将SQL类型转换为XML(XMLCast(sql-expr as xml-type))。
5.3表达式映射实例
使用该部分中的实例解释一些公共表达式及其映射。
例如,Repository Queries(doc):
for $i in doc(“/public/purchaseorder.xml”)
where $i/PurchaseOrder/@Id eq 2001
return<PO pono={$i/PurchaseOrder/@Id}/>
被重写为
select XMLAgg(XMLElement(“PO”,XMLAttributes(
     XMLCast(OPTXATG(OPTXATG(“$i”.res,’/PurchaseOrder’),’/@Id’)
as number)
           as“pono”)))
from(select res
      from resource_view
      where equals_path(res,’/public/purchaseorder.xml’)=1)“$i”
where XMLCast(OPTXATG(“$i”.res,’/PurchaseOrder/@Id’)as number)=
2001;
重写为
select XMLAgg(XMLElement(“PO”,XMLAttributes(
            XMLCast(OPTXATG(OPTXATG(res,’/PurchaseOrder’),
‘@Id’)as number)
           as“pono”)))
from resource_view
   where equals_path(res,’/public/purchaseorder.xml’)=1
  and XMLCast(OPTXATG(res,’/PurchaseOrder/@Id’)as number)=2001;
例如,Repository(Collection):
for $i in collection(“/public”)
where $i/PurchaseOrder/@Id gt 2001
return<PO pono={$i/PurchaseOrder/@Id}/>
变为
select XMLAgg(XMLElement(“PO”,XMLAttributes(
        XMLCast(OPTXATG(“$i”.xmlv,’/PurchaseOrder/@Id’)as number)
as“pono”)))
from table(xmlsequence(select XMLAgg(res)as xmlv
     from resource_view
     where under_path(res,’/public’)=1)“$i”
   where XMLCast(OPTXATG(“$i”.xmlv,’/PurchaseOrder/@Id’)as
number)>2001));
例如,SQL表查询:
for $emp in ora:view(“EMP”),
     $dept in ora:view(“DEPT”)
where $emp/ROW/DEPTNO=$dept/ROW/DEPTNO
return($emp/ROW/ENAME,$dept/ROW/DNAME)
变为
select XMLAgg(
XMLConcat(XMLCast(OPTXATG(“$emp”.xmlv,’/ROW/ENAME’)as
number),
          XMLCast(OPTXATG(“$dept”.xmlv,’/ROW/DNAME’)as
number)))
  From(select XMLElement(“ROW”,XMLForest(empno,ename,sal,
deptno))
                as xmlv
       from emp)“$emp”,
      (select XMLElement(“ROW”,XMLForest(deptno,dname)as xmlv
       from dept)“$dept”
where XMLCast(OPTXATG(“$emp”.xmlv,’/ROW/DEPTNO’)as number)
=XMLCast(OPTXATG(“$dept”.xmlv,’/ROW/DEPTNO)as number);
其重写为:
select XMLAgg(XMLConcat(e.ename,d.dname))
from emp e,dept d
where e.deptno=d.deptno;
6.0可选实例
在此处描述的实施例中,提出XQuery和XQueryX作为用于查询XML语言源的查询语言的实例,以及提出SQL作为用于查询关系数据库的查询语言的实例。该技术决不限于那些查询语言,可以使用任何其他查询语言。
此处描述的技术提出了使用转换有效评估查询的唯一解决方案。然而,本技术不限于对标记语言数据源进行的查询。在其他实施例中,可以使用任何查询语言。然后,可以对使用查询语言的查询进行解析并将其编译为内存中表示的第一形式。然后可将内存中表示的第一形式转换为内存中表示的第二形式,并且如上所述进一步处理。
此处描述的技术规定首先解析查询的各种格式然后将其编译为AST或其他内存中表示。然后将这些内存中表示转换为特定的抽象语法。在其他实施例中,对使用第一语法(例如,XQuery)的查询元素进行解析、编译、并立即将其逐元素地转换为特定格式。在实施例中,在任何特定时刻,可能未必存在第一格式查询的整个部分的内存中表示。
7.0硬件综述
图3是示出可以实施本发明实施例的计算机系统300的框图.计算机系统300包括用于传递信息的总线302或其他通信机构,以及与总线302相连用于处理信息的处理器304.计算机系统300还包括诸如随机存取存储器(RAM)或其他动态存储装置的主存储器306,其连接至总线302,用于存储信息和将由处理器304执行的指令.主存储器306还可用于在执行将由处理器304执行的指令期间存储临时变量或其他中间信息.计算机系统300还包括连接至总线302的只读存储器(ROM)308或其他静态存储装置,用于存储静态信息和用于处理器304的指令.提供诸如磁盘或光盘的存储装置310,并连接至总线302用于存储信息和指令.
计算机系统300可以经由总线302连接至诸如阴极射线管(CRT)的显示器312,用于将信息显示给计算机用户。包括字母数字键和其他键的输入装置314连接至总线302,用于将信息和命令选择传递给处理器304。另一种类型的用户输入装置是诸如鼠标、跟踪球、或光标方向键的光标控制器316,用于将方向信息和命令选择传递给处理器304并用于控制显示器上的光标移动。输入装置通常在两个轴(第一轴(例如,x)和第二轴(例如,y))上具有两个自由度,这使得装置能指定平面内的位置。
本发明涉及用于执行此处描述的技术的计算机系统300的使用。根据本发明的一个实施例,通过计算机系统300响应于执行包含在主存储器306中的一个或多个指令中的一个或多个序列的处理器304来执行这些技术。可以将这些指令从另一个机器可读介质(例如存储装置310)读入主存储器306。包含在主存储器306中的指令序列的执行,使得处理器304执行此处描述的处理步骤。在可选实施例中,可以使用硬连线电路来取代软件指令或者与软件指令结合来实施本发明。从而,本发明的实施例不限于硬件电路和软件的任何特定结合。
用在此处的术语“机器可读的介质”是指参与为处理器304提供指令用于执行的任何介质。这种介质可以采用许多形式,包括但不限于非易失性介质、易失性介质、以及传输介质。例如,非易失性介质包括光盘或磁盘,例如存储装置310。易失性介质包括动态存储器,例如主存储器306。传输介质包括同轴电缆、铜线、和光纤,包括构成总线302的导线。传输介质还可以采用声波或光波的形式,诸如那些在无线电波和红外线数据通信期间产生的波。
通常形式的计算机可读介质包括例如软盘、软磁盘、硬盘、磁带、或任何其他磁性介质、CD-ROM、任何其他光介质、穿孔卡、纸带、任何其他带孔图样的物理介质,RAM、PROM、EPROM、FLASH-EPROM、任何其他存储芯片或盒式磁盘、下文中描述的载波、或计算机可读取的任何其它介质。
各种形式的机器可读介质可参与将一个或多个指令中的一个或多个序列传送给处理器304用于执行。例如,指令可最初承载在远程计算机的磁盘上。远程计算机可将指令存入其动态存储器中,并且使用调制解调器通过电话线发送指令。计算机系统300的本地调制解调器可接收电话线上的数据,并使用红外发射机将数据转换为红外信号。红外探测器可接收红外信号携带的数据,并且适当的电路可将数据放在总线302上。总线302将数据传送到主存储器306,处理器304从主存储器取回并执行这些指令。由主存储器306接收的指令可在由处理器304执行之前或之后随意地存储在存储装置310上。
计算机系统300还包括连接至总线302的通信接口318.连接至与局域网322连接的网络链路320的通信接口318提供双向数据通信.例如,通信接口318可以为综合业务数字网络(ISDN)卡或调制解调器,用于提供到相应类型的电话线的数据通信连接.作为另一个实例,通信接口318可以为局域网(LAN)卡,用于提供至兼容LAN的数据通信连接.也可以实施无线连接.在任何这样的实施中,通信接口318发送和接收承载表示各种类型信息的数字数据流的电信号、电磁信号、或光信号.
网络链路320通常通过一个或多个网络向其它数据装置提供数据通信。例如,网络链路320可通过局域网322提供到主机324的连接,或到由互联网服务提供商(ISP)326操作的数据设备的连接。ISP 326又通过目前通称为“互联网”328的全球分组数据通信网络提供数据通信服务。局域网322和互联网328都使用承载数字数据流的电信号、电磁信号、或光学信号。通过各种网络的信号和网络链路320上的信号以及通过通信接口318的信号(传送数字数据给计算机系统300或传送来自计算机系统300的数字数据)是传输信息的载波的示例性形式。
计算机系统300能够通过网络、网络链路320、和通信接口318来发送消息和接收包括程序代码的数据。在互联网实例中,服务器330可通过互联网328、ISP 326、局域网322和通信接口318传送应用程序所请求的代码。
所接收的代码可以在其被接收时由处理器304执行,和/或存储在存储装置310中,或者其他非易失性存储器中用于随后执行。照这样,计算机系统300可以获得载波形式的应用程序代码。
在上述的说明书中,已经参照许多因不同实施而不同的具体细节描述了本发明的实施例。因此,本发明以及申请人所期望的本发明的唯一和专有的标志,是以这样的权利要求公布的特定形式从该申请所公布的一组权利要求,包括任何后续的修改。对于包含在这样的权利要求中的术语,在此清楚阐述的任何定义都将限定权利要求中所使用的这种术语的含意。因此,在权利要求中没有明确地提到的限定特征、元件、特性、特征、优点或属性不应当以任何方式限制这种权利要求的范围。因此,说明书和附图应当看作说明性的而不是限制性的。

Claims (34)

1.一种处理查询的方法,包括:
接收所述查询,其中,所述查询指定特定操作;
确定所述查询包括:第一部分,所述第一部分用于指定第一一个或多个使用第一查询语言的所述特定操作;以及第二部分,所述第二部分用于指定第二一个或多个使用第二查询语言的所述特定操作;
为所述第一部分生成第一内存中表示;
为所述第二部分生成第二内存中表示,其中,所述第二内存中表示代表至少一个由所述第二查询语言支持的并且不被所述第一查询语言的查询处理器所理解的查询元素;
在执行任何所述特定操作之前,基于所述第一内存中表示和第四内存中表示生成所述查询的第三内存中表示,其中,
所述第三内存中表示指定所有所述特定操作,并且其中,生成所述第三内存中表示包括:
基于所述第二内存中表示生成所述第四内存中表示,其中,所述第四内存中表示只代表由所述第一查询语言支持的并且被所述第一查询语言的所述查询处理器理解的查询元素;以及
基于所述第三内存中表示执行所述特定操作。
2.根据权利要求1所述的方法,其中,所述第一内存中表示和所述第三内存中表示被安排成第一抽象语法的格式,所述第二内存中表示被安排成第二抽象语法的格式,并且其中,所述第四内存中表示被安排成所述第一抽象语法的格式。
3.根据权利要求2所述的方法,其中,所述第二内存中表示包括使用所述第二抽象语法的查询元素的一个或多个内存中表示,
并且其中,生成所述第四内存中表示包括:
为使用所述第二抽象语法的查询元素的所述一个或多个内存中表示确定使用所述第一抽象语法的查询元素的第二组一个或多个等效内存中表示;以及
基于所述使用所述第一抽象语法的查询元素的所述第二组一个或多个等效内存中表示生成使用所述第一抽象语法的所述第四内存中表示。
4.根据权利要求3所述的方法,其中,在使用所述第二抽象语法的查询元素的所述一个或多个内存中表示中的查询元素的每个内存中表示对应于在使用所述第一抽象语法的查询元素的所述第二组一个或多个等效内存中表示中的查询元素的一个或多个内存中表示。
5.根据权利要求1所述的方法,其中,所述第一内存中表示、所述第二内存中表示、以及所述第三内存中表示中的一个或多个在内存中表示为抽象语法树。
6.根据权利要求1所述的方法,其中,所述第一查询语言是结构化查询语言。
7.根据权利要求1所述的方法,其中,所述第二查询语言是标记查询语言。
8.根据权利要求1所述的方法,其中,所述第二查询语言是XQuery。
9.根据权利要求1所述的方法,其中,所述第二查询语言是XQueryX。
10.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XQuery聚集;并且其中,生成所述第四内存中表示的所述步骤包括生成使用所述第一抽象语法的SQL子查询以计算所述聚集,基于使用所述第二抽象语法的所述XQuery聚集生成所述SQL子查询.
11.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的文字表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述文字表达式生成使用所述第一抽象语法的SQL文字。
12.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XQuery转换表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述XQuery转换表达式生成使用所述第一抽象语法的SQL转换函数和SQL变换函数中的一个。
13.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的集合表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述集合表达式生成使用所述第一抽象语法的SQL UNION、SQL MINUS、SQL INTERSECT中的一个。
14.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XQuery算术表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述XQuery算术表达式生成使用所述第一抽象语法的SQL算术表达式。
15.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中所述第二部分包括使用所述第二抽象语法的XQuery比较;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述XQuery比较生成使用所述第一抽象语法的SQL比较。
16.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中所述第二部分包括使用所述第二抽象语法的XQueryFLWOR order by子句;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述XQueryFLWOR order by子句生成使用所述第一抽象语法的SQL orderby子句。
17.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XML逻辑表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述XML逻辑表达式生成使用所述第一抽象语法的SQL逻辑表达式元素。
18.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XMLFLWOR表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XQuery FLWOR表达式生成使用所述第一抽象语法的SQL选择表达式元素。
19.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XML路径表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XML路径表达式生成使用所述第一抽象语法的SQL路径表达式.
20.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XMLif-then-else表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XML if-then-else表达式生成使用所述第一抽象语法的SQL case-when表达式。
21.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XML量化表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XML量化表达式生成使用所述第一抽象语法的SQL存在表达式。
22.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的SQL/XML构造表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述SQL/XML构造表达式生成使用所述第一抽象语法的SQL构造表达式。
23.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XML运算符;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XML运算符生成使用所述第一抽象语法的SQL运算符。
24.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XQuery序列类型操作;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XQuery序列类型操作生成使用所述第一抽象语法的SQL类型操作。
25.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XQuery类型构造器;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XQuery类型构造器生成使用所述第一抽象语法的SQL标量构造器。
26.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XQuery验证操作;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XQuery验证操作生成使用所述第一抽象语法的SQL/XML IsValid操作和SQL/XML验证操作中的一个。
27.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的多态XQuery算术运算符;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述多态XQuery算术运算符生成使用所述第一抽象语法的多态SQL算术运算符。
28.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的多态XQuery比较运算符;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述多态XQuery比较运算符生成使用所述第一抽象语法的多态SQL值比较运算符.
29.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XQuery函数调用;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XQuery函数调用生成使用所述第一抽象语法的SQL函数调用。
30.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的用户定义的XQuery函数;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述用户定义的XQuery函数生成使用所述第一抽象语法的用户定义的PL/SQL函数。
31.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的外部XQuery函数;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述外部XQuery函数生成使用所述第一抽象语法的外部SQL函数。
32.根据权利要求2所述的方法,其中,所述第一抽象语法是SQL相关的抽象语法,所述第二抽象语法是XQuery相关的抽象语法;其中,所述第二部分包括使用所述第二抽象语法的XQuery模块;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的所述XQuery模块生成使用所述第一抽象语法的PL/SQL数据包。
33.一种处理查询的方法,包括:
接收所述查询,其中,所述查询指定特定操作并且正在查询使用标记语言存储的数据;
生成所述查询的第一抽象语法树,其中,所述第一抽象语法树代表至少一个不被关系查询处理器理解的查询元素;
在执行任何所述特定操作之前,基于所述第一抽象语法树生成第二抽象语法树,其中,所述第二抽象语法树与通过处理正在查询关系数据库的等效查询生成的抽象语法树形式相同,其中,所述第二抽象语法树不代表任何不被所述关系查询处理器理解的查询元素,并且其中,所述第二抽象语法树指定所有所述特定操作;以及
基于所述第二抽象语法树执行所述特定操作。
34.根据权利要求33所述的方法,其中,执行所述特定操作的所述步骤包括通过对所述关系数据库执行在所述第二抽象语法树中指定的命令来执行所述特定操作。
CN2005800208780A 2004-06-23 2005-06-09 使用转换有效评估查询 Active CN1997995B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US58270604P 2004-06-23 2004-06-23
US60/582,706 2004-06-23
US10/948,523 US7516121B2 (en) 2004-06-23 2004-09-22 Efficient evaluation of queries using translation
US10/948,523 2004-09-22
PCT/US2005/021259 WO2006009768A1 (en) 2004-06-23 2005-06-09 Efficient evaluation of queries using translation

Publications (2)

Publication Number Publication Date
CN1997995A CN1997995A (zh) 2007-07-11
CN1997995B true CN1997995B (zh) 2010-05-05

Family

ID=34972514

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800208780A Active CN1997995B (zh) 2004-06-23 2005-06-09 使用转换有效评估查询

Country Status (8)

Country Link
US (1) US7802180B2 (zh)
EP (1) EP1759315B1 (zh)
JP (1) JP4709213B2 (zh)
CN (1) CN1997995B (zh)
CA (1) CA2572272C (zh)
DE (1) DE602005022069D1 (zh)
HK (1) HK1095901A1 (zh)
WO (1) WO2006009768A1 (zh)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7814047B2 (en) * 2003-08-25 2010-10-12 Oracle International Corporation Direct loading of semistructured data
US7490093B2 (en) 2003-08-25 2009-02-10 Oracle International Corporation Generating a schema-specific load structure to load data into a relational database based on determining whether the schema-specific load structure already exists
US7747580B2 (en) * 2003-08-25 2010-06-29 Oracle International Corporation Direct loading of opaque types
US7779397B2 (en) * 2005-08-29 2010-08-17 Microsoft Corporation Data interfaces
US7519606B2 (en) * 2006-01-31 2009-04-14 International Business Machines Corporation Schema mapping specification framework
US20070244865A1 (en) * 2006-04-17 2007-10-18 International Business Machines Corporation Method and system for data retrieval using a product information search engine
US7853573B2 (en) * 2006-05-03 2010-12-14 Oracle International Corporation Efficient replication of XML data in a relational database management system
US7801856B2 (en) * 2006-08-09 2010-09-21 Oracle International Corporation Using XML for flexible replication of complex types
US8255790B2 (en) * 2006-09-08 2012-08-28 Microsoft Corporation XML based form modification with import/export capability
KR100961444B1 (ko) 2007-04-23 2010-06-09 한국전자통신연구원 멀티미디어 콘텐츠를 검색하는 방법 및 장치
US8126841B2 (en) * 2008-02-20 2012-02-28 International Business Machines Corporation Storage and retrieval of variable data
US20090248715A1 (en) * 2008-03-31 2009-10-01 Microsoft Corporation Optimizing hierarchical attributes for olap navigation
EP2151772A1 (en) * 2008-08-01 2010-02-10 Simba Technologies Inc. Method and system for using queries for multidimensional databases with databases of other types
US8209664B2 (en) * 2009-03-18 2012-06-26 Microsoft Corporation High level programming extensions for distributed data parallel processing
US8140558B2 (en) * 2009-05-22 2012-03-20 International Business Machines Corporation Generating structured query language/extensible markup language (SQL/XML) statements
EP2460078A4 (en) * 2009-07-28 2014-10-29 Oricane Ab METHOD FOR MANAGING MULTILAYER DATA STRUCTURES IN A PIPELINE MEMORY ARCHITECTURE
US8417714B2 (en) * 2010-01-22 2013-04-09 Oracle International Corporation Techniques for fast and scalable XML generation and aggregation over binary XML
US9009137B2 (en) * 2010-03-12 2015-04-14 Microsoft Technology Licensing, Llc Query model over information as a networked service
US8655894B2 (en) * 2010-04-26 2014-02-18 Nokia Corporation Method and apparatus for index generation and use
CN102262631B (zh) * 2010-05-31 2014-03-26 国际商业机器公司 数据评估方法及其系统
GB2500537A (en) * 2010-12-03 2013-09-25 Titus Inc Method and system of hierarchical metadata management and application
US20120246609A1 (en) 2011-03-24 2012-09-27 International Business Machines Corporation Automatic generation of user stories for software products via a product content space
US9396284B2 (en) * 2011-05-18 2016-07-19 Oracle International Corporation Method and system for implementing efficient updatable relational views over XML data
US9659053B2 (en) 2013-01-15 2017-05-23 International Business Machines Corporation Graphical user interface streamlining implementing a content space
US9069647B2 (en) 2013-01-15 2015-06-30 International Business Machines Corporation Logging and profiling content space data and coverage metric self-reporting
US9111040B2 (en) 2013-01-15 2015-08-18 International Business Machines Corporation Integration of a software content space with test planning and test case generation
US9081645B2 (en) 2013-01-15 2015-07-14 International Business Machines Corporation Software product licensing based on a content space
US9063809B2 (en) * 2013-01-15 2015-06-23 International Business Machines Corporation Content space environment representation
US9218161B2 (en) 2013-01-15 2015-12-22 International Business Machines Corporation Embedding a software content space for run-time implementation
US9075544B2 (en) 2013-01-15 2015-07-07 International Business Machines Corporation Integration and user story generation and requirements management
US9087155B2 (en) 2013-01-15 2015-07-21 International Business Machines Corporation Automated data collection, computation and reporting of content space coverage metrics for software products
US9141379B2 (en) 2013-01-15 2015-09-22 International Business Machines Corporation Automated code coverage measurement and tracking per user story and requirement
US9396342B2 (en) 2013-01-15 2016-07-19 International Business Machines Corporation Role based authorization based on product content space
US10339572B2 (en) * 2014-01-31 2019-07-02 Oath Inc. Tracking user interaction with a stream of content
US9959255B2 (en) 2014-01-31 2018-05-01 Yahoo Holdings, Inc. Dynamic streaming content provided by server and client-side tracking application
US9779069B2 (en) * 2014-01-31 2017-10-03 Yahoo Holdings, Inc. Model traversing based compressed serialization of user interaction data and communication from a client-side application
JP6567043B2 (ja) 2014-09-03 2019-08-28 アビニシオ テクノロジー エルエルシー 階層的なエンティティのための計算の管理
US10628424B2 (en) 2016-09-15 2020-04-21 Oracle International Corporation Graph generation for a distributed event processing system
US10732796B2 (en) 2017-03-29 2020-08-04 Microsoft Technology Licensing, Llc Control of displayed activity information using navigational mnemonics
US10671245B2 (en) 2017-03-29 2020-06-02 Microsoft Technology Licensing, Llc Collection and control of user activity set data and activity set user interface
US10853220B2 (en) 2017-04-12 2020-12-01 Microsoft Technology Licensing, Llc Determining user engagement with software applications
US10693748B2 (en) 2017-04-12 2020-06-23 Microsoft Technology Licensing, Llc Activity feed service
US20190050378A1 (en) * 2017-08-11 2019-02-14 Microsoft Technology Licensing, Llc Serializable and serialized interaction representations
US11580088B2 (en) 2017-08-11 2023-02-14 Microsoft Technology Licensing, Llc Creation, management, and transfer of interaction representation sets
US11416478B2 (en) * 2019-01-08 2022-08-16 Live Earth, LLC Data structure and format for efficient storage or transmission of objects
CN112668287A (zh) * 2019-09-30 2021-04-16 北京国双科技有限公司 数据表确定方法、系统及装置
CN112035831A (zh) * 2020-08-14 2020-12-04 深信服科技股份有限公司 一种数据处理方法、装置、服务器及存储介质
CN112433787A (zh) * 2020-11-09 2021-03-02 北京达佳互联信息技术有限公司 目标对象的序列化方法、装置、电子设备及存储介质
CN113518094B (zh) * 2021-09-14 2021-12-28 深圳市普渡科技有限公司 数据处理方法、装置、机器人和存储介质

Family Cites Families (194)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US508032A (en) * 1893-11-07 Box-making machine
US4439837A (en) 1981-06-16 1984-03-27 Ncr Corporation Non-volatile memory system for intelligent terminals
US4536873A (en) 1984-03-19 1985-08-20 Honeywell Inc. Data transmission system
US5088032A (en) 1988-01-29 1992-02-11 Cisco Systems, Inc. Method and apparatus for routing communications among computer networks
US8700458B2 (en) 1989-05-01 2014-04-15 Catalina Marketing Corporation System, method, and database for processing transactions
US5257365A (en) 1990-03-16 1993-10-26 Powers Frederick A Database system with multi-dimensional summary search tree nodes for reducing the necessity to access records
US5295261A (en) 1990-07-27 1994-03-15 Pacific Bell Corporation Hybrid database structure linking navigational fields having a hierarchial database structure to informational fields having a relational database structure
JPH0667951A (ja) 1992-05-20 1994-03-11 Nec Corp データベース管理システム
US5467471A (en) 1993-03-10 1995-11-14 Bader; David A. Maintaining databases by means of hierarchical genealogical table
US5630125A (en) 1994-05-23 1997-05-13 Zellweger; Paul Method and apparatus for information management using an open hierarchical data structure
US5956715A (en) 1994-12-13 1999-09-21 Microsoft Corporation Method and system for controlling user access to a resource in a networked computing environment
CA2167790A1 (en) 1995-01-23 1996-07-24 Donald S. Maier Relational database system and method with high data availability during table data restructuring
US5590324A (en) 1995-02-07 1996-12-31 International Business Machines Corporation Optimization of SQL queries using universal quantifiers, set intersection, and max/min aggregation in the presence of nullable columns
US5724577A (en) 1995-06-07 1998-03-03 Lockheed Martin Corporation Method for operating a computer which searches a relational database organizer using a hierarchical database outline
US5960194A (en) 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
US5734887A (en) 1995-09-29 1998-03-31 International Business Machines Corporation Method and apparatus for logical data access to a physical relational database
US5893109A (en) 1996-03-15 1999-04-06 Inso Providence Corporation Generation of chunks of a long document for an electronic book system
US5913214A (en) 1996-05-30 1999-06-15 Massachusetts Inst Technology Data extraction from world wide web pages
US5893104A (en) 1996-07-09 1999-04-06 Oracle Corporation Method and system for processing queries in a database system using index structures that are not native to the database system
US6208993B1 (en) 1996-07-26 2001-03-27 Ori Software Development Ltd. Method for organizing directories
US5878410A (en) 1996-09-13 1999-03-02 Microsoft Corporation File system sort order indexes
US5987506A (en) 1996-11-22 1999-11-16 Mangosoft Corporation Remote access and geographically distributed computers in a globally addressable storage environment
US5878415A (en) 1997-03-20 1999-03-02 Novell, Inc. Controlling access to objects in a hierarchical database
US5905982A (en) 1997-04-04 1999-05-18 International Business Machines Corporation Handling null values in SQL queries over object-oriented data
US5983215A (en) 1997-05-08 1999-11-09 The Trustees Of Columbia University In The City Of New York System and method for performing joins and self-joins in a database system
JP3777025B2 (ja) 1997-08-20 2006-05-24 インターナショナル・ビジネス・マシーンズ・コーポレーション システム資源表示装置およびその方法
GB2329044B (en) 1997-09-05 2002-10-09 Ibm Data retrieval system
US6141655A (en) 1997-09-23 2000-10-31 At&T Corp Method and apparatus for optimizing and structuring data by designing a cube forest data structure for hierarchically split cube forest template
US5974407A (en) 1997-09-29 1999-10-26 Sacks; Jerome E. Method and apparatus for implementing a hierarchical database management system (HDBMS) using a relational database management system (RDBMS) as the implementing apparatus
US6038563A (en) 1997-10-31 2000-03-14 Sun Microsystems, Inc. System and method for restricting database access to managed object information using a permissions table that specifies access rights corresponding to user access rights to the managed objects
US5999941A (en) 1997-11-25 1999-12-07 Micron Electronics, Inc. Database access using active server pages
US6012067A (en) 1998-03-02 2000-01-04 Sarkar; Shyam Sundar Method and apparatus for storing and manipulating objects in a plurality of relational data managers on the web
US6356920B1 (en) 1998-03-09 2002-03-12 X-Aware, Inc Dynamic, hierarchical data exchange system
US6799298B2 (en) 1998-03-11 2004-09-28 Overture Services, Inc. Technique for locating an item of interest within a stored representation of data
JPH11296541A (ja) 1998-04-14 1999-10-29 Fujitsu Ltd 構造化データ管理システム及び構造化データ管理プログラムを記録したコンピュータ読み取り可能な記録媒体
US6915307B1 (en) 1998-04-15 2005-07-05 Inktomi Corporation High performance object cache
US6240407B1 (en) 1998-04-29 2001-05-29 International Business Machines Corp. Method and apparatus for creating an index in a database system
US6772350B1 (en) 1998-05-15 2004-08-03 E.Piphany, Inc. System and method for controlling access to resources in a distributed environment
US6108698A (en) 1998-07-29 2000-08-22 Xerox Corporation Node-link data defining a graph and a tree within the graph
US6654761B2 (en) 1998-07-29 2003-11-25 Inxight Software, Inc. Controlling which part of data defining a node-link structure is in memory
US6263332B1 (en) 1998-08-14 2001-07-17 Vignette Corporation System and method for query processing of structured documents
US6487546B1 (en) 1998-08-27 2002-11-26 Oracle Corporation Apparatus and method for aggregate indexes
US6269380B1 (en) 1998-08-31 2001-07-31 Xerox Corporation Property based mechanism for flexibility supporting front-end and back-end components having different communication protocols
US6253195B1 (en) 1998-09-21 2001-06-26 Microsoft Corporation Optimized query tree
US6718322B1 (en) 1998-10-02 2004-04-06 Ncr Corporation SQL-based analytic algorithm for rule induction
US6366934B1 (en) 1998-10-08 2002-04-02 International Business Machines Corporation Method and apparatus for querying structured documents using a database extender
US6584459B1 (en) 1998-10-08 2003-06-24 International Business Machines Corporation Database extender for storing, querying, and retrieving structured documents
US6279007B1 (en) 1998-11-30 2001-08-21 Microsoft Corporation Architecture for managing query friendly hierarchical values
US6918082B1 (en) 1998-12-17 2005-07-12 Jeffrey M. Gross Electronic document proofing system
US6516327B1 (en) 1998-12-24 2003-02-04 International Business Machines Corporation System and method for synchronizing data in multiple databases
US6370537B1 (en) 1999-01-14 2002-04-09 Altoweb, Inc. System and method for the manipulation and display of structured data
US6154741A (en) 1999-01-29 2000-11-28 Feldman; Daniel J. Entitlement management and access control system
US7366708B2 (en) 1999-02-18 2008-04-29 Oracle Corporation Mechanism to efficiently index structured data that provides hierarchical access in a relational database system
US6427123B1 (en) 1999-02-18 2002-07-30 Oracle Corporation Hierarchical indexing for accessing hierarchically organized information in a relational system
US6584458B1 (en) 1999-02-19 2003-06-24 Novell, Inc. Method and apparatuses for creating a full text index accommodating child words
US6341289B1 (en) 1999-05-06 2002-01-22 International Business Machines Corporation Object identity and partitioning for user defined extents
US6343287B1 (en) 1999-05-19 2002-01-29 Sun Microsystems, Inc. External data store link for a profile service
US20020124100A1 (en) 1999-05-20 2002-09-05 Jeffrey B Adams Method and apparatus for access to, and delivery of, multimedia information
US6496842B1 (en) 1999-05-28 2002-12-17 Survol Interactive Technologies Navigating heirarchically organized information
US6470344B1 (en) 1999-05-29 2002-10-22 Oracle Corporation Buffering a hierarchical index of multi-dimensional data
US7472349B1 (en) 1999-06-01 2008-12-30 Oracle International Corporation Dynamic services infrastructure for allowing programmatic access to internet and other resources
US6574655B1 (en) 1999-06-29 2003-06-03 Thomson Licensing Sa Associative management of multimedia assets and associated resources using multi-domain agent-based communication between heterogeneous peers
US6199195B1 (en) 1999-07-08 2001-03-06 Science Application International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
US6754661B1 (en) 1999-07-13 2004-06-22 Microsoft Corporation Hierarchical storage systems for holding evidentiary objects and methods of creating and operating upon hierarchical storage systems
US7181438B1 (en) 1999-07-21 2007-02-20 Alberti Anemometer, Llc Database access system
US6438562B1 (en) 1999-08-24 2002-08-20 Oracle Corporation Parallel index maintenance
US6665684B2 (en) 1999-09-27 2003-12-16 Oracle International Corporation Partition pruning with composite partitioning
US7134072B1 (en) 1999-10-13 2006-11-07 Microsoft Corporation Methods and systems for processing XML documents
US6826727B1 (en) 1999-11-24 2004-11-30 Bitstream Inc. Apparatus, methods, programming for automatically laying out documents
US6721727B2 (en) 1999-12-02 2004-04-13 International Business Machines Corporation XML documents stored as column data
US6418448B1 (en) 1999-12-06 2002-07-09 Shyam Sundar Sarkar Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web
US20020116371A1 (en) 1999-12-06 2002-08-22 David Dodds System and method for the storage, indexing and retrieval of XML documents using relation databases
US6662342B1 (en) 1999-12-13 2003-12-09 International Business Machines Corporation Method, system, and program for providing access to objects in a document
US6721723B1 (en) 1999-12-23 2004-04-13 1St Desk Systems, Inc. Streaming metatree data structure for indexing information in a data base
US6510434B1 (en) 1999-12-29 2003-01-21 Bellsouth Intellectual Property Corporation System and method for retrieving information from a database using an index of XML tags and metafiles
AU2001229371A1 (en) 2000-01-14 2001-07-24 Saba Software, Inc. Information server
US6643652B2 (en) 2000-01-14 2003-11-04 Saba Software, Inc. Method and apparatus for managing data exchange among systems in a network
US6604100B1 (en) 2000-02-09 2003-08-05 At&T Corp. Method for converting relational data into a structured document
US6785673B1 (en) 2000-02-09 2004-08-31 At&T Corp. Method for converting relational data into XML
EP1275054A1 (en) 2000-02-11 2003-01-15 Acta Technologies, Inc. Nested relational data model
US7072896B2 (en) 2000-02-16 2006-07-04 Verizon Laboratories Inc. System and method for automatic loading of an XML document defined by a document-type definition into a relational database including the generation of a relational schema therefor
US7031956B1 (en) 2000-02-16 2006-04-18 Verizon Laboratories Inc. System and method for synchronizing and/or updating an existing relational database with supplemental XML data
EP1264263A2 (en) 2000-02-25 2002-12-11 Saba Software, Inc. Method for enterprise workforce planning
US6449620B1 (en) 2000-03-02 2002-09-10 Nimble Technology, Inc. Method and apparatus for generating information pages using semi-structured data stored in a structured manner
US20020056025A1 (en) 2000-11-07 2002-05-09 Qiu Chaoxin C. Systems and methods for management of memory
JP2001265609A (ja) 2000-03-16 2001-09-28 Omron Corp 演算処理装置
US7213017B2 (en) 2000-03-17 2007-05-01 Microsoft Corporation Systems and methods for transforming query results into hierarchical information
US6934712B2 (en) * 2000-03-21 2005-08-23 International Business Machines Corporation Tagging XML query results over relational DBMSs
US6782380B1 (en) 2000-04-14 2004-08-24 David Victor Thede Method and system for indexing and searching contents of extensible mark-up language (XML) documents
US20030167456A1 (en) 2000-04-17 2003-09-04 Vinay Sabharwal Architecture for building scalable object oriented web database applications
US20030158897A1 (en) 2000-05-09 2003-08-21 Viryanet Ltd. Networked platform for creating and supporting communities
US6845507B2 (en) 2000-05-18 2005-01-18 Ss & C Technologies, Inc. Method and system for straight through processing
US6915304B2 (en) 2000-05-23 2005-07-05 Kenneth A. Krupa System and method for converting an XML data structure into a relational database
US7043472B2 (en) 2000-06-05 2006-05-09 International Business Machines Corporation File system with access and retrieval of XML documents
US6684204B1 (en) 2000-06-19 2004-01-27 International Business Machines Corporation Method for conducting a search on a network which includes documents having a plurality of tags
US20020029229A1 (en) 2000-06-30 2002-03-07 Jakopac David E. Systems and methods for data compression
US7024413B2 (en) 2000-07-26 2006-04-04 International Business Machines Corporation Method of externalizing legacy database in ASN.1-formatted data into XML format
US6704024B2 (en) 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US7917602B2 (en) 2000-08-08 2011-03-29 The Directv Group, Inc. Method and system for remote television replay control
US6708186B1 (en) 2000-08-14 2004-03-16 Oracle International Corporation Aggregating and manipulating dictionary metadata in a database system
US6675230B1 (en) 2000-08-22 2004-01-06 International Business Machines Corporation Method, system, and program for embedding a user interface object in another user interface object
US6654734B1 (en) 2000-08-30 2003-11-25 International Business Machines Corporation System and method for query processing and optimization for XML repositories
WO2002019097A1 (en) 2000-09-01 2002-03-07 International Interactive Commerce, Ltd. System and method for collaboration using web browsers
US20020054090A1 (en) 2000-09-01 2002-05-09 Silva Juliana Freire Method and apparatus for creating and providing personalized access to web content and services from terminals having diverse capabilities
US6871204B2 (en) 2000-09-07 2005-03-22 Oracle International Corporation Apparatus and method for mapping relational data and metadata to XML
US6801224B1 (en) 2000-09-14 2004-10-05 International Business Machines Corporation Method, system, and program for generating a graphical user interface window for an application program
AU2002214540A1 (en) 2000-09-20 2002-04-02 A2I, Inc. Method and apparatus for dynamically formatting and displaying tabular data in real time
US20020184401A1 (en) 2000-10-20 2002-12-05 Kadel Richard William Extensible information system
US6785718B2 (en) 2000-10-23 2004-08-31 Schneider Logistics, Inc. Method and system for interfacing with a shipping service
US20030105732A1 (en) 2000-11-17 2003-06-05 Kagalwala Raxit A. Database schema for structure query language (SQL) server
US20020087596A1 (en) 2000-12-29 2002-07-04 Steve Lewontin Compact tree representation of markup languages
US7174534B2 (en) 2001-01-22 2007-02-06 Symbol Technologies, Inc. Efficient system and method for running and analyzing multi-channel, multi-modal applications
US7162467B2 (en) 2001-02-22 2007-01-09 Greenplum, Inc. Systems and methods for managing distributed database resources
GB2409078B (en) 2001-02-26 2005-09-07 Ori Software Dev Ltd Encoding semi-structured data for efficient search and browsing
US6804677B2 (en) 2001-02-26 2004-10-12 Ori Software Development Ltd. Encoding semi-structured data for efficient search and browsing
US6542911B2 (en) 2001-03-01 2003-04-01 Sun Microsystems, Inc. Method and apparatus for freeing memory from an extensible markup language document object model tree active in an application cache
US6964025B2 (en) 2001-03-20 2005-11-08 Microsoft Corporation Auto thumbnail gallery
JP4529063B2 (ja) 2001-03-30 2010-08-25 ルネサスエレクトロニクス株式会社 システムシミュレータ、シミュレーション方法及びシミュレーションプログラム
US6778977B1 (en) 2001-04-19 2004-08-17 Microsoft Corporation Method and system for creating a database table index using multiple processors
US6968334B2 (en) 2001-05-15 2005-11-22 Nokia Corporation Method and business process to maintain privacy in distributed recommendation systems
US7028028B1 (en) 2001-05-17 2006-04-11 Enosys Markets,Inc. System for querying markup language data stored in a relational database according to markup language schema
US7581170B2 (en) 2001-05-31 2009-08-25 Lixto Software Gmbh Visual and interactive wrapper generation, automated information extraction from Web pages, and translation into XML
US7043716B2 (en) 2001-06-13 2006-05-09 Arius Software Corporation System and method for multiple level architecture by use of abstract application notation
MXPA03011976A (es) 2001-06-22 2005-07-01 Nervana Inc Sistema y metodo para la recuperacion, manejo, entrega y presentacion de conocimientos.
US6886046B2 (en) 2001-06-26 2005-04-26 Citrix Systems, Inc. Methods and apparatus for extendible information aggregation and presentation
US7197764B2 (en) 2001-06-29 2007-03-27 Bea Systems Inc. System for and methods of administration of access control to numerous resources and objects
US6920461B2 (en) 2001-07-10 2005-07-19 Microsoft Corp. Application program interface for network software platform
US6795821B2 (en) 2001-07-17 2004-09-21 Trendium, Inc. Database systems, methods and computer program products including primary key and super key indexes for use with partitioned tables
US6725212B2 (en) 2001-08-31 2004-04-20 International Business Machines Corporation Platform-independent method and system for graphically presenting the evaluation of a query in a database management system
AU2002334721B2 (en) 2001-09-28 2008-10-23 Oracle International Corporation An index structure to access hierarchical data in a relational database system
US6836857B2 (en) 2001-10-18 2004-12-28 Sun Microsystems, Inc. Mechanism for debugging a computer process
US6928449B2 (en) 2001-10-18 2005-08-09 Sun Microsystems, Inc. Mechanism for facilitating backtracking
US7487168B2 (en) 2001-11-01 2009-02-03 Microsoft Corporation System and method for loading hierarchical data into relational database systems
US6826568B2 (en) 2001-12-20 2004-11-30 Microsoft Corporation Methods and system for model matching
US7523127B2 (en) 2002-01-14 2009-04-21 Testout Corporation System and method for a hierarchical database management system for educational training and competency testing simulations
US6732222B1 (en) 2002-02-01 2004-05-04 Silicon Motion, Inc. Method for performing flash memory file management
US9374451B2 (en) 2002-02-04 2016-06-21 Nokia Technologies Oy System and method for multimodal short-cuts to digital services
US7127700B2 (en) 2002-03-14 2006-10-24 Openwave Systems Inc. Method and apparatus for developing web services using standard logical interfaces to support multiple markup languages
CA2382712A1 (en) 2002-04-19 2003-10-19 Ibm Canada Limited-Ibm Canada Limitee Detection and prevention of writing conflicts within nested query statements
US6918067B2 (en) 2002-04-30 2005-07-12 International Business Machines Corporation Detecting network instability
KR100484138B1 (ko) 2002-05-08 2005-04-18 삼성전자주식회사 관계형 데이터베이스에서 정규 경로식 질의를 처리하는xml 인덱싱 방법과 자료구조
US7076766B2 (en) 2002-06-03 2006-07-11 Steve Wirts Software application development methods and framework
AUPS300402A0 (en) 2002-06-17 2002-07-11 Canon Kabushiki Kaisha Indexing and querying structured documents
US7574652B2 (en) 2002-06-20 2009-08-11 Canon Kabushiki Kaisha Methods for interactively defining transforms and for generating queries by manipulating existing query data
US6917935B2 (en) 2002-06-26 2005-07-12 Microsoft Corporation Manipulating schematized data in a database
US6889231B1 (en) 2002-08-01 2005-05-03 Oracle International Corporation Asynchronous information sharing system
US7570943B2 (en) 2002-08-29 2009-08-04 Nokia Corporation System and method for providing context sensitive recommendations to digital services
US7120645B2 (en) 2002-09-27 2006-10-10 Oracle International Corporation Techniques for rewriting XML queries directed to relational database constructs
US7171407B2 (en) 2002-10-03 2007-01-30 International Business Machines Corporation Method for streaming XPath processing with forward and backward axes
US7308474B2 (en) 2002-11-06 2007-12-11 Oracle International Corporation Techniques for scalably accessing data in an arbitrarily large document by a device with limited resources
US7124137B2 (en) 2002-12-19 2006-10-17 International Business Machines Corporation Method, system, and program for optimizing processing of nested functions
US20040143581A1 (en) 2003-01-15 2004-07-22 Bohannon Philip L. Cost-based storage of extensible markup language (XML) data
US20040148278A1 (en) 2003-01-22 2004-07-29 Amir Milo System and method for providing content warehouse
US7490097B2 (en) 2003-02-20 2009-02-10 Microsoft Corporation Semi-structured data storage schema selection
US7062507B2 (en) 2003-02-24 2006-06-13 The Boeing Company Indexing profile for efficient and scalable XML based publish and subscribe system
US7020666B2 (en) 2003-03-07 2006-03-28 Microsoft Corporation System and method for unknown type serialization
US20040193575A1 (en) 2003-03-25 2004-09-30 Chia-Hsun Chen Path expressions and SQL select statement in object oriented language
US7392239B2 (en) 2003-04-14 2008-06-24 International Business Machines Corporation System and method for querying XML streams
US7181680B2 (en) 2003-04-30 2007-02-20 Oracle International Corporation Method and mechanism for processing queries for XML documents using an index
US6836778B2 (en) 2003-05-01 2004-12-28 Oracle International Corporation Techniques for changing XML content in a relational database
US7103611B2 (en) 2003-05-01 2006-09-05 Oracle International Corporation Techniques for retaining hierarchical information in mapping between XML documents and relational data
US7051042B2 (en) * 2003-05-01 2006-05-23 Oracle International Corporation Techniques for transferring a serialized image of XML data
US7634480B2 (en) 2003-05-08 2009-12-15 Microsoft Corporation Declarative rules for metadirectory
US20040230667A1 (en) 2003-05-12 2004-11-18 Wookey Michael J. Loosely coupled intellectual capital processing engine
US7194733B2 (en) 2003-06-11 2007-03-20 Microsoft Corporation Transformation of an asynchronous transactional messaging language into a web services compatible language
US7519577B2 (en) 2003-06-23 2009-04-14 Microsoft Corporation Query intermediate language method and system
US7383255B2 (en) 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US7146352B2 (en) 2003-06-23 2006-12-05 Microsoft Corporation Query optimizer system and method
US7143078B2 (en) 2003-06-27 2006-11-28 Microsoft Corporation System and method for managed database query pre-optimization
US20050010896A1 (en) 2003-07-07 2005-01-13 International Business Machines Corporation Universal format transformation between relational database management systems and extensible markup language using XML relational transformation
US7747580B2 (en) 2003-08-25 2010-06-29 Oracle International Corporation Direct loading of opaque types
US7814047B2 (en) 2003-08-25 2010-10-12 Oracle International Corporation Direct loading of semistructured data
US8150818B2 (en) 2003-08-25 2012-04-03 International Business Machines Corporation Method and system for storing structured documents in their native format in a database
US7634498B2 (en) 2003-10-24 2009-12-15 Microsoft Corporation Indexing XML datatype content system and method
US7315852B2 (en) 2003-10-31 2008-01-01 International Business Machines Corporation XPath containment for index and materialized view matching
US7512615B2 (en) 2003-11-07 2009-03-31 International Business Machines Corporation Single pass workload directed clustering of XML documents
US7287023B2 (en) 2003-11-26 2007-10-23 International Business Machines Corporation Index structure for supporting structural XML queries
US8949220B2 (en) 2003-12-19 2015-02-03 Oracle International Corporation Techniques for managing XML data associated with multiple execution units
US7290012B2 (en) 2004-01-16 2007-10-30 International Business Machines Corporation Apparatus, system, and method for passing data between an extensible markup language document and a hierarchical database
JP4227033B2 (ja) 2004-01-20 2009-02-18 富士通株式会社 データベース統合参照装置、データベース統合参照方法およびデータベース統合参照プログラム
US7386541B2 (en) 2004-03-18 2008-06-10 Microsoft Corporation System and method for compiling an extensible markup language based query
US7603347B2 (en) 2004-04-09 2009-10-13 Oracle International Corporation Mechanism for efficiently evaluating operator trees
US7499915B2 (en) 2004-04-09 2009-03-03 Oracle International Corporation Index for accessing XML data
US7398265B2 (en) 2004-04-09 2008-07-08 Oracle International Corporation Efficient query processing of XML data using XML index
US7440954B2 (en) 2004-04-09 2008-10-21 Oracle International Corporation Index maintenance for operations involving indexed XML data
US7509631B2 (en) 2004-05-21 2009-03-24 Bea Systems, Inc. Systems and methods for implementing a computer language type system
US20050289175A1 (en) 2004-06-23 2005-12-29 Oracle International Corporation Providing XML node identity based operations in a value based SQL system
US7516121B2 (en) 2004-06-23 2009-04-07 Oracle International Corporation Efficient evaluation of queries using translation
US20050289138A1 (en) 2004-06-25 2005-12-29 Cheng Alex T Aggregate indexing of structured and unstructured marked-up content
US7668806B2 (en) 2004-08-05 2010-02-23 Oracle International Corporation Processing queries against one or more markup language sources
US7685137B2 (en) 2004-08-06 2010-03-23 Oracle International Corporation Technique of using XMLType tree as the type infrastructure for XML
US7853961B2 (en) 2005-02-28 2010-12-14 Microsoft Corporation Platform for data services across disparate application frameworks
US8346737B2 (en) 2005-03-21 2013-01-01 Oracle International Corporation Encoding of hierarchically organized data for efficient storage and processing
US8463801B2 (en) 2005-04-04 2013-06-11 Oracle International Corporation Effectively and efficiently supporting XML sequence type and XQuery sequence natively in a SQL system

Also Published As

Publication number Publication date
EP1759315B1 (en) 2010-06-30
JP2008504601A (ja) 2008-02-14
CA2572272A1 (en) 2006-01-26
US20060036935A1 (en) 2006-02-16
CN1997995A (zh) 2007-07-11
DE602005022069D1 (de) 2010-08-12
EP1759315A1 (en) 2007-03-07
JP4709213B2 (ja) 2011-06-22
CA2572272C (en) 2012-10-30
US7802180B2 (en) 2010-09-21
WO2006009768A1 (en) 2006-01-26
HK1095901A1 (en) 2007-05-18

Similar Documents

Publication Publication Date Title
CN1997995B (zh) 使用转换有效评估查询
US7516121B2 (en) Efficient evaluation of queries using translation
EP1686495B1 (en) Mapping web services to ontologies
US7107282B1 (en) Managing XPath expressions in a database system
US7644066B2 (en) Techniques of efficient XML meta-data query using XML table index
Suciu Semistructured data and XML
CN100468396C (zh) 用于任意数据模型的映射体系结构
US20060031204A1 (en) Processing queries against one or more markup language sources
Fernandez et al. A semi-monad for semi-structured data (ICDT version)
US20030061207A1 (en) Query filter for querying a multitude of databases
Lu et al. An effective sparql support over relational databases
Chaudhuri et al. Storage and Retrieval of XML Data Using Relational Databases.
CN100440218C (zh) Lob中存储的xml内容的有效提取
Dang-Ngoc et al. Federating heterogeneous data sources
Li et al. Representing UML snowflake diagram from integrating XML data using XML schema
Siméon et al. XQuery 1.0: An XML query language
KR100666942B1 (ko) 관계형 dbms를 이용한 xml 데이터 관리 방법
Yan et al. From XML to relational database
KR100487738B1 (ko) 데이터베이스 질의어와 밀결합된 엑스.엠.엘 질의어를지원하는 엑스.엠.엘 문서 검색장치 및 그 방법
Nicolle et al. XML integration and toolkit for B2B applications
Zhan XML-based data integration for application interoperability
AU2005265030B2 (en) Efficient evaluation of queries using translation
AU2007229358B2 (en) Apparatus and method for mapping relational data and metadata to XML
Vrdoljak et al. Methodology for integrating XML data into data warehouses
Senthil Kumar et al. Towards converting a production database schema to XML schema

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant