《结构化文档管理装置、方法以及程序.pdf》由会员分享,可在线阅读,更多相关《结构化文档管理装置、方法以及程序.pdf(37页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103827860 A (43)申请公布日 2014.05.28 CN 103827860 A (21)申请号 201280002749.9 (22)申请日 2012.09.20 G06F 17/30(2006.01) (71)申请人 株式会社东芝 地址 日本东京都 申请人 东芝解决方案株式会社 (72)发明人 黑田洋介 服部雅一 (74)专利代理机构 永新专利商标代理有限公司 72002 代理人 王成坤 胡建新 (54) 发明名称 结构化文档管理装置、 方法以及程序 (57) 摘要 本发明实施方式的结构化文档管理装置对所 输入的查询中所含的层次条件和与以层次条件指 。
2、定的结构化文档的要素相对的谓语条件进行解 析, 提取保存各要素的变量中的制约条件和变量 间的依存关系。 通过本方法提取制约条件时, 以缓 和为不仅包含原来成为对象的要素也包含成为对 象的要素以外的要素的形式, 取得与结构有关的 制约条件。以能够尽可能早期地应用缓和了的制 约条件的方式移动了谓语后, 插入对缓和了的条 件进行补充的谓语条件。 (85)PCT国际申请进入国家阶段日 2013.03.06 (86)PCT国际申请的申请数据 PCT/JP2012/074011 2012.09.20 (87)PCT国际申请的公布数据 WO2014/045362 JA 2014.03.27 (51)Int.。
3、Cl. 权利要求书 2 页 说明书 21 页 附图 13 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书21页 附图13页 (10)申请公布号 CN 103827860 A CN 103827860 A 1/2 页 2 1. 一种结构化文档管理装置, 包括 : 结构化文档受理部, 受理具有层次化后的逻辑结构的结构化文档的输入 ; 结构化文档存储部, 存储所输入的所述结构化文档数据 ; 查询数据受理部, 受理查询数据的输入 ; 句子结构解析部, 解析所输入的查询数据的句子结构, 取得句子结构解析树, 该句子结 构解析树是以成为定义成各变量仅被代入一次的静态。
4、单赋值的方式所分解的句子结构解 析树 ; 制约条件取得部, 从由所述句子结构解析部获得的句子结构解析树, 取得制约条件, 该 制约条件包含各句子结构解析树的变量需要满足的层次条件及变量的值的条件 ; 句子结构解析树改写部, 基于由所述制约条件取得部获得的制约条件, 将所述查询数 据改写为通过所述制约条件能够对作为对象的所述结构化文档进行筛选的形态 ; 以及 查询执行部, 将由所述句子结构解析树改写部改写过的所述查询数据作为输入, 输出 检索结果。 2. 如权利要求 1 所述的结构化文档管理装置, 所述制约条件取得部对所述制约条件追加所述变量需要满足的层次条件和由同一要 素名规定的其他的层次条件。
5、, 所述句子结构解析树改写部, 基于追加过的所述制约条件改写所述查询数据时, 对于 所述制约条件, 附加能够求出与追加其他层次条件之前的制约条件相同的结果的其他条 件。 3. 如权利要求 1 所述的结构化文档管理装置, 所述句子结构解析树改写部使基于由所述制约条件取得部获得的所述制约条件的改 写结果为与原来的查询数据相同的语法格式。 4. 一种结构化文档管理方法, 受理具有层次化后的逻辑结构的结构化文档的输入, 存储所输入的所述结构化文档数据, 受理查询数据的输入, 解析所输入的查询数据的句子结构, 取得句子结构解析树, 该句子结构解析树是以成 为定义成各变量仅被代入一次的静态单赋值的方式所分。
6、解的句子结构解析树, 从所述句子结构解析树, 取得制约条件, 该制约条件包含各句子结构解析树的变量需 要满足的层次条件及变量的值的条件, 基于所述制约条件, 将所述查询数据改写为通过所述制约条件能够对作为对象的所述 结构化文档进行筛选的形态, 将所述改写过的所述查询数据作为输入, 输出检索结果。 5. 一种结构化文档管理程序, 用于使计算机执行以下各部 : 结构化文档受理部, 受理具有层次化后的逻辑结构的结构化文档的输入 ; 结构化文档存储部, 存储所输入的所述结构化文档数据 ; 查询数据受理部, 受理查询数据的输入 ; 句子结构解析部, 解析所输入的查询数据的句子结构, 取得句子结构解析树,。
7、 该句子结 构解析树以成为定义成各变量仅被代入一次的静态单赋值的方式所分解的句子结构解析 权 利 要 求 书 CN 103827860 A 2 2/2 页 3 树 ; 制约条件取得部, 从由所述句子结构解析部获得的句子结构解析树, 取得制约条件, 该 制约条件包含各句子结构解析树的变量需要满足的层次条件及变量的值的条件 ; 句子结构解析树改写部, 基于由所述制约条件取得部获得的制约条件, 将所述查询数 据改写为通过所述制约条件能够对作为对象的所述结构化文档进行筛选的形态 ; 以及 查询执行部, 将由所述句子结构解析树改写部改写过的所述查询数据作为输入, 输出 检索结果。 权 利 要 求 书 C。
8、N 103827860 A 3 1/21 页 4 结构化文档管理装置、 方法以及程序 技术领域 0001 本发明的实施方式涉及结构化文档管理装置、 方法以及程序。 背景技术 0002 以往, 已知用于对以XML (Extensible Markup Language : 可扩展标记语言) 等记述 的结构化文档数据进行存储、 检索的结构化文档管理装置。为了进行结构化文档管理装置 中的结构化文档数据的检索, 制定了如 RDBMS (Relational Database Management System : 关系型数据库管理系统) 中的查询语言 SQL 那样的、 与 XML 数据相对的查询语言 。
9、X Query (XML Query Language) , 并且在多数结构化文档管理装置受到支持。 0003 X Query 是用于如数据库那样处理 XML 数据集合的语言, 提供用于进行符合条件 的数据集合的取出、 汇总、 分析的手段。 XML数据具有亲子、 兄弟等的要素组合后的层次化的 逻辑结构 (层次结构) , 因此能够在条件中指定与该层次结构有关的条件 (结构条件) 。 0004 对 XML 是否满足指定的结构条件进行检索的技术由代表性的 XML 数据的 parse 处 理即 SAX(Simple API for XML) 等来提供。但是, 在 SAX 中, 对于成为检索对象的结构化。
10、 文档 (在此, 为XML) , 仅能从上位层次向下位层次访问。 为此, 有在下位层次指定的筛选条件 时, 只要未搜索到下位层次就不能应用筛选条件。 为此, 需要从最上位向下位层次对整个结 构化文档进行搜索, 直到有筛选条件为止。 0005 为了使结构化文档管理装置中的检索处理变得高速, 希望尽可能早期地应用筛选 条件, 并希望削减在检索中生成的中间数据。 为此, 也存在仅对于用索引处理筛选出的结构 化文档集合检索结构条件的技术。但是, 该技术对于查询由多个子查询构成的嵌套查询并 不应对。 0006 此外, 在嵌套查询中, 如跨过子查询来早期应用筛选条件那样地进行了各种各样 的尝试。例如, 存。
11、在以下技术 : 在关系数据库模型中, 以图形的形式定义构成查询的子查询 间的关系, 定义能够在图形间移动谓语的条件, 如果是可能的情况, 则将谓语移动到其他子 查询从而谋求最优化。 0007 现有技术文献 0008 专利文献 0009 专利文献 1 : 日本特开 2007-226452 号公报 0010 专利文献 2 : 日本特开 2010-79646 号公报 0011 非专利文献 0012 非专利文献 1 : Query Optimization by Predicate Move-Around(1994) 0013 非专利文献 2 : Shifting Predicates to Inne。
12、r Sub-expressions for X Query Optimization(2006) 发明内容 0014 发明要解决的课题 说 明 书 CN 103827860 A 4 2/21 页 5 0015 但是, 关系数据库模型与结构化文档的数据模型不同, 没有层次结构、 要素间的顺 序关系这一问题, 不支持与要素相对应的识别符 (ID) 。 为此, 存在关系数据库中的查询改写 的探讨对于结构化文档无法应用的情况。 0016 另外, 在结构化文档即XML的查询中, 将与称为视图的虚拟的XML文档相对应的条 件在制作视图之前及之后复制并应用, 从而也能够避免徒劳的对结构化文档的视图的要素 进。
13、行检索的情况。 但是, 除了对象限定于视图以外, 简单地在制作视图的阶段将成为对象的 条件全部地复制到能够应用的地方并应用, 因此在多个地方评价同一条件。 并且, 在存在能 够复制的多个条件时, 无条件地对谓语条件的逻辑和进行复制, 因此存在谓语条件的筛选 的效果不充分的问题。本发明要解决的课题是, 以提供能够高速地进行检索的结构化文档 管理装置、 方法及程序为目的。 0017 用于解决课题的手段 0018 实施方式的结构化文档管理装置包括 : 结构化文档数据受理部, 受理具有层次化 后的逻辑结构的结构化文档数据的输入 ; 结构化文档数据存储部, 存储所输入的所述结构 化文档数据 ; 查询数据。
14、受理部, 受理查询数据的输入 ; 句子结构解析部, 解析所输入的查询 数据的句子结构, 取得句子结构解析树, 该句子结构解析树是指, 以成为定义成各变量仅被 代入一次的静态单赋值的方式所分解的句子结构解析树 ; 制约条件取得部, 从由所述句子 结构解析部获得的句子结构解析树, 取得制约条件, 该制约条件包含各句子结构解析树的 变量需要满足的层次条件及变量的值的条件 ; 句子结构解析树改写部, 基于由所述制约条 件取得部获得的制约条件, 将所述查询数据改写为通过所述制约条件能够对作为对象的所 述结构化文档进行筛选的形态 ; 以及查询执行部, 将由所述句子结构解析树改写部改写过 的所述查询数据作为。
15、输入, 输出检索结果。 附图说明 0019 图 1 是表示实施方式中的结构化文档管理系统的系统构筑例的模式图。 0020 图 2 是实施方式中的服务器以及客户终端的模块构成图。 0021 图 3 是表示实施方式中的服务器以及客户终端的概略构成的框图。 0022 图 4 是表示实施方式中的结构化文档 DB 中登记的结构化文档数据的一例的说明 图。 0023 图 5 是表示实施方式中的结构化文档 DB 中登记的结构化文档数据的一例的说明 图。 0024 图 6 是表示实施方式中的结构化文档 DB 中登记的结构化文档数据的一例的说明 图。 0025 图 7 是表示实施方式中的查询数据的一例的说明图。。
16、 0026 图 8 是表示实施方式中的检索处理的流程的流程图。 0027 图 9 是表示对于实施方式中的查询数据进行了句子结构解析处理的结果的说明 图。 0028 图 10 是表示实施方式中的制约条件取得处理的流程的流程图。 0029 图 11 是表示实施方式中的从输入向输出的制约条件取得处理的流程的流程图。 0030 图 12 是表示实施方式中的从输出向输入的制约条件取得处理的流程的流程图。 说 明 书 CN 103827860 A 5 3/21 页 6 0031 图 13 是表示对于实施方式中的查询数据进行从输入向输出的制约条件取得处理 所获得的制约条件的列表的说明图。 0032 图 14。
17、 是表示对于实施方式中的查询数据进行从输入向输出的制约条件取得处理 所获得的路径信息列表的说明图。 0033 图 15 是表示对于实施方式中的查询数据进行从输入向输出的制约条件取得处理 所获得的制约条件取得对象变量列表的说明图。 0034 图 16 是表示对于实施方式中的查询数据进行从输出向输入的制约条件取得处理 所获得的制约条件的列表的说明图。 0035 图 17 是表示实施方式中的改写时所利用的改写模板的一例的说明图。 0036 图 18 是表示实施方式中的结构解析树改写处理的流程的流程图。 0037 图 19 是表示对于实施方式中的查询数据进行结构解析树改写处理所获得的句子 结构解析树的。
18、说明图。 0038 图 20 是表示对于实施方式中的查询数据进行了检索的结果的说明图。 具体实施方式 0039 以下, 参照附图, 说明实施方式的结构化文档管理装置、 方法以及程序。 0040 图 1 是表示实施方式涉及的结构化文档管理系统的系统构筑例的模式图。在 此, 作为实施方式的结构化文档管理系统, 设想如图 1 所示那样、 通过 LAN(Local Area Network : 局域网) 等网络 2 在结构化文档管理装置即服务器计算机 (以下, 称为服务器。 ) 1 上连接有多台客户计算机 (以下, 称为客户终端。 ) 3 的服务器客户系统。 0041 图 2 是服务器 1 以及客户终。
19、端 3 的模块构成图。服务器 1 及客户终端 3 例如具有 利用了通常的计算机的硬件构成。即, 服务器 1 以及客户终端 3 包括 : 进行信息处理的 CPU (Central Processing Unit : 中央处理单元) 101、 存储了 BIOS 等的读出专用存储器即 ROM (Read Only Memory : 只读存储器) 102、 将各种数据能够改写地存储的 RAM(R m Access Memory : 随机存取存储器) 103、 作为各种数据库发挥功能并且保存各种程序的 HDD(Hard Disk Drive : 硬盘驱动器) 104、 使用存储介质 110 保管信息或向。
20、外部发布信息或从外部获 取信息所用的 CD-ROM 驱动器等介质驱动装置 105、 经由网络 2 与外部的其他计算机通信从 而传达信息所用的通信控制装置 106、 对操作者显示处理经过、 结果等的 CRT (Cathode Ray Tube : 阴极射线管) 、 LCD(Liquid Cristal Display : 液晶显示器) 等显示部 107、 以及操作 者对 CPU101 输入命令、 信息等所用的键盘、 鼠标等输入部 108 等, 总线控制器 109 对在这些 各部间收发的数据进行协调并工作。 0042 在这种服务器 1 及客户终端 3 中, 用户接通电源时, CPU101 使 RO。
21、M102 内的装载这 一程序起动, 从 HDD104 中将 OS(Operating System : 操作系统) 这一管理计算机的硬件和 软件的程序读入到 RAM103 中, 使该 OS 起动。这种 OS 根据用户的操作起动程序、 或读入信 息、 或进行保存。作为 OS 中的代表的 OS, 已知有 Windows(注册商标) 、 UNIX(注册商标) 等。 将在这些 OS 上工作的程序叫做应用程序。此外, 应用程序不限于在规定的 OS 上工作的应 用程序, 也可以是使 OS 承担后述的各种处理的一部分的执行的应用程序, 也可以作为构成 规定的应用软件、 OS 等的一组程序文件的一部分而被包含。
22、的应用程序。 0043 在此, 服务器 1 将结构化文档管理程序作为应用程序存储在 HDD104 中。在该意义 说 明 书 CN 103827860 A 6 4/21 页 7 上, HDD104 作为存储结构化文档管理程序的存储介质发挥功能。另外, 一般而言, 在服务器 1 的 HDD104 中安装的应用程序记录于 CD-ROM、 DVD 等各种光盘、 各种光磁盘、 软盘等各种磁 盘、 半导体存储器等各种方式的介质等的储介质 110 中而提供。为此, CD-ROM 等光信息记 录介质、 FD 等磁性介质等具有可搬性的存储介质 110 也能够成为存储结构化文档管理程序 的存储介质。并且, 结构化。
23、文档管理程序也可以经由例如通信控制装置 106 从外部取入并 安装于 HDD104。 0044 当在 OS 上工作的结构化文档管理程序起动后, 按照该结构化文档管理程序, 服务 器 1 的 CPU101 执行各种运算处理并集中控制各部。另一方面, 当在 OS 上工作的应用程序 起动后, 按照该应用程序, 客户终端 3 的 CPU101 执行各种运算处理并集中控制各部。以下 对服务器 1 及客户终端 3 的 CPU101 执行的各种运算处理中的、 实施方式的结构化文档管理 系统中的特征性的处理进行说明。 0045 图 3 是表示本实施方式中的服务器 1 及客户终端 3 的概略构成的框图。如图 3。
24、 所 示, 客户终端3作为通过应用程序实现的功能构成, 包括结构化文档登记部11和检索部12。 0046 结构化文档登记部11用于将从输入部108输入的结构化文档数据、 预先在客户终 端 3 的 HDD104 中存储的结构化文档数据登记在后述的服务器 1 的结构化文档数据库 (结构 化文档 DB) 21。该结构化文档登记部 11 将保存请求与应当登记的结构化文档数据一起发 送至服务器 1。 0047 图4图6表示结构化文档DB中登记的结构化文档数据的一例。 作为用于记述结 构化文档数据的代表性的语言, 举出 XML(Extensible Markup Language) 。图 4 图 6 所 。
25、示的三个结构化文档数据以 XML 记述。在 XML 中, 将构成文档结构的各个部分称为 “要素” (元素 : Element) , 要素使用标志 (tag) 来记述。具体而言, 以表示要素的开始的标志 (开始 标志) 、 表示结束的标志 (结束标志) 这两个标志夹着数据, 来表现一个要素。此外, 以开始标 志和结束标志夹入的文本数据是以该开始标志和结束标志表示的一个要素所包含的文本 要素。 但是, 在结构化文档的最上位存在未作为标志来记述的文档要素, 文档要素之下一定 只存在一个要素。 0048 在图 4 所示的例子中, 结构化文档 D1 在文档要素之下存在以 book 这一标志 包围的要素。。
26、该 book 要素包含 year 属性和以 title 、 author 、 section 的各标志包围的多个子要素。 title 要素具有 “Data On The Web” 等文本要素。 author 要素包含以 last 、 first 的顺序表示的两个子要素。 section 要素包含以多个 p 的标志包围的子要素。 0049 图 5、 图 6 所示的例子也以与图 4 同样的形式具有要素, 仅仅 author 要素、 section 要素的数目及要素具有的值不同。 0050 返回到图3, 检索部12按照由用户从输入部108输入的指示, 作成记述用于从结构 化文档 DB21 检索所期望。
27、的数据的检索条件等的查询数据, 并将包含该查询数据的检索请 求发送至服务器 1。另外, 检索部 12 接受由服务器 1 发送来的与该检索请求对应的结果数 据, 并将其显示在显示部 107 上。 0051 另一方面, 服务器 1 作为通过结构化文档管理程序实现的功能构成, 包括保存处 理部 22 和检索处理部 23。另外, 服务器 1 包括利用了 HDD104 等存储装置的结构化文档 DB21。 说 明 书 CN 103827860 A 7 5/21 页 8 0052 保存处理部 22 包括 : 保存接口部 24, 接受来自客户终端 3 的保存请求, 将从客户 终端 3 发送来的结构化文档数据保。
28、存于结构化文档 DB21。 0053 保存接口部 24(结构化文档受理部) 受理结构化文档数据的输入, 将结构化文档 数据保存于结构化文档 DB21(结构化文档存储部) 。 0054 检索处理部 23 进行如下处理 : 接受来自客户终端 3 的检索请求, 从结构化文档 DB21 找出符合由查询数据所指定的条件的数据, 并将该找出的数据作为结果数据返回。该 检索处理部 23 包括检索接口部 26、 句子结构解析部 27、 制约条件取得部 28、 句子结构解析 树改写部 29 以及查询执行部 30。 0055 检索接口部26受理查询数据的输入 (查询数据受理部) , 并调出对受理到的查询数 据的句。
29、子结构进行解析并制作句子结构解析树 31 的句子结构解析部 27。 0056 句子结构解析部 27 对从客户终端 3 发送并经由检索接口部 26 输入的查询数据 (以下, 称为输入查询数据。 ) 进行句子结构解析, 以必须将一个运算的单位代入到 X Query 中的for语句或let语句的变量中的方式对输入查询数据进行分解并生成改写过句子结构 解析树 31。即, 所谓句子结构解析树 31, 是以为了变量仅被代入一次而定义的静态单赋值 的方式所分解的句子结构。 0057 制约条件取得部 28 作为制约条件取得部发挥功能, 在由句子结构解析部 27 所输 出的句子结构解析树 31 内, 将保存对结。
30、构化文档装置内的全部的结构化文档的文档要素 的集合进行指定的 “” 的变量为起点, 对关联的全部的运算进行搜索, 缓和结构化文档中 的层次条件, 并且提取并输出各变量中的制约条件 32。 0058 句子结构解析树改写部 29 作为句子结构解析树改写部发挥功能, 基于由制约条 件取得部28所输出的制约条件32, 对由句子结构解析部27输出的句子结构解析树31进行 改写。改写过的句子结构解析树 31 与输入查询数据同样的、 按照 X Query 的语法的形式输 出。 0059 查询执行部 30 作为查询执行部发挥功能, 对于结构化文档数据的数据集合执行 从句子结构解析树改写部 29 输出的改写查询。
31、数据, 并输出获得的结果数据 33。 0060 检索接口部26将从查询执行部30输出的结果数据作为检索的结果数据返送给客 户终端 3。 0061 此外, 在本实施方式中, 以由 X Query 记述的查询数据进行说明。在 XML 中, 有 由 W3C 提出的 X Query 这一查询语言, X Query 基本上能够以 Prolog 部和其以外的 FLWOR (for-let-where-order by-return) 这一句子结构模式来说明。以下, 说明 X Query 的语言 规格。 Prolog部由在一个X Query的开头仅存在一个并在X Query间通用来使用的声明变 量和声明函数。
32、构成。声明变量的句子结构为 “declare variable 变量 : 式子” 。除了无论 从 X Query 内的何处起都能够参照这一点以外, 变量声明与后述的 let 语句相同。 0062 声明函数的句子结构是 “declare function 函数名 (参数声明) 式子 ” , 参数声 明部中记述任意数的变量和类型。声明函数无论从 XQuery 内的何处都能够调用。for 的句 子结构是 “for 变量 in 式子” 。for 语句具有将满足式子的序列的要素代入到变量来循环这 一意思。在此, 所谓序列, 是平面列表。let 的句子结构是 “let 变量 : 式子” 。每当一次 循环,。
33、 let 语句对满足式子的序列进行保存。where 的句子结构是 “where 式” 。where 语句 限制以 for 语句重复的循环, 在不满足式子的情况下, 跳出循环。 说 明 书 CN 103827860 A 8 6/21 页 9 0063 order by 的句子结构是 “order by 式子” 。order by 语句通过由式子指定的关键 字将通过 for-let-where 获得的结果分类。return 的句子结构是 “return 式子” 。return 语句能够记述包含变量的任意的 XML 数据。式子中能够记述 FLWOR 语句。 0064 另外, 当for语句、 let语。
34、句等式子中再次记述有FLWOR语句时, 称为嵌套查询。 变 量的句子结构是 “$ 字符串” 。除了通过嵌套查询等二重声明的情况以外, 具有相同字符串 的变量看作相同。 0065 作为对 XML 数据的要素间的层次条件进行指定的运算, X Query 中有如下运算。 0066 表示 “” 要素间是亲子关系的运算符 0067 表示 “” 要素间是祖先子孙关系的运算符 0068 此外,“” 、“” 的左边什么都没有时, DB、 程序侧以默认表示的 XML 或 XML 集 合的文档要素成为对象。在本实施方式中, 指的是结构化文档 DB 的结构化文档集合。 0069 图7是表示X Query的查询数据的。
35、一例的说明图。 为了易于理解, 图7的各行中分 配以 包围的行编号。图 7 的意思是 “列出姓为 Suciu 并且名为 Dan 的作者, 在 1999 年以前出版的书中的、 书的标题、 作者名、 在书的内容中包含有 XML 的节” , 示出如下所述 的查询数据 Q1。 0070 Q1 :L1 表示, 通过 for 语句对于结构化文档 DB21 的各结构化文档数据, 取得位 于文档要素下面的层次的 “book” 这一要素, 并代入到变量 $h 进行循环。 L2 的 let 语句 成为嵌套查询, 表示将 L3 L7 的 FLWOR 语句的结果保存到变量 $i 中。 L3 表示对 于在通过 L1 的。
36、循环所代入的变量 $h 中所保存的要素, 取得其子要素即 “author” 这一要 素, 代入到变量 $x 进行循环。 L4 、L5 表示对于在通过 L3 的循环所代入的变量 $x 中 所保存的要素, 取得其子要素即 “last” 、“first” 这一要素, 代入到变量 $u、 $v。 L6 对于 与循环变量 $x 对应的变量 $u、 $v, 仅让变量 $u 具有的值与 “Suciu” 相等并且 $v 具有的值 与 “Dan” 相等的部分循环。 L7 表示仅返送满足 L6 的 $x。 0071 L8 表示与 L2 同样的 let 语句成为嵌套查询, 将 L9 L11 的 FLWOR 语句 的。
37、结果保存到变量 $j 中。 L9 对于通过 L1 的循环代入的变量 $h 中所保存的要素, 取得 其子要素即 “section” 这一要素的子要素即 “p” 这一要素, 代入到变量 $a 进行循环。 L10 表示对于循环变量 $a, 仅使变量 $a 具有的值包含 “XML” 这一值的部分循环。 L11 表示仅 返送满足 L10 的 $a。 0072 L12 和 L13 是 let 语句, 表示, 对于保存于变量 $h 的要素, 取得作为属性的 “year” 和作为子要素的 “title” 这一要素, 并作为序列代入到各个变量 $k、 $l 中。 L14 表示, 对于与循环变量$h对应的变量$i。
38、、 $k, 在变量$i的序列中存在要素并且仅使$k具有 的数值与 1999 相等或比 1999 小的部分循环。 L15 表示将至此求出的 $l、 $i、 $j 这三个 变量所指的值填入到以 item 开始的 XML 的指定位置, 生成新的 XML, 并作为结果返送。 0073 图 8 是表示服务器 1 的检索处理部 23 的检索处理的流程的流程图。首先, 检索接 口部 26 受理从客户终端 3 经由网络 2 中转所发送的查询数据的输入 (步骤 S1) 。 0074 接着, 句子结构解析部 27 对与输入查询数据有关的句子结构进行解析, 生成句子 结构解析树 (步骤 S2) 。句子结构解析中, 。
39、构成查询数据的各要素被分解为以一个运算单位 将构成 X Query 的全部的运算保存于 for 语句或 let 语句。另外, where、 order by、 return 语句以仅将一个变量作为输入的方式被改写。 说 明 书 CN 103827860 A 9 7/21 页 10 0075 但是, 式子的开头以 “” 或 “” 开始的结构条件的情况下, 分解为仅将开头的 “” 或 “” 作为式子而保存的 let 语句 (以下, 称为起点语句) 和将该 let 语句的输出变 量作为输入变量的式子。另外, 通过开头是 “变量” 并且后续为 “” 或 “” 所指定的层 次条件连续排列的情况下, 归纳。
40、为一个运算, 保存于 for 语句或 let 语句。并且, 嵌套查询 存在的情况下, 嵌套查询的 FLWOR 语句所记述的声明函数以 X Query 的 Prolog 部记述, 并 被改写为以交付到嵌套查询的母查询的变量作为参数的形式将所记述的声明函数的函数 记述于原位置的函数调用的形式。 0076 图 9 是通过句子结构解析部 27 对图 7 的查询数据实施了句子结构解析的结果。 以 L1 到 L27 的 27 行来记述。图 9 的 L1 L10 将图 7 中的 L3 L7 的嵌套 查询分割作为声明函数 udf1。图 7 中的 L3 的变量 $h 是以嵌套查询的母查询中的 for 语 句 L。
41、1 代入的变量, 因此在声明函数中作为参数输入变量 $h1。 0077 在句子结构解析中, 以一个运算单位进行分割并保存在let语句中, 以在where语 句中仅输入变量的方式进行改写, 因此图 7 中的 L6 在图 9 中被改写为 L5 L8 。 0078 另外, 图 9 的 L11 L16 分割出图 7 中的 L9 L11 的嵌套查询作为声明 函数udf2。 句子结构解析中, 以在where语句中仅输入变量的方式进行改写, 因此图7中的 L10 在图 9 中被改写为 L13 L14 。 0079 图 9 的 L17 L18 将使开头的 “” 单独作为 let 语句来对图 7 中的 L1 进。
42、 行分割并代入到变量$g的起点语句和后续的式子的剩余的部分分解成将变量$g作为输入 的 for 语句。图 9 中的 L19 及 L20 与图 7 中的 L2 及 L8 相应, 成为作为将各个嵌 套查询分割为声明函数后的 udf1、 udf2 而调用的形式。 0080 图 9 中的 L23 、L24 及 L26 是将图 7 中的 L14 改写后的语句, 按一个运算 单位分解成 let 语句, where 语句仅成为输入变量。图 9 中的 L25 及 L27 与图 7 中的 L15 相应, return 语句仅成为变量, 生成 XML 的式子被改写为 let 语句。 0081 句子结构解析部27的。
43、句子结构解析处理结束时, 接着, 制约条件取得部28对句子 结构解析部 27 的处理结果进行解析, 缓和结构化文档中的层次条件, 并且取得各变量中的 制约条件 (步骤 S4) 。 0082 在此, 所谓的制约条件, 是将该变量需要满足的条件的全部或一部分排列的条件。 在本实施方式中, 关于某变量, 将包含保存于该变量的要素的文档集合应当满足的条件作 为制约条件记述。例如, 变量中保存有 Bool 型的值的情况下, 记述为了其值变为 TRUE 所需 的条件。 0083 此时排列有多个条件时, 制约条件取得部 28 将条件缓和为对各条件间中的结构 化文档内的层次条件的依存关系予以无视的形式。例如,。
44、 以构成制约条件的两个条件出现 的结构条件 A B C、 A B D 是与以 A B 指定的要素集合内的同一的 B 相对 的子要素 C 及 D 时, 以虽然缓和该条件而具有相同的要素名但与不同的 B 的要素相对的子 要素 C 及 D 也成立的方式来缓和条件。由此, 成为仅在制约条件中也包含本来为对象外的 文档, 但对于此, 通过对 XML 的要素 ID 进行利用的运算来消除。 0084 图 10 是表示制约条件取得的流程的流程图。制约条件取得部 28 首先从作为输入 被赋予的句子结构解析树取得全部的起点语句 (let的语句) , 提取起点语句的输出变量, 保 存于列表 R。接着, 制约条件取得。
45、部 28 准备成为最终输出的制约条件的列表 CA、 改写对象 说 明 书 CN 103827860 A 10 8/21 页 11 列表 FA、 路径信息的列表 P。在此, 所谓的路径信息, 是仅以从 “” 或 “” 开始的一个 或多个结构条件表示该变量表示的要素的信息 (步骤 S21) 。 0085 接着, 制约条件取得部 28 对步骤 S21 取得的要素进行检查, 判断输出变量的列表 R 是否为空 (步骤 S22) 。 0086 输出变量的列表R不为空时 (步骤S22 : 否) , 制约条件取得部28从输出变量的列表 R 取得开头的要素即变量 $r 并将其从列表删除后, 将 $r 插入到列表。
46、 L。并且, 将 $r 的路径 信息插入到路径信息列表 P。 (步骤 S23) 。 0087 接着, 制约条件取得部 28 将列表 L 及路径信息列表 P 作为输入实施从运算的输 入向输出的制约条件取得处理, 并输出保存制约条件的列表 C、 制约条件取得对象变量列表 T、 对列表 T 的变量中的、 成为 where 语句的输入的变量进行保存的列表 W、 对列表 T 的变量 的路径信息进行保存的列表 P(步骤 S24) 。 0088 关于步骤 24 的处理, 以图 11 的流程图记述详细。接着, 将在步骤 S24 的处理中取 得的四个列表 C、 T、 W、 P 作为输入, 制约条件取得部 28 。
47、实施从输出向输入的制约条件取得 处理, 并输出改写对象变量列表 F、 制约信息列表 C、 路径信息列表 P(步骤 S25) 。 0089 关于步骤 25 的处理, 以图 12 的流程图记述详细。接着, 制约条件取得部 28 将在 步骤 S25 获得的制约信息列表 C 和路径信息列表 P 内的各要素分别插入到制约条件的列表 CA、 FA(步骤 S26) 。接着, 再次返回到步骤 22, 重复处理。 0090 另一方面, 在步骤 S22 的判断中输出变量的列表 R 为空时 (步骤 S22 为是) , 制约条 件取得部28将通过至此的处理所取得的制约条件的列表CA、 PA、 输出路径信息列表P, 结。
48、束 制约条件取得处理。 0091 图 11 是表示通过图 10 的步骤 24 实施的从输入向输出的制约条件取得处理的流 程的流程图。从输入向输出的制约条件取得处理中, 首先, 制约条件取得部 28 接受在图 10 的步骤23取得的列表L、 路径信息列表P作为输入, 准备在步骤S24中说明的三个制约条件 的列表 C、 制约条件取得对象变量列表 T、 对列表 T 的变量中的成为 where 语句的输入的变 量进行保存的列表 W、 保存 FLWOR 语句的列表 N 作为输出用的空的列表 (步骤 S31) 。接着, 制约条件取得部 28 判断 L 是否为空 (步骤 S32) 。 0092 在所输入的列表 L 为空时 (步骤 S32 : 否) , 制约条件取得部 28 取得 L 最后尾的要 素即变量 $l 并将其从列表中删除 (步骤 S33) 。接着, 制约条件取得部 28 判断 $l 是否存在 于制约条件取得对象变量列表 T 中 (步骤 S34) 。 0093 $l不存在于制约条件取得对象变量列表T中时 (步骤S32 : 否) , 制约条件取得部28 取得将数 $ 作为输入的 for。