结构化文档管理装置、方法及程序的制作方法
【专利摘要】结构化文档管理装置(1)包括:检索接口部(26),用于受理检索具有层次化后的逻辑结构的结构化文档的查询数据的输入;结构条件分割部(27),将查询数据分割为包含多个结构条件的要素单位;结构条件改写部(28),在分割出的上述结构条件的种类是根据结构化文档的上位层次指定下位层次的子孙结构条件以外时,上将述结构条件改写为按各自的上述结构条件的每个种类预先确定的包含子孙结构条件和结合运算处理的改写查询,以避免对结构条件的前后的上述要素带来影响;以及查询执行部(29),以上述结构条件及包含改写查询的查询数据作为输入,输出检索结果。
【专利说明】结构化文档管理装置、方法及程序
【技术领域】
[0001]本发明的实施方式涉及结构化文档管理装置、方法及程序。
【背景技术】
[0002]以往,已知用于对以XML(Extensible Markup Language:可扩展标记语言)等记述的结构化文档数据进行存储、检索的结构化文档管理装置。为了进行结构化文档管理装置中的结构化文档数据的检索,制定了如RDBMS(Relational Database Management System:关系型数据库管理系统)中的查询语言SQL那样的、与XML数据相对的查询语言X Query(XML Query Language),并且在多数结构化文档管理装置受到支持。
[0003]X Query是用于如数据库那样处理XML数据集合的语言,提供用于进行符合条件的数据集合的取出、汇总、分析的方法。XML数据具有亲子、兄弟等的要素组合后的层次化的逻辑结构(层次结构),因此能够在条件中指定与该层次结构有关的条件(结构条件)。
[0004]结构条件的处理中,需要进行结构对照处理,该结构对照处理是对结构化文档管理装置存储着的结构化文档数据是否具有符合条件的结构进行对照的处理。若结构条件仅是根据上位层次指定下位层次的处理(子孙结构条件),则该结构对照处理能够比较高速地进行处理,但在包含根据下位层次来指定上位层次的处理(先祖结构条件)、指定同一层次的前后的处理(兄弟结构条件)、在结构条件中对XML数据中所包含的要素的顺序关系进行指定的处理(顺序结构条件)时,难以进行高速地处理。
[0005]与此相对,通过将先祖结构条件、兄弟结构条件及顺序结构条件变换为子孙结构条件和结合运算(結合運算)的组合,由此实现高速处理的尝试得以实施。例如,有利用对构成称为结构向导的在登记文档的标志赋予的ID的方法。另外,通过将X Query内的先祖结构条件、兄弟结构条件及顺序结构条件改写为相同的X Query,也能够实现。
[0006]然而,由于需要称为结构向导的在登记文档时所分配的ID,因此对于未登记于结构化文档装置的外部的资源进行处理时、或对于在X Query内部暂时生成的结构化文档,无法预先决定结构向导。在这种情况下,无法生成对先祖结构条件、兄弟结构条件及顺序结构条件进行了变换的执行计划(方案),因此存在结构对照处理的效率变差的问题。另外,需要将X Query变换为利用了结构向导的独自的形式的处理,因此存在构成变得复杂的问题。
[0007]另外,在改写结构条件时,需要将记述于成为对象的结构条件之前的结构条件全部改写,因此存在改写的开销(才一〃一?〃 O较大的问题。另外,设想以一个结构化文档为对象的情况,因此在对于结构化文档集合应用改写后的X Query时,存在对结构化文档集合的筛选(絞D込A)条件未得以活用,性能变差的情况。或者需要对每一个文档应用XQuery,因此性能变差。
[0008]现有技术文献
[0009]专利文献:
[0010]专利文献1:日本特开2007-226452号公报
[0011]非专利文献:[0012]非专利文献1:XPath:Looking Forward/Dan Olteanu, Holger Meuss, TimFurche, Francois Bry/Insitute for Computer Schience and Center fo Informationand Language Processing Uniceristy of Munich, Germany (2002)
【发明内容】
[0013]发明要解决的课题
[0014]本发明要解决的课题在于,能够以简单的构成实现高速的结构综合处理的结构化文档管理装置、方法及程序。
[0015]用于解决课题的手段
[0016]实施方式的结构化文档管理装置包括:结构化文档数据受理部、结构化文档数据存储部、查询数据受理部、结构条件分割部、结构条件改写部及查询执行部。结构化文档数据受理部受理具有层次化后的逻辑结构的结构化文档数据的输入。结构化文档数据存储部存储上述结构化文档数据。查询数据受理部受理查询数据的输入。结构条件分割部仅将所输入的查询数据内的结构条件部分切出而分割。结构条件改写部根据轴(軸)的种类对切出的结构条件进行改写,与分割出的查询数据的其他部分联接。查询执行部执行上述结构条件改写部输出的查询。
【专利附图】
【附图说明】
[0017]图1是表示第一实施方式的结构化文档管理系统的系统构筑例的模式图。
[0018]图2是第一实施方式的服务器及客户终端的模块构成图。
[0019]图3是表示第一实施方式的服务器及客户终端的概略构成的框图。
[0020]图4是表示在第一实施方式的结构化文档DB中登记的结构化文档数据的一例的说明图。
[0021]图5是表示第一实施方式的查询数据的一例的说明图。
[0022]图6是表示对第一实施方式的结构条件进行分类及处理内容的一览的一例的模式图。
[0023]图7是表示对于第一实施方式的查询数据进行了结构条件分割处理的结果的说明图。
[0024]图8是表示通过第一实施方式的结构条件分割处理分割的结构条件的一览的说明图。
[0025]图9是表示第一实施方式的结构条件改写处理的流程的流程图。
[0026]图10是表示通过结构条件改写部对第一实施方式的结构条件改写处理进行改写时所需的规则一览的一例的说明图。
[0027]图11是表示对第一实施方式的查询数据进行了改写的结果的一例的说明图。
[0028]图12是表示第一实施方式的查询数据的结果数据的说明图。
[0029]图13是表示第二实施方式的查询数据的一例的说明图。
[0030]图14是表示对于第二实施方式的查询数据进行了结构条件分割处理的结果的说明图。
[0031]图15是表示第二实施方式的结构条件改写处理的流程的流程图。[0032]图16是表示通过结构条件改写部对第二实施方式的结构条件改写处理进行改写时所需的规则一览的一例的说明图。
[0033]图17是表示对第二实施方式的查询数据进行了改写的结果的一例的说明图。
[0034]图18是表示第二实施方式的查询数据的结果数据的说明图。
【具体实施方式】
[0035]以下,参照附图,说明实施方式的结构化文档管理装置。
[0036](第一实施方式)
[0037]首先,参照图1?图12对第一实施方式进行说明。图1是表示第一实施方式涉及的结构化文档管理系统的系统构筑例的模式图。在此,作为实施方式的结构化文档管理系统,设想如图1所示那样、通过LAN (Local Area Network:局域网)等网络2在结构化文档管理装置即服务器计算机(以下,称为服务器。)1上连接有多台客户计算机(以下,称为客户终端。)3的服务器客户系统。
[0038]图2是服务器I及客户终端3的模块构成图。服务器I及客户终端3例如具有利用了通常的计算机的硬件构成。即,服务器I及客户终端3包括CPU(Central ProcessingUnit:中央处理单兀)101、R0M (Read Only Memory:只读存储器)102、RAM (Random AccessMemory:随机存取存储器)103、HDD (Hard Disk Drive:硬盘驱动器)104、介质驱动装置105、通信控制装置106、显示部107、输入部108及总线控制器109。
[0039]CPU101执行各种信息处理。R0M102是存储了 BIOS等的读出专用存储器。RAM103能够改写地存储各种数据。HDD104作为各种数据库发挥功能,并且保存各种程序。介质驱动装置105是用于用存储介质110保管信息或向外部发布信息或从外部获取信息的CD-ROM驱动器等。
[0040]通信控制装置106通过经由网络2与外部的其他的计算机通信来传递信息。显示部107是对操作者显示处理经过、结果等的CRT (Cathode Ray Tube:阴极射线管)、LCD(Liquid Cristal Display:液晶显示器)等。输入部108是用于操作者对CPU101输入命令、信息等的键盘、鼠标等。总线控制器109对在各部间收发的数据进行协调。
[0041]在这种服务器I及客户终端3中,用户接通电源时,CPU101使R0M102内的装载这一程序起动,从HDD104中将OS (Operating System:操作系统)这一管理计算机的硬件和软件的程序读入到RAM103中,使该OS起动。这种OS根据用户的操作起动程序、或读入信息、或进行保存。作为OS中的代表的OS,已知有Windows (注册商标)、UNIX (注册商标)等。将在这些OS上工作的程序叫做应用程序。此外,应用程序不限于在规定的OS上工作的应用程序,也可以是使OS承担后述的各种处理的一部分的执行的应用程序,也可以作为构成规定的应用软件、OS等的一组程序文件的一部分而被包含的应用程序。
[0042]在此,服务器I将结构化文档管理程序作为应用程序存储在HDD104中。在该意义上,HDD104作为存储结构化文档管理程序的存储介质发挥功能。另外,一般而言,在服务器I的HDD104中安装的应用程序记录于CD-R0M、DVD等各种光盘、各种光磁盘、软盘等各种磁盘、半导体存储器等各种方式的介质等的存储介质110中而提供。为此,CD-ROM等光信息记录介质、FD等磁性介质等具有可搬性的存储介质110也能够成为存储结构化文档管理程序的存储介质。并且,结构化文档管理程序也可以经由例如通信控制装置106从外部取入并安装于HDD104。
[0043]当在OS上工作的结构化文档管理程序起动后,按照该结构化文档管理程序,服务器I的CPUlOl执行各种运算处理并集中控制各部。另一方面,当在OS上工作的应用程序起动后,按照该应用程序,客户终端3的CPUlOl执行各种运算处理并集中控制各部。以下对服务器I及客户终端3的CPUlOl执行的各种运算处理中的、与实施方式的结构化文档管理系统关联的处理进行说明。
[0044]图3是表示本实施方式中的服务器I及客户终端3的概略构成的框图。如图3所示,客户终端3作为通过应用程序实现的功能构成,包括结构化文档登记部11和检索部12。
[0045]结构化文档登记部11用于将从输入部108输入的结构化文档数据、预先在客户终端3的HDD104中存储的结构化文档数据登记于后述的服务器I的结构化文档数据库(结构化文档DB) 21。该结构化文档登记部11将保存请求与应当登记的结构化文档数据一起发送至服务器I。
[0046]图4表示在结构化文档DB21中登记的结构化文档数据的一例。作为用于记述结构化文档数据代表性的语言,举出XML (Extensible Markup Language)。图4所示的两个结构化文档数据Dl、D2用XML记述。在XML中,将构成文档结构的各个部分称为“要素”(元素:Element),要素使用标志(tag)来记述。具体而言,以表示要素开始的标志(开始标志)、表示结束的标志(结束标志)这两个标志夹着数据,来表现一个要素。此外,以开始标志和结束标志夹入的文本数据是以该开始标志和结束标志表示的一个要素中包含的文本要素。
[0047]在图4所示的例子中,结构化文档Dl存在以< book >这一标志包围的路径要素。该< book >要素包含以< title >、< author >、< publisher >的各标志包围的多个子要素。< title >要素具有“Data On The Web”等文本要素。
[0048]< book >要素具有两个< author >要素,这两个< author >要素是在< title>要素之后出现的顺序,接下来< publisher >要素出现。各< author >要素包含以< last >、< first >的次序出现的两个子要素。
[0049]结构化文档D2与结构化文档Dl同样地,路径要素是< book >,但< book >的子要素与Dl不同,不是< author >,具有< editor >这一要素代替< author >。< editor>要素与< author >要素同样地,包含以< last >、< first >的次序出现的两个子要素。
[0050]返回到图3,检索部12按照由用户从输入部108输入的指示,作成记述了用于从结构化文档DB21检索所期望的数据的检索条件等的查询数据,并将包含该查询数据的检索请求发送至服务器I。另外,检索部12接收由服务器I发送来的与该检索请求对应的结果数据,并将其显示在显示部107上。
[0051]另一方面,服务器I作为通过结构化文档管理程序实现的功能构成,包括保存处理部22和检索处理部23。另外,服务器I包括利用了 HDD104等存储装置的结构化文档DB21。
[0052]保存处理部22收到来自客户终端3的结构化文档的保存请求,进行将从客户终端3发送来的结构化文档数据保存于结构化文档DB21的处理。该保存处理部22包括保存接口部 24。
[0053]保存接口部24受理结构化文档数据的输入(结构化文档数据受理部),并将结构化文档数据保存于结构化文档DB21。
[0054]检索处理部23收到来自客户终端3的检索请求,从结构化文档DB21中找出符合由查询数据指定的条件的数据,将该找出的数据作为结果返送给数据客户终端3。该检索处理部23包括检索接口部26、结构条件分割部27、结构条件改写部28以及查询执行部29。
[0055]检索接口部26受理查询数据的输入(查询数据受理部),为了获得满足由受理到的查询数据所指定的条件的结果数据而调出结构条件分割部27。
[0056]结构条件分割部27对从客户终端3发送并经由检索接口部26输入的查询数据(以下,称为输入查询数据。)进行句子结构分析,在该输入查询数据内,分割并取出表示对结构化文档数据的逻辑结构中的层次关系进行指定的条件的结构条件的部分(以下,称为“结构条件分割列表31”。)。
[0057]结构条件改写部28通过子孙结构条件和结合运算的组合来对通过结构条件分割部27输出的结构条件分割列表31中的、子孙结构条件以外的结构条件进行改写。关于改写的详细后述。改写了的查询数据与没改写的其他查询数据简单地联接,并作为最终的改写查询数据32输出。
[0058]查询执行部29作为查询执行部发挥功能,对于存储于结构化文档DB21的结构化文档数据的数据集合,执行从结构条件改写成部28输出的改写查询数据32,并输出获得的结果数据33。
[0059]检索接口部26将从查询执行部29输出的结果数据33作为检索的结果数据34返还给客户终端3。
[0060]图5是表示查询数据的一例的说明图。在XML中,有由W3C提出的X Query这一查询语言,图5所示的查询数据 遵照基于该X Query的查询记述方法。图5示出了“列出姓为‘Suciu’这一作者之前列举的作者一览”这一意图、即包含与如下所述的复杂的层次结构有关的条件(结构条件)的查询数据Ql。结构条件在查询数据内,以字符“ / ”开始,在“ / ”与字符串“::”之间有称为“轴”的对结构条件的种类和处理内容进行识别的字符串,在字符串“::”的右侧有表示要素名、要素种类的要素指定字符串。要素指定字符串由从“::”的下一个字符起到表示下一个结构条件开始的字符“ / ”或表示结构条件以外的种类的字符串出现为止的字符串构成。
[0061]Ql:对于结构化文档DB21的各结构化文档数据,在最上位层次都有“book”这一要素,该“book”这一要素在其下面具有“author”这一要素,并且在该“author”这一要素的下面有“last”这一要素,并且在“last”这一要素的下面有值为“‘Suciu’”的文本要素,并且使该文本要素在上位层的某处有“author”这一要素,并且表示返回具有与该“author”这一要素同一母要素的兄弟要素中的、结构化文档中的出现顺序在前的“author”要素的一览。
[0062]图6是表示服务器I的检索处理部23进行的检索处理的流程的流程图。首先,检索接口部26受理从客户终端3通过网络2中转而发送来的查询数据的输入(步骤SI)。
[0063]接着,结构条件分割部27对输入查询数据进行分割结构条件部分的处理(步骤S2)。
[0064]图7是结构条件分割部27将图5所示的查询数据分割为每个结构条件的结果,分割成从[I]到[7]的七个结构条件。[I]切出查询数据的开头的字符“ / ”起到下一个“ / ”为止的结构条件。轴是“child”,要素指定字符串为“book”。[2]、[3]、[4]也同样地,轴为“child”,要素指定字符串分别为“author”、“laSt”、“teXt O”。“text O”不是要素名,是指定文本要素的字符串。[5]不是结构条件,是筛选条件,该筛选条件对于[5]的输出结果,指定仅保留该要素具有的字符串值为“Suciu”这一情况。此外,也可以以[5]的筛选条件与[4]的结构条件成为一块的方式分割。[6]的轴名是“ancestor-or-self”,要素指定字符串是“author”,[7]的轴名是“preceding-sibling”,要素指定字符串是“author”的结构条件。
[0065]图8是表示结构条件的种类及其处理内容的表。图8所示的表具有“轴名”、“结构条件的种类”、“处理内容”这三个项目。“轴名”唯一地决定结构条件的处理内容,用作查询。“结构条件的种类”的各轴表示结构条件属于根据上位层次指定下位层次的子孙结构条件、根据下位层次指定上位层次的先祖结构条件、指定同一层次的前后的兄弟结构条件、在结构条件中对XML数据所包含的要素的顺序关系进行指定的顺序结构条件中的哪个类别。“处理内容”对各轴的结构条件的取得对象进行具体地书写。
[0066]返回到图6,结构条件分割部27进行的结构条件分割结束后,接着,结构条件改写部28对结构条件分割部27分割出的各结构条件进行改写处理(步骤S3)。此外,对于结构条件以外的要素(在图7的例中为[5])不进行改写。参照图9对结构条件改写部28进行的改写处理的一例进行说明。
[0067]图9是表示结构条件改写的流程的流程图。结构条件改写部28首先从作为输入被赋予的分割为每个结构条件的列表中取得开头的要素,在取得完了后从列表中删除(步骤 S21)。
[0068]接着,结构条件改写部28对在步骤S21取得的要素进行检查,判断是结构条件还是结构条件以外(步骤S22)。所谓结构条件,是具有在图8中定义的轴名的要素,在图7所示的例中,仅[5]不是结构条件。在判断为是结构化条件时(步骤S22:是),结构条件改写部28将结构条件内的要素指定字符串作为改写参数X (步骤S23)。接着,结构条件改写部28根据所取得的要素所包含的结构条件的轴名取得图8的结构条件的种类(步骤S24)。该表预先存储于例如HDD104等。接着,结构条件改写部28判断所取得的结构条件的种类是祖先结构条件、兄弟结构条件、顺序结构条件中的哪个(步骤S25)。
[0069]结构条件的种类是祖先结构条件、兄弟结构条件、顺序结构条件中的任一个时(步骤S25为是),结构条件改写部28从在图10所示的表中取得与结构条件的种类对应的改写基准查询Y (步骤S28)。
[0070]图10是结构条件改写中的各轴的改写规则的一例。图10所示的表具有“编号”、“轴名”、“结构条件的种类”、“改写基准查询”及“改写参数”的项目。“编号”是分配到每个改写规则的识别编号。“轴名”和“结构条件的种类”与图8相同。“改写基准查询”是每个结构条件种类的改写查询的基准模板。[参数A][参数B]是改写基准查询的能够变更的参数部分。在此,“改写基准查询”在最初的第I行将表示结构条件的输入的”代入到变量$1,以后以该变量$1为起点实施处理。为此,改写了的查询仅交付通过在结构条件之前实施过的筛选条件而筛选到的结构化文档的要素作为输入。另外,“改写基准查询”中出现的函数“root”是取得包含作为输入被交付的要素的结构化文档的开头要素的函数。以一次(一度)返回到开头要素并从上位向下位折返(迪D々B+)的形式改写。“改写参数”是代入于“改写基准查询”的[参数B]中的每个轴的值。该表预先存储于例如HDD104等。以下对改写基准查询Y的内容进行说明。
[0071]与祖先结构条件对应的改写基准查询对于对成为输入的节点进行保持的变量$1,求出对在保持$1的节点的XML文档内存在的标志名为[参数A]的全部节点进行保持的$2。然后,对于$2所保持的各节点分别求出对满足[参数B]的结构条件的全部节点保持的$3,当满足$3内存在与$1保持的节点相同的节点的条件时,意味着设为$2是满足祖先结构条件的节点,并返回$2。这意味着,即,在输入节点存在的文档内将具有[参数A]这一标志名的节点全部找出,若该节点A的孩子(子孙)内存在输入节点,则该节点A为输入节点的父母(祖先)。
[0072]另外,与兄弟结构条件对应的基准查询为如下方式:对于对成为输入的节点进行保持的变量$1,求出对在保持$1的节点的XML文档内存在的标志名为[参数A]的全部节点进行保持的$2,对于$2所保持的各节点分别求出对在保持该节点的XML文档内的全部节点进行保持的$3,对于$3所保持的各节点分别求出对其子节点进行保持的$4,仅当在$4内存在$2的节点时,将$4的节点作为$5来保持,当$2和$1的顺序关系满足[参数B]并且$5内存在$1的节点时,$2成为满足兄弟结构条件的节点,返回$2。S卩,本查询表示,在输入节点存在的文档内将具有[参数A]标志名的节点A全部找出,取得与该节点A父母相同的节点的集合B,若节点集合B包含输入节点并且节点A的顺序比输入节点早(晚),则节点A为输入节点的兄(弟)。
[0073]另外,对求出满足顺序结构条件中的、preceding条件的节点的基准查询进行说明。查询为以下方式:对于对成为输入的节点进行保持的变量$1,求出对在保持$1的节点的XML文档内存在的标志名为[参数A]的全部节点进行保持的$2,对于$2所保持的各节点分别求出保持其子孙节点的$3,在$2的顺序比$1早并且$1内不存在$3的节点时,设$2为满足条件的节点,并返回$2。即,在输入节点存在的文档内将具有[参数A]标志名的节点A全部找出,并且取得节点A的子孙节点集合B。并且,如果节点A的顺序比输入节点的顺序早并且输入节点未包含于节点A的子孙节点集合B,则意味着相对于输入节点,节点A满足preceding条件。
[0074]另外,对求出满足顺序结构条件中的、following条件的节点的基准查询进行说明。查询为如下方式:对于对成为输入的节点进行保持的变量$1,求出对在保持$1节点的XML文档内存在的标志名为[参数A]的全部节点进行保持的$2,接着求出对$1的全部子孙节点进行保持的$3,$2的顺序比$1的顺序晚并且$2内不存在$3的节点时,设为$2是满足following条件的节点,并返回$2的值。即,在输入节点存在的文档内将具有[参数A]标志名的节点A全部找出,并且取得输入节点的子孙节点集合B。若节点A的顺序比输入节点的顺序晚并且节点A未包含于输入节点的子孙节点集合B,则相对于输入节点,节点A满足 following 条件。
[0075]接着,结构条件改写部28将改写基准查询Y的[参数A]的部分改为为改写参数X(步骤S29)。接着,结构条件改写部28从图10所示的表中取得与轴的种类对应的改写参数Z (步骤S30)。接着,结构条件改写部28将改写基准查询Y的[参数B]的部分改写为改写参数Z(步骤S31)。接着,结构条件改写部28将改写了的结果追加到改写查询(步骤S26)。
[0076]接着,结构条件改写部28判断分割列表是否为空(步骤S27)。分割列表为空时(步骤S27:是),即在步骤S21中删除了的要素是最后的要素时,结构条件改写部28使结构条件改写处理,并输出改写查询。
[0077]另一方面,在步骤S22的判断中要素不是结构条件时(步骤S22:否),结构条件改写部28不对要素进行改写而是直接原样地追加到改写查询中(步骤S26)。接着,进入步骤27,重复同样的处理。
[0078]另一方面,在步骤27的判断中分割列表不为空时(步骤S27为否),进入到步骤S21,再次重复相同的处理。
[0079]在此,参照图9~图11对用图7中例示的结构条件分割结果进行了一般的结构条件改写时的处理的概要进行说明。
[0080]首先,结构条件改写部28接受图7的[I]起到[7]为止的七个要素组成的分割列表作为输入,在取出了最初的要素[I]后,从列表删除[I](步骤S21)。接着,结构条件改写部28判断[I]是否为结构条件,由于是结构条件,因此将要素指定字符串“book”作为改写参数X (步骤S22、S23)。接着,结构条件改写部28由于[I]的轴是“child”因此从图8的表中取得子孙结构条件作为结构条件的种类(步骤S24)。接着,结构条件改写部28由于[I ]不是祖先结构条件、兄弟结构条件、顺序结构条件中的任一种而向改写查询追加[I ],改写查询成为“/ child::book”(步骤S25、S26)。接着,分割列表不为空,因此取得下一个列表的开头要素[2],并从列表删除[2](步骤S27、S21)。
[0081]分割列表的[2]、[3]、[4]的轴都为与[I]相同的“child”,因此重复从S22到S27为止完全相同的处理。其结果是,改写查询成为“ / child::book / child::author::child::last / child::text (),,。
[0082]接着,结构条件改写部28再次取得分割列表的开头要素[5],并从列表删除[5](步骤S21)。接着,结构条`件改写部28由于要素不是结构条件而对改写查询追加[5]即“[.=‘Suciu’]”(步骤 S22、S26)。
[0083]接着,结构条件改写部28从分割列表的开头取出[6]并将其从列表中删除(步骤S21)。接着,由于要素是结构条件,因此结构条件改写部28将“author”代入到改写参数X,从轴的种类“ancestor-or-self”取得祖先结构条件作为结构条件的种类(步骤S22、S23、S24)。接着,由于要素是祖先结构条件,因此结构条件改写部28从图10中取得与结构条件的种类对应的改写基准查询Y (步骤S25、S28)。接着,结构条件改写部28以改写参数X的“author”对改写基准查询Y的[参数A]的部分进行改写(步骤29)。接着,结构条件改写部28从图10中取得“descendant-or-self”作为与轴的种类对应的改写参数Z,将改写基准查询Y的[参数B]改写为改写参数Z (步骤S30、S31)。然后,结构条件改写部28将改写了的结果追加至改写查询(步骤26)。接着,由于分割列表不为空,因此结构条件改写部28从列表的开头要素取出[7]并将其从列表删除(步骤S27、S21)。
[0084]接着,由于[7]的要素是结构条件,因此结构条件改写部28将“author”代入到改写参数X,从轴的种类“preceding-sibling”取得兄弟结构条件作为结构条件的种类(步骤S22、S23、S24)。[7]是兄弟结构条件,因此结构条件改写部28从图10中取得与结构条件的种类对应的改写基准查询Y (步骤S25、S28)。接着,结构条件改写部28以改写参数X的“author”对改写基准查询Y的[参数A]的部分进行改写(步骤29)。接着,结构条件改写部28从图10中取得“following-sibling”作为与轴的种类对应的改写参数Z,将改写基准查询Y的[参数B]改写为改写参数Z (步骤S30、S31)。结构条件改写部28将改写了的结果追加至改写查询(步骤26)。接着,由于列表为空,因此结构条件改写部28使结构条件改写处理结束(步骤S27)。
[0085]图11是用图7中例示的结构条件分割结果进行了结构条件改写的改写查询的结果。与[6]、[7]相应的结构条件简单地被改写成以两个()开始的块。[6]的改写了的部分的输入为[I]?[5]为止的运算结果,因此通过[I]?[5]的条件筛选结构化文档集合时,[6]的改写结果仅对于成为对象的结构化文档结构适用。同样地,以[7]改写过的结果仅对于通过[6]筛选出的结构文档集合适用。
[0086]结构条件改写部28的结构条件改写处理结束时,改写过的改写查询作为X Query输出。接着,如图6所示,查询执行部29执行改写过的X Query (步骤S4)。改写后也保持X Query的形式,因此查询执行处理能够以任意的X Query处理系统执行。
[0087]查询执行部29的查询执行处理结束时,最后,检索接口部26将查询执行部29的输出作为结果数据返还给客户终端3并结束处理(步骤S5)。
[0088]图12是对于图4的结构化文档Dl、D2执行了图5所例示的改写X Query后的结果。按“列出姓为“Suciu”这一作者之前列举的作者一览”这一原来的X Query的意图,结构化文档Dl内的“last”要素的下一文本要素的比“Suciu”的祖先即“author”要素先出现的“author”要素符合条件而被输出。结构化文档D2不具有要素“author”,因此在对与图7的[2]相应的结构条件进行检查的阶段,从对象结构化文档结构被删除。
[0089]以上,如举出具体的例子说明那样,根据本实施方式,服务器I将结构化文档数据保存于结构化文档DB21。另外,服务器I在结构化文档数据的检索时,对来自客户终端3的输入查询数据进行句子结构分析,从输入查询数据中分割对结构化文档数据的逻辑结构中的层次结构进行指定的结构条件,当分割出的结构条件是根据上位层次指定下位层次的子孙结构条件以外时,用子孙结构条件和联接条件改写相应的结构条件部分。因此,即使输入查询数据中包含子孙结构条件以外的结构条件时,通过仅由简单的子孙结构条件构成的结构对照处理和结合运算处理来对该输入查询数据进行处理,从而能够实现结构对照处理的高速化。
[0090]另外,在上述实施方式中,在对子孙结构条件以外的结构条件进行改写时,仅改写相应的结构条件部分,因此不对不相应的查询数据即其他部分带来影响,能够以简单的部分置换进行改写。并且,在上述的具体例中,在改写为子孙结构条件和结合运算处理时,改写了的子孙结构条件的输入以仅将通过到此为止的查询数据的处理获得的结构化文档作为对象的方式进行改写。由此,不是对结构化文档集合全部实施改写了的结构条件,而是仅对于通过到此为止的处理筛选出的结构化文档集合实施子孙结构条件即可,因此能够高速地执行检索。
[0091]此外,在上述的具体例中,对输入查询数据中包含“preceeding-sibling”和“ancestor-or-self”作为兄弟结构条件及祖先结构条件的情况进行例示来说明,但即使是包含兄弟结构条件及祖先结构条件的其他条件,例如“following-sibling”、“ancestor”、“parent”等的情况或为顺序结构条件“preceding”、“follwoing”,也能够进行与上述的具体例同样地处理。
[0092](第二实施方式)[0093]接着,对第二实施方式进行说明。本实施方式是在对子孙结构条件以外的结构条件进行改写时,不是以要素单独来改写而是与前后的结构条件组合来改写的例子。此外,在以下的说明中,对于与上述的第一实施方式通用的构成标注相同的符号,并省略重复的说明。
[0094]图13是表示在本实施方式中设想的查询数据的一例的说明图。该图13所示的查询数据Q2与第一实施方式中说明了的查询数据Ql同样地以X Query来记述。图13的查询是“列出作者名为‘editor’要素以下所记述的结构化文档的题目”这一意图,包含如下所述的意思复杂的层次结构所涉及的条件(结构条件)。
[0095]Q2:对于结构化文档DB21的各结构化文档数据,在最上位层次都有“book”这一要素,该“book”这一要素在其中具有“editor”这一要素,并且在该“editor”这一要素的上一层次返回到要素,返回位于该要素下面的“title”这一要素的一览。
[0096]在查询数据Q2中,通过“ / child::editor”,从“book”要素起一次下降到下一层次之后,通过“/ parent::node ()”这一结构条件,再一次返回到原来的要素后,通过“ /child::title”,再次下降到下一不同的要素。由此,确认了在“book”要素之下有“editor”要素后,输出“title”要素。
[0097]本实施方式中的检索处理部23的检索处理的流程与图6所示的第一实施方式的流程相同。只是,在本实施方式中,在步骤S3的结构条件改写处理中,在不同的改写规则下实施结构条件改写处理。
[0098]图14是通过结构条件分割部27对于图13的查询数据分割为各要素的结果,分割为[I]到[4]的四个要素。[I]是将查询数据的开头的字符“ / ”起到下一个“ / ”为止的结构条件切出的要素。轴为“child”,要素指定字符串为“book”。[2]、[4]也同样地,轴是“child”,要素指定字符串分别为“ed itor”、“title”。[3]是轴名为“parent”并且要素指定字符串为“node O”的结构条件。“node O”不是要素名,是对任意种类要素进行指定的字符串。
[0099]图15是表示本实施方式中的结构条件改写处理的流程的流程图。该图15的流程图中,步骤SlOl的处理与第一实施方式中说明的步骤S21相同,因此省略说明。
[0100]接着步骤SlOl的处理,结构条件改写部28判断在步骤SlOl中取得的要素P的轴名是否为子孙结构条件的一种即child (步骤S102)。
[0101]判断为要素P的轴名为子孙结构条件的一种即child时(步骤S102:是),结构条件改写部28将结构条件内的要素指定字符串作为改写参数X (步骤S103)。接着,结构条件改写部28判断分割列表是否为空(步骤S104)。
[0102]判断为分割列表不为空时(步骤S104:否),结构条件改写部28取得分割列表的开头的要素Q (步骤S105)。接着,结构条件改写部28判断要素Q是否为轴的值为“parent”并且要素指定字符串为“node O”的结构条件(步骤S106)。
[0103]判断为要素Q是轴的值为“parent”并且要素指定字符串“node O”的结构条件时(步骤S106:是),结构条件改写部28从图16所示的表中取得改写基准查询Y (步骤S109)。图16是结构条件改写中的两个连续的结构条件的改写规则的一例。图16具有“编号”、“开头轴名”、“后续轴名”、“后续要素字符串”、“改写基准查询”的项目。“编号”是对每个改写规则分配的识别编号。本次为了简化说明,仅设为一个。“开头轴名”是最初检查的结构条件的轴名。“结构轴名”是开头的结构条件的后的结构条件的轴名。“后续要素字符串”是开头的结构条件的后的结构条件的要素字符串。“改写基准查询”是每个规则的改写查询的基准模板。[参数C]是改写基准查询的能够变更的参数部分。图16的规则需要相应条件连续的两个结构条件,但改写基准查询与图10的改写基准查询相比较,能够变换为简单的形态。
[0104]接着,结构条件改写部28将改写基准查询Y的[参数C]的部分改写为改写参数X(步骤S110)。接着,结构条件改写部28将改写了的结果追加至改写查询(步骤S111)。接着,结构条件改写部28从分割列表删除要素Q (步骤S112)。
[0105]接着,结构条件改写部28判断分割列表是否为空(步骤S108)。判断为分割列表为空时(步骤S108为是),结构条件改写部28使结构条件改写处理结束并输出改写查询。
[0106]另一方面,判断为要素P的轴名不是子孙结构条件的一种即child时(步骤S102:否),不改写要素P而是将其直接原样地追加至改写查询(步骤S107)。接着,进入步骤108重复同样的处理。
[0107]另一方面,分割列表为空时(步骤S104:是),进入步骤S107再次重复相同的处理。
[0108]另一方面,判断为要素Q不是轴的值为“parent”并且要素指定字符串为“nodeO”的结构条件时(步骤S106:否),进入步骤S107,再次重复相同的处理。
[0109]在此,用图14中例示的结构条件分割结果,对进行了一般的结构条件改写时的处理的概要进行说明。
[0110]首先,接受图14的由[I]至[4]这四个要素构成的分割列表作为输入,结构条件改写部28取出最初的要素[I]后,从列表中删除[I](步骤S101)。接着,结构条件改写部28判断[I]的轴名是否为“child”结构条件,由于符合条件,因此将要素指定字符串“book”作为改写参数X (步骤S102,S103)。
[0111]接着,结构条件改写部28判断分割列表是否为空,由于不为空,因此取得[2]作为开头要素Q (步骤S104,S105)。接着,由于Q的轴不是“parent”,因此将要素P即[I]追加至改写查询(步骤S106,S107)。接着,由于分割列表不为空,因此结构条件改写部28取得列表的开头的[2]作为要素P (步骤S108,S101)。由于要素P即[2]的轴是“child”的结构条件,因此将要素指定字符串“editor”作为改写参数X (步骤S102,S103)。
[0112]接着,结构条件改写部28判断分割列表是否为空,由于不为空,因此取得[3]作为开头要素Q (步骤S104,S105)。接着,由于是Q的轴是“parent”并且要素字符串是“nodeO”的结构条件,因此从图16的表中取得改写基准查询Y(步骤S106,步骤S109)。接着,结构条件改写部28将改写基准查询Y的[参数C]的部分改写为改写参数X即“editor”(步骤S110)。接着,结构条件改写部28将改写基本Y追加至改写查询,从分割列表中删除要素Q (步骤 Slll,S112)。
[0113]接着,结构条件改写部28由于分割列表不为空,因此取得列表的开头的[4]作为要素P (步骤S108,S101)。由于要素P即[4]的轴是“child”的结构条件,因此结构条件改写部28将要素指定字符串“title”作为改写参数X (步骤S102,S103)。接着,分割列表为空,因此结构条件改写部28将要素P即[4]追加至改写查询(步骤S104,S107)。
[0114]接着,分割列表为空,因此结构条件改写部28使结构条件改写处理结束(步骤S108)。图17是用图14中例示的结构条件分割结果进行了结构条件改写的改写查询的结果。与[2]、[3]相应的结构条件以一个改写规则被简单地改写为以()开始的。
[0115]结构条件改写部28的结构条件改写处理结束时,结构条件改写部28输出被改写了的X Query0以后,与第一实施方式同样地,查询执行部29执行被改写了的X Query,进行检索并输出结果(步骤S4)。
[0116]查询执行部29的查询执行处理结束后,最后检索接口部26将查询执行部29的输出作为结果数据返还给客户终端3 (步骤S5)。
[0117]图18是对于图4的结构化文档Dl、D2执行了图13中例示的改写X Query的结果。按照“列出作者名为‘editor’要素以下所记述的结构化文档的题目”这一原来的X Query的意图,结构化文档Dl由于表示作者名的要素名不是“editor”而是“author”,因此不被输出,结构化文档D2由于表示作者名的要素名是“editor”,因此作为兄弟要素的“title”要素被输出。
[0118]以上,如举出具体的例子进行了说明那样,根据本实施方式,对子孙结构条件以外的结构条件进行改写时,与前后的其他的结构条件组合来改写,由此与对相应部分的结构条件单独进行改写相比能够实现简单的改写结果。
[0119]以上说明的各实施方式中的服务器I的功能例如通过计算机的运算装置即CPUlOl执行作为应用程序而安装的结构化文档管理程序来实现。
[0120]另外,各实施方式中的服务器I中执行的结构化文档管理程序,例如以能够安装的格式或能够执行的格式的文件记录于CD-ROM、软盘(FD)、CD-R、DVD (Digital VersatileDisc:数字多功能光盘)等计算机可读取的记录介质110中来提供。
[0121]另外,也可以构成为,将各实施方式中的服务器I执行的结构化文档管理程序保存在与因特网等网络2连接的计算机上,并通过网络2中转下载来提供。另外,也可以构成为通过因特网等网络2中转来提供或发布各实施方式中的服务器I执行的结构化文档管理程序。并且,也可以构成为将各实施方式中的服务器I执行的结构化文档管理程序预先装Λ R0M102等来提供。
[0122]另外,各实施方式中的服务器I执行的结构化文档管理程序为包含保存接口部24、检索接口部26、结构条件分割部27、结构条件改写部28、查询执行部29等的模块构成,作为实际的硬件,CPU (处理器)101从HDD104等读出结构化文档管理程序并执行,由此上述各部载入于主存储装置(例如RAM103),保存接口部24、检索接口部26、结构条件分割部27、结构条件改写部28、查询执行部29等在主存储装置上生成。
[0123]通过以上所述的至少一个实施方式涉及的结构化文档管理系统,将输入查询数据变为简单的结构条件来执行结构对照处理,所以即使在输入查询数据包含复杂的结构条件时,也能够实现结构对照处理的高速化,并高速地执行包含复杂结构条件的查询数据的检索。另外,仅对输入查询数据的相应的结构条件部分进行改写,因此能够以简单的构成实现。并且,在改写为结构条件时,以改写了的子孙结构条件的输入仅以通过之前的查询数据的处理获得的结构化文档作为对象的方式来改写。由此,不是对结构化文档集合整体,而仅对通过到此为止的处理筛选出的结构化文档集合实施改写了的子孙结构条件即可,因此能够高速地执行检索。
[0124]此外,对本发明的几个实施方式进行说明,但这些实施方式作为例子表示,无意限定发明的范围。这些新的实施方式能够通过其他各种方式实施,在不脱离发明的主旨的范围内,能够进行各种省略、置换、变更。这些实施方式及其变形包含于发明的范围及要旨,并且包含于权利要求书所记载的发明及其均等的范围内。
【权利要求】
1.一种结构化文档管理装置,包括: 查询数据受理部,受理查询数据的输入,所述查询数据用于检索具有层次化后的逻辑结构的结构化文档; 结构条件分割部,将上述查询数据分割为包含结构条件的多个要素中的每个要素; 结构条件改写部,在分割出的上述结构条件的种类是根据结构化文档的上位层次指定下位层次的子孙结构条件以外时,将上述结构条件改写为按结构条件的每个种类预先确定的包含子孙结构条件和结合运算处理的改写查询,以避免对上述结构条件的前后的结构条件带来影响;以及 查询执行部,将上述结构条件及包含改写查询的查询数据作为输入,输出检索结果。
2.如权利要求1所述的结构化文档管理装置, 上述结构条件改写部进一步地,对于上述分割出的各上述结构条件中的第一结构条件,在上述结构条件的种类为将下一层次的节点作为取得对象的结构条件时,取得通过第一结构条件指定的字符串和位于上述第一结构条件之后的第二结构条件,判断上述第二结构条件是否为以上一层次的节点的任意的字符串作为取得对象的结构条件, 在判断为上述第二结构条件是以上一层次的节点的任意的字符串作为取得对象的结构条件时,将上述第一结构条件及第二结构条件变换为具有对通过上述第一结构条件指定的字符串进行指定的子孙结构条件的单一的上述改写查询。
3.一种结构化文档管理方法, 受理用于检索具有层次化后的逻辑结构的结构化文档的查询数据的输入, 将上述查询数据分割为包含结构条件的多个要素中的每个要素, 在分割出的上述结构条件的种类是根据结构化文档的上位层次指定下位层次的子孙结构条件以外时,将上述结构条件改写为按结构条件的每个种类预先确定的包含子孙结构条件和结合运算处理的改写查询,以避免对上述结构条件的前后的结构条件带来影响, 将上述结构条件及包含改写查询的查询数据作为输入,输出检索结果。
4.一种结构化文档管理程序,用于使计算机执行以下功能: 查询数据受理功能,受理查询数据的输入,该查询数据用于检索具有层次化后的逻辑结构的结构化文档; 结构条件分割功能,将上述查询数据分割成包含结构条件的多个要素中的每个要素; 结构条件改写功能,在分割出的上述结构条件的种类是根据结构化文档的上位层次指定下位层次的子孙结构条件以外时,将上述结构条件改写为按结构条件的每个种类预先确定的包含子孙结构条件和结合运算处理的改写查询,以避免对上述结构条件的前后的结构条件带来影响;以及 查询执行功能,将上述结构条件及包含改写查询的查询数据作为输入,输出检索结果。
【文档编号】G06F17/30GK103827861SQ201280002750
【公开日】2014年5月28日 申请日期:2012年9月7日 优先权日:2012年9月7日
【发明者】黑田洋介, 稻田稔, 服部雅一 申请人:株式会社东芝, 东芝解决方案株式会社