CN102033885A - 用于XML数据存储库中的XPath执行的方法和系统 - Google Patents
用于XML数据存储库中的XPath执行的方法和系统 Download PDFInfo
- Publication number
- CN102033885A CN102033885A CN2009101791428A CN200910179142A CN102033885A CN 102033885 A CN102033885 A CN 102033885A CN 2009101791428 A CN2009101791428 A CN 2009101791428A CN 200910179142 A CN200910179142 A CN 200910179142A CN 102033885 A CN102033885 A CN 102033885A
- Authority
- CN
- China
- Prior art keywords
- node
- xpath
- xml
- execution
- tree
- 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/8365—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- 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/83—Querying
- G06F16/835—Query processing
- G06F16/8373—Query execution
Abstract
本发明公开了用于XML数据存储库中的XPath执行的方法和系统。该用于XML数据存储库中的XPath执行的方法,包括:解析步骤,用于利用简单路径文件来解析输入的XPath查询,以生成关于该XPath查询的执行树,其中所述简单路径文件是基于数据存储库中的多个XML文件的层次结构生成的一个XML文件,其中所生成的一个XML文件中的节点的节点名称是通过记录数据存储库中的多个XML文件中的各个节点的标签信息而生成的;以及执行步骤,用于对数据存储库执行该执行树,以产生最终执行结果。
Description
技术领域
本发明涉及XPath执行,具体来说,涉及一种用于XML数据存储库中的XPath执行的方法和系统。
背景技术
XPath是为了对XML文件中的节点进行寻址而提供的一种查询语言。目前,以XML格式编码的数据量正在迅速增加。因此,针对大量的XML数据,如何高效地执行基于XML的查询处理,即,如何高效地进行XPath执行,这对于本领域技术人员来说是一个巨大的挑战。本领域技术人员在这个方面已经进行了许多尝试。
在现有技术中,通常有两种方式来执行XPath查询。
在第一种方式中,首先将XPath语言转换成SQL语言,然后,基于SQL在数据库中进行查询。例如,在Muralidhar Krishnaprasad、Zhen Hua Liu、Anand Manikutty、James W.Warner、Vikas Arora、Susan Kotsovolos的“Query Rewrite for XML in Oracle XML DB”Proc.VLDB,2004中公开了一种基于Oracle XML DB进行查询的技术方案;在Shank.Pal、Istvan Cseri、Oliver Seeliger、Michael Rys、Gideon Schaller、Wei Yu、D.Tomic、A.Baras、Brandon Berg、Denis Churin的“XQuery Implementation in a Relational Database System”VLDB,2005中公开了一种基于SQL Server 2008进行查询的技术方案;在Daniela Florescu、Ch ris Hillery、Donald Kossmann、Paul Lucas、Fabio Riccardi、Till Westmann、Michael J.Carey、Arvind Sundararajan“The BEA/XQRL Streaming XQuery Processor”Proc.VLDB,2003公开了一种基于BEA XQuery Processor进行查询的技术方案;在“Oracle Berkeley DB XML”2009(http://www.oracle.com/database/berkeley-db/xml/index.html)公开了一种基于Open-source XML DB进行查询的技术方案;以及在Q.Li、B.Moon.的“Indexing and Querying XML Data for Regular Path Expressions”VLDB 2001和M.YoshiKawa、T.Amagasa的“XRel:APath-based Approach to Storage and Retrieval of XML Documents using Relational Databases”ACM Transactions on Internet Technology 2001中公开了一种技术方案。
然而,这种方式存在缺陷。例如,这种方式难于维护XML模式的改变。在这种方式中,如果XML模式发生改变,则数据库中表的结构也要进行改变,以及XPath查询与SQL查询之间的映射关系也要进行改变。这些改变往往是复杂而且耗时的,并且是容易产生错误的。另外,在这种方式中,SQL执行连接操作的代价也很大。
在第二种方式,直接针对每个XML实例进行XPath执行。例如,在Matthias Nicola、Bertvander Linden的“Native XML Support inDB2 Universal Database”VLDB 2005和Guogen Zhang的“Buildinga Scalable Native XML Database Engine on Infrastructure for aRelational Database”XIME-P 2005中公开了基于IBM DB2进行查询的技术方案;以及在Haifeng Jiang、Hongjun Lu、Wei Wang、Jeffrey Xu Yu的“Path Materialization Revisited:An Efficient Storage Model for XML Data”AICE2000和H.Jiang、W.Wang、H.Lu、J.Xu Yu的“Holistic Twig Joins on Indexed XML Documents”VLDB 2003公开了一种技术方案。
然而,这种方式也存在缺陷。例如,在这种方式中,需要针对每个XML实例计算上下文。因此,其执行代价很高。
因此,需要提出一种新的高效的XPath执行技术来解决上述现有技术中的任何问题。
发明内容
本发明的一个目的是解决或者减轻上面所述的现有技术中的技术问题中的至少一个。
根据本发明的第一方面,提供了一种用于XML数据存储库中的XPath执行的方法,包括:解析步骤,用于利用简单路径文件来解析输入的XPath查询,以生成关于该XPath查询的执行树,其中所述简单路径文件是基于数据存储库中的多个XML文件的层次结构生成的一个XML文件,其中所生成的一个XML文件中的节点的节点名称是通过记录数据存储库中的多个XML文件中的各个节点的标签信息而生成的;以及执行步骤,用于对数据存储库执行该执行树,以产生最终执行结果。
优选地,所述简单路径文件包括由根节点和子节点形成的树状结构。
优选地,通过所述数据存储库中增加的XML文件来更新所述简单路径文件。
优选地,所述执行树包括主节点,所述主节点是在XPath解析过程中对所述XPath查询的每一查询步骤完成时所得到的结果节点。
优选地,所述解析步骤还包括:进行轴执行并检查XPath查询中的名称,以选择与该XPath查询中的名称一致的所述简单路径文件中的节点作为当前主节点;判断当前主节点是否具有谓词;以及如果当前主节点不具有谓词,则更新执行树。
优选地,所述解析步骤还包括:如果当前主节点具有谓词,则进行谓词执行。
优选地,所述解析步骤是从所述简单路径文件的根节点开始执行的。
优选地,更新执行树还包括:添加用于反映XPath查询中节点的相对顺序信息的谓词节点。
优选地,更新执行树还包括:更新谓词节点的位置信息。
优选地,所述方法还包括:根据所述简单路径文件中的每个节点,以有序的方式将数据存储在数据存储库。
根据本发明的第一方面,提供了一种用于XML数据存储库中的XPath执行的系统,包括:解析器,用于利用简单路径文件来解析输入的XPath查询,以生成关于该XPath查询的执行树,其中所述简单路径文件是基于数据存储库中的多个XML文件的层次结构生成的一个XML文件,其中所生成的一个XML文件中的节点的节点名称是通过记录数据存储库中的多个XML文件中的各个节点的标签信息而生成的;以及执行器,用于对数据存储库执行该执行树,以产生最终执行结果。
本发明的一个优点在于,由于可以直接对简单路径文件进行修改,因此,可以很容易地维护XML文件的模式改变。
本发明的另一个优点在于,由于不必针对每个XML实例计算上下文,因此,可以节省计算资源,提高效率。
本发明的另一个优点在于,可以提供线性的执行时间。例如,根据本发明,可以预先按有序的方式在数据存储库中存储数据。因此,这可以进一步提高效率。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同对其的描述一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1是示出根据本发明的实施例的方法的流程图。
图2是示出根据本发明的实施例的系统的框图。
图3是根据本发明的实施例的用于描述简单路径文件的例子的示意图。
图4是根据本发明的实施例的用于描述从数据存储库查询数据的一个例子的示意图。
图5是示出根据本发明的实施例的执行树的例子的示意图。
图6是示出根据本发明的实施例的一种用于生成执行树的方法的流程图。
图7A、7B、7C和7D是示出根据本发明的实施例的一个用于生成执行树的例子的示意图。
图8是根据本发明的实施例的用于说明节点之间的关系的示意图。
图9是示出根据本发明的实施例的一个用于基于执行树进行执行的例子的示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为本说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<实施例>
下面针对附图描述本发明的实施例。
图1示出了根据本发明的实施例的方法的流程图。图2示出了根据本发明的实施例的系统的框图。
下面,根据图1描述根据本发明的实施例的用于XML数据存储库中的XPath执行的方法1000。
如图1所示,在步骤S1100,执行解析步骤,用于利用简单路径文件来解析输入的XPath查询,并生成关于该XPath查询的执行树。
将在下面参照图5-7和8具体描述生成执行树的方式。
例如,所述简单路径文件是基于数据存储库中的多个XML文件的层次结构生成的一个XML文件,其中所生成的一个XML文件中的节点的节点名称是通过记录数据存储库中的多个XML文件中的各个节点的标签信息而生成的。
将在下面参照图3和4具体描述简单存储库路径文件。
在步骤S1200,执行执行步骤,用于对数据存储库执行该执行树,以产生最终执行结果。
将在下面参照图9具体描述执行树的执行方式。
本领域技术人员应当理解,尽管在上面顺序地示出了生成步骤、解析步骤和执行步骤,但是,这并不表明本发明仅限于这样的顺序。例如,可以预先针对数据存储库中的全部XML文件执行生成简单路径文件的步骤。如果数据存储库中的XML文件没有发生变化,则在后续过程中,可以仅执行所述解析步骤和执行步骤,而不执行所述生成步骤。
下面,根据图2描述根据本发明的实施例的用于XML数据存储库中的XPath执行的系统2000。
如图2所示,根据本发明的XPath执行系统2000包括解析器2100以及执行器2200。
解析器2100利用所生成的简单路径文件来解析输入的XPath查询,并生成关于该XPath查询的执行树。
例如,所述简单路径文件是基于数据存储库中的多个XML文件的层次结构生成的一个XML文件,其中所生成的一个XML文件中的节点的节点名称是通过记录数据存储库中的多个XML文件中的各个节点的标签信息而生成的。
执行器2200对数据存储库执行该执行树,以产生最终执行结果。
根据本发明的XPath执行系统2000例如还可以连接到数据存储库2300或者包括数据存储库2300。数据存储库2300存储XML文件。XML文件包含数据信息。
根据本发明的XPath执行系统2000可以用于实现根据本发明的用于XML数据存储库中的XPath执行的方法。下面所描述的各项特征可以应用于根据本发明的用于XML数据存储库中的XPath执行的方法和XPath执行系统。
<简单路径文件>
下面参照图3描述简单路径文件的例子。
图3中示出了两个XML实例以及简单路径文件的树结构。
实例1(a1)包括根节点(“文章”)、多个子节点(“作者”、“内容”、“姓名”、“年龄”)、相应的文本(“约翰”、“29”)以及属性(“SN=100”)。实例1可以用XML格式表示为:
实例2(a2)包括根节点(“文章”)、多个子节点(“作者”、“内容”、“姓名”、“性别”)、相应的文本(“莎拉”、“女”)以及属性(“SN=8”)。实例2可以用XML格式表示为:
可以由实例1和实例2得到简单路径文件。
简单路径文件的树结构包括根节点、多个子节点(“文章”、“作者”、“内容”、“姓名”、“年龄”、“性别”)以及属性(“SN”)。简单路径文件中所包括的多个子节点包括实例1和实例2中的全部节点和属性。
该简单路径文件可以用XML格式表示为:
从上面可以知道,简单路径文件中的每个简单路径(sp)对应于一组XML节点。例如,如图3的例子所示,简单路径文件中的路径“/文章/作者”对应于实例1中的节点“作者”和实例2中的节点“作者”。可以将与简单路径文件中的每个路径(sp)对应的一组XML节点表示为NodeSet(sp)。如果用n来表示简单路径文件中的每个路径“/根/sp”对应的节点,则还可以将所述XML节点组表示为NodeSet(n),其中,n例如可以是整数、自然数等。在图3所示的b.简单路径文件中,为每个节点分配了一个ID,即SPid。简单路径文件中的每个节点可以由其相应的SPid标识。因此,例如,还可以将所述XML节点组表示为NodeSet(SPid)。
根据图3可以看出,简单路径文件是基于数据存储库中的全部或多个XML文件的层次结构生成的一个XML文件,其中所生成的一个XML文件中的节点的节点名称是通过记录数据存储库中的全部或多个XML文件中的各个节点的标签信息而生成的。简单路径文件包括由根节点和子节点形成的树状结构。
例如,标签信息包括XML文档中的节点名称(例如,文章)。例如,标签信息还包括XML文件中的属性名称(例如,SN)。
图3示出了实例1的层次结构:节点“文章”具有子节点“作者”和“内容”以及属性“SN=100”,节点“作者”具有子节点“姓名”和“年龄”,节点“姓名”具有值“约翰”,以及节点“年龄”具有值“29”。
图3示出了实例2的层次结构:节点“文章”具有子节点“作者”和“内容”以及属性“SN =8”,节点“作者”具有子节点“姓名”和“性别”,节点“姓名”具有值“莎拉”,以及节点“性别”具有值“女”。
图3示出了由实例1和2生成的简单路径文件的层次结构:根节点具有子节点“文章”,节点“文章”具有子节点“作者”和“内容”以及属性“SN”,以及节点“作者”具有子节点“姓名”、“年龄”和“性别”。
另外,如前面所述,可以在XPath执行之前预先生成并存储简单路径文件。当收到XPath查询时,直接使用预先存储的简单路径文件。当有新数据(XML文件)被加入到数据存储库中时,可以更新简单路径文件,以反映新数据的层次结构和标签信息。
下面参照图4描述利用简单路径文件从数据存储库查询数据的过程。
图4示出了从数据存储库查询数据的一个例子。
在图4的例子中,所进行的查询是:“/文章[@SN=100]/作者[年龄<30]/姓名”。
根据所述查询得到三个简单路径:“根/文章/作者/姓名”、“根/文章/SN”和“根/文章/作者/年龄”。
如图4所示,数据存储库包括多个用于存储文档节点数据的存储块。
数据存储库根据上面三个简单路径从数据存储库中查询相应的存储块,并对三个存储块中的数据进行排序、连接和合并,从而得到“SN=100”且“年龄<30”的文章作者的姓名。
<执行树>
执行树是在XPath执行过程中的中间数据结构。执行树用于在XPath查询的解析过程(解析步骤或解析器)中记录上下文信息。例如,在对每一XPath查询进行解析的过程(步骤或操作)开始时,执行树作为上下文信息被输入,以及在每一XPath查询进行解析的过程(步骤或操作)结束时,执行树作为上下文信息被输出。执行树最终被执行(例如,通过执行器)以产生最终执行结果。例如,在XPath执行过程中,可以将执行树暂存在存储器中,例如,将其存储在运行XPath执行的系统的高速缓冲存储器(未示出)中。
图5示出了执行树的一般结构。
如图5所示,执行树可以包括多个主节点PriNode1、......PriNodei、......PriNoden,其中n为正整数。执行树还可以包括谓词节点和下级节点。
<主节点>
主节点是在XPath解析过程中对XPath查询的每一查询步骤完成时所得到的结果节点。
例如,对于图4所示的XPath查询例子“/文章[@SN=100]/作者[年龄<30]/姓名”,在第一查询步骤(“/文章[@SN=100]”)中,主节点是“文章”;在第二查询步骤(“/文章[@SN=100]/作者[年龄<30]”)中,主节点是“作者”;以及在第三查询步骤(“/文章[@SN=100]/作者[年龄<30]/姓名”)中,主节点是“姓名”。
每个主节点PriNodei(i=1,2,......n)包括参数SPid、PreNodes、SecNodes。
参数SPid表示在简单路径文件中为主节点分配的ID。
参数PreNodes表示主节点的谓词节点。
参数SecNodes表示主节点的下级节点。
<谓词节点>
每个主节点可以对应于多个谓词节点PreNodei1、......、PreNodeij、......、PreNodeim,其中m为正整数。
每个谓词节点PreNodeij(j=1,2,......,m)包括参数SPid、Position Info、Expression Info和PreNodes。
参数SPid表示在简单路径文件中为谓词节点分配的ID。
参数Position Info表示谓词节点的位置信息。参数Position Info还包括四个子参数:Co-Anc Level、Self Level、PriNode Level和Relative Order。
子参数Co-Anc Level表示该谓词节点与主节点的共同祖先节点在简单路径存储库的树结构中的层级。
子参数Self Level表示谓词节点本身在简单路径存储库的树结构中的层级。
子参数PriNode Level表示主节点在简单路径存储库的树结构中的层级。
子参数Relative Order表示谓词节点与主节点之间的相对顺序关系。
图8示意性地示出了上面所述的各种关系。如图8所示,有文档节点(Doc节点或根节点)、共同祖先节点(Co-Anc节点)、谓词节点和主节点。“Self层级”表示谓词节点自身的层级。“Co-Anc层级”表示共同祖先节点的层级。“PriNode层级”表示主节点的层级。图8中还示出了谓词节点和主节点之间的相对位置关系。主节点可以与谓词节点处于相同的层级,也可以与谓词节点处于不同的层级。
参数Expression Info表示谓词节点的表达信息。参数ExpressionInfo还包括两个子参数:Operator和Value。
子参数Operator表示谓词节点的操作符。
子参数Value表示谓词节点的值。
参数PreNodes表示该谓词节点的谓词节点。其中,每个谓词节点还可以对应于多个谓词节点,例如,PreNodeij1、PreNodeij2、......、PreNodeijt,其中t为正整数。
<下级节点>
每个主节点可以对应于多个下级节点SecNodei1、......、SecNodeik、......、SecNodeis,其中s为正整数。例如,如图3所示,节点“作者”可以包括三个下级节点,即“姓名”、“年龄”和“性别”。
每个下级节点SecNodeik(k=1,2,......,s)包括参数SPid和PreNodes。
参数SPid表示在简单路径文件中为下级节点分配的ID。
参数PreNodes表示该下级节点的谓词节点。参数PreNodes包括两个子参数:Self Level和Relative Order。
子参数Self Level表示谓词节点本身在简单路径存储库的树结构中的层级。
子参数Relative Order表示谓词节点与下级节点之间的相对顺序关系。
图5中所示的这些参数的含义是本领域公知的。本领域技术人员应当知道,在上面仅仅是针对特定的执行树结构来解释这些参数的,而本发明并不限于此。在某些情况下,可能会采用这些参数的更加一般性的含义。例如,参数SPid表示在简单路径文件中为一个节点分配的ID,参数Co-Anc Level表示两个节点的共同祖先节点在简单路径存储库的树结构中的层级,参数Self Level表示一个节点本身在简单路径存储库的树结构中的层级,参数Relative Order表示两个节点之间的相对顺序关系,等等。
<用于生成执行树的方法>
下面参照图6描述一种用于生成执行树的方法。根据本发明的用于生成执行树的方法是根据输入的XPath查询针对简单路径文件一步一步执行的。
例如,生成执行树的过程是从简单路径文件的根节点开始的。
如图6所示,在步骤S3100,进行轴执行并检查名称。
在该步骤,首先,检查输入的XPath查询中是否存在轴。
轴是本领域公知的。对于每个主节点阵列中的每个上下文节点,通过轴执行可以在简单路径文件中找到对于该轴的可能结果节点。
可以存在如下两组轴。
第一组轴包括:CHILD/ATTRIBUTE/NAMESPACE/SELF/DESCENDANT/DESCENDANT-OR-SELF轴。
这些轴都是本领域公知的。例如,对于简单路径文件中的一个上下文节点,其CHILD轴的结果节点是该节点的孩子节点。
第二组轴包括:FOLLOWING-SIBLING/PRECEDING-SIBLING/FOLLOWING/PRECEDING/ANCESTOR/PARENT/ANCESTOR-OR-SELF轴。
在该步骤中,根据XPath查询来确定轴执行。例如,可以选择一个轴(例如FOLLOWING-SIBLING轴)来进行XPath查询的执行。
然后,检查输入的XPath查询中的名称,以选择与该XPath查询中的名称一致的所述简单路径文件中的节点作为当前主节点。例如,XPath查询中的名称可以包括节点名称或属性名称。例如,确定所述XPath查询中的名称是否与简单路径文件中的节点名称一致。如果确定所述XPath查询中的名称与简单路径文件中的节点名称一致,则进行到步骤S3200。
在步骤S3200,判断当前主节点是否具有谓词。当前主节点指的是当前正被处理(例如,解析处理)的节点。如果当前执行是谓词执行,则当前主节点例如还可以是谓词节点。
如果当前主节点不具有谓词,则进行到步骤S3300。如果当前主节点具有谓词,则返回到步骤S3100,以进行谓词执行,其中重新开始进行轴执行并检查名称。
在步骤S3300,更新执行树。更新执行树的步骤包括:更新主节点和谓词节点。
将在下面更加详细地描述对执行树的更新。
在步骤S3400,根据所输入的XPath查询判断是否还有其它(未完成的)查询步骤。例如,所述查询步骤是所述XPath查询的当前查询步骤,即,当前查询分支(例如,主节点执行或谓词执行分支)中的步骤。
如果还有其它查询步骤,则返回到步骤S3100,重新开始进行轴执行并检查名称。如果没有其它步骤,则进行到步骤S3500。
在步骤S3500,判断当前的执行是否是谓词执行。
如果当前的执行是谓词执行,则进行到步骤S3700。如果当前的执行不是谓词执行,则进行到步骤S3600。
从图6中可以看出,谓词执行实际上与XPath执行是相同的。
在谓词路径中记录谓词节点和主节点之间的位置关系。例如将所述位置关系记录在谓词节点的Position Info域中。
在步骤S3700,产生谓词节点。
在步骤S3800,判断是否还有其它的谓词节点。
如果还有其它的谓词节点,则返回到步骤S3100,重新开始进行轴执行并检查名称。
如果没有其它的谓词节点,则进行到步骤S3300,更新执行树。
在更新执行树的过程中,由于简单路径文件不包含关于XML数据存储库中的XML实例的节点的文档顺序的任何信息。因此,可以添加谓词节点来反映XPath查询中节点的相对顺序信息。例如,当执行诸如FOLLOWING-SIBLING轴、PRECEDING-SIBLING轴、FOLLOWING轴和PRECEDING轴的、涉及文档顺序的某些轴时,这些轴的结果节点可能是简单路径文件中的在前节点或在后节点。同样,为了使得不属于输入查询的结果的那些节点失效,可以将上下文节点作为谓词节点加入到所执行的轴的结果节点中。
注意,假设一个如上所述的上下文节点作为谓词节点被添加到所执行的轴的结果节点中。该谓词节点的相对顺序值在最新产生轴的执行树中应被设置为反值。
例如,当“A/B/FOLLOWING-SIBLING::C”中的FOLLOWING-SIBLING轴被执行时,上下文节点是“/A/B”,结果节点是“/A/C”。因此,在该轴执行的最后步骤中,在最新产生的执行树中,给作为谓词节点的上下文节点“/A/B”添加相对顺序值“PRECEDING-SIBLING”。
当完成输入的XPath查询的一个步骤的执行时,以新产生的主节点PriNode来更新上下文主节点。该上下文主节点的谓词节点的位置信息Position Info(子参数Self Level、子参数PriNode Level、子参数Co-Anc Level和子参数Relative Order)需要更新,以便维持新产生的主节点和谓词节点的正确的相对位置关系。
子参数Self Level不需要更新。
子参数PriNode Level可以容易地被更新到该步骤执行结果,即上下文主节点的层级。
关于子参数Co-Anc Level:对于PARENT/ANCESTOR/ANCESTOR-OR-SELF轴,如果结果节点是原Co-Anc节点的祖先节点,则需要进行更新。
关于子参数Relative Order:对于FOLLOWING-SIBLING/PRECEDING-SIBLING/PRECEDING/PRECEDING轴,需要进行更新。
在步骤S3600,产生主节点的下级节点。
最后,完成执行树的生成。
上面仅仅示例性地描述了一种用于生成执行树的方法,但是,本领域技术人员应当理解,本发明并不限于此。还存在许多其它用于生成执行树的方式。例如,可以采用与上述方法不同的步骤,可以在上述方法中添加某些步骤,或者可以从上述方法中删除某些步骤。这些其它方式也都是在本发明的保护范围之内的。
<用于生成执行树的例子>
下面参照图3和图7来描述一个用于生成执行树的例子。
例如,所生成的简单路径文件的树结构如图3中的“b.简单路径文件的树结构”所示。
例如,所输入的XPath查询是“/文章[@SN=100]/作者[年龄<30]/姓名”。
图7A示出了从根节点开始的第一步。第一步执行是仅具有根节点的执行树。
如图7A所示,PriNodeHead表示执行树的头部。PriNode1表示执行树的主节点。
在第一步中,主节点是根节点。根节点的SPid是0。它的参数PreNodes和SecNodes为“Nil(空)”。
图7B示出了第二步。在第二步中,执行“/文章[@SN=100]”。
如图7B所示,主节点被更新为“文章”。它的SPid等于1。
存在一个谓词节点。该谓词节点是“SN”。它的SPid等于7。它的Position Info参数是“1”、“2”、“1”和“unknown”,这表明:该谓词节点与主节点的共同祖先(即,节点“文章”)处于第一层级,该谓词节点本身处于第二层级,该主节点处于第一层级,以及没有对该谓词节点和主节点之间的相对顺序的限定。它的Expression Info参数是“=”和“100”,这表明:操作符是“=”,以及值是“100”。它的PreNode参数是“Nil”,这表明该谓词节点没有其它谓词节点。
图7C示出了第三步。在第三步中,执行“/文章[@SN=100]/作者[年龄<30]”。
如图7C所示,主节点被更新为“作者”。它的SPid等于2。
存在两个谓词节点。
第一个谓词节点是节点“SN”。它的SPid等于7。它的Position Info参数是“1”、“2”、“2”和“unknown”。它的Expression Info参数是“=”和“100”。它的PreNode参数是“Nil”。
第二个谓词节点是节点“年龄”。它的SPid等于5。它的Position Info参数是“2”、“3”、“2”和“unknown”。它的Expression Info参数是“<”和“30”。它的PreNode参数是“Nil”。
图7D示出了第四步。在第四步中,执行“/文章[@SN=100]/作者[年龄<30]/姓名”。
如图7D所示,主节点被更新为“姓名”。它的SPid等于4。
存在两个谓词节点。
第一个谓词节点是节点“SN”。它的SPid等于7。它的Position Info参数是“1”、“2”、“3”和“unknown”。它的Expression Info参数是“=”和“100”。它的PreNode参数是“Nil”。
第二个谓词节点是节点“年龄”。它的SPid等于5。它的Position Info参数是“2”、“3”、“3”和“unknown”。它的Expression Info参数是“<”和“30”。它的PreNode参数是“Nil”。
后面没有其它步骤,因此,最终得到的执行树如图7D所示。
上面仅仅示例性地描述了用于生成执行树的一个例子。本领域技术人员应当理解,本发明不限于此。
<执行树的执行例子>
下面参照图3、7和9来描述执行树的执行。
例如,如图3所示,数据存储库中包含两个实例“a1.实例1”和“a2.实例2”。简单路径文件的树结构如图3中的“b.简单路径文件的树结构”所示。所生成的执行树如图7D所示。
如图9所示,根据所生成的执行树从数据存储库中检索数据。例如,从数据存储库中检索“SPid=4”的节点集合作为主节点集合,从数据存储库中检索“SPid=7”的节点集合作为谓词节点集合,以及数据存储库中检索“SPid=5”的节点集合作为谓词节点集合。
然后,对所检索到的节点集合进行排序、连接和合并操作,从而得到最终的结果。例如,在图3所示的例子中,最终的结果可以是姓名“约翰”。
另外,可以事先根据简单路径文件中的每个节点以有序的方式将数据存储在数据存储库中。这样,根据执行树从数据存储库中进行检索时,所检索的数据是有序的。因此,可以省略排序步骤。这可以进一步提高本发明的处理效率。
上面仅仅作为例子描述了执行树的执行过程。本领域技术人员应当理解,上面的例子仅仅是示例性的而不应作为对本发明的任何限制。本领域技术人员还能够想到许多其它方式来实现执行树的执行。
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。
Claims (20)
1.一种用于XML数据存储库中的XPath执行的方法,包括:
解析步骤,用于利用简单路径文件来解析输入的XPath查询,以生成关于该XPath查询的执行树,其中所述简单路径文件是基于数据存储库中的多个XML文件的层次结构生成的一个XML文件,其中所生成的一个XML文件中的节点的节点名称是通过记录数据存储库中的多个XML文件中的各个节点的标签信息而生成的;以及
执行步骤,用于对数据存储库执行该执行树,以产生最终执行结果。
2.根据权利要求1所述的方法,其中,所述简单路径文件包括由根节点和子节点形成的树状结构。
3.根据权利要求1-2中的任何一个所述的方法,其中,通过所述数据存储库中增加的XML文件来更新所述简单路径文件。
4.根据权利要求1-2中的任何一个所述的方法,其中,所述执行树包括主节点,所述主节点是在XPath解析过程中对所述XPath查询的每一查询步骤完成时所得到的结果节点。
5.根据权利要求4所述的方法,其中,所述解析步骤还包括:
进行轴执行并检查XPath查询中的名称,以选择与该XPath查询中的名称一致的所述简单路径文件中的节点作为当前主节点;
判断当前主节点是否具有谓词;以及
如果当前主节点不具有谓词,则更新执行树。
6.根据权利要求5所述的方法,其中,所述解析步骤还包括:
如果当前主节点具有谓词,则进行谓词执行。
7.根据权利要求6所述的方法,其中,所述解析步骤是从所述简单路径文件的根节点开始执行的。
8.根据权利要求6所述的方法,其中,更新执行树还包括:添加用于反映XPath查询中节点的相对顺序信息的谓词节点。
9.根据权利要求6所述的方法,其中,更新执行树还包括:更新谓词节点的位置信息。
10.根据权利要求1所述的方法,还包括:根据所述简单路径文件中的每个节点,以有序的方式将数据存储在数据存储库。
11.一种用于XML数据存储库中的XPath执行的系统,包括:
解析器,用于利用简单路径文件来解析输入的XPath查询,以生成关于该XPath查询的执行树,其中所述简单路径文件是基于数据存储库中的多个XML文件的层次结构生成的一个XML文件,其中所生成的一个XML文件中的节点的节点名称是通过记录数据存储库中的多个XML文件中的各个节点的标签信息而生成的;以及
执行器,用于对数据存储库执行该执行树,以产生最终执行结果。
12.根据权利要求11所述的系统,其中,所述简单路径文件包括由根节点和子节点形成的树状结构。
13.根据权利要求11-12中的任何一个所述的系统,其中,根据所述数据存储库中增加的XML文件来更新所述简单路径文件。
14.根据权利要求11-12中的任何一个所述的系统,其中,所述执行树包括主节点,所述主节点是在XPath解析过程中对所述XPath查询的每一查询操作完成时所得到的结果节点。
15.根据权利要求14所述的系统,其中,所述解析器还包括:
用于进行轴执行并检查XPath查询中的名称以选择与该XPath查询中的名称一致的所述简单路径文件中的节点作为当前主节点的装置;
用于判断当前主节点是否具有谓词的装置;以及
用于如果当前主节点不具有谓词则更新执行树的装置。
16.根据权利要求15所述的系统,其中,所述解析器还包括:
用于如果当前主节点具有谓词则进行谓词执行的装置。
17.根据权利要求16所述的系统,其中,所述解析器是从所述简单路径文件的根节点开始执行的。
18.根据权利要求16所述的系统,其中,所述用于更新执行树的装置还包括:用于添加用于反映XPath查询中节点的相对顺序信息的谓词节点的装置。
19.根据权利要求16所述的系统,其中,所述用于更新执行树的装置还包括:用于更新谓词节点的位置信息的装置。
20.根据权利要求11所述的系统,其中,所述数据存储库被配置成根据所述简单路径文件中的每个节点,以有序的方式存储数据。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101791428A CN102033885B (zh) | 2009-09-29 | 2009-09-29 | 用于XML数据存储库中的XPath执行的方法和系统 |
US12/890,961 US9135367B2 (en) | 2009-09-29 | 2010-09-27 | XPath evaluation in an XML repository |
US14/822,033 US9529934B2 (en) | 2009-09-29 | 2015-08-10 | XPath evaluation in an XML repository |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101791428A CN102033885B (zh) | 2009-09-29 | 2009-09-29 | 用于XML数据存储库中的XPath执行的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102033885A true CN102033885A (zh) | 2011-04-27 |
CN102033885B CN102033885B (zh) | 2013-10-02 |
Family
ID=43781457
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101791428A Active CN102033885B (zh) | 2009-09-29 | 2009-09-29 | 用于XML数据存储库中的XPath执行的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9135367B2 (zh) |
CN (1) | CN102033885B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440294A (zh) * | 2013-08-16 | 2013-12-11 | 哈尔滨工业大学(威海) | 一种基于期望列表的网页内容抽取方法 |
CN104504302A (zh) * | 2014-12-02 | 2015-04-08 | 北京诺禾致源生物信息科技有限公司 | Rna测序数据处理的方法和装置 |
CN108874944A (zh) * | 2018-06-04 | 2018-11-23 | 刘洋 | 一种基于xsl语言转换的异构数据映射系统及方法 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033885B (zh) | 2009-09-29 | 2013-10-02 | 国际商业机器公司 | 用于XML数据存储库中的XPath执行的方法和系统 |
US20130060795A1 (en) * | 2011-09-07 | 2013-03-07 | Unisys Corp. | Prepared statements to improve performance in database interfaces |
US11487707B2 (en) * | 2012-04-30 | 2022-11-01 | International Business Machines Corporation | Efficient file path indexing for a content repository |
US8914356B2 (en) | 2012-11-01 | 2014-12-16 | International Business Machines Corporation | Optimized queries for file path indexing in a content repository |
US9323761B2 (en) | 2012-12-07 | 2016-04-26 | International Business Machines Corporation | Optimized query ordering for file path indexing in a content repository |
US9753288B2 (en) | 2014-01-21 | 2017-09-05 | Osterhout Group, Inc. | See-through computer display systems |
US10372694B2 (en) * | 2014-10-08 | 2019-08-06 | Adobe Inc. | Structured information differentiation in naming |
US10187264B1 (en) * | 2017-02-14 | 2019-01-22 | Intuit Inc. | Gateway path variable detection for metric collection |
US10528331B2 (en) * | 2017-04-20 | 2020-01-07 | International Business Machines Corporation | Optimizing a cache of compiled expressions by removing variability |
US10534798B2 (en) * | 2017-06-13 | 2020-01-14 | Oracle International Corporation | Computer system and method to update data aggregation configurations and control data aggregation |
CN111859026B (zh) * | 2020-06-29 | 2022-08-09 | 北京航空航天大学 | 一种基于xml的三坐标测量与评价信息传递方法及系统 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4039484B2 (ja) * | 2002-02-28 | 2008-01-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | XPath評価方法、これを用いたXML文書処理システム及びプログラム |
US7162485B2 (en) * | 2002-06-19 | 2007-01-09 | Georg Gottlob | Efficient processing of XPath queries |
US7120645B2 (en) * | 2002-09-27 | 2006-10-10 | Oracle International Corporation | Techniques for rewriting XML queries directed to relational database constructs |
US7181464B2 (en) * | 2004-02-20 | 2007-02-20 | Microsoft Corporation | Forward-only evaluation for XPATH inverse query processing |
US7493305B2 (en) * | 2004-04-09 | 2009-02-17 | Oracle International Corporation | Efficient queribility and manageability of an XML index with path subsetting |
CN100517318C (zh) * | 2004-04-09 | 2009-07-22 | 甲骨文国际公司 | 用于存取xml数据的索引 |
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 |
US7603347B2 (en) * | 2004-04-09 | 2009-10-13 | Oracle International Corporation | Mechanism for efficiently evaluating operator trees |
US20050257201A1 (en) * | 2004-05-17 | 2005-11-17 | International Business Machines Corporation | Optimization of XPath expressions for evaluation upon streaming XML data |
US8566300B2 (en) * | 2004-07-02 | 2013-10-22 | Oracle International Corporation | Mechanism for efficient maintenance of XML index structures in a database system |
US7512592B2 (en) * | 2004-07-02 | 2009-03-31 | Tarari, Inc. | System and method of XML query processing |
US7685137B2 (en) * | 2004-08-06 | 2010-03-23 | Oracle International Corporation | Technique of using XMLType tree as the type infrastructure for XML |
US7373586B2 (en) * | 2004-09-03 | 2008-05-13 | International Business Machines Corporation | Differencing and merging tree-structured documents |
US7499931B2 (en) * | 2005-05-09 | 2009-03-03 | International Business Machines Corporation | Method and apparatus for approximate projection of XML documents |
US20080059439A1 (en) * | 2006-08-30 | 2008-03-06 | Lucent Technologies Inc. | Query Translation from XPath to SQL in the Presence of Recursive DTDs |
CN100558078C (zh) * | 2006-09-21 | 2009-11-04 | 复旦大学 | Xml流数据的复杂小枝模式查询匹配方法 |
US7747610B2 (en) * | 2006-11-10 | 2010-06-29 | Sybase, Inc. | Database system and methodology for processing path based queries |
FR2909198B1 (fr) * | 2006-11-24 | 2010-11-26 | Canon Kk | Procede et dispositif de filtrage d'elements d'un document structure a partir d'une expression. |
US7668802B2 (en) * | 2007-07-30 | 2010-02-23 | Alcatel Lucent | Method and appliance for XML policy matching |
JP5385919B2 (ja) | 2008-01-15 | 2014-01-08 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データ構造のナビゲーションのための方法、システム、およびコンピュータ・プログラム(データ構造のナビゲーションのための方法およびシステム) |
US8745031B2 (en) * | 2009-05-28 | 2014-06-03 | Oracle International Corporation | Cache-based predicate handling for queries on XML data using uncorrelated path-based row sources |
CN102033885B (zh) | 2009-09-29 | 2013-10-02 | 国际商业机器公司 | 用于XML数据存储库中的XPath执行的方法和系统 |
-
2009
- 2009-09-29 CN CN2009101791428A patent/CN102033885B/zh active Active
-
2010
- 2010-09-27 US US12/890,961 patent/US9135367B2/en not_active Expired - Fee Related
-
2015
- 2015-08-10 US US14/822,033 patent/US9529934B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103440294A (zh) * | 2013-08-16 | 2013-12-11 | 哈尔滨工业大学(威海) | 一种基于期望列表的网页内容抽取方法 |
CN104504302A (zh) * | 2014-12-02 | 2015-04-08 | 北京诺禾致源生物信息科技有限公司 | Rna测序数据处理的方法和装置 |
CN108874944A (zh) * | 2018-06-04 | 2018-11-23 | 刘洋 | 一种基于xsl语言转换的异构数据映射系统及方法 |
CN108874944B (zh) * | 2018-06-04 | 2022-06-03 | 刘洋 | 一种基于xsl语言转换的异构数据映射系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20150347623A1 (en) | 2015-12-03 |
US20110078186A1 (en) | 2011-03-31 |
CN102033885B (zh) | 2013-10-02 |
US9529934B2 (en) | 2016-12-27 |
US9135367B2 (en) | 2015-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102033885B (zh) | 用于XML数据存储库中的XPath执行的方法和系统 | |
Atzeni et al. | Semistructured and structured data in the web: Going back and forth | |
CN102033954B (zh) | 关系数据库中可扩展标记语言文档全文检索查询索引方法 | |
US11599535B2 (en) | Query translation for searching complex structures of objects | |
CN102929878B (zh) | 一种数据库变更管理方法及装置 | |
US8255432B2 (en) | Mechanism for supporting indexed tagged content in a general purpose data store | |
CA3078018A1 (en) | Scalable analysis platform for semi-structured data | |
US20140059064A1 (en) | Using views of subsets of nodes of a schema to generate data transformation jobs to transform input files in first data formats to output files in second data formats | |
US20110302187A1 (en) | Schema definition generating device and schema definition generating method | |
US10242123B2 (en) | Method and system for handling non-presence of elements or attributes in semi-structured data | |
CN102541631B (zh) | 以多线程不同驱动源执行计划处理查询的方法和系统 | |
de la Vega et al. | Mortadelo: Automatic generation of NoSQL stores from platform-independent data models | |
CN101609473A (zh) | 一种重构报表查询的结构化查询语言的方法及装置 | |
CN101620633A (zh) | 用于在xml数据库管理系统中生成索引的方法和系统 | |
Zainol et al. | GN-DTD: Graphical notations for describing XML documents | |
CN102541913A (zh) | 面向Web的VSM分类器训练、OSSP页面识别及OSS资源提取方法 | |
Moro et al. | XML: some papers in a haystack | |
CN110647518B (zh) | 一种数据源融合计算方法、组件及装置 | |
Cavalieri et al. | On the reduction of sequences of XML document and schema update operations | |
US20100036825A1 (en) | Interleaving Query Transformations For XML Indexes | |
Wang et al. | Formalism for detecting version differences in data models | |
Zhang et al. | Automatic extraction rules generation based on xpath pattern learning | |
US11250010B2 (en) | Data access generation providing enhanced search models | |
Solodovnikova et al. | Managing Evolution of Heterogeneous Data Sources of a Data Warehouse. | |
Liu et al. | Storing and querying fuzzy XML data in relational databases |
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 |