专利名称::用于结构化文档管理的装置和方法
技术领域:
:本发明涉及用于结构化文档管理的装置和方法,其存储和检索具有层次逻辑结构的结构化文档数据。
背景技术:
:一些系统被认为是存储和检索由XML(可扩展标签语言)等描述的结构化文档数据的结构化文档管理系统。第一种系统是将结构化文档数据直接作为文本文件来管理的系统。第一种系统具有以下问题,当数据量变大时,存储效率会降低。另外,在第一种系统中,使用结构化文档的属性进行检索变得困难。第二种系统是在RDB(关系数据库)中管理结构化文档数据的系统。第二种系统广泛地用于骨干系统等。第三种系统是使用OODB(面向对象数据库)来管理结构化文档数据的系统,OODB是为管理结构化文档数据而开发的。第三种系统例如是XML兼容RDB,其中RDB被扩展。由于RDB在其中以平表(flattable)的格式来存储数据,因此需要将XML数据的层次结构与表相关联的复杂映射。由于这种映射,如果有关表的预先的结构(纲要(schema))没有充分设计,那么性能就会恶化。因此,近些年来,提出了替代第一种到第三种系统的第四种系统。第四种系统是专用于管理结构化文档数据的系统。在第四种系统中,由于在不执行特定映射处理的情况下存储具有多种层次结构的XML数据,所以在存储和获取时不存在特别的开销。另外,不需要昂贵的预先的纲要设计,因此,可以根据商业环境中的改变来自由地改变XML数据的结构。即使在有效地存储了结构化文档数据时,如果没有提供取得所存储的数据的装置,仍然是没有意义的。作为取得所存储的数据的装置,使用了查询语言。如同在RDB世界中使用SQL(结构化查询语言)一样,在XML中建立了XQuery(XML查询语言)。XQuery是用于如处理数据库那样处理XML数据的语言,并且提供了取得、聚集和分析匹配预定条件的数据集合的方法。由于XML数据具有层次结构,其中组合了父元素(parentageelement)和兄弟元素(siblingelement),因此提供了遍历该层次结构的方法。例如,在JP-A2001-034618和2000-057163(Kokai)中公开了一种技术,用于当遍历以这种方式存储的结构化文档数据的层次结构时,检索包括由检索条件指定的特定元素和特定结构的结构化文档数据。虽然XML数据具有层次结构,其中组合了父元素和兄弟元素,但是存储效率较低。随着结构化文档数据的结构变大、存储在数据库中的结构化文档数据的数量变大或者检索条件更加复杂,需要更长的时间来执行用于在构成相应结构化文档数据的层次结构的元素之间进行遍历(trace)的处理。当结构化文档数据的数量或者尺寸变大时,所存储的结构化文档数据不能在存储器上开发,并且他们中的大多数被存储在例如硬盘这样的辅助存储器中。特别地,在专用于管理结构化文档数据的系统中,在不改变元素之间的层次结构的情况下存储结构化文档数据。因此,存储在辅助存储器中的结构化文档数据的元素应该被频繁地访问以检查是否存在作为检索条件而指定的元素或结构。在复杂的检索条件的情况下,元素被更加频繁地访问。即,根据在JP-A2001-034618和2000-057163(Kokai)中公开的层次结构遍历方法,当构成数据库中相应结构化文档数据的层次结构的元素数据被遍历时,检索具有由检索条件指定的元素和结构的结构化文档数据。因此,不能高速执行检索。特别地,由于结构化文档数据的尺寸变大,将被检索的结构化文档数据的数量变大或者查询数据(检索条件)更加复杂,更加难以提高检索处理的速度。更具体地,这样的问题如下所述。(1)在复杂的XQuery的情况下,查询包括多个路径模式。当验证多个路径模式时,反复地遍历一个结构化文档。特别地,在处理不能存储在内存中的大型结构化文档数据的情况下,间歇地发生针对相同页的盘I/O,并且性能严重恶化。(2)在XPath(Xquery的子集)的情况下,在高命中率时性能下降。即,当遍历过大多数结构化文档集合时,发生许多磁盘I/Ox。作为一种抑制对相同的结构化文档数据进行数据扫描的思想,提出了结构化文档流处理的技术。例如,包括了下面的参考文件。(参考文件1)Y.Diao,P.Fischer,andM.J.Franklin.YFilterEfficientandScalableFilteringofXMLDocuments.Inthe18thInternationalConferenceofDataEngineering,SanJose,February2002。(参考文件2)I.Avila-Campillo,D.Raven,T.Green,A.Gupta,Y.Kadiyska,M.Onizuka,andD.Suciu.AnXMLToolkitforLight-weightXMLStreamProcessing,2002。该处理用于在不在主存储器中存储全部结构化文档数据的情况下查询Xpath等。还提出了一种系统,其将出现在多个XPaths上的多个路径模式转换为状态转变并且处理它们。但是,在当前的环境下,会出现了下列问题。(3)在没有高命中率的情况下,在XPath上性能明显恶化。由于基于回溯,用于CPU处理的开销变大。由于处理的属性,使用索引的查询处理较难。如上所述,难以用最少的盘I/O和较少的计算量来处理在其中存储结构化文档数据的数据库的多个路径模式。
发明内容根据本发明的一个方面,一种结构化文档管理装置包括文档数据接受单元,其接受具有层次逻辑结构的结构化文档数据的输入;结构指南数据存储单元,其存储结构指南数据,该结构指南数据是结构化文档数据的层次结构信息的概要;结构流转换单元,其对所接受的结构化文档数据进行语法分析,并且使用结构指南数据将结构化文档数据中的结构信息转换为作为一维序列数据的结构流数据;以及结构流数据存储单元,其存储所转换的结构流数据。根据本发明另一方面,一种管理结构化文档的方法包括接受具有层次逻辑结构的结构化文档数据的输入;对结构化文档数据进行语法分析,以及使用结构指南数据将所述结构化文档数据中的结构信息转换为作为一维序列数据的结构流数据,其中,所述结构指南数据是所述结构化文档数据的层次结构信息的概要;以及在结构流数据存储单元中存储所述结构流数据。图1是说明根据本发明第一实施例的结构化文档管理系统的系统构造实例的示意图;图2是服务器和客户的模块结构图;图3是说明服务器和客户端的示意结构的框图;图4是说明结构化文档数据的一个例子的示图;图5是说明结构指南数据的一个例子的示图;图6是说明结构流数据的一个例子的示图;图7是说明用于结构指南数据的更新处理的流程的流程图;图8是说明查询数据的一个例子的示图;图9是示意性地说明路径模式编译处理的流程的流程图;图10是说明关于查询数据Q1的主结构图的示意图;图11是说明基于图10的主结构图的次结构图的示意图;图12是说明关于查询数据Q1的路径模式处理表的一个例子的示图;图13是说明用于创建路径模式处理表的处理的流程的流程图;图14是说明用于扫描结构流的处理的流程的流程图;图15是说明将Token压入Place的处理的流程的流程图;图16是当将图6所示的结构流数据提供给图12中所示的路径模式处理表时的进度表;图17是说明根据本发明第二实施例的查询数据Q2的一个例子的示图;图18是说明关于查询数据Q2的主结构图的示意图;图19是说明基于图18的主结构图的次结构图的示意图;图20是说明用于查询数据Q2的路径模式处理表的一个例子的示图;图21是当将图6所示的结构流数据赋给图20所示的路径模式处理表时的进度表;图22是说明根据本发明第三实施例的用于同时处理查询数据Q1和Q2的路径模式处理表的一个例子的示图;图23是说明根据本发明第四实施例的附有预先的结构信息的结构化文档数据的一个例子的示图;图24是说明其中设置了跳过过程的路径模式处理表的一个例子的示图。具体实施例方式下面参考附图详细说明根据本发明的用于结构化文档管理的装置和方法的优选实施例。参考图1到16说明本发明的第一实施例。图1是说明根据第一实施例的结构化文档管理系统的系统构造实例的示意图。如图1所示,假定服务器客户端系统是结构化文档管理系统。在这个系统中,作为结构化文档I/O设备的多个客户端计算机(下文简称为客户端)3与作为结构化文档管理装置的服务器计算机(下文简称为服务器)1通过例如LAN(局域网)等等的网络2相连。图2是服务器1和客户端3的模块结构图。服务器1和客户端3分别是例如普通的个人计算机。服务器1和客户端3每一个由CPU(中央处理单元)101、ROM(只读存储器)102、RAM(随机访问存储器)103、HDD(硬盘驱动器)104、介质驱动设备105(例如CD-ROM驱动器)、通信控制设备106、显示单元107和输入单元108等构成。CPU101执行信息处理。ROM102是只读存储器,其中存储BIOS等。RAM103以可重写状态存储各种数据。HDD104用作多种数据库并且在其中存储多种程序。介质驱动设备105存储信息,使用存储介质110将信息分发到外部并且从外部获得信息。通信控制设备106使用经由网络2与其他外部计算机进行的通信来发送信息。显示单元107例如CRT(阴极射线管)和LCD(液晶显示器)为操作者显示处理过程和结果等。输入单元108(例如键盘和鼠标)通过操作者将命令、信息等输入CPU101。总线控制器109仲裁在这些单元之间发送/接收的数据。在服务器1和客户端3中,当用户为他们通电时,CPU101调用ROM102中的加载程序,并且将用于管理计算机的硬件和软件的称为OS(操作系统)的程序从HDD104读取到RAM103中,以便起动OS。这种OS根据用户操作起动程序,读取和保存信息。作为典型的OS,已知Windows(登记商标),UNIX(登记商标)等。在OS上运行的操作程序被称为应用程序。应用程序不限于运行在预定OS上的应用程序,其可以是用于使OS执行后面所述的多种程序中的一些的应用程序,或者是作为构成预定应用软件和OS的一组程序文件的一部分而包含的应用程序。在服务器1中,将结构化文档管理程序作为应用程序存储在HDD104中。即,HDD104用作存储结构化文档管理程序的存储介质。另一方面,在客户端3中,将结构化文档I/O程序作为应用程序存储在HDD104中。即,HDD104用作存储结构化文档I/O程序的存储介质。通常,将被安装到服务器1和客户端3的HDD104中的应用程序被记录在存储介质110中,该存储介质110包括多种光盘,例如CD-ROM和DVD,以及多种磁光盘、多种磁盘(例如软盘)和多种类型的介质(例如半导体存储器)。记录在存储介质110中的操作程序被安装到HDD104。因此,诸如光信息记录介质(例如CD-ROM)和磁介质(例如FD)这样的、具有便携性的存储介质110可以是存储了应用程序的存储介质。此外,例如可以通过通信控制设备106从外界获取应用程序,并安装在HDD104中。在服务器1中,当在OS上运行的结构化文档管理程序被启动时,CPU101执行各种运算处理以便根据结构化文档管理程序集中地控制各个单元。另一方面,在客户端3中,当在OS上运行的结构化文档I/O程序被启动时,CPU101执行各种运算处理以便根据结构化文档I/O程序来集中地控制各个单元。下面说明将被服务器1和客户端3的CPU101执行的各个运算处理的不同处理。图3是说明了服务器1和客户端3的示意结构的框图。如图3所示,客户端3具有根据结构化文档I/O程序的结构化文档登记单元11和检索单元12。结构化文档登记单元11将从输入单元108输入的结构化文档数据和之前存储在客户端3的HDD104中的结构化文档数据登记在服务器1的结构化文档数据库(结构化文档DB)21中。结构化文档登记单元11将存储请求与结构化文档数据一起发送至服务器1。这里,图4说明了结构化文档数据的一个例子。用于描述结构化文档数据的典型语言包括XML(可扩展标签语言)。通过使用XML来描述图4中所示的结构化文档数据。关于XML,构成文档结构的单个部分称为“元素”,通过使用标签来描述元素。具体地说,显示元素的开始的标签(开始标签)和显示元素的结束的标签(结束标签)的将数据夹在中间,从而表示一个元素。被开始标签和结束标签夹在中间的测试数据是包含在由开始标签和结束标签表示的一个元素中的文本元素。在图4的例子中,显示了由标签<books>包围的路径元素(routeelement)。元素“books”包含两个由标签<book>包围的子元素。该<book>包括由标签<title>和<author>包围的多个子元素。元素<title>具有文本元素“XML数据库”。第一个<book>具有两个<author>元素,并且第二个<book>具有一个<author>元素。关于<title>和<author>的顺序,在第一个<book>中<title>首先出现,并且在第二个<book>中<author>首先出现。如图4所示,通过使用元素ID,即Ei(i=1到20),来引用包含文本元素的各元素。检索单元12根据用户通过输入单元108输入的指令创建查询数据,其中有检索条件等用于在结构化文档DB21中检索期望的数据。检索单元12将包含查询数据的检索请求发送给服务器1。检索单元12接收从服务器1发送的、对应于检索请求的结果数据,并且将结果数据显示在显示单元107上。另一方面,服务器1具有根据结构化文档管理程序的结构化文档DB21、存储处理单元22和检索处理单元23。存储处理单元22从客户端3接受存储请求,并且执行处理以将从客户端3发送的结构化文档数据存储在结构化文档DB21中。存储处理单元22由存储接口单元24和结构流转换单元25构成。存储接口单元24接受结构化文档数据的输入(文档数据接受单元)以及调用结构流转换单元25以便存储结构化文档数据。结构化流转换单元25用作结构化流转换装置,并且对从客户端3发送的结构化文档数据进行语法分析。结构化流转换单元25参照并且更新作为结构化文档DB21的结构指南数据存储单元的结构指南数据区域21a中的结构指南数据。然后,结构流转换单元25将结构化文档数据中的层次结构信息转换为结构流数据,以便将他们存储在作为结构化文档DB21的结构化流数据存储单元的结构流数据区域21b。此外,结构流转换单元25将结构化文档数据中的文本信息转换为文本数据,以便将他们存储在结构化数据库DB21的文本数据区域21c中。这里,结构指南数据是存储在系统中的整个结构化文档数据集合的层次结构信息的概要。结构指南数据具有层次结构,并且具有以下条件。(1)存储在系统中的结构化文档数据集合出现的全部路径都出现在结构指南数据中。(2)出现在结构指南数据中的全部路径都出现在系统中存储的结构化文档数据集合中。(3)出现在结构指南数据中的全部路径是唯一的。图5是说明结构指南数据的一个例子的示图。作为对图4中所示的结构化文档数据进行语法分析的结果,创建结构指南数据。结构指南数据具有由多个指南节点和弧构成的层次结构。为每个指南节点提供标签名称。在文本元素上标记集成的标签名“text()”。为路径的指南节点设置标签名称“ROOT”。将唯一ID(GID)相应地分配给指南节点,并且使用IDG0到G11。每当在结构化文档DB21中存储新的结构化文档数据时,将还不存在的指南节点集合添加到结构化文档DB21的结构指南数据区域21a,以使得以逐渐增加的方式更新结构指南数据。结构流数据是其中设置了GID的排列,其中,当以深度优先的方式来遍历结构化文档数据的路径时,GID对应于通过的文档节点。图6是说明结构流数据的一个例子的示图。结构流数据的例子使得通过使用图5中所示的结构指南数据能够将图4的结构化文档数据转换为序列数据。通过使用GID来数字化每个序列元素。E0对应于“ROOT”的序列元素(G)0E1对应于“books”的序列元素(G)1E2对应于“books”的序列元素(G)2…………当结构化文档数据被转换为序列数据,即结构流时,二维结构化数据可以被当作一维序列数据来处理。参考图7中所示的流程图,说明了由结构流转换单元25执行的用于更新结构指南数据的操作。客户端3发送将被存储的结构化文档数据以及包括作为结构化文档数据的存储目的地的文件夹的GID的存储请求消息。客户端3可以以下面的方式获得作为存储目的地的文件夹的GID。客户端3的检索单元12具有GUI(图形用户接口)用于显示结构化文档DB21的示意结构(见图5)。当用户从通过GUI显示的结构中指出作为存储目的地的文件夹的期望的指南节点(文件夹)时,创建用于获取对应于该指南节点的GID的查询数据以便发送到服务器1。在服务器1中,从查询数据获取特定指南节点的GID以便返回到客户端3的检索单元12。检索单元12将所获得的GID发送到结构化文档登记单元11。服务器1接收包括将被存储的结构化文档数据和存储目的地的文件夹的GIDp的存储请求消息(步骤S101)。包含在存储请求消息中的将被存储的结构化文档数据被发送到存储处理单元22的结构流转换单元25以便进行语法分析。因此,获得由结构化文档数据的多个目标数据构成的层次结构,并且在存储器上开发(步骤S102)。即,结构流转换单元25具有对应于XML分析程序的功能,其通过对作为XML数据的结构化文档数据执行语法分析处理,从而在DOM(文档对象模型)格式的对象数据上进行展开。接下来,结构流转换单元25遍历分析结果的路径,以便提取结构化文档数据的结构,即,对应于结构化文档数据中的元素的多个节点和由多个节点构成的结构。结构化文档数据的结构由Sc指示(步骤S103)。结构流转换单元25使用存储目的地的文件夹的GID作为关键字从结构指南数据区域21a获得结构。所获得的GID由GIDp指定。结构流转换单元25使用GIDp作为关键字扫描结构指南数据区域21a,以便获得相应的结构(步骤S104)。所获得的结构由Sp指示(步骤S105)。之后,结构流转换单元25比较Sc与Sp(步骤S106)。这是树的简单匹配。即,当对应于Sc中的结构元素的Sp中的结构元素存在时,将Sp中结构元素的GID赋给Sc中的结构元素。当对应于Sc中的结构元素的Sp中的结构元素不存在时,将新的GID赋给存在于Sc中的新元素,并且将新元素添加到Sp。另外,将新GID赋给存在于Sc中的新元素。对Sc中的全部结构元素执行该操作。另外,结构流转换单元25将更新后的Sp存储在结构指南数据区域21a中(步骤S107)。从而,更新了将被存储在结构指南数据区域21a中的结构指南数据。最后,将GID赋给将被存储的结构化文档数据的每一个元素(步骤S108)。即,将GID赋给将被存储的结构化文档数据的每一个元素的时间是在更新结构指南数据区域之后。检索处理单元23从客户端3接受检索请求,并且在结构化文档DB21中检索与指定条件匹配的数据(查询数据),以便返回检索到的数据作为结果数据。检索处理单元23由检索接口单元26、路径模式编译单元27和结构流扫描单元28构成。检索接口单元26接受查询数据的输入(查询数据接受装置),并且调用路径模式编译单元27和结构流扫描单元28,以便获得满足所接受的查询数据的结果数据。路径模式编译单元27用作路径模式编译装置,对从客户端3发送的查询数据集合进行语法分析,并且参照结构化文档DB21的结构指南数据区域21a中的结构指南数据,以便创建路径模式处理表29,其用于指定专用于查询数据的处理顺序。图8是说明查询数据的一个例子的示图。在XML中,存在在W3C提出的称为XQuery(XML查询语言)的查询语言,并且查询数据根据基于这种语言的查询描述方法。图8显示了以下查询数据Q1。Q1返回结构化文档数据“book”的列表。在结构化文档数据“book”中,元素“book”存在于结构化文档DB“ROOT”的层次树中,并且元素“author”存在于元素“book”中,以及元素“first”存在于元素“author”中。参考图9中的流程图来说明在路径模式编译单元27中的路径模式编译处理。根据从客户端3发送的查询数据创建主结构图(步骤S1)。更具体地,对由XQuery描述的查询数据进行语法分析,并且由树格式表示标签之间的关系。当考虑图8中所示的查询数据Q1时,创建图10中所示的主结构图。使用“ROOT”作为起点来建立“book”和“//(后代或者自己)”之间的关系。“book”与“author”和“child”相关。在图8所示的Q1中,由于结构化文档数据“book”的列表被返回,为“book”设置输出节点的标记(双线)。然后,将在步骤S1创建的主结构图与结构指南数据彼此进行比较,并且创建次结构图(步骤S2)。更具体地,将主结构图和结构指南数据彼此进行比较,从而创建次结构图,其中,通过将不必要的节点转换为GID来消除它们。这里,考虑图10所示的主结构图。当计算对应于主结构图中的相应节点的GID时,结果如下。“ROOT”→(G)0“book”→(G)2“author”→(G)5“first”→(G)6此外,根据下列规则消除不必要的节点。(1)除不伴随AND条件的输出节点以外的中间节点G5(2)路径节点G0因此,创建图11所示的次结构图。最后,根据在步骤S2创建的次结构图创建路径模式处理表29(步骤S3)。图12是说明针对图8所示的查询数据Q1的路径模式处理表29的一个例子的示图。这种路径模式处理表29由下列元素构成。(1)条目表具有对应于GID的序列元素的表。在结构流扫描单元28中,通过结构流扫描处理,从结构流数据的开头元素开始顺序地读取GID。执行根据所读取的GID的过程。存在以下两个过程。(1.1)PListEID(称为Token)被添加(压入)到Place。(1.2)CList清除Place(2)Place其用作存储区域,用于保存作为中间数据的Token的队列。(3)Trans其用于连接Place和Place,并且使得保持在高位Place的Token能够流到低位Place。诸如AND和CMB这样的详细的作用被给予Trans。关于AND和CMB的说明如下。(3.1)AND如果Token存在于全部的高位Place集合,则允许Token(True)流到低位Place。(3.2)CMB如果Token存在于全部的高位Place集合中,则允许Token的组合流出(输出)。图13是说明用于创建路径模式处理表29的处理的流程的流程图(在图9中的步骤S3)。首先,Place_r是新创建的(步骤S11),并且将Plist从处理表的相应元素粘贴到Place_r(步骤S12),并且确定是否存在父节点(步骤S13)。当确定存在父节点时(步骤S13是),序列进行步骤S14,并且从父节点的处理表的相应元素粘贴CList。另一方面,当确定不存在父节点时(步骤S13否),序列进行步骤S15,从而使得从自身节点的处理表的相应元素粘贴CList。之后,确定自身节点是否是终端节点(步骤S16)。当确定自身节点是终端节点时(步骤S16是),序列返回调用源。另一方面,当确定自身节点不是终端节点时(步骤S16否),序列进行步骤S17,并且确定自身节点是否是AND条件。当确定自身节点是AND条件时(步骤S17是),创建Trans(AND)(步骤S18),并且提供从Trans(AND)到PlaceR的链接(步骤S19)。然后,创建各子节点的处理表(步骤S21),并且提供从返回值Place_n到Trans(AND)的链接(步骤S22)。重复步骤S21到S22直到处理过各子节点(步骤S20是)。当确定处理过各子节点时(步骤S20是),序列进行步骤S23,并且收回Place_r。当确定自身节点不是AND条件时(步骤S17否),创建Trans(CMB)(步骤S24),并且提供从Trans(CMB)到Place_r的链接(步骤S25)。然后,创建子节点的处理表(步骤S26),并且在提供从返回值Place_n到Trans(CMB)的链接之后(步骤S27),序列进行步骤S23从而收回Place_r。如上所述,通过从次结构图的路径节点开始递归地执行处理来创建路径模式处理表29。结构流扫描单元28用作结构流扫描装置。结构流扫描单元28从结构化文档DB21的结构流数据区域21b获取结构流数据集合,并且将该集合与路径模式处理表29进行比较以便创建结果数据。参考图14和15中的流程图说明结构流扫描单元28中的结构流的扫描处理。如图14所示,首先,顺序地取得结构流的元素(步骤S201),并且重复下列处理(步骤S203到S207),直到确定是否取得了全部元素(步骤S202是)。当确定取得了全部元素时(步骤S202是),结束结构流扫描处理。当确定未取得全部元素时(步骤S202否),参照对应于结构流的元素的条目表元素(步骤S203),并且如果存在CList(步骤S204是),则清除将连接到Clist的Place(步骤S205)。即,清空内部保持的队列。另一方面,当存在PList时(步骤S204否,步骤S206是),Token被压入将连接到PList的Place(步骤S207)。参考图15详细说明在步骤S207的处理。对于将Token压入Place,首先,Token被压入保持在Place中的队列(步骤S301)。然后,顺序地取得Place之前的Trans(步骤S302),重复下列处理(步骤S304到S309),直到确定取得了全部元素Place。当确定取得了全部元素时(步骤S303是),结束将Token压入Place的处理。当确定未取得全部元素Place时(步骤S303否),如果Trans是AND类型(步骤S304是),那么确定Token是否存在于全部高位Place集合中(步骤S305)。当确定Token存在于全部高位Place集合中时(步骤S305是),将Token(真)压入低位Place(步骤S306),并且序列返回步骤S302。另一方面,当Trans是CMB类型时,(步骤S304否,步骤S307是),确定Token是否存在于全部高位Place集合中(步骤S308)。当确定Token存在于全部高位Place集合中时(步骤S308是),输出Token的组合(步骤S309)。另一方面,当确定Token不存在于全部高位Place集合中时(步骤S308是),序列返回步骤S302。当Trans既不是AND类型也不是CMB类型时(步骤S304否,步骤S307否),执行错误处理。图16是当将图6中所示的结构流数据提供给图12中所示的路径模式处理表29时的进度表。当E0[G0]被扫描时,由于PList和CList不存在,所以不执行处理。当E1[G1]被扫描时,由于PList和CList不存在,所以不执行处理。当E2[G2]被扫描时,存在PList和CList。Place0和Place1被清空,并且将Token2压入Place0。由于Place1为空,所以Trans0不进行输出。......当E6[G6]被扫描时,PList存在。6被压入Place1。由于Token在Place0和Place1中,所以Trans0输出Place0的Token2作为输出节点。......当E13[G2]被扫描时,存在PList和CList。清空Place0和Place1,并且将Token13压入Place0。由于Place1为空,所以Trans0不进行输出。...当E15[G6]被扫描时,PList存在。将15压入Place1。由于Token在Place0和Place1中,所以Trans0输出Place0的Token13作为输出节点。...根据上述处理,输出Token2和Token13。2对应于图4中的E2,并且13对应于图4中的E13。Token2和Token13使用检索接口单元26获取存储在结构化文档DB21的文本数据区域21c中的文本数据,并且将文本数据转化为字符串作为结构化文档数据,以便作为结果数据输出到客户端3。根据实施例,对结构化文档数据进行语法分析,并且通过使用结构指南数据将结构化文档数据中的结构信息转换为作为一维序列数据的结构流数据,以便进行存储。因此,即使按照原始文档比率,也可以将结构化文档数据压缩为大约1/20,并且可以大量地减少盘的I/O,以便提高存储效率。根据本实施例,重复重要的基本操作而没有回溯,并且用于CPU处理的开销较小。因此,诸如复杂的XQuery和多个XPaths这样的用于查询数据的检索处理即使很难加速,也能够得以显著地加速。下面,参考图17到21说明本发明的第二实施例。用相同的数字指示与第一实施例中相同的部分,并且不再重复说明。在第二实施例中,查询数据的类型与第一实施例中的查询数据的类型不同。图17是说明第二实施例的查询数据Q2的一个例子的示图。图17说明下列查询数据Q2。Q2返回结构化文档数据的“book”的列表。在结构化文档数据中,元素“book”存在于结构化文档DB“ROOT”的层次树中,元素“author”存在于“book”中,两个元素“first”和“last”存在于“author”中。图18是说明关于图17的查询数据Q2的主结构图的示意图,并且图19是说明基于图18的主结构图的次结构图的示意图。如图18所示,为针对查询数据Q2的主结构图设置条件,以使得在“author”下提供两个元素“first”和“last”。因此,将AND条件提供给链接。当消除不必要的节点时,创建图19中所示的次结构图。图20是说明图17中所示的查询数据Q2的路径模式处理表29的一个例子的示图。与图12中所示的查询数据Q1的路径模式处理表29的一个例子的不同在于添加了Trans(AND)。图21是当图6中所示的结构流数据被提供给图20中所示的路径模式处理表29时的进度表。当E0[G0]被扫描时,由于PList和CList不存在,所以不执行处理。当E1[G1]被扫描时,由于PList和CList不存在,所以不执行处理。当E2[G2]被扫描时,存在PList和CList。Place0和Place3被清空,并且将Token2压入Place0。由于Place1为空,所以Trans1不进行输出。......当E5[G5]被扫描时,CList存在。Place1和Place2被清空。当E6[G6]被扫描时,PList存在。Token6被压入Place1。由于Place2为空,所以Trans0不进行输出。...当E8[G5]被扫描时,PList和CList存在。Place1和Place2被清空。当E9[G8]被扫描时,PList存在。Token9被压入Place2。由于Place1为空,所以Trans0不进行输出。......当E14[G5]被扫描时,PList和CList存在。Place1和Place2被清空。当E15[G6]被扫描时,PList存在。将Token15压入Place1。由于Place2为空,所以Trans0不进行输出。...当E17[G8]被扫描时,PList存在。将Token17压入Place2。由于Token在Place1和Place2中,所以Trans0将TokenTrue压入Place3。由于Token在Place0和Place3中,所以Trans1输出对应于输出节点的Place0的Token13。...根据上述处理,输出Token13。13对应于图4中的E13。Token13使用检索接口单元26获取存储在结构化文档DB21的文本数据区域21c中的文本数据,并且如结构化文档数据一样,将文本数据转换为字符串。字符串作为结果数据输出到客户端3。与第一实施例中图16的结构流数据相比,即使结构流数据相同,如果路径模式处理表彼此不同,就会获得不同的结果数据。下面参考图22说明本发明的第三实施例。用相同的数字指示与第一和第二实施例相同的部分,并且不再重复说明。在第三实施例中,同时处理第一实施例的查询数据Q1和第二实施例的查询数据Q2。图22是说明用于同时处理查询数据Q1和Q2的路径模式处理表29的一个例子的示图。这个可以通过综合图12所示的路径模式处理表29和图20所示的路径模式处理表29来获得。当图6所示的结构流数据被提供给图22中所示的路径模式处理表29时,获得下列输出。(1)Trans0_1输出Token2和Token13。(2)Trans1输出Token13。根据第三实施例,不仅在简单Xpath的情况下,而且在复杂的XQuery的情况下,可以通过对结构流数据的一次扫描同时输出多个结果数据。此外,当接受到多个XQuery时,可以通过对结构流数据的一次扫描同时输出多个结果数据。下面,参考图23和24说明本发明的第四实施例。用相同的数字指示与第一到第三实施例中相同的部分,并且不再重复说明。在第四实施例中,当结构化文档数据预先伴随有结构信息时,即,预先清晰地定义了结构化文档数据的结构信息时,路径模式编译单元27并入用于跳过对结构化流数据的扫描的过程。第四实施例在这一点上与第一到第三实施例不同。图23是说明预先附随有结构信息的结构化文档数据的一个例子的示图。如图23所示,对于将被处理的结构化文档数据,可以预先定义其文档结构。纲要语言(schemalanguage)使得能够进行这种定义,并且基本的一个是XML的DTD(数据类型定义)。DTD由声明(declaration)集合构成,例如元素声明、属性声明和实体声明。在图23中,声明了诸如“books”、“book”、“info”、“isbn”、“issueDate”、“year”、“month”和“day”等元素。“books”由多个“book”和一个“info”构成。“+”的含义是允许一个或者多个元素的重复。“info”由“isbn”和“issueDate”构成。“issueDate”由“year”、“month”和“day”构成。当存储新的结构化文档数据时,检查关于预先给出的DTD的有效性,并且当结构化文档数据不匹配DTD时,将他们当作有效性错误,从而不进行存储。当预先为结构化文档DB21的文本数据区域21c中的文本数据定义DTD(结构信息)时,路径模式编译单元27将用于跳过一些结构流数据的过程加入路径模式处理表29,以便能够加速结构流扫描单元28中的扫描处理。下面显示了一个例子,其中,相对于图23中所示的结构化文档数据处理图8中所示的查询数据Q1。被提供查询数据Q1的路径模式编译单元27参照图23中的DTD,以便计算包含“info”的元素。即,元素的数量是十,如下所述。(1)info(2)isbn(3)isbntext(4)issueDate(5)year(6)yeartext(7)month(8)monthtext(9)day(10)daytext将这些元素反映到结构化文档DB21的结构指南数据区域21a。另一方面,对应于查询数据Q1//book[author[first]的次结构图是如图11所示的2-6。相应的结构指南数据区域21a的部分树与对应于(1)到(10)的结构指南数据区域21a的部分树不具有公共部分。因此,当达到对应于“info”的GID12时,路径模式编译单元27确定可以跳过十个序列元素。如图24所示,路径模式编译单元27在路径模式处理表29中设置用于跳过对应于GID12的PList的十个元素的过程。当结构流扫描单元28扫描GID12时,其跳过十个结构流元素以便继续扫描处理。在上述例子中,说明了使用预先提供的结构信息来提高速度,但是也可以使用存储的结构化文档数据的统计信息来类似地提高速度。在上述例子中,考虑了预先定义DTD的情况,但是即使没有预先定义DTD,只要“info”之后的结构信息出现在结构化文档数据中,那么路径模式编译单元27就可以将用于跳过一些结构流数据的过程加入路径模式处理表29,以便类似地执行跳过过程。因此,结构流转换单元25可以将指示“info”之后的结构出现在全部结构化文档数据中的标记存储在结构指南数据区域21a中。根据第四实施例,由于可以中途再生结构流,所以,可以通过使用结构ID和统计信息(制图纲要和索引)跳过不必要的遍历。权利要求1.一种结构化文档管理装置,包括文档数据接受单元,其接受具有层次逻辑结构的结构化文档数据的输入;结构指南数据存储单元,其存储结构指南数据,该结构指南数据是所述结构化文档数据的层次结构信息的概要;结构流转换单元,其对所述结构化文档数据进行语法分析,并且使用所述结构指南数据将所述结构化文档数据中的所述结构信息转换为作为一维序列数据的结构流数据;以及结构流数据存储单元,其存储所述结构流数据。2.根据权利要求1所述的装置,还包括查询数据接受单元,其接受查询数据的输入;路径模式编译单元,其通过对所述接受的查询数据进行语法分析并且参照存储在所述结构指南数据存储单元中的所述结构指南数据来创建路径模式处理表,该路径模式处理表指定专用于所述查询数据的处理过程;以及结构流扫描单元,其从所述结构流数据存储单元中获取所述结构流数据集合,并且将所述结构流提供给所述路径模式处理表以便执行所述处理过程。3.根据权利要求2所述的装置,其中,当处理多个查询数据时,所述路径模式编译单元对涉及相应的查询数据的路径模式处理表进行综合,以便创建所述多个查询数据的路径模式处理表。4.根据权利要求2所述的装置,其中,当定义了所述结构化文档数据的结构信息时,所述路径模式编译单元将用于跳过所述结构流数据中的一些的过程加入所述路径模式处理表中。5.根据权利要求2所述的装置,其中,当所述结构信息由于所述结构化文档数据的统计信息而出现时,所述路径模式编译单元将用于跳过所述结构流数据中的一些的过程加入所述路径模式处理表。6.根据权利要求1所述的装置,其中,所述结构指南数据保持以下条件(1)至(3)(1)存储于所述系统中的所述结构化文档数据集合中出现的全部路径都出现在所述结构指南数据中;(2)出现在所述结构指南数据中的全部路径都出现在存储于所述系统中的所述结构化文档数据集合中;以及(3)出现在所述结构指南数据中的全部路径是唯一的。7.一种管理结构化文档的方法,包括接受具有层次逻辑结构的结构化文档数据的输入;对所述结构化文档数据进行语法分析,并且使用结构指南数据将所述结构化文档数据中的结构信息转换为作为一维序列数据的结构流数据,其中,所述结构指南数据是所述结构化文档数据的层次结构信息的概要;以及在结构流数据存储单元中存储所述结构流数据。8.根据权利要求7所述的方法,还包括接受查询数据的输入;通过对所述接受的查询数据进行语法分析并且参照所述结构指南数据来创建路径模式处理表,该路径模式处理表指定专用于所述查询数据的处理过程;以及从所述结构流数据存储单元中获取所述结构流数据集合,并且将所述结构流提供给所述路径模式处理表以便执行所述处理过程。9.根据权利要求8所述的方法,其中,当处理多个查询数据时,对涉及相应的查询数据的路径模式处理表进行综合,以便创建所述多个查询数据的路径模式处理表。10.根据权利要求8所述的方法,其中,当定义了所述结构化文档数据的结构信息时,将用于跳过所述结构流数据中的一些的过程加入所述路径模式处理表中。11.根据权利要求8所述的方法,其中,当所述结构信息由于所述结构化文档数据的统计信息而出现时,将用于跳过所述结构流数据中的一些的过程加入所述路径模式处理表。全文摘要结构化文档管理装置包括文档数据接受单元,其接受具有层次逻辑结构的结构化文档数据的输入;结构指南数据存储单元,其存储结构指南数据,该结构指南数据是结构化文档数据的层次结构信息的概要;结构流转换单元,其对所接受的结构化文档数据进行语法分析,并且使用结构指南数据将结构化文档数据中的结构信息转换为作为一维序列数据的结构流数据;以及结构流数据存储单元,其存储所转换的结构流数据。文档编号G06F17/30GK101025748SQ200710005309公开日2007年8月29日申请日期2007年2月14日优先权日2006年2月22日发明者服部雅一申请人:株式会社东芝