CN1997995A - 使用转换有效评估查询 - Google Patents
使用转换有效评估查询 Download PDFInfo
- Publication number
- CN1997995A CN1997995A CNA2005800208780A CN200580020878A CN1997995A CN 1997995 A CN1997995 A CN 1997995A CN A2005800208780 A CNA2005800208780 A CN A2005800208780A CN 200580020878 A CN200580020878 A CN 200580020878A CN 1997995 A CN1997995 A CN 1997995A
- Authority
- CN
- China
- Prior art keywords
- abstract syntax
- sql
- xquery
- processors
- query
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information 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/83—Querying
- G06F16/835—Query processing
- G06F16/8358—Query translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information 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/84—Mapping; Conversion
- G06F16/86—Mapping to a database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
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被称作“SQL AST”。对非SQL查询语言(例如,XQuery或XQueryX)形式的查询的每部分重复该过程。SQL形式的查询的每部分也被编译成SQL AST。然后,数据库服务器合并对应于查询的每部分的所有AST。然后,能够最优化并执行合并的AST或将其存储起来用于以后执行。
此处描述的技术至少应用于具有一种或多种说明性查询语言形式的查询的一个或多个部分的查询。说明性查询语言使得能够指定将要从数据源中检索的信息,而不需要指定怎样检索信息。
2.0 XML数据库操作
一些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查询优化程序来最优化SQLAST。然后,可以代替原始XQuery来执行优化的等效查询(如由最优化SQL AST所表示),从而节省查询处理时间。
在此处论述的实例中,数据库服务器150接收非SQL查询或查询的一部分,并将它们转换为SQL。然而,此处描述的技术不限于这样的实施例。例如,在其他实施例中,在数据库应用程序和数据库服务器150之间充当中间件的中间层服务器可执行如这里所述的转换。然后,转换的SQL查询将被发送至数据库服务器150并在其上执行。
就从一种抽象语法到另一种的转换而论提出此处所描述的技术。在此处所描述的技术的其他实施例中,使用第一语法(例如,XQuery)的查询的部分在被编译为抽象语法之前,可被转换为第二语法(例如,SQL)。
5.0 XQUERY转换
如上所述,此处描述的技术用于将一种抽象语法的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 NOTNULL(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…||literaln
OPTTCA(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) |
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 0 whenNaN then 0 else 1 |
xs:base64 Binary | RAW/BLOB | OPTXMLCNV(<expr>,QMTXT_BASE64BINARY) |
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
Where20<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 orderby子句。这些被映射到SQLorderby子句表达式。
实例规则:将排序比较表达式映射到SQL orderby子句。
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.14 FLWOR表达式
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(<sq1-ret-expr>)
from TABLE(XMLSEQUENCE(<sq1-rhs-expr1>)as“var1”
TABLE(XMLSEQUENCE(<sq1-rhs-expr2>)as“var2”
where<sq1-cond>
order by<sq1-o1>,<sq1-o2>…<sq1-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))))
retuming 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(“$”))
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.1 LET子句处理
如果不需要保存节点标识,则将LET子句内联到查询表达式(并且标记为公共子表达式)。否则使用LET子句表达式创建子查询作为其选择列表。将子查询标记为不可合并以防止视图合并。
保存了具有节点标识的实例:
for $i in doc(“foo.xml”)/PurchaseOrder//LineItems
let $j:=doc(“baditems.xm1”)//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.xm1”)//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)否则如果静态类型表明表达式产生单元素节点,则映射到。
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.23 INSTANCEOF表达式
可使用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.25 TREAT表达式
Treat表达式被映射到Case表达式。
实例规则:映射treat<expr>as<type>到CASE WHENOPTXTYPCHK(<expr>,<type>)=1 then<expr>else error()end。
5.1.26 VALIDATE(验证)表达式
将验证表达式映射到XMLValidate()函数。XMLValidate()是接收模式类型(局部或全局)并返回验证的XML值或错误的SQL运算符。
实例规则:将validate<type><expr>映射到XMLValidate(<expr>,<type>)
验证表达式还可以被映射到XMLIsValid()函数。
5.1.27 AGREGATE(聚集)表达式
XQuery允许聚集在查询中任何位置出现。这不是直接由SQL支持的。例如,下列查询返回其中具有21个以上行式项目的所有定购单。
for $i in doc(“Po.xml”)
where count($i/PurchaseOrder/Lineltems)>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 | -同上- |
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 | -相同-, | |
<< | OPTTLT | ||
range(范围) | OPTXNRNG | 范围运算符 | |
Union(并) | OPTXUJ | OPTTUN | 如果对XMLType(Seq)添加映射或排序方法,则可重用常规UNION/INTERSECT等。 |
Intersect(交) | OPTXINTR | OPTTIS | -同上- |
except(差) | OPTXEXC | OPTTMI | -同上- |
+ | OPTTAD | 对非字符输入添加TO NUMBER()。可转换为多态SQL运算符。 | |
- | OPTTSU | -同上- | |
Mult(乘) | OPTTMU | -同上- |
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(节点函数) | |||
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() | ||
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输入 | |
fn:compare(比较) | - | 可相当于SQL中满足as case lhs<rhsthen-1 else case when lhs=rhs then 0else 1. | |
fn:concat | OPTTCA | 可映射到多个OOTTCA(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-urnicode((规格化-单代码) | OPTXSOPR | NLS支持 | |
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);需要校对支持 | |
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(布尔操作) | |||
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 | ||
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小时 | |
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小时 | |
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 TimeDLuration | OPTTSU | ||
QNames | |||
fn:resolve-qname | OPTXQNM | Qname函数 | |
fn:expanded-qname | OPTXQNM | ||
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 | ||
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() | |
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 | 忽略 | 通过转换成分而使用 | |
Equals(等于) | |||
fn:deep-equal | OPTXDEEP | 可使用XMLType映射方法函数来完成 | |
aggregate functions(聚集函数) | |||
fn:count(计数) | OPTTCO | ||
fn:avg(平均值) | OPTTAV | 需要校对支持 | |
fn:max(最大值) | OPTTMX | -同上- | |
fn:min(最小值) | OPTTMN | -同上- | |
fn:sum | OPTTSUM | -同上- |
(求和) | |||
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 | ||
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>) | ||
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’)asnumber)>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 (68)
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表达式;并且其中,生成所述第四内存中表示的所述步骤包括基于使用所述第二抽象语法的XML 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/XMLValidate操作中的一个。
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所述的方法,其中执行所述特定操作的所述步骤包括通过对所述关系数据库执行在所述第二内存中表示中指定的命令来执行所述特定操作。
35.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求1中所述的方法。
36.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求2中所述的方法。
37.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求3中所述的方法。
38.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求4中所述的方法。
39.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求5中所述的方法。
40.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求6中所述的方法。
41.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求7中所述的方法。
42.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求8中所述的方法。
43.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求9中所述的方法。
44.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求10中所述的方法。
45.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求11中所述的方法。
46.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求12中所述的方法。
47.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求13中所述的方法。
48.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求14中所述的方法。
49.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求15中所述的方法。
50.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求16中所述的方法。
51.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求17中所述的方法。
52.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求18中所述的方法。
53.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求19中所述的方法。
54.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求20中所述的方法。
55.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个更多个处理器执行权利要求21中所述的方法。
56.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求22中所述的方法。
57.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求23中所述的方法。
58.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求24中所述的方法。
59.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求25中所述的方法。
60.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求26中所述的方法。
61.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求27中所述的方法。
62.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求28中所述的方法。
63.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求29中所述的方法。
64.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求30中所述的方法。
65.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求31中所述的方法。
66.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求32中所述的方法。
67.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求33中所述的方法。
68.一种计算机可读介质,承载一个或多个指令序列,当被一个或多个处理器执行时,所述指令序列使所述一个或多个处理器执行权利要求34中所述的方法。
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 | 2004-09-22 | ||
US10/948,523 US7516121B2 (en) | 2004-06-23 | 2004-09-22 | Efficient evaluation of queries using translation |
PCT/US2005/021259 WO2006009768A1 (en) | 2004-06-23 | 2005-06-09 | Efficient evaluation of queries using translation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1997995A true CN1997995A (zh) | 2007-07-11 |
CN1997995B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262631A (zh) * | 2010-05-31 | 2011-11-30 | 国际商业机器公司 | 数据评估方法及其系统 |
CN109690524A (zh) * | 2016-09-15 | 2019-04-26 | 甲骨文国际公司 | 分布式事件处理系统中的数据序列化 |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
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 |
WO2011014118A1 (en) * | 2009-07-28 | 2011-02-03 | Oricane Ab | Method for managing multi-layered data structures in a pipelined 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 |
DE202011110377U1 (de) * | 2010-12-03 | 2013-09-20 | Titus Inc. | System eines hierarchischen Metadaten Managements und Anwendung |
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 |
US9063809B2 (en) * | 2013-01-15 | 2015-06-23 | International Business Machines Corporation | Content space environment representation |
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 |
US9659053B2 (en) | 2013-01-15 | 2017-05-23 | International Business Machines Corporation | Graphical user interface streamlining implementing a content space |
US9075544B2 (en) | 2013-01-15 | 2015-07-07 | International Business Machines Corporation | Integration and user story generation and requirements management |
US9069647B2 (en) | 2013-01-15 | 2015-06-30 | International Business Machines Corporation | Logging and profiling content space data and coverage metric self-reporting |
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 |
US9081645B2 (en) | 2013-01-15 | 2015-07-14 | International Business Machines Corporation | Software product licensing based on a content space |
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 |
US9218161B2 (en) | 2013-01-15 | 2015-12-22 | International Business Machines Corporation | Embedding a software content space for run-time implementation |
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 |
US9959255B2 (en) | 2014-01-31 | 2018-05-01 | Yahoo Holdings, Inc. | Dynamic streaming content provided by server and client-side tracking application |
US10339572B2 (en) * | 2014-01-31 | 2019-07-02 | Oath Inc. | Tracking user interaction with a stream of content |
SG11201701673TA (en) | 2014-09-03 | 2017-04-27 | Ab Initio Technology Llc | Managing computations for hierarchical entities |
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 |
US10693748B2 (en) | 2017-04-12 | 2020-06-23 | Microsoft Technology Licensing, Llc | Activity feed service |
US10853220B2 (en) | 2017-04-12 | 2020-12-01 | Microsoft Technology Licensing, Llc | Determining user engagement with software applications |
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)
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 |
US6584459B1 (en) | 1998-10-08 | 2003-06-24 | International Business Machines Corporation | Database extender for storing, querying, and retrieving structured documents |
US6366934B1 (en) | 1998-10-08 | 2002-04-02 | International Business Machines Corporation | Method and apparatus for querying structured documents using a database extender |
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 |
US6643652B2 (en) | 2000-01-14 | 2003-11-04 | Saba Software, Inc. | Method and apparatus for managing data exchange among systems in a network |
WO2001052118A2 (en) | 2000-01-14 | 2001-07-19 | Saba Software, Inc. | Information server |
US6785673B1 (en) | 2000-02-09 | 2004-08-31 | At&T Corp. | Method for converting relational data into XML |
US6604100B1 (en) | 2000-02-09 | 2003-08-05 | At&T Corp. | Method for converting relational data into a structured document |
AU2001236998A1 (en) | 2000-02-11 | 2001-08-20 | Acta Technologies, Inc. | Nested relational data model |
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 |
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 |
US20030229529A1 (en) | 2000-02-25 | 2003-12-11 | Yet Mui | 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 |
TW522306B (en) | 2000-08-08 | 2003-03-01 | Replaytv 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 |
US7752214B2 (en) | 2000-09-01 | 2010-07-06 | Op40, Inc. | Extended environment data structure for distributed digital assets over a multi-tier computer network |
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 |
US6910044B2 (en) | 2000-09-20 | 2005-06-21 | Sap Aktiengesellschaft | Method and apparatus for structuring, maintaining, and using families of data |
WO2002046916A2 (en) | 2000-10-20 | 2002-06-13 | Polexis, Inc. | Extensible information system (xis) |
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 |
US7917888B2 (en) | 2001-01-22 | 2011-03-29 | Symbol Technologies, Inc. | System and method for building multi-modal and multi-channel applications |
WO2002069172A1 (en) | 2001-02-22 | 2002-09-06 | Didera, Inc. | Systems and methods for managing distributed database resources |
US6804677B2 (en) | 2001-02-26 | 2004-10-12 | Ori Software Development Ltd. | Encoding semi-structured data for efficient search and browsing |
GB2409078B (en) | 2001-02-26 | 2005-09-07 | Ori Software Dev 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 |
EP1430420A2 (en) | 2001-05-31 | 2004-06-23 | 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 |
EP1410258A4 (en) | 2001-06-22 | 2007-07-11 | Inc Nervana | SYSTEM AND METHOD FOR RECALLING, MANAGING, DELIVERING AND PRESENTING KNOWLEDGE |
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 |
US8374966B1 (en) | 2002-08-01 | 2013-02-12 | Oracle International Corporation | In memory streaming with disk backup and recovery of messages captured from a database redo stream |
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 |
US7051042B2 (en) * | 2003-05-01 | 2006-05-23 | Oracle International Corporation | Techniques for transferring a serialized image of XML data |
US7103611B2 (en) | 2003-05-01 | 2006-09-05 | Oracle International Corporation | Techniques for retaining hierarchical information in mapping between XML documents and relational 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 |
US7146352B2 (en) | 2003-06-23 | 2006-12-05 | Microsoft Corporation | Query optimizer system and method |
US7383255B2 (en) | 2003-06-23 | 2008-06-03 | Microsoft Corporation | Common query runtime system and application programming interface |
US7519577B2 (en) | 2003-06-23 | 2009-04-14 | Microsoft Corporation | Query intermediate language method and system |
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 |
US7814047B2 (en) | 2003-08-25 | 2010-10-12 | Oracle International Corporation | Direct loading of semistructured data |
US7747580B2 (en) | 2003-08-25 | 2010-06-29 | Oracle International Corporation | Direct loading of opaque types |
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 |
US7499915B2 (en) | 2004-04-09 | 2009-03-03 | Oracle International Corporation | Index for accessing XML data |
US7440954B2 (en) | 2004-04-09 | 2008-10-21 | Oracle International Corporation | Index maintenance for operations involving indexed XML data |
US7603347B2 (en) | 2004-04-09 | 2009-10-13 | Oracle International Corporation | Mechanism for efficiently evaluating operator trees |
US7398265B2 (en) | 2004-04-09 | 2008-07-08 | Oracle International Corporation | Efficient query processing of XML data using XML index |
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 |
-
2005
- 2005-06-09 WO PCT/US2005/021259 patent/WO2006009768A1/en not_active Application Discontinuation
- 2005-06-09 CN CN2005800208780A patent/CN1997995B/zh active Active
- 2005-06-09 JP JP2007518128A patent/JP4709213B2/ja active Active
- 2005-06-09 EP EP05760442A patent/EP1759315B1/en active Active
- 2005-06-09 CA CA2572272A patent/CA2572272C/en active Active
- 2005-06-09 DE DE602005022069T patent/DE602005022069D1/de active Active
- 2005-10-06 US US11/246,429 patent/US7802180B2/en active Active
-
2007
- 2007-03-19 HK HK07102934.8A patent/HK1095901A1/xx unknown
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262631A (zh) * | 2010-05-31 | 2011-11-30 | 国际商业机器公司 | 数据评估方法及其系统 |
CN102262631B (zh) * | 2010-05-31 | 2014-03-26 | 国际商业机器公司 | 数据评估方法及其系统 |
CN109690524A (zh) * | 2016-09-15 | 2019-04-26 | 甲骨文国际公司 | 分布式事件处理系统中的数据序列化 |
US11573965B2 (en) | 2016-09-15 | 2023-02-07 | Oracle International Corporation | Data partitioning and parallelism in a distributed event processing system |
US11657056B2 (en) | 2016-09-15 | 2023-05-23 | Oracle International Corporation | Data serialization in a distributed event processing system |
Also Published As
Publication number | Publication date |
---|---|
JP2008504601A (ja) | 2008-02-14 |
EP1759315B1 (en) | 2010-06-30 |
CA2572272A1 (en) | 2006-01-26 |
US7802180B2 (en) | 2010-09-21 |
JP4709213B2 (ja) | 2011-06-22 |
CN1997995B (zh) | 2010-05-05 |
HK1095901A1 (en) | 2007-05-18 |
CA2572272C (en) | 2012-10-30 |
DE602005022069D1 (de) | 2010-08-12 |
US20060036935A1 (en) | 2006-02-16 |
WO2006009768A1 (en) | 2006-01-26 |
EP1759315A1 (en) | 2007-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1997995A (zh) | 使用转换有效评估查询 | |
US7516121B2 (en) | Efficient evaluation of queries using translation | |
US7519577B2 (en) | Query intermediate language method and system | |
US7644066B2 (en) | Techniques of efficient XML meta-data query using XML table index | |
US7120645B2 (en) | Techniques for rewriting XML queries directed to relational database constructs | |
US7403956B2 (en) | Relational schema format | |
Fernandez et al. | An algebra for XML query | |
US7730080B2 (en) | Techniques of rewriting descendant and wildcard XPath using one or more of SQL OR, UNION ALL, and XMLConcat() construct | |
Fernandez et al. | A semi-monad for semi-structured data (ICDT version) | |
EP1686495A1 (en) | Mapping web services to ontologies | |
JPH06110767A (ja) | オブジェクト指向データベースにおける質問処理装置及び処理方法 | |
US7870121B2 (en) | Matching up XML query expression for XML table index lookup during query rewrite | |
Jain et al. | Translating XSLT programs to efficient SQL queries | |
Krishnaprasad et al. | Query rewrite for xml in oracle xml db | |
Choi et al. | The Xquery formal semantics: A foundation for implementation and optimization | |
Lu et al. | An effective sparql support over relational databases | |
Fernandez et al. | Growing xquery | |
Siméon et al. | XQuery 1.0: An XML query language | |
AU2005265030B2 (en) | Efficient evaluation of queries using translation | |
Omelayenko et al. | Knowledge transformation for the semantic web | |
Ghelli et al. | A better semantics for XQuery with side-effects | |
Terwilliger et al. | Full-fidelity flexible object-oriented XML access | |
Zhang | Efficient XML stream processing and searching | |
Zhan | XML-based data integration for application interoperability | |
Dargham et al. | Updating XML documents without breaking their validity |
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 |