CN1573759A - 公共查询运行期系统以及应用编程接口 - Google Patents
公共查询运行期系统以及应用编程接口 Download PDFInfo
- Publication number
- CN1573759A CN1573759A CNA2004100714686A CN200410071468A CN1573759A CN 1573759 A CN1573759 A CN 1573759A CN A2004100714686 A CNA2004100714686 A CN A2004100714686A CN 200410071468 A CN200410071468 A CN 200410071468A CN 1573759 A CN1573759 A CN 1573759A
- Authority
- CN
- China
- Prior art keywords
- inquiry
- xml
- intermediate language
- language
- 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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/3332—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/83—Querying
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Abstract
一种查询运行期体系结构以及一个适用于该体系结构的典型应用编程接口。该体系结构输入一个或多个XML查询和视图并启动翻译该查询,其中可以在不同数据模型的多个数据源上运行该查询和视图。该体系结构结合前端编译器,该前端编译器将输入查询和视图转换成表示各自查询意义或视图意义的一个中间语言表示。于是该体系结构可以允许将中间语言表示进行后端编译成与所需要查询的数据源相一致的目标语言。该体系结构还允许执行那些目标编译来析取该查询所需要的数据。本发明还揭示了一个用于查询运行期系统的实例应用编程接口。
Description
发明领域
本发明一般涉及在数据源上进行软件查询的领域,更具体而言涉及使用XML中间语言在一个或多个数据源上进行查询。
发明背景
可扩展标记语言(XML)是一种万维网协会(W3C)认可的文件格式化标准(参考http://www.w3c.org/tr),该标准提供一种一般的语法给具有人类可读的标识符的标记数据。尽管XML可以容易地以一种严格定义的格式描述一个文件的内容,但是还存在其他不容易描述的数据源,这些数据源不是因为他们的结构与标准文本文件的结构不一致就是由于其他的非XML兼容特性。这种数据源的实例可以是电子表格或关系数据库。
在具有多样数据编程模块的数据源上执行一个类似XML的检索的任务称为虚拟XML。该术语通常解释为包括在虚拟XML视图上进行查询。虚拟XML是一个关于建立穿越数据存取编程模型的一致性的概念,并允许用户以它们所认为的方式代替实存格式来处理他们的数据。有关在虚拟XML上进行查询的概念涉及数据处理,就如同它是XML而不曾真正地将它转换成XML。此概念的优势在于把XML编码的开销一直保持到一个最小值。如果虚拟XML方案具有这种优势是合乎需要的——能够运用一种查询语言在一个非XML数据源上进行查询就如同该数据源是XML查询。还期望在实际数据和虚拟XML之间的映射具有高保真度。
存在大量本来执行一个虚拟XML的任务。一个问题是效率。可以简单地用一个虚拟XML接口来揭露一个数据源,例如XML阅读器,然后在该数据源上用现有的XML查询工具进行查询,例如XML文件对象模型(DOM)。然而,所有的这些作业发生在XML查询引擎中而不是由数据源自己来执行。假设该数据源本身及其相关的数据管理系统在以其特别设计的语言来管理其数据查询方面比一个具有不同数据模型的外部查询系统更有效率。
这方面引入了在执行一个虚拟XML查询中的另一个问题;XML数据并不总是用优先的数据模型及其类型系统来进行最佳定位。可以将所有类型的优先数据源映射为XML类型,但是该处理过程丢失了保真度并且还是低效的。此外,一个系统中的类型不明显等效于另一个。例如,表示诸如XML中的图像那样的二进制数据需要一个代价高的到XML字符集的转换(例如,64位基数编码)。
优先尝试通过构造两个不同的数据结构在解决问题的虚拟XML上进行查询;一是为了查询一是为了映射,然后一前一后遍历它们以在原始数据源上直接产生一个有效的查询,甚至不实现该虚拟XML视图。尽管该方法起初运行得很好,但是当查询和映射语言复杂性增加之时发展变得及其困难。在查询或映射中的概念经常不直接翻译成目标数据模型,而且以复合XML视图来组成复合查询需要许许多多的语义分析和改写。
另外,一种能够支持在多个数据源上把用一种语言的查询转换成查询表现或查询结果的系统体系结构通常需要高代价地执行M乘以N路径,其中M是输入选项的数量且N是输出选项的数量。通过使用标准体系结构,这种转换编译器在数量上变得很大。
因此需要一种统一表示以及一种单独的系统体系结构以便在XML和非XML数据源上为了XML查询和视图而执行虚拟XML。本发明应用于上述需求并用一个运用一个统一表示的体系结构以及一个供本发明用户所使用的应用编程接口来解决上述需求。
发明概述
提供一种用于编译和执行输入查询以产生查询结果的系统,该系统包括一个用于接收一个输入的输入装置,一个用于产生输入查询的语义意义的中间语言编译器,一个用于将XML中间语言表示转换成目标语言以便形成目标查询的目标产生器(或目标语言编译器),以及一个执行引擎。执行引擎允许在数据源上执行输入查询。该执行引擎可以直接地执行XML中间语言,或者在执行该查询之前先将XML中间语言转换成一个目标语言。该输入查询可以来自任何XML查询或视图,而且该目标语言可以是任何能够在一个数据源上进行查询的查询语言。该数据源可以是关系类型或非关系类型(例如分层的)数据,而且该系统能够在多个数据源上进行查询。
描述一种与应用程序进行通信的方法,该应用程序定义一种应用编程语言的功能性。一个应用程序可以向查询系统发送一个或多个请求来设置一个或多个编译参数和命令,这些编译参数和命令用于将一个或多个输入查询转换成一个XML中间语言表示。另外,一个应用程序可以向该系统发送一个或多个请求来将XML中间语言表示转换成一个可执行的查询。该系统可以向应用程序发送事件状态,例如进程状态,中间结果,最终结果,错误信息,警告和帮助信息。
接下来参照附图所进行的说明性实施例的详细描述将使本发明附加的特征和优点变得明显。
附图的简要描述
连同附图一起看前面所述的摘要以及接下来优选实施例的详细描述将会更好地理解。为了举例说明本发明,在附图中显示了本发明典型结构;然而,本发明并不局限于这些特定方法以及所揭示的工具。在附图中:
图1示出了在其中实现发明方面的一个典型计算环境的框图。
图2描述了在其中实现发明方面的一个框图体系结构;以及
图3举例说明适用于本发明的特征的一个流程图。
说明性实施例的详细描述
概述
本发明针对在来自多个查询源的多种类型数据源上的查询问题。对在虚拟XML数据源上的查询问题的一个解决方法可以使用一个统一中间语言。本发明的XML中间语言明确表示一个查询的意义或语义。把XML中间语言称为查询中间语言(QIL)。
QIL针对通常所说的“查询/视图组合”问题。举例来说,假设在不是XML数据就是XML虚拟数据,或其他数据的一个虚拟XML视图上执行一个XML查询。一种解决方法可以是将数据源具体化为XML,但是这也许是非常低效的,而且所需要的存储器可能要多于系统所可以采用的。另一个解决方法是可视化该视图,用虚拟视图组成该查询,并将结果翻译成在原始数据上进行的操作。用户看见在一个逻辑XML数据模型上的一个XML查询,但是该工具使用它提供的任何查询系统来查询本地数据格式。在关系数据库中使用该解决方法用于结构化查询语言(SQL)在SQL视图上进行查询,而且过去在XML视图上进行查询的一个XML工具已经使用了该解决方法。然而,使用诸如QIL那样的一种XML中间语言,可以在执行任何一个查询之前将原始假定地复合视图分解成更小的基本查询操作。因此,一个在一个复合视图上的查询变成一个在一个查询加上一个简单视图上的查询。查询组合将它转变成在仅仅是在简单视图上的一个查询,从而简化问题。换言之,该XML视图本身简单地变成一个查询。
XML中间语言QIL提供(1)XML查询和XML视图的统一表示,从而极大地简化查询/视图组合问题以及(2)处理所有作为“虚拟XML”的视图极大地简化了系统的接口。代替具有一个适用于每一种可能语言和数据模型的API,所有的API可以分享一个公共数据模型,XML中间语言QIL的运算符。
XML中间语言QIL还针对一个众所周知的编译器问题。通常地,用一种语言,编译器需要在N后端目标计算机上执行M前端语言,其中M和N是整数。如果执行了每一个成对的组合,需要M乘于N的编译器工具来覆盖所需要的组合。然而,如果通过介绍一个公共中间表示来使它们分离,那么该编译器的复杂性就降低到仅仅是M加上N。
本发明揭示了一个适用于使用QIL的查询运行期系统的体系结构以及一个典型的应用编程接口,该应用编程接口通过一个或多个应用程序来启动使用该系统。
示范的计算装置
图1以及接下来所进行的讨论意图提供在其中能够执行本发明的一个合适的计算环境的摘要概述。然而还应该了解,手持,便携式和其他计算装置以及各种打算使用的与本发明有关的计算对象。因此,在以下描述一个通用计算机的同时,这是另一个例子,可以以其他计算装置执行本发明,诸如一个具有网络/总线互操作性和交互作用的客户。因此,可以在一个其中提示了极少或极小的客户资源的网络主机服务环境中执行本发明,例如其中客户装置仅仅充当一个对网络/总线的接口的一个网络环境,例如放置在设备中的一个对象,或其他同样的计算装置和对象。实质上,合乎需要的,适当的根据本发明的操作环境可以是任何能够存储数据或从中检索数据的地方。
尽管不需要,但是可以经由一个操作系统来执行本发明,供一个服务开发者为一个装置和对象所使用,和/或包括在根据本发明进行操作的应用程序软件内部。可以在计算机可执行指令的通用上下文中描述软件,例如,由一个或多个诸如客户工作站,服务器或其他装置那样的计算机所执行的程序模块。通常,程序模块包括例程,程序,对象,组成部分,数据结构等等执行特殊任务或实现特殊的抽象数据类型的。一般地,可以如同在不同实施例中所希望的那样组合或重新分配程序模块的功能性。此外,本领域的那些技术人员将理解可以用其他计算机配置实践本发明。其他适合于本发明所使用的众所周知的计算系统,环境和/或配置包括但并不局限于:个人计算机(PC),自动柜员机,服务器计算机,手持或膝上型装置,多处理器系统,基于微处理器的系统,可编程用户电子装置,网络PC,装置,光,环境控制元件,微型计算机,主机等。还可以在分布式计算环境中实践本发明,在该分布式环境中由通过一个通信网络/总线或其他数据传输媒体而连接的远程处理装置来执行任务。在分布式计算环境中,程序模块可以位于包括存储装置的本地和远程计算机存储媒体中,而且客户结点可以轮流起服务器结点的作用。
因此图1举例说明在其中可以执行本发明的一个合适的计算系统环境100的实例,尽管在上面已经说清楚,计算系统环境100仅仅是一个合适的计算环境的实例而并不打算表示任何有关本发明使用范围或功能范围的限制。皆不应该把计算环境100解释为具有任何依赖性或涉及在示范的操作环境100中举例说明的任何一个组成部分或组成部分的组合的需求。
参看图1,一个用于执行本发明的典型系统包括以计算机系统110形式的通用计算装置。计算机系统110的组成部分可以包括但并不局限于:处理单元120,系统存储器130,以及系统总线121,该系统总线把包括系统存储器的各个系统组成部分连接到处理单元120。系统总线121可以是包括存储器总线或存储器控制器,外围总线,以及使用任何一种总线体系结构的本地总线在内的任何一种类型的总线结构。举例来说但并不局限于此,这种体系结构包括工业标准结构(ISA)总线,微通道结构(MCA)总线,扩展工业标准结构(EISA)总线,视频电子标准协会(VESA)本地总线,以及周边元件扩展接口(PCI)总线(通称附加板总线)。
计算机系统110一般包括多个计算机可读媒体。计算机可读媒体可以是能够由计算机系统110进行存取的任何的现有的媒体,它包括易失和非易失性媒体,可移动和不可移动媒体。举例来说但并不局限于此,计算机可读媒体可以包含计算机存储介质和通信媒体。计算机存储介质包括以任何方法或技术存储诸如计算机可读指令,数据结构,程序模块或其他数据那样的信息的易失和非易失性,可移动和不可移动媒体。计算机存储介质包括但并不局限于:随机存取存储器(RAM),只读存储器(ROM),电可擦除只读存储器(EEPROM),闪速存储器或其他存储器技术,只读光盘(CDROM),可重写光盘(CDRW),数字化视频光盘(DVD)或其他光盘存储器,磁带盒,磁带,磁盘存储器或其他磁存储器,或其它可以用来存储所需要信息的媒体,可以由计算机系统110存取该需要的信息。通信媒体一般包括有计算机可读指令,数据结构,程序模块或其他在诸如载波或其他传送机制那样的调制数据信号中的数据,通信媒体包括任何信息投送媒体。术语“调制数据信号”意味着具有一个或多个自己特征集或者以对信号中的信息进行编码的方式进行改变的一个信号。举例来说但并不局限于此,通信媒体包括诸如有线网或直线连接那样的有线媒体,以及诸如声波,射频,红外线那样的无线媒体和其他无线媒体。以上的任何组合还应该包含在计算机可读媒体的范围之内。
系统存储器130包括以易失和/或非易失性存储器形式的计算机存储介质,例如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)一般存储在ROM131中,基本输入/输出系统133(BIOS)包含有助于在计算机系统110中的两个元件之间传送信息的基本例程,例如在启动期间。RAM132一般包含立即可到达和/或立刻由处理系统120进行操作的数据和/或程序模块。举例来说但并不局限于此,图1举例说明操作系统134,应用程序135,其他程序模块136,以及程序数据137。
计算机系统110还可以包括其他可移动/不可移动,易失/非易失性计算机存储介质。仅仅借助于实例,图1举例说明对不可移动,非易失性磁性媒体进行读写的一个硬盘驱动器141,对可移动,非易失性磁盘152进行读写的一个磁盘驱动器151,以及诸如CDROM,CDRW,DVD那样的对可移动,非易失性光盘156进行读写的一个光盘驱动器155,或其他光媒体。其他可以用于示范操作环境中的可移动/不可移动,易失性/非易失性计算机存储介质包括但并不局限于:磁带盒,闪存卡,数字化视频光盘,数字视频磁带,固态RAM,固态ROM等。硬盘驱动器141一般通过诸如接口140那样的一个不可移动存储器接口连接到系统总线120,磁盘驱动器151和光盘驱动器155通常由诸如接口150那样的一个可移动存储器接口连接到系统总线121。
以上讨论并在图1中举例说明的驱动器及其相关的计算机存储介质对计算机系统110提供存储计算机可读指令,数据结构,程序模块和其他数据。例如在图1中,将硬盘驱动器141图解为存储操作系统144,应用程序145,其他程序模块146,以及程序数据147。注意到这些组成部分可以相同于或区别于操作系统134,应用程序135,其他程序模块136,以及程序数据137。这里对操作系统144,应用程序145,其他程序模块146,以及程序数据147提供了不同的数字至少举例说明他们是不同的版本。用户可以通过诸如键盘162和指示器161那样的输入装置向计算机系统110输入命令或信息,指示器一般涉及鼠标,跟踪球或触摸垫。其他输入装置(未显示)可以包括麦克风,游戏杆,游戏垫,卫星碟(satellite dish),扫描仪等。经常通过一个连接到系统总线121的用户输入接口160将这些输入装置以及其他输入装置连接到处理单元120,但是可以由其他接口和总线结构来将这些和其他输入装置连接到处理单元120,例如并行端口,游戏端口或通用串行总线(USB)。还经由诸如视频接口190那样的一个接口把监视器191或其他类型的显示装置连接到系统总线121,视频接口190可以轮流与视频存储器(未显示)进行通信。除了监视器191以外,计算机系统还可以包括其他诸如扬声器197和打印机196那样的外围输出装置,他们可以通过一个输出外围接口195来连接。
计算机系统110可以在与一个或多个诸如远程计算机180那样的远程计算机进行逻辑连接的网络或分布式环境中运行。远程计算机180可以是个人计算机,服务器,路由器,网络PC,同等装置或其他通用网络结点,而且远程计算机180通常包括多个或所有上述与计算机系统110有关的元件,尽管在图1中仅仅举例说明了存储器装置181。图1中所描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是还可以包括其他网络/总线。这种网络环境在家庭,办公室,企业广域计算机网络,内部网和国际互联网中是平常的。
在LAN网络环境中使用的时候,计算机系统110通过一个网络接口或适配器170连接到LAN171。在WAN网络环境中使用的时候,计算机系统通常包括调制解调器172或其他用于在诸如国际互联网那样的WAN173上建立通信连接的装置。可以经由用户输入接口160将调制解调器172连接到系统总线121,该调制解调器可以是内部调制解调器或外部调制解调器。在网络环境中,可以在远程存储器装置中存储所描述的与计算机系统110相关的程序模块或其部分。举例来说但并不局限于此,图1举例说明远程应用程序185是保存在存储器装置181上的。将理解到所示网络连接是示范的,而且可以使用其他在计算机之间建立通信链路的方法。
多种分布的计算体制已经或正在按照个人计算和国际互联网的趋同现象进行发展。为应用程序和计算装置提供给单用户和商业用户一个无缝操作性的和启动网络的接口,使计算活动为渐增的网络浏览程序或面向网络的。
例如,微软的.NETTM平台包括服务器,诸如基于网络的数据存储器那样的积木式服务,以及可下载的装置软件,该.NETTM平台可以从微软公司中获得,是一种微软方法,Redmond,华盛顿98052。当这里所描述的示范实施例与保存在一个计算装置中的软件有关时,还可以经由一个操作系统,应用编程接口(API)或在任何一个协同处理器,显示装置之间的一个“中间人”对象以及一个请求对象来执行本发明的一个或多个部分,像这样可以执行根据本发明的操作,在所有.NETTM语言和服务中所执行并经由所有.NETTM语言和服务来进行存取的,同时在其他分布的计算机制中。
典型实施例
图2描述了一个包括当前发明的特征的典型系统体系结构的方框图。显示了一个包括中间语言编译器和目标执行引擎的查询运行期体系结构200。该体系结构描述执行接收,编译,译码,以及为了在多个数据源上查询XML而进行的数据存取的基本方块。可以实现多个前端语言编译器210,他们与XML或XML相关标准一致。可以从如图1所示的任何一个输入装置接收或输入原来的或输入的查询。回到图2,前端编译器210可以接收一个XML查询,XML视图或其他相关的XML语言来产生输入查询的意义中一个经过编译的XML中间语言表示215。用于前端编译器的标准语言类型包括Xpath,XML样式表语言(XSL),XSLT,XML查询语言(XQuery)的万维网协会(W3C)公布标准。除了别的以外,XML视图编译器还可以在使用并包括XQuery视图的W3C的XML标准。在查询和视图语言以及多个目标模型之间的中间语言抽象化允许将诸如除虚拟XML数据以外的来自微软的.NETTM的真实XML数据用作数据源。
多个后端目标产生器220支持多个相关的目标查询语言执行引擎230。可以构造每一个后端目标产生器220以致它们有效地处理与每一个所支持的数据源中的数据模型相一致的数据源。例如,可以为了在带有一个SQL数据库管理系统的关系数据库上的查询效率而优化用于SQL数据库资源的一个目标查询语言产生器。因此,例如,还可以把目标查询语言产生器220a与一个执行引擎230a进行配套来将中间语言表示215转换成一个与特定数据源240不矛盾的目标机器语言。选择性地,目标产生器还可以把XML中间语言表示215转换成另一种中间语言,例如微软中间语言(MSIL),以致一个执行引擎可以直接查询一个或多个数据源240。
例如,在执行编译查询时,该执行引擎通常对用户产生可进一步处理,存储,显示有效的查询结果250,或准备给一个接着发生的软件应用的查询结果250。目标产生器220以及相应的执行引擎230可以包括像XML和SQL那样的查询语言来命名一些。
该体系结构的另一个特征是数据可利用率的模化程度。例如,现在生成一个XML中间语言表示215的时候,可以产生一个输出以致该中间语言表示本身可以应用于另一个系统或对延迟的目标编译有效。而且,可以直接执行XML中间语言本身,它实际上不用转换成一个特定的,非XML中间语言指令查询。因此,不需要一个使用特别适合于执行XML中间语言表示的一个执行引擎的编译器,XML中间语言可以用于在一个或多个数据源上进行查询。作为系统输出中的另一个可选项,目标产生器输出可以用作用于在一个单独系统中执行的或由另一个非系统应用程序执行的输出。
还应该注意到图2的典型体系结构在构造查询方面内在地允许了极大的灵活性。该查询体系结构允许输入多个查询以致可以产生组成多个查询的一种中间语言。另外,可以适当地使用多个后端目标产生器和执行引擎在不同数据模型的数据源上进行查询。体系结构200还允许减少前端和后端的置换数量。图2描述M个前端编译器和N个后端编译器,其中M和N是整数。通常,这种组合将产生总数可能为M乘以N的系统路径。然而,由于运用了通用中间语言,所以置换数量有利地减少到了M加N。
如图2所描述产生的XML中间语言是一个XML查询或视图表示。照这样,因为它是一个XML查询的明确意义表示,所以称其为查询中间语言(QIL)。可以将查询中间语言(QIL)视为一个穿越所有XML查询和视图语言编译器的语义表示。QIL类似于一个普通的抽象语法树(AST),但是不同的在于QIL捕获的是语义而不是语言的语法,或意味着QIL捕获一个查询。另一个差异在于QIL是一个图形结构而不是一个像AST那样的树形结构。
QIL启动抽象化多个不同的XML查询语言并在多个不同的目标数据源(例如关系和无关数据)上查看定义语言(例如Xpath,XSLT和XQuery)。照这样,QIL启动一个公共结构来支持所有可兼容的XML语言。每一个操作都是明确且无二义性的,该操作最好优先地完全地与帮助从使用QIL的后端引擎产生QIL的前端编译器相分离。
在一个标题为QUERY INTERMEDIATE LANGUAGE METHODAND SYSTEM的共同申请的专利申请中提供一个实例查询中间语言定义,该申请转让给Redmond的微软公司,WA(序列号XX/XXX,XXX,同时在同一日期提出申请)。认为将该共同申请的内容全面引入本文以供参考。
图3表示关于一个公共查询运行期体系结构(例如,涉及图2所描述的示范体系结构)的典型应用编程接口(API)的流程图。可以将API视为保存在系统里(例如图2的),而且API允许一个应用程序利用系统来与应用程序进行通信。该通信允许系统资源变得对应用程序有效。回到图3,在这里描述了接收输入查询的处理过程,将该查询编译成一个XML中间语言,将中间语言表示转换成一个目标语言,执行该目标语言,以及产生查询结果,并且突出典型应用程序接口。
最初,一个应用程序可以提供315或意识到接收一个输入查询310。该应用程序可以与查询系统接口来发出一个或多个请求来设置软件环境控制参数和编译控制可选项320。该步骤允许配置一个或多个前端编译器来接受输入查询并为该输入查询的编译准备软件和受控制的硬件。该应用程序可以监视322状态以及如同所希望的由应用程序经由状态请求向监视功能390设置参数的进程。
在325,将查询系统参数变成查询系统,然后一个应用程序可以与该查询系统接口来编译输入查询310的中间语言表示330来得到输入查询的一个XML语义意义。可以从系统330经由应用程序控制来输出或监控该语义意义用于延迟的处理过程或以致可以用在一个不同系统中。监控功能390允许应用程序监控系统在产生中间语言方面的执行以及注册控制和配置设置。一旦产生中间语言表示,在332可以将产生的中间语言表示传到用于用户目的的监控或输出功能以及另一个所需要的应用程序。另外,在334可以将中间语言表示传到一个用于由一个目标产生器执行编译的软件模块。在336可以将另一个二中选一的中间语言表示传到一个用于直接执行的查询执行引擎。
如果将中间语言表示传到一个目标产生器,那么应用程序可以对查询系统产生请求340来选择一个目标产生器,酌情配置编译器,并产生一个目标产生器输出。如前所述,在342,该应用程序可以监控目标产生器设置以及活动,为的是确保应用程序和查询系统的运行。正如前面所提到的那样,可以经由应用程序停止或暂停查询系统,在这一点上是因为已经产生了一个有效产品——目标指定查询。可以为备将来之用而存储该目标指定查询,或由另一个系统使用该目标指定查询来在一个或更多个数据源上进行查询。
假设将持续运行该查询系统,可以在345将目标指定查询传到一个能够执行该查询的执行引擎。应用程序可以产生请求350来在一个或多个数据源380上执行目标指定查询。如前所述,在352,应用程序可以监控该设置和执行引擎的活动以确保查询系统的目标运行。
伴随着完全地执行,在355,执行引擎把查询结果传到一个累加器,如果需要的话,其中查询系统可以暂时保持查询结果360以便用于进一步的处理。经由一个来自应用程序362的请求,该查询结果是可存取的,其中可以传递或监控该结果。
典型的应用编程接口
所提供的根据本发明的API接口的实例如下所示:
1.前端编译器命令:
查询编译器用于产生一个来自多个XML查询语言的QIL封装:XmlExpression。以下提供三个用于XML查询语言的编译器实例:XpathCompiler,XsltCompiler,以及XqueryCompiler。编译器的标准应用包括设置XmlenvironmentBase以及编译一个查询。
可以在编译过程中设置适当的XmlCompilerEnvironmentBase编译器环境来为该查询无关的编译器提供信息。例如,单独的Xpath语法不允许用作在其他命名空间中进行查询。如果将编译器环境上的XmlNamesoaceResolver设置为把前缀映射到适当命名空间URI,则Xpath查询现在可以在其他命名空间上进行查询。注意,编译器环境不是为多数查询执行所必需的。
编译查询通常发生在已经指定适当编译器环境之后。在那个时候,可以由用户或其他输入源提供或编译该实际查询。查询结果是一个XmlExpression经常提供给该查询一个相关的事实对象。该事实对象表示所给定的查询的确实性和因此可以执行或不可以执行什么活动以及从而把一层安全性加到该查询上。
基于安全性的事实允许用户经由一个安全性认证,可选项来精确地指定有多少查询自己可以执行。例如,如果不允许任何的存取,那么任何需要诸如连接数据库那样的任何类型数据存取的查询将失败。既然不能从数据库存取数据,那么可以成功的查询将仅仅是那些返回一个静态结果的(例如,“数字(3+5)”)。如果仅仅允许读存取,那么将不执行逆向更新。无论如何,确保不改变数据源。这映射到Xpath引导器API的能力。如果允许附加的存取,那么将仅仅执行INSERT语句。这确保了无论如何都将不改变原始数据,仅允许添加。如果允许自由存取,那么将执行任何更新。这包括在任何数据源内完全删除数据。这映射到Xpath编辑器API的能力。
A:XPath编译器类别
1.命令:
XpathCompiler();XpathCompiler(XmlCompilerEnvironmentBaseXmlCompilerEnvironment);
说明:一种方法命令,构造了该类的一个实例。如果提供XmlCompilerEnvironmentBase,将其设置为用于该实例的XmlCompilerEnvironment。
参数:XmlCompilerEnvironment;
将XmlCompilerEnvironmentBase设置为在该类的实例上的XmlCompilerEnvironment。
2.命令:OnCompilationEvent;
说明:一个为了在编译期间接收信息而注册的事件。编译器可以报告警告和用户可以作用的其他信息。该事件并不约束编译。
3.命令:XmlCompilerEnvironmentBaseXmlCompilerEnvironment{get;set}
说明:一个XML编译器环境属性。允许用户获得或设置要使用的XmlCompilerEnvironmentBase。该编译器环境提供信息给在查询本身不传送的查询编译器。
4.命令:XmlExpression Compile(string queryText);
说明:一种编译方法。此功能编译所得到的一个Xpath查询,并返回一个XmlExpression,该XmlExpression是所得到的查询的QIL表示。合乎需要地设置所得到的查询的确实性来与请求编码的确实性相吻合。
参数:query;
在XmlExpression内进行编译的查询。返回一个XML表达式,它是经过编译的查询。
B.XSLT编译器类别-设计XsltCompiler以在XmlExpression内编译XSLTstylesheets。
1.命令:XsltCompiler();
XsltCompiler(XmlCompilerEnvironmentBase
XmlCompilerEnvironment);
说明:一种编译器方法。构造该类的一个实例。如果提供XmlCompilerEnvironmentBase,将其设置为用于该实例的XmlCompilerEnvironment。
参数:XmlCompilerEnvironment
将XmlCompilerEnvironmentBase设置为在该类的实例上的XmlCompilerEnvironment。
2.命令:OnCompilationEvent;
说明:一个为了在编译期间接收信息而注册的事件。编译器可以报告警告和用户可以作用的其他信息。该事件并不约束编译。
3.命令:XmlCompilerEnvironmentBase XmlCompilerEnvironment{get;set;}
说明:一种属性,允许用户得到或设置要使用的XmlCompilerEnvironmentBase。该编译器环境提供信息给除了进行编译的实际查询以外的查询编译器。XmlCompilerEnvironment的一个默认实例。
4.命令:XmlExpression Compile(string queryUri,XmlResolver resolver);
XmlExpression Compile(string queryUri,XmlResolver resolver,Evidenceevdence);
说明:一种编译方法。经由XmlResolver参数解析QueryUri并将QueryUri编译为XSLT样式表。XmlResolver参数还可以用于解析任何用于编译原始样式表的xsl:include和xsl:import指令。用现有事实来确定所得到的查询的确实性以及接下来它可以执行什么活动。如果超载没有使用事实,那么用所得到的URI来产生用于查询的适当事实。返回一个XmlExpression,该XmlExpression是经过编译的查询。
参数:queryUri;
URI要进行解析以检索要编译的XSLT样式表。
Resolver;
XmlResolver用于解析XSLT样式表以及该样式表中任何xsl:include和xsl:import指令。
evidence;
安全性事实,确定所得到的查询的确实性。
5.命令:XmlExpression Compile(XmlReader queryText,
XmlResolver resolver);XmlExpression
Compile(XmlReader queryText,XmlResolver resolver,Evidence evdence);
说明:一种编译方法。该功能返回XmlExpression,该XmlExpression表示现有经由XmlReader的XSLT查询。用现有事实来确定所得到的查询的确实性以及接下来它能够执行什么活动。如果超载没有使用事实,编译器将试图经由IdataEvidence接口来获得适当事实。如果不执行该接口,适当的接口例外。返回一个XmlExpression,该XmlExpression是经过编译的查询。
参数:query;
一个XmlReader,包含了将要在一个XmlExpression中进行编译的XSLT。
resolver;
用XmlResolver解析所得到的XSLT中的xsl:include和xsl:import指令。
evidence;
安全性事实,确定所得到的查询的确实性。
C.Xquery编译器类别
1.命令:XsltCompiler();
XsltCompiler(XmlCompilerEnvironmentBase
XmlCompilerEnvironment);
说明:一种编译器方法,构造该类的一个实例。如果提供XmlCompilerEnvironmentBase,将其设置为用于该实例的XmlCompilerEnvironment。
参数:XmlCompilerEnvironment
将XmlCompilerEnvironmentBase设置为在该类的实例上的XmlCompilerEnvironment。
2.命令:OnCompilationEvent;
说明:一个为了在编译期间接收信息而注册的事件。编译器可以报告警告和用户可以作用的其他信息。该事件并不约束编译。
3.命令:XmlCompilerEnvironmentBase XmlCompilerEnvironment{get;set;}
说明:一种属性,允许用户得到或设置要使用的XmlCompilerEnvironmentBase。该编译器环境提供信息给除了进行编译的实际查询以外的查询编译器。这是XmlCompilerEnvironment的一个默认实例。
4.命令:XmlExpression Compile(TextReader queryText);
说明:一种编译方法。该功能返回XmlExpression,该XmlExpression表示现有XQuery查询。用现有事实来确定应该允许执行什么查询。
参数:query;
要在一个XmIExpression内编译该查询。
evidence;
安全性事实,确定所得到的查询的确实性。
5.命令:XmlEpression Compile(string queryText);
说明:该功能编译并返回一个XmlExpression,该XmlExpression用于所得到的查询。所提供的事实显示所得到的查询的确实性。
参数:query;
一个字符串,包含了要在一个XmlExpression内进行编译的查询。
evidence;
安全性事实,确定所得到的查询的确实性。
6.命令:XmlExpression Compile(string queryUri,XmlResolver resolver);
说明:经由XmlResolver参数解析QueryUri并将QueryUri编译为XQuery。返回一个XmlExpression,该XmlExpression是经过编译的查询。
参数:queryUri;
URI要进行解析以检索要编译的XSLT样式表。
resolver;
用于解析要编译的Xquery的XmlResolver。
II.编译器环境命令
通常地,编译器环境用于提供附加信息给查询编译器来帮助它们编译实际查询。特别地,该结构用于解析外部功能,变量,以及希望用来编译一个查询的默认文件。注意到所有的解析都应该返回一个XmlExpression是非常重要的。
XmlViewSchema和map:view()功能是功能解析的一个实例。没有查询语言想到要嵌入映射并因此需要允许发生嵌入映射的拓展。XmlViewSchema具有将map:view()功能解析为一个XmlExpression并因此由专用编译器所使用的能力。该编译器可以通过一个在查询语法中没有声明的变量来进行读取。这是另一个在其中Xpath需要编译器环境的领域。在上下文文件解析中,每一个XML查询语言不得不在一个默认文件或上下文文件上进行查询。
XmlCompilerEnvironmentBase是一个抽象类,它是一个完整编译器环境。该类仅仅具有解析多个数据项的能力,该能力是一种允许工具来执行动态操作的给定的编译器需求。XmlCompilerEnvironmentBase是查询编译器运行的环境。它可以提供任何给定的编译器可以需要的对多数可选项的解析。可以在IxmlCompilerInclude和IxmlNamespace上执行所有的方法。除了执行IxmlCompilerInclude以外,XmlCompilerEnvironmentBase还启动对其他诸如模式,命名空间,和应该执行该查询的方法那样的数据项进行解析。
XQuery具有在编译查询以执行静态类型的分析的过程中运行W3C的Xml模式的能力(Xml模式定义-XSD)。该编译器环境提供这些模式的解析。可以利用命名空间/前缀解析以致用户通常可以重复使用在编译之间所使用的前缀-命名空间绑定,该前缀-命名空间绑定不必每次在查询本身指定。可以通过执行IxmlNamespaceResolver来提供该功能性。可以提供创建类型API指令来启动用户查找比效率更多的问题。
除了为XmlEnvironmentBase提供解析之外,提供一种把这些解析数据项添加到环境的方法。XmlCompilerEnvironment可以经由至少三种供编译器所使用的方法来添加功能。XmlCompilerEnvironment可以实现IxmlCompilerInclude并用他们来解析一个给定的功能。实质上,将会在所添加的工具上传送“ResolveFunction”方法请求以致他们可以视图解析它。编译器环境还能够添加以一个XmlExpression形式的预编译查询库。可以将查询库定义为一组用户定义的在单个XmlExpression中进行编译的XQuery功能。照这样,任何查询语言可以通过调出一个外部功能来运行XQuery的功能。可以适当地将参数映射到用于给定功能的查询库。该编译器环境还可以添加非查询库的XmlExpression。可以将专用的经过编译的查询(诸如Xpath或XSLT)添加作为一个查询功能。
XmlCompilerEnvironment还可以用多种方法添加变量。XmlCompilerEnvironment可以实现IxmlCompilerInclude并用他们来解析一个给定的变量。实质上,将会在所添加的工具上传送“ResolveFunction”方法请求以致他们可以视图解析它。该编译器环境还允许运行XmlExpression作为变量。这类似于将XmlExpression添加为一种功能。这提供用户以一种不同的语言运行一种特定语言的特征的能力。添加一个类属对象作为一个允许用户在他们的查询内部绑定对象值的变量。把该对象转换成适当的XSD类型和供查询所使用的值。
XmlCompilerEnvironment可以设置将由查询编译器所使用的上下文文件。存在至少三种在XmlCompilerEnvironment上设置适当的上下文文件的方法。可以用一个执行IxmlCompilerInclude的对象来设置查询的上下文文件。XmlCompilerEnvironment可以简单地将ResolveContextDocument()方法请求下传到IxmlCompilerInclude用于文件解析。XmlViewSchema是其中一个实例。这启动用户利用映射而不使用map:view()功能。照这样,用户可以经由一个查询来创建一个虚拟XML视图,差不多就像他们处理映射支持那样。对于用户而言,在单独的查询中揭穿过分简单的映射以及拥有附加的逻辑比紧紧地耦合他们要简单。诸如XSLT和XQuery那样的语言具有在一个上下文和已命名的文件上同步进行查询的能力。通过将上下文文件的解析设置成URI,可以将上下文文件重定向到动态解析而不是暗中供应。这种简易的编程就如用户可以指定单个XmlResolver以在上面进行查询而不是一个上下文文件和一个XmlResolver的组合。
还应该注意到其中将变量或功能添加到XmlCompilerEnvironment的顺序可以影响其中解析成功发生的顺序。一种处理过程规则支持为了成功匹配而检查直接命名的功能/变量。无法成功添加重复命名的功能/变量。注意到包含在单个XmlExpression中的查询库属于该类别。另一个处理过程规则支持根据添加给他们的规则,为了匹配而连续测试IXmlCompilerInclude。一个IxmlCompilerInclude可以包含如同其他数据项那样的重复功能/变量。如果包含重复的一个直接命名的功能/变量,那么除非将会首先解析直接命名的功能/变量,否则决不解析他。如果另一个IxmlCompilerInclude包含重复功能/变量,那么仅仅该首先添加的IxmlCompilerInclude将解析该给定的数据项。
例如,如果产生一个XmlCompilerEnvironment并添加两个IxmlCompilerInclude用于功能解析,然后当视图解析实际功能时,可以检查第一IxmlCompilerInclude。如果解析失败,则为了成功地解析而检查第二IxmlCompilerInclude。如果将一个带有XmlExpression的已命名功能添加到环境中,将会在执行IxmlCompilerInclude之前检查它,这是因为可以在执行IxmlCompilerInclude之前检查直接命名的功能/变量。
以下给出示范的编译器环境命令:
1.命令:XmlEpression ResolveFunction(XmlQualifiedNamefunctionName,XmlEpression[]functionParameters);
说明:一种功能解析方法。该方法允许编译器在编译过程中解析外部功能。现有名称和参数用做解析工具。如果解析失败,功能返回零。返回一个表示该功能结果的XmlEpression。如果解析失败,返回零。
参数:functionName;
正在查找的功能的全限定名。
FunctionParameters;
一个XmlEpression数组,该数组表示该功能正在调用的参数。XML编译器环境工具将在解析期间利用该信息用于确认属性和最佳参数的类型。
2.命令:XmlEpression Resolve Variable(XmlQualifiedName VariableName);
说明:该方法允许编译器在编译过程中解析外部变量。该变量的全限定名用于解析。如果解析失败,功能返回零。返回一个表示该变量值的XmlEpression。如果解析失败,返回零。
参数:vairableName;
正在查找的变量的全限定名。
3.命令:XmlExpression ResolveContexDocument();
说明:该方法允许编译器动态解析如何检索该上下文文件。如果解析失败,该方法返回零。返回一个表示如何解析上下文文件的XmlEpression。如果解析失败,返回零。
4.命令:XmlSchema ResolveSchema(string namespace);
说明:允许编译器检索一个用于给定命名空间的一个模式。如果不能解析该模式,方法返回零。返回一个用于给定命名空间的经过编译的模式的XmlSchema对象。如果不能解析该模式,则返回零。
参数:namespace
用于解析模式的命名空间。
5.命令:bool IsDebug{get;};
说明:一个属性,允许编译器确定它们是否应该用调试特性曲线来编译一个查询。
6.命令:XmlCompilerEnvironment();
XmlCompilerEnvironment(bool IsDebug);
说明:一种方法,例示一个新的XmlCompilerEnvironment。如果提供一种超载,该超载提供一个用于IsDebug的值,则将在基本XmlCompilerEnvironment类别上调用的IsDebug存储程序上返回该值。如果使用默认构造符,则默认该值为错误。
7.命令:XmlNamespaceManager XmlNamespaceManager{get;set;}
说明:XmlNamespaceManager属性用于由XmlCompilerEnvironmentBase.ResolvePrefix和XmlCompilerEnvironmentBase.ResolveNamespace方法所进行的解析。
8.命令:XmlSchemaSet XmlSchemaSet{get;set;}
说明:XmlSchemaSet属性用于由XmlCompilerEnvironmentBase.ResolveSchema方法所进行的解析来设置并获得XML模式类型信息。
9.命令:void SetContextDocumentResolution(IxmlCompilerIncludedocumentResolver);
说明:该上下文文件方法允许用户设置上下文文件的解析来生成一个IxmlCompilerInclude工具。
参数:documentResolver
一个IxmlCompilerInclude工具,可以解析上下文文件。
10.命令:void SetContextDocumentResolution(IxmlExpressiondocumentExpresssion);
说明:该文件上下文方法允许用户将一个默认文件设置为XmlExpression。这将有助于在另一个查询或映射上组合XSLT或Xpath.
参数:documentExpresssion
将在用当前的环境编译的查询中组合XmlExpression来代替默认文件解析。
11.命令:void SetContextDocumentResolution(string contextDocumentUri);
说明:该文件上下文方法允许用户设置默认文件名,将在运行期间文件解析的过程中使用该默认文件名。这可用于XPath和XSLT,其中仅仅存在一个默认文件或者默认和命名文件的一个组合。
参数:contextDocumentUri;
将在运行期经由所提供的XmlResolver进行解析的名称。
12.命令:void AddFunctions(IxmlCompilerInclude functionResolver);
说明:该功能方法把IxmlCompilerInclude添加到编译器环境,该编译器环境启动IxmlCompilerInclude来用于在编译的过程中解析功能。
参数:function resolver;
一个能够进行功能解析的IxmlCompilerInclude工具。
13.命令:void AddFunctions(XmlExpression library);
说明:该功能方法用于添加一个现有XmlExpression作为一个功能库。例如:用户具有许多XQuery功能,于是这些功能在XmlExpression中进行编译。然后用户添加XmlExpression作为一个功能库并使其与一个给定的命名空间相关联。于是可以在其他查询的内部重复使用这些功能(不局限于XQuery)。
参数:library
一个经过编译的XmlExpression,它包含以前编译的功能。
14.命令:voidAddFunction(XmlQualifiedName name,XmlExpression function);
说明:该功能方法允许用户绑定一个XmlExpression作为用于其他查询的编译中的一个功能。例如;对于XQuery,将会认为整个XQuery为单个的功能。对于XSLT,将会认为整个样式表为单个的功能。对于XPath,将会认为整个Xpath为单个的功能。
参数:name;
一个全限定名,在查询中参考在该全限定名下的功能。
Function;
绑定的XML表达式
15.命令:void AddVariables(IxmlCompilerInclude variableResolver);
说明:该变量解析方法把IxmlCompilerInclude添加到编译器环境,该编译器环境启动IxmlCompilerInclude来用于在编译的过程中进行变量解析。
参数:variableResolver;
能够提供变量解析的IxmlCompilerInclude工具。
16.命令:voidAddVariable(XmlQualifiedName name,XmlExpression variable);
说明:该变量添加方法把一个外部参数绑定到一个特殊的定义。一个用于XQuery的有效功能是不包含在XQuery功能内的。将会认为整个XSLT样式表为一个变量。将会认为整个Xpath表达式为一个变量。
17.命令:void AddVariable(XmlQualifiedName name,object variable);
说明:一种变量添加方法,将一个公共语言运行期对象绑定到一个变量。把该对象转换成XSD等值并使用其值。
参数:Name;
要绑定的外部属性的名称。
Variable:
定义了变量的公共语言运行期对象。
18.命令:void AddVariableDeclaration(XmlQualifiedNamename,XmlSchemaType,XmlEpression defaultValue);
说明:一种变量声明添加方法,声明一个变量而还没有定义该变量。将经由XmlArgumentList在执行时间时提供定义。如果在XmlArgumentList中没有找到适当的变量,将用已提供的defaultValue来代替使用。
参数:name;
要声明的变量的全限定名。
Type;
该声明的变量的XmlSchemaType。
defaultValue;
该变量的默认值。
III.XML表达式命令
XmlExpression是所给定的XML查询的编译形式。实质上这是QIL的一个封装。XmlExpression是一个可组合对象。也就是说,一旦创建了一个XmlExpression,就可以在编译不同查询的过程中重复使用XmlExpression来启动诸如查询库或虚拟视图那样的附加功能。
存在至少两种可在XmlExpression上利用的方法;一个值返回一个IxmlValueReader以及一个返回XmlSchemaType对象的类型,IxmlValueReader在如果它是一个静态值的时候可以用于检索给定的XmlExpression的值,该XmlSchemaType对象能够用于检索XmlExpression的XSD类型。
1.命令:IxmlValueReaderValue{get;};
说明:返回XmlExpression的一个值IxmlValueReader。还返回一个对象,如果该值是常数,则该对象执行IxmlValueReader。
2.命令:XmlSchemaType Type{get;}
说明:该特性允许返回一个XmlSchemaType,XmlSchemaType表示如XML所表示的XmlExpression类型。如果该值是一个常数,还返回一个XmlSchemaType。
IV.后端目标查询产生器命令
目标查询产生器(或目标语言编译器)用于产生能够在特定数据源上执行一个给定的查询的对象。这里描述两个示范形式。XmlILGenerator引擎能够在RXPathNavigator或XpathEditor工具上执行查询。这允许诸如XmlCache那样任何能够揭穿RXPathNavigator的数据源具有“嵌入”查询能力。SQLGenerator引擎能够直接处理XmlExpression,并因此能够优化SQL语句用于执行。
A.XML目标命令
1.命令:XmlILGenerator();
说明:该方法命令构造一个新XmlILGenerator。
2.命令:XmlCommand Generate(XmlExpression query);
说明:该方法命令产生一个用于给定XmlExpression的XmlCommand。然后可以执行XmlCommand来检索查询的结果。返回该查询的一种可执行形式XmlCommand。
参数:query;
来自所产生的XmlCommand的XmlExpression。
3.命令:OnGenerateEvent;
说明:一个为了在产生期间接收信息而注册的事件。产生器可以报告警告和用户可以作用的其他信息。该事件并不约束产生XmlCommand。
B.SQL目标命令
1.命令:SqlGenerator();
说明:该产生器采用QIL并能够对数据库进行查询。该方法构造一个新的SqlGenerator。
2.命令:XmlCommand Generate(XmlExpression query);
说明:该方法命令产生一个用于给定XmlExpression的XmlCommand。然后可以执行XmlCommand来检索查询的结果。返回该查询的一种可执行形式XmlCommand。
参数:Query;
来自所产生的XmlCommand的XmlExpression。
3.命令:OnGenerateEvent;
说明:一个为了在产生期间接收信息而注册的事件。产生器可以报告警告和用户可以作用的其他信息。该事件并不约束产生XmlCommand。
V.XML命令
XmlCommand可以是查询系统运行期内其中一个合成的输出对象。这是一个能够由用户或其他程序所执行的物理查询计划。为XmlCommand提供数据源解析以及能够用于执行该查询的运行期参数。
1.命令:OnExceutionEvent;
说明:可以在执行查询的过程中用该事件命令来报告信息返回到用户,该用户不是部分结果集合。例如,多个W3C查询标准允许在处理过程期间执行相关动作。该执行运行期可以向用户报告该动作。
2.命令:void Execute(RXPathNavigator contextDocument,
XmlArgumentList argList,XmlWriter results);
Void Execute(RXPathNavigator contextDocument,
XmlResolver datasource,XmlArgumentList argList,
XmlWriter results);
说明:该执行方法在所提供的RXPathNavigator上执行该查询,该RXPathNavigator带有给定的XmlArgumentList作为运行期参数。结果输出到所提供的XmlWriter。
参数:contextDocument;
要在上面进行查询的默认文件。
argumentList;
XmlArgumentList将包含任何可以用于执行该查询的运行期参数。
results;
写入查询结果XmlWriter。
3.命令:void Execute(XpathEditor contextDocument,
AmlArgumentList,XmlWriter results);
说明:该执行方法可以在所提供的作为运行期参数的IxmlInforsetEditor上执行该查询。将结果输出到所提供的XmlWriter。该超载允许执行更新,就如它利用一个XpathEditor而不是一个RXPathNavigator。
参数:defaultDocument;
要在上面进行查询的默认文件。
argumentList;
XmlArgumentList将包含任何可以用于执行该查询的运行期参数。
results;
写入查询结果XmlWriter。
4.命令:void Execute(XmlResolver,dataSources,XmlArgumentListargList,XmlWriter results);
说明:该执行方法通过经由XmlResolver存取数据源以及使用如XmlArgumentList所提供的运行期参数来执行该查询。将结果输出到所提供的XmlWriter。
参数:dataSources;
一个用于检索命名的数据源的XmlResolver,该数据源可以用于执行一个查询。
argumentList;
XmlArgumentList将包含任何执行查询所必需的运行期参数。
results;
将查询结果写入XmlWriter。
5.命令:void Exectue(string contectDocumentUri,XmlResolver
dataSources,XmlArgumentList argList,XmlWriter
results);
void Execute(string contextDocumentUri,XmlResolver
dataSources,XmlArgumentList argList,TextWriter results);
void Execute(string contectDocumentUri,XmlResolver
dataSources,XmlArgumentList argList,Stream results);
说明:该执行方法通过经由XmlResolver存取数据源以及使用如XmlArgumentList所提供的运行期参数来执行该查询。将默认文件映射入带有所提供名称的XmlResolver。将结果输出到所提供的XmlWriter。
参数:contextDocumentUri;
将经由XmlResolver参数解析的上下文文件的URI。
dataSources;
一个用于检索上下文和命名的数据源的XmlResolver,该数据源可以用于执行一个查询。
argumentList;
XmlArgumentList将包含任何执行查询所必需的运行期参数。
Results;
写入查询结果XmlWriter,TextWriter,或Stream。
6.命令:XmlReader Execte(RXPathNavigator
defaultDocument,XmlArgumentList argList;
说明:该方法在所提供的RXPathNavigator上执行查询,RXPathNavigator具有作为运行期参数的XmlArgumentList。由一个XmlReader返回结果。返回一个XmlReader,该XmlReader返回查询结果。
参数:defaultDocument;
由解析器解析的默认文件名。
argumentList;
XmlArgumentList将包含任何用于执行该查询的运行期参数
7.命令:XmlReader Execute(XpathEditor defaultDocumt,
XmlArgumentList argList;
说明:该方法在所提供的XpathEditor上执行查询,XpathEditor带有作为运行期参数的给定的XmlArgumentList。由一个XmlReader返回结果。该超载执行允许,就如它采用XpathEditor对抗XmlReader。返回一个XmlReader,该XmlReader返回查询结果。
参数:defaultDocument;
由解析器解析的默认文件名。
argumentList;
XmlArgumentList将包含任何用于执行该查询的运行期参数。
8.命令:XmlReader Execute(XmlResolver dataSources,
XmlArgumentList,argList;
说明:该执行方法通过经由XmlResolver存取数据源以及使用如XmlArgumentList所提供的运行期参数来执行该查询。由一个XmlReader返回结果。
参数:dataSources;
一个用于检索命名的数据源的XmlResolver,该数据源可以用于执行一个查询。
argumentList;
XmlArgumentList将包含任何执行查询所必需的运行期参数。
9.命令:XmlReader Execute(string contextDocumentUri,
XmlResolver,dataSources,XmlArgumentList argList;
说明:该执行方法通过经由XmlResolver存取数据源来执行该查询并使用运行时间参数作为由XmlArgumentList所提供的运行时间参数。将默认文件映射入带有所提供的名称的XmlResolver。将结果输出到所提供的XmlWriter。
参数:contextDocumentUri;
将经由XmlResolver参数解析的上下文相关的文件的URI。
dataSources;
一个用于检索名为数据源的XmlResolver,该数据源可以用于执行一个查询。
argumentList;
XmlArgumentList将包含任何执行查询所必需的运行时间参数。
10.命令:void Execute(XmlResolver,inputSrc,XmlArgumentList argList
XmlResolver,outputSrc;
说明:该方法用给定的作为运行期参数的XmlArgumentList以及作为所希望的输入源的XmlResolver来执行该查询。输出该结果。
参数:argList;
XmlArgumentList将包含任何可以用来执行该查询的运行期参数。
inputSrc;
一个返回用于所希望的输入的数据源的XmlResolver。
outputSrc;
一个返回用于所希望的输入的数据源的XmlResolver。
VI.查询事件信息
1.命令:string Message{get;};
说明:一个来自执行运行期的信息,该信息可以将存储体以外的信息传送给用户。
如上所述,在连同多个计算装置和网络体系结构对本发明典型实施例进行描述的时候,可以将基础概念应用于其中合乎需要地执行一个查询系统和一个应用编程接口的任何计算装置或系统中。因此,可以将本发明的方法和系统应用于多个应用程序和装置。在此选择了典型的编程语言,名称以及实例作为多种选择的表示时,这些语言,名称和实例将不意味着受到限制。本领域普通技术人员将理解存在提供目标代码的多种方式来获得通过本发明所实现的相同,相似或相等的系统和方法。
可以连同硬件或软件或适当的两者组合来执行在此所描述的多种基数。因此,本发明的方法和装置,或特定特征及其部分可以以程序代码的方式(即指令)嵌入有形的媒体,例如软磁盘,CD-ROM,硬盘驱动器或其他任何机器可读存储介质,其中当由诸如计算机那样的一个机器输入并执行程序代码时,该机器变成一个用于实践本发明的装置。要是在可编程计算机上执行程序代码,该计算装置一般将包括一个处理器,一个该处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,以及至少一个输出装置。最好以一个高级别程序上的或面向对象的编程语言执行一个或多个可以利用本发明信号处理服务的程序(例如,通过使用数据处理API等)来与一台计算机进行通信。然而如果需要的话,可以用汇编语言或机器语言来执行该程序。总之,该语言可以是一种编译语言或解释语言,并结合硬件工具。
还可以经由具体化为程序代码形式的通信来实践本发明的方法和装置,在一些传输媒介上传送该程序代码,例如在电线或电缆上,通过光纤或经由任何其他形式的传输,其中在由诸如EPROM,门阵列,可编程逻辑装置(PLD),客户计算机,视频信号记录器等,或一个具有如同以上典型实施例中所描述的信号处理能力的一个接收机那样的机器来接收并存入和执行该程序代码时,该机器变成用于实践本发明的装置。当在一个通用处理器上执行时,该程序代码结合处理器来提供一个同一装置,该统一装置进行操作以启用本发明的功能性。另外,任何连同本发明使用的存储技术可以总是硬件和软件的一个组合。
在连同多个附图的优选实施例对本发明进行了描述的时侯,要理解到可以使用其他类似的实施例,或者可以不脱离其中而对所描述的实施例进行修改和添加用以执行与本发明相同的功能。此外,还应该强调,期待包括手持式装置操作系统和其他特定应用操作系统在内的多种计算机平台,尤其随着无线网络装置持续扩增。因此,本发明将不受任何单个实施例的限制,但是最好应该根据所附权利要求在广度和范围上进行分析。
Claims (15)
1.一种在用于构造可执行查询的系统中与应用程序进行通信的方法,包括:
该系统接收来自应用程序的一个或多个请求来设置一个或多个编译参数和命令以便用于将一个或多个输入查询转换成一个XML中间语言表示;以及
该系统接收来自应用程序的一个或多个请求来将该XML中间语言表示转换成一种可执行查询。
2.根据权利要求1所述的方法,进一步包括该应用程序接收来自该系统的一个或多个由事件状态,进程状态,中间结果,最终结果,错误信息,警告和帮助信息所组成的组。
3.根据权利要求1所述的方法,其中用于设置一个或多个环境,编译参数和编译命令包含以下的一个或多个:来自该系统的信息接收的启动、指定查询权限和执行权限、选择输入查询和编译器类型、以及建立估计环境。
4.根据权利要求3所述的方法,其中该编译器类型包含XPath,XSLT和XQuery语言编译器。
5.根据权利要求1所述的方法,其中XML中间语言表示是一个输入查询的语义表示。
6.根据权利要求1所述的方法,其中将XML中间语言转换成可执行查询包含为目标查询执行引擎中的直接执行而准备XML中间语言。
7.根据权利要求1所述的方法,其中将XML中间语言转换成可执行查询包含使用一个目标产生器将XML中间语言转换成一个目标表示。
8.根据权利要求7所述的方法,其中目标表示是由XML语言目标、SQL语言目标以及中间语言目标所构成的组的一个或多个。
9.一种为与应用程序进行通信而使用权利要求1所述的方法来构造可执行查询的系统。
10.一种用于编译和执行产生查询结果的输入查询的系统,包括:
一个输入装置,用于接收一个输入查询;
一个或多个中间语言编译器,其中从该输入查询编译一个XML中间语言表示;
一个或多个目标产生器,其中将XML中间语言表示转换成形成一个目标查询的一个或多个目标表示;
一个或多个数据源,用于在该数据源上进行查询;以及
一个执行引擎,其中在一个或多个数据源上执行目标查询来产生该查询结果。
11.根据权利10所述的系统,其中该输入查询包括由Xpath、XSLT和XQuery言中的一个或多个形成的一个查询。
12.根据权利要求10所述的系统,其中该XML中间语言表示表达了该输入查询的意义。
13.根据权利要求10所述的系统,其中一个或多个目标产生器包含XML语言产生器、SQL语言产生器和中间语言产生器中的一个或多个。
14.根据权利要求10所述的系统,其中一个或多个数据源包含关系数据源和无关数据源中的一个或多个。
15.根据权利要求14所述的系统,其中无关数据源包括电子表格和文字处理文件。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/601,445 | 2003-06-23 | ||
US10/601,445 US7383255B2 (en) | 2003-06-23 | 2003-06-23 | Common query runtime system and application programming interface |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1573759A true CN1573759A (zh) | 2005-02-02 |
CN100498768C CN100498768C (zh) | 2009-06-10 |
Family
ID=33418593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100714686A Expired - Fee Related CN100498768C (zh) | 2003-06-23 | 2004-06-23 | 公共查询运行期系统以及应用编程接口 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7383255B2 (zh) |
EP (1) | EP1492033A3 (zh) |
JP (1) | JP2005018777A (zh) |
KR (1) | KR20050000352A (zh) |
CN (1) | CN100498768C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008025281A1 (fr) * | 2006-08-25 | 2008-03-06 | Beijing Sursen International Technology Co., Ltd | Système de base documentaire et procédé de réalisation de celui-ci |
CN102495749A (zh) * | 2011-11-29 | 2012-06-13 | 珠海翔翼航空技术有限公司 | 一种将飞行规则转换成便于计算机执行的指令码的方法 |
US9430198B2 (en) | 2014-02-19 | 2016-08-30 | Huawei Technologies Co., Ltd. | Data processing method and apparatus |
CN108920676A (zh) * | 2018-07-09 | 2018-11-30 | 清华大学 | 一种处理图数据的方法及系统 |
CN110263931A (zh) * | 2010-08-17 | 2019-09-20 | 西格拉姆申德勒有限公司 | Fstp专家系统 |
Families Citing this family (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7873649B2 (en) * | 2000-09-07 | 2011-01-18 | Oracle International Corporation | Method and mechanism for identifying transaction on a row of data |
US8244702B2 (en) * | 2002-02-26 | 2012-08-14 | International Business Machines Corporation | Modification of a data repository based on an abstract data representation |
US6996558B2 (en) | 2002-02-26 | 2006-02-07 | International Business Machines Corporation | Application portability and extensibility through database schema and query abstraction |
US7165063B2 (en) * | 2003-11-19 | 2007-01-16 | International Business Machines Corporation | Context quantifier transformation in XML query rewrite |
US7900133B2 (en) | 2003-12-09 | 2011-03-01 | International Business Machines Corporation | Annotation structure type determination |
US20050197845A1 (en) * | 2004-03-02 | 2005-09-08 | Kai Wachter | Business workbook precalculation |
US7603347B2 (en) * | 2004-04-09 | 2009-10-13 | Oracle International Corporation | Mechanism for efficiently evaluating operator trees |
US7440954B2 (en) * | 2004-04-09 | 2008-10-21 | Oracle International Corporation | Index maintenance for operations involving indexed XML data |
US7398265B2 (en) * | 2004-04-09 | 2008-07-08 | Oracle International Corporation | Efficient query processing of XML data using XML index |
CN1997995B (zh) * | 2004-06-23 | 2010-05-05 | 甲骨文国际公司 | 使用转换有效评估查询 |
US7516121B2 (en) * | 2004-06-23 | 2009-04-07 | Oracle International Corporation | Efficient evaluation of queries using translation |
US8566300B2 (en) * | 2004-07-02 | 2013-10-22 | Oracle International Corporation | Mechanism for efficient maintenance of XML index structures in a database system |
US7302447B2 (en) * | 2005-01-14 | 2007-11-27 | International Business Machines Corporation | Virtual columns |
US7668806B2 (en) * | 2004-08-05 | 2010-02-23 | Oracle International Corporation | Processing queries against one or more markup language sources |
US7774365B2 (en) * | 2004-08-31 | 2010-08-10 | Morgan Stanley | Organizational reference data and entitlement system |
US8447774B1 (en) | 2004-11-23 | 2013-05-21 | Progress Software Corporation | Database-independent mechanism for retrieving relational data as XML |
US20060116999A1 (en) * | 2004-11-30 | 2006-06-01 | International Business Machines Corporation | Sequential stepwise query condition building |
US7461052B2 (en) * | 2004-12-06 | 2008-12-02 | International Business Machines Corporation | Abstract query plan |
US7908286B2 (en) * | 2004-12-08 | 2011-03-15 | Oracle International Corporation | Techniques for providing XQuery access using web services |
US8131744B2 (en) * | 2004-12-17 | 2012-03-06 | International Business Machines Corporation | Well organized query result sets |
US8112459B2 (en) * | 2004-12-17 | 2012-02-07 | International Business Machines Corporation | Creating a logical table from multiple differently formatted physical tables having different access methods |
US7333981B2 (en) * | 2004-12-17 | 2008-02-19 | International Business Machines Corporation | Transformation of a physical query into an abstract query |
EP1856635A1 (en) * | 2005-01-13 | 2007-11-21 | Thomson Global Resources | Systems, methods, and software for retrieving information using multiple query languages |
US8122012B2 (en) * | 2005-01-14 | 2012-02-21 | International Business Machines Corporation | Abstract record timeline rendering/display |
US7624097B2 (en) | 2005-01-14 | 2009-11-24 | International Business Machines Corporation | Abstract records |
US7321895B2 (en) * | 2005-01-14 | 2008-01-22 | International Business Machines Corporation | Timeline condition support for an abstract database |
CA2597758C (en) * | 2005-02-22 | 2016-05-17 | Connectif Solutions Inc. | Distributed asset management system and method |
US7685561B2 (en) * | 2005-02-28 | 2010-03-23 | Microsoft Corporation | Storage API for a common data platform |
US8095553B2 (en) * | 2005-03-17 | 2012-01-10 | International Business Machines Corporation | Sequence support operators for an abstract database |
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 |
US20060235839A1 (en) * | 2005-04-19 | 2006-10-19 | Muralidhar Krishnaprasad | Using XML as a common parser architecture to separate parser from compiler |
US7949941B2 (en) * | 2005-04-22 | 2011-05-24 | Oracle International Corporation | Optimizing XSLT based on input XML document structure description and translating XSLT into equivalent XQuery expressions |
US8166059B2 (en) | 2005-07-08 | 2012-04-24 | Oracle International Corporation | Optimization of queries on a repository based on constraints on how the data is stored in the repository |
US7685567B2 (en) * | 2005-07-29 | 2010-03-23 | Microsoft Corporation | Architecture that extends types using extension methods |
US7631011B2 (en) * | 2005-07-29 | 2009-12-08 | Microsoft Corporation | Code generation patterns |
US20070027849A1 (en) * | 2005-07-29 | 2007-02-01 | Microsoft Corporation | Integrating query-related operators in a programming language |
US20070044083A1 (en) * | 2005-07-29 | 2007-02-22 | Microsoft Corporation | Lambda expressions |
US7702686B2 (en) * | 2005-07-29 | 2010-04-20 | Microsoft Corporation | Retrieving and persisting objects from/to relational databases |
US7818719B2 (en) * | 2005-07-29 | 2010-10-19 | Microsoft Corporation | Extending expression-based syntax for creating object instances |
US7743066B2 (en) * | 2005-07-29 | 2010-06-22 | Microsoft Corporation | Anonymous types for statically typed queries |
US7409636B2 (en) * | 2005-07-29 | 2008-08-05 | Microsoft Corporation | Lightweight application program interface (API) for extensible markup language (XML) |
US20070027905A1 (en) * | 2005-07-29 | 2007-02-01 | Microsoft Corporation | Intelligent SQL generation for persistent object retrieval |
US7779396B2 (en) * | 2005-08-10 | 2010-08-17 | Microsoft Corporation | Syntactic program language translation |
US20070074185A1 (en) * | 2005-08-30 | 2007-03-29 | Microsoft Corporation | Identifier expressions |
US7694285B2 (en) * | 2005-08-30 | 2010-04-06 | Microsoft Corporation | Relaxed and extended delegates |
US7444332B2 (en) * | 2005-11-10 | 2008-10-28 | International Business Machines Corporation | Strict validation of inference rule based on abstraction environment |
US7440945B2 (en) * | 2005-11-10 | 2008-10-21 | International Business Machines Corporation | Dynamic discovery of abstract rule set required inputs |
US7933928B2 (en) | 2005-12-22 | 2011-04-26 | Oracle International Corporation | Method and mechanism for loading XML documents into memory |
US20070174241A1 (en) * | 2006-01-20 | 2007-07-26 | Beyer Kevin S | Match graphs for query evaluation |
US7596548B2 (en) * | 2006-01-20 | 2009-09-29 | International Business Machines Corporation | Query evaluation using ancestor information |
US7519606B2 (en) * | 2006-01-31 | 2009-04-14 | International Business Machines Corporation | Schema mapping specification framework |
CN101021848B (zh) * | 2006-02-15 | 2010-08-25 | 鸿富锦精密工业(深圳)有限公司 | 资讯搜索系统及方法 |
US7945891B2 (en) * | 2006-04-12 | 2011-05-17 | Microsoft Corporation | Time business process validations within data context |
CN101093493B (zh) * | 2006-06-23 | 2011-08-31 | 国际商业机器公司 | 数据库查询语言转换方法、转换装置 |
US8572182B2 (en) | 2006-07-21 | 2013-10-29 | Blackberry Limited | Handling notifications in instant messaging systems |
US7814114B2 (en) * | 2006-09-05 | 2010-10-12 | Oracle International Corporation | Tree-based information query model |
US7739219B2 (en) | 2006-09-08 | 2010-06-15 | Oracle International Corporation | Techniques of optimizing queries using NULL expression analysis |
US20080082514A1 (en) * | 2006-09-29 | 2008-04-03 | International Business Machines Corporation | Method and apparatus for integrating relational and hierarchical data |
US8010889B2 (en) * | 2006-10-20 | 2011-08-30 | Oracle International Corporation | Techniques for efficient loading of binary XML data |
WO2008062962A1 (en) * | 2006-11-24 | 2008-05-29 | University-Industry Cooperation Group Of Kyunghee University | Space context copy/paste method and system, and space copier |
US7657777B2 (en) * | 2006-12-01 | 2010-02-02 | Sockeye Solutions Corporation | Common semantic model of management of a supply chain |
US8645431B2 (en) * | 2006-12-01 | 2014-02-04 | Vecco Technology Inc. | Multi-level supply chain management system and methods |
US8190661B2 (en) * | 2007-01-24 | 2012-05-29 | Microsoft Corporation | Using virtual repository items for customized display |
US20080201330A1 (en) * | 2007-02-16 | 2008-08-21 | Microsoft Corporation | Software repositories |
US8145673B2 (en) | 2007-02-16 | 2012-03-27 | Microsoft Corporation | Easily queriable software repositories |
US8140557B2 (en) | 2007-05-15 | 2012-03-20 | International Business Machines Corporation | Ontological translation of abstract rules |
US7831625B2 (en) * | 2007-05-16 | 2010-11-09 | Microsoft Corporation | Data model for a common language |
US8060868B2 (en) * | 2007-06-21 | 2011-11-15 | Microsoft Corporation | Fully capturing outer variables as data objects |
US7676461B2 (en) * | 2007-07-18 | 2010-03-09 | Microsoft Corporation | Implementation of stream algebra over class instances |
US9009181B2 (en) | 2007-08-23 | 2015-04-14 | International Business Machines Corporation | Accessing objects in a service registry and repository |
US7783656B2 (en) * | 2007-09-24 | 2010-08-24 | International Business Machines Corporation | Accessing objects in a service registry and repository using a treat as function |
US8954526B2 (en) | 2007-09-28 | 2015-02-10 | Xcerion Aktiebolag | Network operating system |
US8543898B2 (en) | 2007-11-09 | 2013-09-24 | Oracle International Corporation | Techniques for more efficient generation of XML events from XML data sources |
US8250062B2 (en) * | 2007-11-09 | 2012-08-21 | Oracle International Corporation | Optimized streaming evaluation of XML queries |
US9842090B2 (en) | 2007-12-05 | 2017-12-12 | Oracle International Corporation | Efficient streaming evaluation of XPaths on binary-encoded XML schema-based documents |
US20090235282A1 (en) * | 2008-03-12 | 2009-09-17 | Microsoft Corporation | Application remote control |
US8095963B2 (en) | 2008-04-30 | 2012-01-10 | Microsoft Corporation | Securing resource stores with claims-based security |
US8429196B2 (en) | 2008-06-06 | 2013-04-23 | Oracle International Corporation | Fast extraction of scalar values from binary encoded XML |
US9170787B2 (en) * | 2008-06-27 | 2015-10-27 | Microsoft Technology Licensing, Llc | Componentization of compiler functionality |
CN101605141A (zh) * | 2008-08-05 | 2009-12-16 | 天津大学 | 基于语义的Web服务关系网络系统 |
US20100088325A1 (en) | 2008-10-07 | 2010-04-08 | Microsoft Corporation | Streaming Queries |
US8538981B2 (en) * | 2008-11-20 | 2013-09-17 | Sap Ag | Stream sharing for event data within an enterprise network |
EP2438512B1 (en) | 2009-06-02 | 2019-03-06 | Intel Corporation | Methods, systems and computer program products for providing a distributed associative memory base |
US8095571B2 (en) | 2009-06-22 | 2012-01-10 | Microsoft Corporation | Partitioning modeling platform data |
US9158816B2 (en) | 2009-10-21 | 2015-10-13 | Microsoft Technology Licensing, Llc | Event processing with XML query based on reusable XML query template |
CN101697125B (zh) * | 2009-11-04 | 2013-05-08 | 中兴通讯股份有限公司 | 一种开发环境转换的方法及装置 |
US10089119B2 (en) | 2009-12-18 | 2018-10-02 | Microsoft Technology Licensing, Llc | API namespace virtualization |
US8739118B2 (en) | 2010-04-08 | 2014-05-27 | Microsoft Corporation | Pragmatic mapping specification, compilation and validation |
US20120290560A1 (en) * | 2011-05-13 | 2012-11-15 | Kushal Das | Mechanism for efficiently querying application binary interface/application programming interface-related information |
US8776094B2 (en) | 2011-08-11 | 2014-07-08 | Microsoft Corporation | Runtime system |
US8695021B2 (en) | 2011-08-31 | 2014-04-08 | Microsoft Corporation | Projecting native application programming interfaces of an operating system into other programming languages |
CN102360370A (zh) * | 2011-09-29 | 2012-02-22 | 迈普通信技术股份有限公司 | 数据集中管理系统及方法 |
EP2728494A1 (en) * | 2012-11-05 | 2014-05-07 | Software AG | System and method for graphically creating queries on model data |
US20140280378A1 (en) * | 2013-03-14 | 2014-09-18 | Adminovate, Inc. | Database generator |
CN104657371A (zh) * | 2013-11-20 | 2015-05-27 | 腾讯科技(深圳)有限公司 | 一种数据展示方法和装置 |
US9348561B2 (en) * | 2014-05-21 | 2016-05-24 | InvestCloud, Inc | Tabular format transaction editor |
US10635504B2 (en) | 2014-10-16 | 2020-04-28 | Microsoft Technology Licensing, Llc | API versioning independent of product releases |
US20160306847A1 (en) * | 2015-04-15 | 2016-10-20 | Futurewei Technologies, Inc. | Apparatus and Method for Using Parameterized Intermediate Representation for Just-In-Time Compilation in Database Query Execution Engine |
US10831771B2 (en) * | 2015-07-06 | 2020-11-10 | Sap Se | Interactive exploration of large graphs |
US11256709B2 (en) | 2019-08-15 | 2022-02-22 | Clinicomp International, Inc. | Method and system for adapting programs for interoperability and adapters therefor |
US11537609B2 (en) * | 2020-06-30 | 2022-12-27 | Oracle International Corporation | Transforming a function-step-based graph query to another graph query language |
CN114051046A (zh) * | 2021-11-16 | 2022-02-15 | 北京百度网讯科技有限公司 | 云数据下发方法、相关装置及计算机程序产品 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6263332B1 (en) * | 1998-08-14 | 2001-07-17 | Vignette Corporation | System and method for query processing of structured documents |
JP3671765B2 (ja) * | 1999-09-24 | 2005-07-13 | 日本電信電話株式会社 | 異種情報源問い合わせ変換方法及び装置及び異種情報源問い合わせ変換プログラムを格納した記憶媒体 |
US6598043B1 (en) * | 1999-10-04 | 2003-07-22 | Jarg Corporation | Classification of information sources using graph structures |
US6766330B1 (en) * | 1999-10-19 | 2004-07-20 | International Business Machines Corporation | Universal output constructor for XML queries universal output constructor for XML queries |
US6785673B1 (en) * | 2000-02-09 | 2004-08-31 | At&T Corp. | Method for converting relational data into XML |
US6901403B1 (en) * | 2000-03-02 | 2005-05-31 | Quovadx, Inc. | XML presentation of general-purpose data sources |
US6934712B2 (en) | 2000-03-21 | 2005-08-23 | International Business Machines Corporation | Tagging XML query results over relational DBMSs |
WO2002001416A2 (en) * | 2000-06-23 | 2002-01-03 | The Johns Hopkins University | Architecture for distributed database information access |
WO2002035395A2 (en) | 2000-10-27 | 2002-05-02 | Entigen Corporation | Integrating heterogeneous data and tools |
US6961728B2 (en) * | 2000-11-28 | 2005-11-01 | Centerboard, Inc. | System and methods for highly distributed wide-area data management of a network of data sources through a database interface |
US6901410B2 (en) * | 2001-09-10 | 2005-05-31 | Marron Pedro Jose | LDAP-based distributed cache technology for XML |
US7039622B2 (en) * | 2001-09-12 | 2006-05-02 | Sas Institute Inc. | Computer-implemented knowledge repository interface system and method |
EP1461730A1 (en) * | 2001-12-24 | 2004-09-29 | Koninklijke Philips Electronics N.V. | Method and device for presenting, managing and exploiting graphical queries in data management systems |
US6950815B2 (en) * | 2002-04-23 | 2005-09-27 | International Business Machines Corporation | Content management system and methodology featuring query conversion capability for efficient searching |
US6954748B2 (en) * | 2002-04-25 | 2005-10-11 | International Business Machines Corporation | Remote data access and integration of distributed data sources through data schema and query abstraction |
US7120645B2 (en) * | 2002-09-27 | 2006-10-10 | Oracle International Corporation | Techniques for rewriting XML queries directed to relational database constructs |
-
2003
- 2003-06-23 US US10/601,445 patent/US7383255B2/en not_active Expired - Fee Related
-
2004
- 2004-06-08 EP EP04102586A patent/EP1492033A3/en not_active Withdrawn
- 2004-06-23 JP JP2004185647A patent/JP2005018777A/ja active Pending
- 2004-06-23 KR KR1020040047273A patent/KR20050000352A/ko not_active Application Discontinuation
- 2004-06-23 CN CNB2004100714686A patent/CN100498768C/zh not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008025281A1 (fr) * | 2006-08-25 | 2008-03-06 | Beijing Sursen International Technology Co., Ltd | Système de base documentaire et procédé de réalisation de celui-ci |
US8312008B2 (en) | 2006-08-25 | 2012-11-13 | Sursen Corp | Docbase management system and implementing method thereof |
CN110263931A (zh) * | 2010-08-17 | 2019-09-20 | 西格拉姆申德勒有限公司 | Fstp专家系统 |
CN102495749A (zh) * | 2011-11-29 | 2012-06-13 | 珠海翔翼航空技术有限公司 | 一种将飞行规则转换成便于计算机执行的指令码的方法 |
CN102495749B (zh) * | 2011-11-29 | 2014-03-05 | 珠海翔翼航空技术有限公司 | 一种将飞行规则转换成便于计算机执行的指令码的方法 |
US9430198B2 (en) | 2014-02-19 | 2016-08-30 | Huawei Technologies Co., Ltd. | Data processing method and apparatus |
CN103838614B (zh) * | 2014-02-19 | 2017-12-22 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN108920676A (zh) * | 2018-07-09 | 2018-11-30 | 清华大学 | 一种处理图数据的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP1492033A3 (en) | 2005-03-23 |
US20040260691A1 (en) | 2004-12-23 |
JP2005018777A (ja) | 2005-01-20 |
US7383255B2 (en) | 2008-06-03 |
KR20050000352A (ko) | 2005-01-03 |
EP1492033A2 (en) | 2004-12-29 |
CN100498768C (zh) | 2009-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1573759A (zh) | 公共查询运行期系统以及应用编程接口 | |
CN1297935C (zh) | 进行非结构化信息管理和自动文本分析的系统和方法 | |
CN1155906C (zh) | 数据处理方法、系统、处理程序及记录媒体 | |
CN1132098C (zh) | 并行分布处理系统及其方法 | |
CN1609856A (zh) | 查询中间语言的方法和系统 | |
CN1609855A (zh) | 查询优化系统和方法 | |
CN1664779A (zh) | 软件开发基础架构 | |
CN1892593A (zh) | 与对象建模形式体系兼容的数据处理方法 | |
CN1604082A (zh) | 用于任意数据模型的映射体系结构 | |
CN1182467C (zh) | 可扩充的分布企业应用集成系统 | |
CN1204515C (zh) | 自由格式数据处理的方法和设备 | |
CN1866253A (zh) | 把Web服务映射到本体 | |
CN1794231A (zh) | 具有替换格式的上下文无关的文档部分 | |
CN1752963A (zh) | 文档信息处理设备、文档信息处理方法及处理程序 | |
CN1749999A (zh) | .net数据类型和实例的持久存储 | |
CN1073276A (zh) | 语言的中性对象 | |
CN1846204A (zh) | 用于提供数据驱动命令行输出的机制 | |
CN1271545C (zh) | 语言翻译系统 | |
CN1740970A (zh) | 无缝地比较对象的系统和方法 | |
CN1797399A (zh) | 用于文本挖掘和搜索的应用程序编程接口 | |
CN1073540A (zh) | 管理类方法名 | |
CN1761956A (zh) | 基于片段的串行化系统与方法 | |
CN1321923A (zh) | 画面程序作成方法、记录媒体 | |
CN1619490A (zh) | 系统的集成设计,部署和管理阶段 | |
CN1672133A (zh) | 优化的代码生成 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090610 Termination date: 20130623 |