CN101965565A - 用于导航数据结构的方法和系统 - Google Patents
用于导航数据结构的方法和系统 Download PDFInfo
- Publication number
- CN101965565A CN101965565A CN2009801022043A CN200980102204A CN101965565A CN 101965565 A CN101965565 A CN 101965565A CN 2009801022043 A CN2009801022043 A CN 2009801022043A CN 200980102204 A CN200980102204 A CN 200980102204A CN 101965565 A CN101965565 A CN 101965565A
- Authority
- CN
- China
- Prior art keywords
- path
- data structure
- expression
- path expression
- pattern
- 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.)
- Pending
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
Abstract
提供了一种用于导航数据结构的方法和系统。所述方法包括接收用于查询数据结构(101)的输入路径表达式(104)以便在运行时定位所述数据结构(101)中的一个或多个元素(110)。所述输入路径表达式(104)包括一个或多个路径步骤。所述方法包括访问所述数据结构(101)的模式(103)并获得与所述一个或多个元素(110)相关的信息。修改所述路径表达式(104)以便在一个或多个所述路径步骤中指定索引以限制位于路径步骤中的元素的出现次数。在一个实施例中,修改所述路径表达式(104)还扩展任何通配符并指定所述元素(110)的一个或多个完整路径,其中如果存在两个或更多个完整路径,则通过合并运算符组合所述路径,并且修改后的路径表达式用于在运行时查询(111)所述数据结构(101)。
Description
技术领域
本发明涉及数据结构导航领域。具体地说,本发明涉及使用路径表达式进行导航以查询数据结构。
背景技术
可以通过使用路径表达式查询数据结构。存在多种允许使用路径语言(例如,XPath(XML路径语言)的某种变型)来存储和查询XML(可扩展标记语言)数据的数据库系统。XPath是查询树数据结构的W3C标准方法。XPath允许根据路径表达式查询XML数据。本文档涉及XPath表达式和查询,但应被解释为包括其他路径语言中的其他形式的路径表达式。路径表达式是指定通过XML文档分层结构的路径的任何表达式。XML文档的由路径表达式标识的部分是在XML文档结构内位于匹配该路径表达式的任何路径的结尾处的部分。
XML文档通常表示为文档对象模型(DOM)结构或树。由于路径查询通过遍历这些结构进行求值,因此查询优化的要求是有效减少所遍历节点的数量。
XML模式(schema)定义精确的XML文档结构格式。此模式可能无法在运行时使用。
考虑无权访问所查询的文档模式(仅可访问已分析的DOM树)的路径运行时引擎。用户可在其中输入自由格式路径表达式的创作工具(即,不通过路径构建器)无权访问此模式。
使用后代(//)路径轴以允许用户在XML文档内按名称查找任何元素而不必指定元素的完整路径将是有利的。但是,对于运行时引擎,后代轴效率非常低,因为它需要遍历整个DOM树以查找此元素的所有出现。
位于戴维斯的加利福尼亚大学分校的计算机科学系的April Kwong和Michael Gertz的“Schema-based Optimization of XPath Expression(基于模式的XPath表达式优化)”披露了使用从模式生成的路径等价类优化XPath表达式。所述优化方法包括在XPath表达式中扩展通配符。
发明内容
根据本发明的第一方面,提供了一种用于导航数据结构的方法,包括:接收用于查询数据结构的输入路径表达式以便在运行时定位所述数据结构中的一个或多个元素,所述输入路径表达式包括一个或多个路径步骤;访问所述数据结构的模式并获得与所述一个或多个元素相关的信息;修改所述输入路径表达式以便在一个或多个所述路径步骤中指定索引以限制位于路径步骤中的元素的出现次数;以及使用修改后的路径表达式在运行时查询所述数据结构。
根据本发明的第二方面,提供了一种用于导航数据结构的系统,包括:用于接收查询数据结构的输入路径表达式以便在运行时定位所述数据结构中的一个或多个元素的装置,所述输入路径表达式包括一个或多个路径步骤;用于访问所述数据结构的模式并获得与所述一个或多个元素相关的信息的装置;用于修改所述输入路径表达式以便在一个或多个所述路径步骤中指定索引以限制位于路径步骤中的元素的出现次数的装置;以及用于输出修改后的路径表达式以用于在运行时查询所述数据结构的装置。
根据本发明的第三方面,提供了一种存储在计算机可读存储介质上的计算机程序产品,所述计算机程序产品包括用于执行以下步骤的计算机可读程序代码装置:接收用于查询数据结构的输入路径表达式以便在运行时定位所述数据结构中的一个或多个元素,所述输入路径表达式包括一个或多个路径步骤;访问所述数据结构的模式并获得与所述一个或多个元素相关的信息;修改所述输入路径表达式以便在一个或多个所述路径步骤中指定索引以限制位于路径步骤中的元素的出现次数;以及使用修改后的路径表达式在运行时查询所述数据结构。
优选地提供了一种解决方案,该解决方案通过提供一种基于路径的查询方法以从XML文档检索数据而无需对基表进行完整扫描和构造昂贵的存储器数据结构,改进了基于路径的查询的处理时间。优选地提供了一种解决方案,该解决方案获得并使用与查询中的元素的重复相关的信息。
所述方法和系统使能查询具有基础模型的数据结构,其中所述数据结构内的元素可以重复,并且其中可以通过了解是否存在重复以及重复程度来优化数据结构的导航。
本发明优选地采用原始路径表达式,并使用模式将此表达式转换为可由运行时引擎更有效地处理的格式。模式包含跟踪任何元素直到返回文档根所需的信息,并且因此可以生成到此元素的完整路径。这优选地允许所述运行时引擎直接导航到此元素而不是“搜索”此元素。
附图说明
现在将仅通过实例的方式参考附图描述本发明的实施例,这些附图是:
图1A和1B是根据本发明的一个实施例的系统的示意图;
图2是其中可以实现本发明的一个实施例的计算机系统的方块图;
图3是根据本发明的一个实施例的文档结构的示意图;
图4是根据本发明的一个实施例的总体过程的流程图;以及
图5是根据本发明的一个实施例的实例过程的流程图。
具体实施方式
参考图1A,示意图示出了系统100,其中运行时引擎102查询数据结构101以定位数据结构101中的一个或多个元素110。
数据结构101可以是例如表示为文档对象模型(DOM)树的XML文档。在另一个实例中,数据结构101是被分析为类似树数据结构的非XML数据。在一个实施例中,数据结构101是由消息代理查询的消息。数据结构101具有关联的模式103。
路径表达式104作为查询111被输入到运行时引擎102,运行时引擎102在数据结构101中搜索路径表达式104的出现以定位一个或多个元素110。
使用工具包(toolkit)105构建查询111,然后将查询111部署到运行时引擎102。在所述系统100中,工具包105访问模式103以修改路径表达式104。
使用来自所查询的数据结构101的模式103的信息,修改路径表达式104以包括所查询的元素110的完整路径和其他信息。这有助于跟踪元素110而不是搜索元素110,并且因此提高了运行时引擎102的效率。此外,如果模式103指示所查询的元素110的出现次数,则运行时引擎102可以在发现此特定元素110的特定出现次数之后停止。
参考图1B,示出了在其中输入路径表达式104的工具包105的详细图。参考所述模式以获得模式信息120。修改器121使用模式信息120修改路径表达式104以提供查询输出122。运行时引擎使用查询输出122查询数据结构。例如,可以使用所述模式确定所查询的元素的出现,然后修改器121使用此信息向查询输出122添加谓词(predieate)。
参考图2,用于实现工具包105的示例性系统包括适于存储和/或执行程序代码的数据处理系统200,数据处理系统200包括至少一个直接或通过系统总线203间接连接到存储器元件的处理器201。所述存储器元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
所述存储器元件可以包括只读存储器(ROM)204和随机存取存储器(RAM)205形式的系统存储器202。基本输入/输出系统(BIOS)206可以存储在ROM 204中。包括操作系统软件208在内的系统软件207可以存储在RAM 205中。软件应用210也可以存储在RAM 205中。
系统200还可以包括诸如硬磁盘驱动器之类的主存储装置211以及诸如磁盘驱动器和光盘驱动器之类的辅助存储装置212。所述驱动器及其关联的计算机可读介质为系统200提供计算机可执行指令、数据结构、程序模块以及其他数据的非易失性存储。软件应用可以存储在主和辅助存储装置211、212上以及系统存储器202上。
计算系统200可以通过网络适配器216在使用到一个或多个远程计算机的逻辑连接的联网环境中运行。
输入/输出设备213可以直接或通过中间I/O控制器连接到所述系统。用户可以通过诸如键盘、指点设备之类的输入设备或其他输入设备(例如麦克风、游戏杆、游戏手柄、碟形卫星天线、扫描仪等)将命令和信息输入系统200。输出设备可以包括扬声器、打印机等。显示设备214也通过诸如视频适配器215之类的接口连接到系统总线203。
路径语言基于数据结构(例如XML文档)的树表示,并提供导航整个树的能力,从而根据各种准则选择节点。路径表达式被编写为一系列步骤,以便从一个节点(当前“上下文节点”)到达另一个节点或一组节点。所述步骤由“/”(即,路径)字符分隔。每个步骤具有三个组成部分:轴指定符(axis specifier)、节点测试和谓词。
最简单的路径采用如下格式:
/A/B/C
此路径将选择作为B元素的子代的C元素,而B元素是构成所述数据结构的最外层元素的A元素的子代。
可以通过指定默认“子代”轴之外的轴、简单名称之外的节点测试或谓词来构造更复杂的表达式,其中可以在任何步骤之后的方括号中编写谓词,例如,表达式
A//B*[1]
将选择名称为任何内容(“*”)的第一元素(“[1]”),此第一元素是B元素的子代(“/”),B元素本身是A元素的子代或其他更深的后代(“//”),而A元素是当前上下文节点的子代(此表达式未以“/”开头)。如果文档中存在若干适合的B元素,则此表达式将返回其全部第一子代的集合。所述轴指定符指示数据结构的树表示内的导航方向。
具有任何复杂性的表达式都可以在方括号中被指定为谓词,在通过路径表达式匹配在先节点之前必须满足这些谓词。步骤中谓词的数量没有限制,并且谓词不需要被限定到路径中的最后一个步骤。它们可以嵌套到任何深度。在谓词中指定的路径始于当前步骤(即前一节点测试的步骤)的上下文,并且不改变此上下文。必须满足所有谓词才能发生匹配。谓词顺序很重要,并且每个谓词将依次过滤位置步骤的选定节点集。
XML模式是XML文档类型的描述,除了由XML本身施加的基本语法约束以外,通常以对此类型文档的结构和内容的约束来表示。XML模式在相对较高的抽象级别提供文档类型的视图。还可以针对非XML数据结构使用模式。例如,使用XML Schema建立文档结构模型,然后使用XSD(XML模式定义)注释描述每个元素的物理格式。
存在专门开发以表示XML模式的语言。文档类型定义(DTD)语言(其是XML规范固有的)是一种具有相对受限的能力,但除了模式表示之外还在XML中具有其他使用的模式语言。两种其他非常普遍、更具表达力的XML模式语言是XML Schema(W3C)和RELAX NG(REgular LAnguage for XML Next Generation,用于XML下一代的正则语言)。将XML文档与模式关联的机制根据模式语言而有所不同。可以通过XML文档本身内的标记或通过某种外部手段实现关联。
在所描述的系统中,路径表达式可以通过如下三种可能的方式修改:
1.通配符“*”或后代轴“//”的简单扩展,如果模式仅建议一种可能的解决方案;
2.将通配符“*”或后代轴“//”扩展成包含多个以路径合并运算符“|”组合的路径的表达式,如果模式建议多种可能的解决方案;以及
3.插入索引([1]),如果模式建议元素可以仅出现一次。类似地,插入[position()<=n],如果模式建议元素可以出现n次,其中n>1。
为了进行说明,使用以下XML文档提供一个工作实例:
<?xml version=″1.0″encoding=″UTF-8″?>
<document>
<topic>
<list>
<item>...</item>
<item>...</item>
<item>...</item>
</list>
</topic>
<index>
<item>...</item>
<item>...</item>
</index>
</document>
可以通过以下XML Schema(XSD)为此文档建模:
<?xml version=″1.0″encoding=″UTF-8″?>
<xsd:schema xmlns:xsd=″http://www.w3.org/2001/XMLSchema″>
<xsd:element name=″document″>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=″topic″/>
<xsd:element ref=″index″/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name=″topic″>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=″list″/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name=″list″>
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs=″0″maxOccurs=″unbounded″ref=″item″/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name=″item″>
<xsd:complexType/>
</xsd:element>
<xsd:element name=″index″>
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs=″0″maxOccurs=″unbounded″ref=″item″/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
此模式描述了XML文档的允许结构,其中包括每个元素的最小和最大出现次数。此模式表示图3中示出的文档结构(模式树)300。
图3中示出的文档结构300包括来自根节点311“document”的两个分支310、320。第一分支310包括根节点311的子节点312“topic”,子节点312包含可以具有子节点314“item”的子节点313“list”。第二分支320包括根节点311的子节点322“index”,子节点322可以具有子节点323“item”。节点314、323“item”可以具有零次或更多次出现。其他节点311、312、313、322只能具有一次出现。
参考图4,流程图400示出了用于导航数据结构的总体过程。输入(401)路径表达式以便定位数据结构中的一个或多个元素。访问(402)数据结构的模式并获得与路径表达式的元素相关的信息。从模式参考元素的最大出现次数(403),并向路径表达式附加谓词(如果需要限制出现次数)。获得(404)一个或多个完整路径表达式并且如果存在两个或更多个表达式,则将它们进行组合。
根据所获得的与元素相关的信息修改路径表达式。将修改后的路径表达式输出(405)到运行时引擎以便定位数据结构中的一个或多个元素。
在工作实例中,给定XPath表达式“//item”,按照图5的流程图中所示执行以下步骤以便扩展后代轴“//”并添加“仅选择第一个”谓词“[1]”:
1.删除(501)“/”字符之一以创建初始的优化表达式“/item”。
2.以“深度优先”方式遍历(502)模式树,搜索名为“item”的元素。
3.判断(503)是否找到元素,如果找到,则继续,否则过程结束(504)。
4.判断(505)它是否为找到的第一个元素。如果是,则继续,否则,向先前表达式附加(506)合并运算符。
5.当找到“item”元素时,在模式中查找(507)“maxOccurs”属性。判断(508)它是否为“1”(如果此属性不存在,则“1”是默认值),如果是,则向元素名称附加(509)谓词“[1]”。如果它大于“1”或为“unbounded”,则不附加(510)谓词。
6.转到模式树中的当前元素的父代(511)。
7.判断(512)父代是否为根节点。如果是,则循环到步骤502以搜索另一个“item”。
8.如果父代不是根节点,则从模式提取名称(513)并将其插入先前步骤的前面(以“/”分隔符分隔)。
9.循环回到步骤507以便根据需要向元素名称附加谓词并转到下一个父代。继续直到到达“root”元素。
10.如果找到另一个“item”元素,则为树的此分支创建另一个优化的路径表达式。将此表达式附加(506)到先前表达式(以“|”合并运算符分隔)。继续遍历直到模式树中不再出现“item”。
下面示出了当执行上述步骤时,优化表达式的逐渐建立(原始表达式为“//item”,每个步骤中的更改以下划线示出):
·/item
·/list/item
·/list[1]/item
·/topic/list[1]/item
·/topic[1]/list[1]/item
·/document/topic[1]/list[1]/item
·/document[1]/topic[1]/list[1]/item
·/document[1]/topic[1]/list[1]/item|/item
·/document[1]/topic[1]/list[1]/item|/index/item
·/document[1]/topic[1]/list[1]/item|/index[1]/item
·/document[1]/topic[1]/list[1]/item|/document/index[1]/item
·/document[1]/topie[1]/list[1]/item|/document[1]/index[1]/item
在更通常的情况中,总体原则是逐步通过XPath表达式,每次一个元素步骤,并使用元素名称替换任何通配符“*”,使用完全限定路径替换任何后代轴“//”。如果多个元素匹配通配符,则依次考虑每个元素。后续步骤可能显示特定匹配无法导向有效路径,在此情况下放弃此匹配。如果具有多个匹配,则将组合每个表达式,以XPath合并运算符“|”分隔。
考虑表达式“*/topic//item”:
1.将“模式光标”设置为模式树的根,将“XPath光标”设置为原始XPath表达式的第一步骤。
2.从模式光标位置,以深度优先遍历模式树。
3.如果模式树中的光标元素匹配XPath步骤(通配符匹配任何元素),则
a.向优化后的XPath表达式附加元素名称(在通配符的情况下来自模式树)。
b.在模式中查找“maxOccurs”属性。如果它是“1”(如果此属性不存在,则“1”是默认值),则向元素名称附加谓词“[1]”。如果它大于“1”或为“unbounded”,则不附加谓词。
c.如果XPath光标在原始XPath表达式中的最后一个步骤处,则停止递归,将在此阶段构建的新表达式添加到一系列部分(list of parts)并继续从阶段2遍历。
d.将XPath光标移动到原始XPath表达式中的下一个步骤。如果下一个步骤以后代轴“//”分隔,则
i.使用先前描述的算法扩展此步骤(在此,在扩展算法中将“root”元素定义为“//”前面的元素)。
ii.如果扩展导致多个以合并运算符“|”分隔的路径,则优化后的表达式到目前为止需要复制并附加到每个部分的开头。必须针对此算法的其余部分单独处理每个部分。(例如,在扩展之前“/document//item”将产生“/document[1]//item”。从此光标位置扩展“//item”将产生“/topic[1]/list[1]/item|/index[1]/item”。在此步骤之后,两个部分将是/document[1]/topic[1]/list[1]/item和/document[1]/index[1]/item,每个部分将被单独处理。)
e.针对模式光标的每个子代,依次将模式光标设置为子代。递归回到阶段3。(此阶段的每个子代将表示优化后的表达式中的单独部分,大多数部分可能是死端并被放弃。使用合并运算符“|”组合算法结尾处的所有其余部分。)
否则
a.放弃自算法在阶段2以来构建的路径的此部分。将模式光标和XPath光标重置到它们先前在阶段2时的位置。继续从阶段2遍历。
4.组合以合并运算符“|”分隔的系列部分以产生最终表达式。
下面示出了当执行上述步骤时,优化表达式的逐渐建立(原始表达式为“*/topic//item”,每个步骤中的更改以下划线示出):
●document
●document[1]
●document[1]/topic
●document[1]/topic[1]
○/item
○/list/item
○/list[1]/item
●document[1]/topic[1]/list[1]/item
当输入诸如“//item”之类的表达式时,必须遍历整个数据结构以查找此表达式的所有出现。但是,此表达式可以被转换为这样的形式:通过指定参考模式所获得的完整路径表达式“/document/topic/list/item”而允许运行时引擎直接导航到‘item(项目)’。
如果模式指定item不重复,则可以在每个路径步骤上放置一个显式索引以告知运行时引擎在找到第一个匹配(例如“/document[1]/topic[1]/list[1]/item”)时可以停止搜索。注意,“item”是重复元素,但是其祖先元素不是重复元素。
如果命名元素“item”出现在数据结构的不同部分中,则可以使用合并运算符“|”将它们进行组合。例如,“/document[1]/topic[1]/list[1]/item|/document[1]/index[1]/item”。对于给定模式,此最后一个表达式与原始“//item”等价,但采用可由不能访问此模式的运行时引擎更有效处理的形式。
对于模式,可以指定元素出现给定次数,例如两次。XPath步骤“/element[2]”将返回第二个元素而不是前两个元素。为了获得正确的结果,应附加[position()<=2]。在常规系统中,用户指定“aaa/bbb”以指示他们希望运行时引擎导航树并返回所有匹配的元素。有时,可能仅返回一个元素,但是尽管如此,Xpath分析器通常必须分析整个树,并且因此进行大量不必要的处理。用户可能仅需要特定数量的元素,例如第一个元素,并且可以在查询中添加谓词以指示这一点,例如“aaa/bbb[1]”。先前,分析器仍将返回整个列表,此后,会将集合缩小为向用户返回所需的数量。
在所描述的系统中,工具包访问用于确定所查询的元素的出现次数的数据结构模式。然后,使用此信息向每个查询添加谓词。因此,如果确定仅存在两个“aaa/bbb”元素并且用户查询所有此类元素,则可以修改查询以指示分析器应仅查找前两个元素,然后停止分析。
所描述的方法和系统可以应用于包括运行时引擎(采用查询消息的消息代理的形式)的ESB(企业服务总线)和XML处理产品。
所述方法还可以作为服务通过网络提供给客户端,以便改进用作查询的修改后的路径表达式。
本发明可以采取完全硬件实施例、完全软件实施例或包含硬件和软件元素两者的实施例的形式。在一个优选实施例中,本发明以软件实现,所述软件包括但不限于固件、驻留软件、微码等。
本发明可以采取可从计算机可用或计算机可读介质访问的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的程序代码。出于此描述的目的,计算机可用或计算机可读介质可以是任何能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与所述指令执行系统、装置或设备结合的程序的装置。
所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁带、可移动计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。光盘的当前实例包括光盘只读存储器(CD-ROM)、光盘读/写(CD-R/W)和DVD。
可以在不偏离本发明的范围的情况下对上述内容进行改进和修改。
Claims (19)
1.一种用于导航数据结构(101)的方法,包括:
接收用于查询数据结构(101)的输入路径表达式(104)以便在运行时定位所述数据结构(101)中的一个或多个元素(110),所述输入路径表达式(104)包括一个或多个路径步骤;
访问所述数据结构(101)的模式(103)并获得与所述一个或多个元素(110)相关的信息;
修改所述输入路径表达式(104)以便在一个或多个所述路径步骤中指定索引以限制位于路径步骤中的元素的出现次数;以及
使用修改后的路径表达式在运行时查询(111)所述数据结构(101)。
2.如权利要求1中所述的方法,其中所述输入路径表达式(104)包括通配符或后代轴中的一个或多个。
3.如权利要求1或2中所述的方法,其中修改所述输入路径表达式(104)的步骤指定所述元素(110)的一个或多个完整路径,其中通过合并运算符组合两个或更多个完整路径。
4.如权利要求1至3中的任一权利要求中所述的方法,其中在一个或多个所述路径步骤中指定索引的步骤将所述索引的谓词附加到路径元素名称。
5.如上述权利要求中的任一权利要求中所述的方法,其中获得信息的步骤包括:查找属性在所述模式(103)中的最大出现次数,并且如果所述属性不存在或所述最大出现次数为1,则将谓词“1”附加到路径元素名称。
6.如上述权利要求中的任一权利要求中所述的方法,其中所述模式(103)包含用于跟踪所述数据结构(101)的元素(110)直到到达其根的信息。
7.如上述权利要求中的任一权利要求中所述的方法,其中所述输入路径表达式(104)是XPath表达式,并且所述数据结构(101)是具有关联模式(103)的文档对象模型结构。
8.一种用于导航数据结构(101)的系统,包括:
用于接收查询数据结构(101)的输入路径表达式(104)以便在运行时定位所述数据结构(101)中的一个或多个元素(110)的装置,其中所述输入路径表达式(104)包括一个或多个路径步骤;
用于访问所述数据结构(101)的模式(103)并获得与所述一个或多个元素(110)相关的信息的装置;
用于修改所述输入路径表达式(104)以便在一个或多个所述路径步骤中指定索引以限制位于路径步骤中的元素的出现次数的装置;以及
用于输出修改后的路径表达式以用于在运行时查询(111)所述数据结构(101)的装置。
9.如权利要求8中所述的系统,其中所述输入路径表达式(104)包括通配符或后代轴中的一个或多个。
10.如权利要求8或9中所述的系统,其中用于修改所述输入路径表达式(104)的装置指定元素(110)的一个或多个完整路径,其中通过合并运算符组合两个或更多个完整路径。
11.如权利要求8至10中的任一权利要求中所述的系统,其中在一个或多个所述路径步骤中指定索引将所述索引的谓词附加到路径元素名称。
12.如权利要求8至11中的任一权利要求中所述的系统,包括用于查找属性在所述模式(103)中的最大出现次数,并且如果所述属性不存在或所述最大出现次数为1,则将谓词“1”附加到路径元素名称的装置。
13.如权利要求8至12中的任一权利要求中所述的系统,其中所述模式(103)包含用于跟踪所述数据结构(101)的元素(110)直到到达其根的信息。
14.如权利要求8至13中的任一权利要求中所述的系统,其中所述输入路径表达式(104)是XPath表达式,并且所述数据结构(101)是具有关联模式(103)的文档对象模型结构。
15.如权利要求8至14中的任一权利要求中所述的系统,其中所述系统是用于构建要在运行时部署的查询的工具包(105)。
16.如权利要求8至15中的任一权利要求中所述的系统,包括不能访问所述模式(103)的运行时引擎(102),其中所述运行时引擎(102)使用修改后的路径表达式定位数据结构(101)中的一个或多个元素(110)。
17.如权利要求16中所述的系统,其中所述运行时引擎(102)是消息代理,并且所述数据结构(101)是消息。
18.一种存储在计算机可读存储介质上的计算机程序产品,所述计算机程序产品包括用于执行以下步骤的计算机可读程序代码装置:
接收用于查询数据结构(101)的输入路径表达式(104)以便在运行时定位所述数据结构(101)中的一个或多个元素(110),所述输入路径表达式(104)包括一个或多个路径步骤;
访问所述数据结构(101)的模式(103)并获得与所述一个或多个元素(110)相关的信息;
修改所述输入路径表达式(104)以便在一个或多个所述路径步骤中指定索引以限制位于路径步骤中的元素的出现次数;以及
使用修改后的路径表达式在运行时查询(111)所述数据结构(101)。
19.一种包括程序代码装置的计算机程序,当所述程序在计算机上运行时,所述程序代码装置适于执行权利要求1至7中的任一权利要求中所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP08150284 | 2008-01-15 | ||
EP08150284.1 | 2008-01-15 | ||
PCT/EP2009/050120 WO2009090130A1 (en) | 2008-01-15 | 2009-01-07 | Method and system for navigation of a data structure |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101965565A true CN101965565A (zh) | 2011-02-02 |
Family
ID=40494930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801022043A Pending CN101965565A (zh) | 2008-01-15 | 2009-01-07 | 用于导航数据结构的方法和系统 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8171040B2 (zh) |
EP (1) | EP2240875A1 (zh) |
JP (1) | JP5385919B2 (zh) |
KR (1) | KR101221306B1 (zh) |
CN (1) | CN101965565A (zh) |
WO (1) | WO2009090130A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110178148A (zh) * | 2017-01-18 | 2019-08-27 | 微软技术许可有限责任公司 | 物理实体的计算机辅助跟踪 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033885B (zh) | 2009-09-29 | 2013-10-02 | 国际商业机器公司 | 用于XML数据存储库中的XPath执行的方法和系统 |
US8983990B2 (en) | 2010-08-17 | 2015-03-17 | International Business Machines Corporation | Enforcing query policies over resource description framework data |
US8566702B2 (en) * | 2010-09-20 | 2013-10-22 | Blackberry Limited | Methods and systems of outputting content of interest |
US20120072824A1 (en) * | 2010-09-20 | 2012-03-22 | Research In Motion Limited | Content acquisition documents, methods, and systems |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055355A1 (en) * | 2003-09-05 | 2005-03-10 | Oracle International Corporation | Method and mechanism for efficient storage and query of XML documents based on paths |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3492247B2 (ja) * | 1999-07-16 | 2004-02-03 | 富士通株式会社 | Xmlデータ検索システム |
US20030097345A1 (en) * | 2001-10-18 | 2003-05-22 | Mitch Upton | System and method for invoking business functionality for a workflow |
US7426522B2 (en) * | 2003-09-23 | 2008-09-16 | International Business Machines Corporation | Object oriented query path expression to relational outer join translator method, system, article of manufacture, and computer program product |
JP2007310617A (ja) * | 2006-05-18 | 2007-11-29 | Nec Corp | 構造化文書処理システム、構造化文書処理方法およびプログラム |
US20080059439A1 (en) | 2006-08-30 | 2008-03-06 | Lucent Technologies Inc. | Query Translation from XPath to SQL in the Presence of Recursive DTDs |
-
2009
- 2009-01-07 JP JP2010541777A patent/JP5385919B2/ja not_active Expired - Fee Related
- 2009-01-07 CN CN2009801022043A patent/CN101965565A/zh active Pending
- 2009-01-07 KR KR1020107014912A patent/KR101221306B1/ko not_active IP Right Cessation
- 2009-01-07 WO PCT/EP2009/050120 patent/WO2009090130A1/en active Application Filing
- 2009-01-07 EP EP09701506A patent/EP2240875A1/en not_active Withdrawn
- 2009-01-14 US US12/353,901 patent/US8171040B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050055355A1 (en) * | 2003-09-05 | 2005-03-10 | Oracle International Corporation | Method and mechanism for efficient storage and query of XML documents based on paths |
Non-Patent Citations (2)
Title |
---|
JEOW LI FOOK: "Integrity Constraints and XML:Semantic XPath Query Transformation", 《HONOURS YEAR PROJECT REPORT》 * |
何芳: "基于模式的XML查询重写及索引技术研究", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110178148A (zh) * | 2017-01-18 | 2019-08-27 | 微软技术许可有限责任公司 | 物理实体的计算机辅助跟踪 |
Also Published As
Publication number | Publication date |
---|---|
EP2240875A1 (en) | 2010-10-20 |
KR20100107463A (ko) | 2010-10-05 |
WO2009090130A1 (en) | 2009-07-23 |
KR101221306B1 (ko) | 2013-01-11 |
US8171040B2 (en) | 2012-05-01 |
US20090182722A1 (en) | 2009-07-16 |
JP2011510372A (ja) | 2011-03-31 |
JP5385919B2 (ja) | 2014-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4576477B2 (ja) | データベーススキーマからのウェブフォームの自動生成方法 | |
US7197510B2 (en) | Method, system and program for generating structure pattern candidates | |
US7627589B2 (en) | High performance XML storage retrieval system and method | |
US8868620B2 (en) | Techniques for composing data queries | |
US8346813B2 (en) | Using node identifiers in materialized XML views and indexes to directly navigate to and within XML fragments | |
US20070208769A1 (en) | System and method for generating an XPath expression | |
US20040044659A1 (en) | Apparatus and method for searching and retrieving structured, semi-structured and unstructured content | |
US8566343B2 (en) | Searching backward to speed up query | |
US20060167869A1 (en) | Multi-path simultaneous Xpath evaluation over data streams | |
Milosavljević et al. | Retrieval of bibliographic records using Apache Lucene | |
JPH07319917A (ja) | 文書データべース管理装置および文書データべースシステム | |
CN101965565A (zh) | 用于导航数据结构的方法和系统 | |
Schindler et al. | Generic XML-based framework for metadata portals | |
KR20010094955A (ko) | 개인용 전자문서를 생성하는 방법, 시스템 및 컴퓨터프로그램 제조물 | |
US20060036657A1 (en) | Full-text search integration in XML database | |
Hughes et al. | A metadata search engine for digital language archives | |
US9424365B2 (en) | XPath-based creation of relational indexes and constraints over XML data stored in relational tables | |
US7805424B2 (en) | Querying nested documents embedded in compound XML documents | |
JP2007193642A (ja) | XPath処理装置、XPath処理方法、XPath処理プログラム、および、記憶媒体 | |
JP2004348485A (ja) | 構造化文書処理方法及び装置及び構造化文書処理プログラム及び構造化文書処理プログラムを格納した記憶媒体 | |
Abbaci et al. | Index and Search XML Documents by Combining Content and Structure. | |
EP1626357A2 (en) | Extension of xquery in a high performance xml/xquery database | |
JP5225022B2 (ja) | Xmlデータ検索方法及び装置及びプログラム | |
Kiemle et al. | Providing context-sensitive access to the earth observation product library | |
Campbell et al. | Quilt2Sql-An ML Storage Schema and Query Engine for the Quilt Query Language |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110202 |