文档集内容空间的导航的制作方法

文档序号:6377279阅读:164来源:国知局
专利名称:文档集内容空间的导航的制作方法
技术领域
本发明通常涉及使用计算机进行的信息存储和检索。更具体地说,本发明涉及对文档和它们的版本进行按内容寻址并在文档版本之间导航的方法。
背景技术
现有的技术包括内容可寻址的信息、它的存储和检索的概念以及散列函数、消息摘要和描述符文件的使用,如国际公布WO 99/38093所述。国际公布WO 99/38092说明了对内容可寻址信息进行存储和访问的特定方法,而国际公布WO 01/18633说明了用于加密内容可寻址信息的方法。这些公布通过引用全部结合。
如在现有技术中所讨论的,显然,内容可寻址的方法对于以保证所存储内容的完整性的方式存储和访问文档可以是非常有用的。然而,在文档或信息可以随时间发展的地方或文档需要互相引用的地方,许多新的问题出现了。因为按内容寻址唯一标识特定的内容,所以发展内容意味着文档新的内容地址。如在现有技术中所讨论的,一种方法是使用消息摘要(例如“MD5”)来唯一地表示特定文档。然而,在有复杂的内容空间的情况下,可能需要许多文档或文档集来表示特定类型的信息(例如复杂计算机系统的用户手册集,或飞机的技术文献)。在这些情况下,单个MD5可能唯一地表示许多文档(例如,使用描述符文件),并且,单个文档可能包含许多不同的MD5,它们各引用单个文档或文档集。另外,文档集可以有许多不同的版本且随时间变化(集内的一些文档可能变化而其它的可能不变),并且两个不同的文档可能各自需要互相引用。对于这样复杂的内容空间,以确保信息完整性的方式对信息进行管理和访问就变得更加困难。
例如,考虑波音747飞机的完整技术文献。将有许多文档集,各自说明飞机特定的子系统,例如燃料子系统、通信子系统、机身子系统等等。这些文档将必定需要互相引用,并且它们将总是随时间变化。使问题更复杂的是,没有单个文献集完全说明所有使用的747。尽管可以有主文献集一般地说明747飞机,带着唯一的序列号滚离装配线的每一架飞机将具有它自己专用的文献集,因为它有不同的选择并且可能指定给不同的的航空公司。因此,原始文献不同版本的存在不但是因为特定飞机的文献集随时间变化,而且因为具有不同选择的不同飞机将需要原始文献的不同版本。然后,当零件变化时、当过程变化时以及当数以百计的FAA指令接收和编译时,747飞机的所有这种技术文献将随时间发展。
为了说明问题的实质,认为飞机一旦被制造并且准备飞行时,要花几星期甚至几个月来集合所有的技术文献和确保在即将证明飞机飞行合格之前技术文献被更新并且所有的替换页被插入正确的位置。即使当所有的技术文献被更新并且最近的版本可加以使用时,在将来可以非常有用的是能够回去并回顾文献的版本,该版本存在于特定的时间点。在现实世界中,存在许多其它的例子,其中,需要以确保被检索信息的完整性的方式对具有内部引用和版本的复杂文献集进行有效存储、智能管理和访问。同样,需要机制和方法来可靠地管理这样复杂的内容,而不依赖于终端用户和复杂的软件应用来进行管理。会特别希望的是,使用现有技术的内容可寻址存储方法来处理这种问题。

发明内容
为了实现上述内容并依照本发明目的,说明了一种方法,考虑了按内容寻址和当内容随时间发展时对内容的导航,并且考虑了相互引用的文档之间的导航。引入“内容空间”的概念,它表示特定时间点的特定文档集。本发明说明了正向和反向导航遍历这样内容空间里的文档的方法。另外,说明了用于在互相引用的文档之间以循环方式导航的方法。
为了使能反向导航,当文档的新版本创建时,系统软件创建描述符文件的变体。(该新版本也可以由用户接收,或者可以接收新版本的消息摘要。)用户以某一方式表明新文档应该被认为较旧文档的较近版本。为新版本创建描述符文件,不仅包含新版本的消息摘要,还包含较旧文档的消息摘要。然后为描述符文件创建消息摘要。然后用户可以反向导航,以描述符文件的消息摘要开始。任何数目的新版本可以以这种方式链接在一起。系统软件可以允许用户反向导航并查看每个前面的版本,或者用户可以直接跳转到最早的版本。时间标记和数字签名可以与反向导航结合以提供真实性证明。
为了使能正向导航,当文档的版本创建时,系统软件创建映射表(或者多个映射表,如果需要)。(新版本也可以由用户接收,或可以接收新版本的消息摘要。)用户以某一方式表明新文档应该被认为原始文档的较近版本。为原始文档和新版本创建描述符文件,并且为每个描述符文件创建消息摘要。映射表将较旧文档的消息摘要映射成新版本的消息摘要。(可选择地,映射表映射文档本身的消息摘要而不是它们各自描述符文件的摘要。)创建高级描述符文件,它包含原始文档的消息摘要和映射表的消息摘要。高级描述符文件的消息摘要返回给用户。
然后,用户可以正向导航,以高级描述符文件的消息摘要开始。任何数目的新版本可以以这种方式链接在一起。系统软件可以允许用户正向导航和查看每个版本,或者用户可以直接跳转至最新的版本。在供替换的实施例中,原始文档的消息摘要随映射表(或映射表的消息摘要)一起返回,并且通知用户如果使用这些参数调用会话可以在希望的内容空间进行正向导航。在该供替换的实施例中,没有使用高级的描述符文件。创建的映射表还可以由系统使用以允许反向导航。
为了使能循环导航,当需要文档之间引用时,系统软件创建映射表。一个文档包含第二文档的消息摘要。创建第二文档的新版本,它包含第一文档的消息摘要,并且,映射表将原始第二文档的消息摘要映射成第二文档新版本的消息摘要。第一文档的消息摘要和映射表返回给用户为以后会话中使用,或者,创建新的描述符文件,它包含原始文档的消息摘要和映射表的消息摘要。高级描述符文件的消息摘要返回给用户。任何数目的文档可以使用这种方法以循环的方式链接。
可以组合上面的方法以允许遍历复杂内容空间的导航。


结合附图参考下列说明,可以最佳地理解本发明及其另外的优点,其中图1A-1E说明了随时间发展的简单的文档集。
图2说明了创建文档的基于散列的唯一本征标识符的方法。
图3说明了第一类型的描述符文件和消息摘要的例子。
图4说明了第二类型的描述符文件的例子。
图5说明了第三类型的描述符文件。
图6说明了在某时文档集的内容空间,其中,用户希望通过版本反向导航。
图7详细说明了根据本发明的实施例用户如何可以通过版本反向导航。
图8是说明系统如何通过版本建立和使能反向导航的流程图。
图9说明了反向导航的可选择的实施例,其中,允许用户立即跳转至文档的原始版本。
图10说明了使用中间文件的反向导航的变体。
图11示出本例中描述符文件内容的一种显示。
图12示出图11中引用的索引文件的一种显示。
图13示出图11中引用的收据文件的内容的一种显示。
图14说明了用户希望通过版本正向导航的内容空间。
图15详细示出了用于进行正向导航的方法。
图16是说明用于建立正向导航的过程的流程图。
图17说明了正向导航的另外的例子。
图18说明了用于立即跳转至一系列版本中最近的或最新的文档版本的正向导航方法。
图19说明了映射表有多个条目的正向导航方案。
图20说明了用于允许正向导航的方法。
图21是说明基于图15和16的正向导航的流程图。
图22说明了用户希望文档X和Y各自互相引用的方案。
图23说明了允许两个文档使用散列值唯一互相标识的循环导航方法。
图24是说明用于使能两个文档之间的循环导航的流程图。
图25说明了在任何数目的文档周围进行循环导航的方案。
图26说明了在多个文档周围建立循环导航的方法。
图27A和27B说明了适于实现本发明实施例的计算机系统。
具体实施例方式
图1A-1E说明了随时间发展的简单的文档集。我们将把文档集的内容空间称作存在于特定时间点的那些文档。当然,本发明可适用于复杂得多的内容空间。所示的内容空间对于理解本发明将是有用的,并且在进入更加详细说明之前将简要说明。
图1A示出在时间t1的内容空间10,它包括文档A、B和C。在该例中,文档A在其文本内部包括对文档B和C的引用12和14。尽管这些引用可以只是文本文件名,在最适合本发明应用的实施例中,引用12和14各自是通过它们的内容唯一标识文档B和C的散列值。最好,引用12和14是各自唯一标识描述符文件的散列值,该描述符文件包含唯一标识文档的散列值。在该例中,用户创建了文档A、B和C,并且希望文档A在其内部包含对文档B和C的显式引用。
图1B示出在时间t2的内容空间20,其中内容空间已经随时间发展。在这种情况下,用户创建了文档B的新版本B1,这由16象征性地表明。因此,如果用户希望查看该文档集的最近版本,用户会希望查看文档A、C和B1。
图1C示出在时间t3的内容空间30,其中文档集已经随时间进一步发展。在该例中,用户创建了文档B的另一个版本,即文档B2。在该例中,在线性行进中文档B2不一定是文档B1的较新版本。文档B1和B2可以看作是文档B用于不同目的不同版本。例如,如果我们假定文档B是商业计划的一部分,文档B1可能对应于发行给销售部的计划的那个版本,而文档B2可能是发行给工程部的计划的那个版本。
图1D示出在时间t4的内容空间40,其中,内容空间进一步发展。在这种情况下,用户创建了文档B1的新版本,即文档B1-1。
图1E示出在时间t5的内容空间50,其中,内容空间已随时间进一步发展。在这种情况下,用户又创建了文档B的另一个版本,即B1-2,得自B1-1。在这种情况下,万一用户希望查看用于销售部的文档集的最近版本,那么终端用户会希望查看文档A、C和B1-2。另一方面,万一用户希望查看用于工程部的文档的最近版本,用户会希望查看文档A、C和B2。
因此,可以看出,文档的“版本”可以以至少两种不同的方式查看。一方面,文档的新版本是该文档的下一个版本,它可能包括改进并用于替换原始文档。例如,文档B1-1是文档B1的版本,它可能打算替换B1。另一方面,版本还可以指文档的用于不同目的的不同版本。例如,尽管文档B1和B2是文档B的不同版本,但可能的是,它们并不是用于替换文档B,只是B1是商业计划的销售版本,而B2是商业计划的工程版本。很可能的是,B1和B2都不是用于替换文档B的。意图可能是文档B凭借本身的权利是有用的,而文档B1和B2这两个文档B的新版本,对于两种不同的目的是有用的。
事实上,文档的新版本实际上是指如文档集的用户或创建者所定义的以前的文档或文档集的任何改变。例如,关于图1B,尽管文档B1可能是文档B略微修改的版本,但是文档B1也可能是根本不同于文档B的文档并且被看作是版本只是因为文档集的用户确定文档B1应该被看作是文档B的版本。事实上,没有要求较旧文档的新版本和以前的文档有任何关系。万一用户决定特定的内容被认为是某一其它内容的版本,那么它将根据本发明被认为是版本。没有要求现有文档的版本和现有文档有任何程度的相似性。
例如,万一公司希望按星期一起对它所有的新闻稿编组,每个随后星期新闻稿的价值可以被认为是以前星期新闻稿的版本,即使新闻稿随后的版本中的信息可以非常不同。另外,现有文档的版本可能事实上是在现有文档之前创建的文档。例如,万一给了用户文档F和在创建文档F之后创建的文档G,在本发明的上下文内部,用户可以宣布G是F的版本(常规的版本),或者用户可以宣布文档F是文档G的版本。
另外,对文档的显式引用和隐式引用(通过称一文档为另一文档的版本)可以以任何方式组合。例如,尽管文档B在其内部没有引用文档B1的显式引用(即用户含蓄地明白B1是B的版本),在B1被认为是文档B的版本的同时文档B可以包含对文档B1的显式引用也是可行的(如下面关于循环导航的部分中所讨论的)。可选择地,还可以存在如图所示的情况,其中,例如文档A的文档确实包含对文档B的显式引用,但是文档B没有被认为是文档A的版本。
如这里所用,术语“用户”是指这里所述系统的任何用户,例如编辑、出版商、作者、文档管理人员或其他个体或管理、存储或访问文档的计算机。这里所述的本发明的实施例中,这样的用户使用系统通过文档的版本反向或正向导航、在文档之间以循环方式导航、或者使能系统进行这样的导航。另外,不同的用户可以同时为他们自己专门的用途创建文档集的版本。本发明允许每个用户独立于其他的用户创建他们自己的版本,并且不知道其他用户也在创建不同的版本。
因此,如上所述,原始文档集的内容空间随时间发展。将有利的是,具有任何复杂性的任何文档集的用户能够在特定的时间点查看完整的文档集、能够得到用于预期目的的文档集的最近版本、并且能够自始至终回顾和查看文档集版本的发展。这种在内容空间内部正向、反向和循环导航的方法使用了马上将简要回顾的基于散列的寻址方法。
按内容寻址图2说明了为文档创建基于散列的唯一标识符的方法。为了理解以下关于正向、反向和循环导航遍历内容空间的讨论,在本发明的上下文中简要地回顾按内容寻址的方法将是有用的。
图2说明了为文档102产生唯一标识符122的方法。以下的说明使用了根据本发明表示和管理的简单文档的例子;但是,文档102可以是以数字形式表示的任何类型的信息。例如,本发明适用于任何电子表示的信息,例如计算机文件、文件组、文件标识符组或其它数据集或数据库信息。这种其它的数据集包括数字音频或视频流的帧或剪辑、数字照片、扫描的纸文档、声音消息、CAD/CAM设计、MRI或X射线数据、消息记录或文件流、系统的状态日志或审查的录入条目、电子邮件档案、检验图像等等。数据库信息包括来自关系网络、分级网络或其它数据库的记录。通常,数字信息可以包括任何二进制(或n进制)数字串。在一个实施例中,数字信息被处理为二进制大对象或BLOB。以下的说明使用简单的文档作为例子,尽管本发明并不局限于此。术语“计算机文件”也用于此,以包括前面提及的信息类型的任何电子表示。
算法104用于处理文档102以产生文档的唯一标识符106。最好,算法104是产生散列值106的散列函数。在该例中,散列函数用于产生散列值或消息摘要(“MD”)106。众所周知的散列函数包括MD2、MD5、SHA、SHA-1、SHA-256、RIPEMD-160等等如现有技术中已知的,文档上使用散列函数产生唯一的散列值或消息摘要,它是文档的“数字指纹”并且唯一地标识文档。如在这里所用,术语消息摘要或“MD”是指由散列函数创建的散列值,并且用于包括可能用于创建唯一的、按内容的文档标识符的任何类型的散列函数。图2的这个例子假定MD5算法用于创建MD 106。
消息摘要106可以如为本发明的目的那样使用,或者可以嵌入描述符文件108内部。描述符文件108包括消息摘要106和多种元数据110中的任何一个,该元数据进一步说明、标识或解释文档102的信息或其它任何信息。在上面引用的国际申请中说明了描述符文件和元数据类型的说明书。在一个实施例中,元数据110包括说明文件名、文件大小、访问权、所有者、保存期等等。也可以包括更高级的信息,例如主题、题目、作者、日期。如果需要用于特定应用的话,描述符文件用作该信息类型的占位符是有用的,并且如果情况这样要求的话,对于保持文件组的消息摘要也是有用的。
本发明适用于引用描述符文件的消息摘要,也适用于直接标识单个文档的消息摘要。在下面的说明中,上下文解释了优选(或需要)描述符文件的地方。然而通常,当说明书陈述“文档的消息摘要”时,这可以指文档的描述符文件(该文件保存文档的MD5)的消息摘要或指直接标识文档的消息摘要。
元数据110可以包括辅助定位文档并重建它的目录环境的信息、用于生成收入使用所附内容的预包装的电子商务交易或说明描述符文件及它的使用和内容的选择的信息。元数据可以指描述符文件本身,或者可以是由描述符文件引用(通过列在描述符文件内部的文档的消息摘要)的特定文档专用的。关于描述符文件的元数据包括它的类型、文件名、创建日期、注释、它表示的数据文件或目录文件夹的数目、它表示的所有文件的大小、作者、关键词等等。特定文档的元数据可以包括文件名、文件大小、创建日期、文件类型等等。为了辅助本发明的实施例,元数据还可以包括映射表、例如预期目的的内容空间的名字、版本号、发行日期或其它、是否使能内容空间用于正向或反向导航或者其它与安全有关的信息,如数字签名、时间标记、数字证书、用于数字版权管理目的的令牌或者其它任何密钥资料集。
一旦形成了描述符文件,散列函数114施加到描述符文件以产生另一个消息摘要116。消息摘要116可以马上用于使用现有技术中示出的方法唯一地定位和标识文档102。例如,描述符文件108和文档102可以存储在计算机的规则文档系统中,它们的文件名分别是由MD 116和MD 106表示的位串。或者,每个文件可以存储在数据库内部,其中,文件的关键字是每个文件各自的消息摘要。通常,文档108和文件102可以存储在任何内容可寻址的存储系统内部,其中,只使用它们的消息摘要可以对它们进行定位和检索。
在优选的实施例中,MD5消息摘要被转化为容易被人读懂和记录的形式。因为来自MD5散列函数的结果消息摘要是128位的数字,希望以供人类使用的更加易于管理的方式对该数字进行编码。可以以多种形式的任何一种对结果数字进行编码,包括十进制、十六进制或二进制。最好,数字被转化为以32为基数的数字(base 32number),该数字被映射到基本ASCII字符集中的26个字母和数字字符集。该映射被称作“ASCII铠装Armoring”,并且通常用于以有限的字符集来翻译二进制信息,用于在要求内容限制在字母数字编码的协议上传输。在优选的实施例中,在结果串内部的预定位置包括标志字符,使得串的总长度达到27个字符。该标志字符也可以提供例如使用的算法、文件类型等信息。
结果是27个字符的数字和大写字母的ASCII串。这种格式提供了紧凑形式,可以更容易地被人记下和/或被计算机处理,并且这种格式还是容易被许多软件程序容纳的形式。另外,消息摘要的这种特定表示具有这样的优点更容易被数据查询检索、编码成软件应用文件请求、由内容或资产管理系统引用、在对象浏览器中被请求、从一个文档到另一个文档电子复制和粘贴以及通过电子邮件发送等等。
在该例中,MD 116转化成27个字符的串120。在特定的实施例中,串120与因特网的名称118连接以产生URL 122。名称118可由DNS解析,并包括域名“trustclip.com”。在该特定的实施例中“trustclip.com”用于定位连接至内容可寻址的存储设备的Web服务器。操作域“trustclip.com”的服务提供商使用消息摘要作为唯一的标识符来存储这样的文档并且当提供了URL(例如URL 122)时使这样的文档对用户可用。这样,当给了用户URL 122或者另外使用它作为链接时,Web站点“trustclip.com”采用MD 120、定位文档并将它返回给用户。如果MD 120标识了包括多个文档的消息摘要的描述符文件,那么返回所有这些文档。本发明预期消息摘要(以116、120或其它形式)可以以许多方式使用以定位原始文档。如前面提到的,消息摘要可以用作文档的文件名,它是数据库里的关键词,嵌入URL或URI(或者其它文件定位符,例如IP地址或路径名)内部,或者可以只是按现状使用。
在另一实施例中,将消息摘要给服务提供商,然后服务提供商使用消息摘要以搜索和定位由消息摘要唯一标识的文档。例如,服务提供商可以搜索他们自己的内容可寻址存储器,或者可以搜索其它实体存储器里的文档。为了发现由消息摘要唯一标识的文档,消息摘要还可以在整个企业网、内部网上、因特网上或者以其它方式广播。
描述符文件在上面引用的国际申请中说明了描述符文件的实施例。下面的图提供了在本发明上下文中有用的另外的变体。
图3说明了第一类型的描述符文件和消息摘要的例子。描述符文件150具有任选的元数据和两个唯一对文档A和B定址的消息摘要152和154。当然,描述符文件可以包含单个消息摘要或包含任何数目的引用任何数目的文件的消息摘要。在该例中,示出两个文档以易于说明。在该类型的描述符文件中,只包括直接标识特定文档的消息摘要。当然,还可以为文件150计算消息摘要158,这种情况下,MD 158用于引用文档A和B。
图4说明了第二类型的描述符文件的例子。文件160包括任选的元数据和唯一标识另一描述符文件164的消息摘要162。在文件164的内部是标识文档A的消息摘要166。对于该类型的描述符文件160,只存在引用另一描述符文件的消息摘要。只示出了一个MD 162,尽管在文件内部可以有任何数目的消息摘要,各自引用另一个描述符文件。当然,可以为描述符文件160形成消息摘要168。
图5说明第三类型的描述符文件170。在该例中,文件170包括任选的元数据、唯一标识文档A的消息摘要172和标识另一描述符文件175的消息摘要174。文件175包括标识文档B的消息摘要176。对于该类型的描述符文件170,它既包括直接标识文档的消息摘要,又包括标识另一描述符文件的消息摘要。当然,可以为描述符文件170创建消息摘要178。这些各种类型的描述符文件在本发明的实施例中是有用的。
反向导航图6说明在时间t5的文档集的内容空间50,其中,用户希望通过版本反向导航。在该例中,用户可能希望以特定文档最近的版本开始或者又回顾遍历每个版本,或者直接返回到文档的原始版本。例如,如果用户持有文档B1-2,他或她可能希望沿着链接202、204和206以回顾那个文档以前的版本。或者,用户可能希望直接通过207从B1-2直接跳转回到文档B。或者,万一用户持有文档B2,用户可能希望沿着链接208以查看原始文档B。例如,文档B1可能是文档B的销售版本,而文档B2可能是文档B的工程版本。
在该简单的例子中,只示出了单个的文档。然而,将理解的是,文档B(例如)实际上可以是任何数目的文档的集合。因为文档已加到集中、因为文档已从集中删除或者可能因为集内部的单个文档已改变,所以版本B1可以被认为是文档集B的版本。还预期的是,因为集B中所有的文档已完全被替换,文档集B1可能被认为是文档集B的版本。另外,依靠系统的用户来决定哪个文档或文档集应该被认为是以前文档或文档集的新版本。
图7详细说明了根据本发明的实施例用户如何可以通过版本反向导航,并且将在讨论图8时参考该图。本发明预期系统软件(“系统”)在计算机上运行,用户和该计算机接口相连以执行本发明的各种实施例。系统创建消息摘要、存储文档、基于消息摘要检索文档、便于通过版本反向和正向导航、便于循环导航并且向用户提供接口,用户和该接口相互作用。这种系统可以在单个独立的计算机上、在分布式计算机上实现,或者可以通过因特网得到,本领域的技术人员将理解这一点。阅读了该公布内容后,本领域的技术人员将能够使用任何适当的计算环境来进行和使用本发明的各种实施例。
图8是说明系统如何建立和使能通过版本反向导航的流程图。在步骤250,用户创建或另外得到文档B。还可以向用户提供标识文档B的消息摘要。文档B是任何文档或文档集,预计将为它创建版本。在步骤254,系统创建文档B的消息摘要221、文件223和消息摘要220(如果还未提供)。在步骤258,用户创建和另外得到文档B1。在该例中,用户的意图是文档B1被认为是文档B的版本,例如,文档B1是文档B的销售版本。
在步骤262,用户向系统表明B1是文档B的版本。在该点,系统明白存在新的版本并且因此采取步骤以使能以后的通过这些版本的反向导航。在步骤266,系统创建文档B1的消息摘要。在步骤270,系统创建文档B1的描述符文件,它包括MD 222和描述符文件223(包含文档B的MD 221)的消息摘要220。任选地,还包括元数据。在步骤274,系统创建消息摘要226,它标识文档B1的描述符文件224。在该时间点,MD 226可以供应给用户,作为文档B的最近版本的唯一标识符。如在本文以后将说明的,用户不仅可以使用MD 226访问文档B1而且还可以使用MD 226反向导航至原始文档B。
假定现在用户还增加了文档B1-1和B1-2,并且意图是这些被认为是原始文档B的较近版本,在步骤278,系统使用在步骤258-266所述的方法进行循环以创建描述符文件234和244。在创建这些文件的过程中,创建消息摘要246,它标识描述符文件244。如将在以后说明的,用户不仅可以使用MD 246来查看最近的文档B,而且可以使用MD 246回顾遍历每个版本最终到达原始文档B。
现在回到步骤254,我们考虑这种情况,用户(或不同的用户)希望创建文档B的不同版本,即文档B2。在该例中,我们假定文档B2是文档B的工程版本。将理解的是,创建文档B2的用户不需要与创建B1的用户是同一用户,而且事实上,用户不需要意识到另一人正在创建不同的版本。另外,可能有任何数目的文档B的版本,各自由并未意识到其他用户也在创建文档B的版本的不同用户创建。
在该例中,在步骤286用户创建文档B2。在步骤290,利用步骤262-274的方法,创建文档B2的描述符文件的消息摘要并且在步骤294返回给用户。使用该消息摘要,用户可以查看文档B的最近的工程版本,即文档B2,或者可以反向导航至原始文档B。将理解的是,MD 246返回给销售部的用户,以便查看文档B最近的销售版本,而在步骤290创建的文档B2的消息摘要返回给销售部的用户以查看文档B最近的销售版本。这些是用于不同目的的不同消息摘要,并且可以以任何适当的方式被存储、标记和引用以表明这些消息摘要标识文档B的不同版本,即销售版本和工程版本。本领域的技术人员将意识到,任何数目的用户可以各自创建他们自己的消息摘要,涉及他们认为是内容空间在特定时间点的“他们的”版本的东西。例如,尽管MD 246标识文档B的最近销售版本,用户可能希望只把MD 236称作那个文档最近版本的标识符。在那种情况下,用户会做出选择,他们出于他们自己的目的把文档B1-1看作文档B的最近版本。
为了通过版本反向导航,用户与系统软件相互作用,如马上关于图7所述。假定销售部的用户希望查看文档B最近的销售版本,或者早期版本之一,用户得到已知是文档B的工程版本的消息摘要。用户向系统提供MD 246,然后系统能够唯一地标识描述符文件244并检索它。打开文件244后,系统通过适当的接口呈现给用户MD 238(提供到文档B1-2的链接)或标识文档下一个最近版本的MD 236。描述符文件的实现和系统如何使用描述符文件以跟随链接可以以各种方式实现。例如,实现可以只是假定列在描述符文件内的消息摘要总是以特定的顺序,并且第一消息摘要标识文档的当前版本,而第二消息摘要提供返回到下一最近版本的链接。可选择地,描述符文件内部的元数据可以提供表或其它信息,它表明哪个消息摘要引用哪个文档。
在该例中,用户可以选择、点击或另外标识作为感兴趣的链接的MD 236,然后它提供对描述符文件234的引用。一旦得到文件234,然后系统可以向用户提供选择要么使用MD 228回顾文档B1-1,要么使用MD 226进一步反向行进。通过选择MD 226,然后系统检索描述符文件224。然后用户选择通过MD 222回顾文档B1或使用MD 220查看原始文档B。这样,通过只是以单个消息摘要246(唯一标识特定的具有一串文档的版本的内容空间)开始,用户能够通过文档的版本反向导航。
图9说明可选择的反向导航的实施例,其中,允许用户立即跳转至文档的原始版本而不需要经过那个文档的每个较近的版本。在该反向导航的实施例中,在开始用户可以向系统表明他或她希望使用MD 246以查看原始文档。在该实施例中,系统然后自动反向沿着消息摘要链接直到它最终到达MD 220并能够标识和把文档B给用户。检索、打开和使用描述符文件244、234和224的消息摘要由系统自动完成并且对用户是透明的。这样,用户可以使用在图8中进行的建立步骤立即导航至原始文档。
在该实施例中,系统总是把MD 220(唯一标识原始文档B)插入每个描述符文件224、234和244。系统可以自然地明白列在描述符文件内的第一消息摘要总是原是文档的消息摘要,或者描述符文件内部的元数据可以用于表明原始文档的消息摘要存在于文件内部。
这样,然后,在创建描述符文件234的循环278期间,系统不仅把MD 226插入描述符文件234内,而且它还使用MD 226以飞快得到描述符文件224并检索MD 220,它是初始文档B的消息摘要。然后系统能够把MD 220插入描述符文件234内。以同样的方式,当创建描述符文件244时,MD 220也可以插入文件244内。
图9示出该实施例的实现,其中,描述符文件已被修改,这样各自包括MD 220,即原始文档的消息摘要。为清楚起见,在该图中没有示出所有的文档或描述符文件。描述符文件244以特定顺序列出消息摘要第一消息摘要MD 220标识原始文档;第二消息摘要MD 238标识用户可以查看的文档的当前版本;以及第三消息摘要MD236标识文档的下一个最近的版本。如果以这种方式实现,增加附加的元数据以表明哪个消息摘要标识原始文档并不是严格必需的。
然而,在一个实施例中,增加元数据以表明哪个消息摘要是哪个。为标识描述符文件244中哪个消息摘要标识哪个文档,元数据296是以表、列表或其它数据结构的形式增加的。元数据296呈现两栏,第一栏提供描述特定文档是什么的说明,而第二栏提供文档的名称。系统明白文档在该表中出现的顺序意指这些特定文档的消息摘要也以同样的顺序列出。可选择地,可以扩展表296,第三栏包含特定文档的实际消息摘要。
在该例中,当用户向系统呈现MD 246并表明他或她希望查看原始文档,系统标识和检索描述符文件244。然后,使用元数据296(或使用自然明白的即哪个消息摘要引用原始文档),系统得到MD 220并可以立即为用户标识和定位原始文档B。系统还可以允许用户查看最近的文档B1-2或通过以前的版本反向导航,这一点已经在前面说明。
图10说明了使用中间文件的反向导航的变体。为了易于说明,图10只示出图7的文件和文档的一部分。如前所述,示出的是包含文档B1-2和B1-1的消息摘要的描述符文件244和234。然而,在该变体中,文件244内部的消息摘要并不直接引用描述符文件234而是引用中间文件297。换言之,在反向导航建立过程期间创建中间文件297,它确实包含标识描述符文件234的MD 236。散列函数用于创建文件297的散列值,即MD 298。MD 298然后被放置在描述符文件244内部。
这样,当用户通过以前版本回溯时,提供附加级别的间接。在步骤270把附加的步骤增加到图8的流程图以容纳中间文件。例如,在描述符文件244创建之前,创建带MD 236的中间文件297。文件297的消息摘要然后随MD 238一起被放置在新创建的描述符244内。可以为一系列版本中的每个版本创建中间文件。还可能的是,如果希望,在版本之间创建多于一个的中间文件以提供附加级别的间接。例如,不是在版本B1-2和B1-1之间具有单个文件297,而是在描述符文件244和234之间可以有两个或更多的中间文件。文件297可以是任何适当的计算机文件。以实例形式,文件297是在微软操作系统中可用的“快捷”文件或链接文件。其它的文件类型包括URL文件、XML文件、HTML文件、文本文件等等。
反向导航例图11-13呈现了使用反向导航的例子。在一些情况下,可能有用的是,不仅反向导航遍历文档(或文档集)的早期版本,而且还能够证明早期的版本是原始文档的真实副本。该例示出本发明的实施例如何可以用于确认文档的版本并证明检索的副本是原始文档的真实副本。
在许多情况下,文档和那些文档较近的版本是电子公布的,并且这些电子文档是官方或参考版本。可以有用的是,在以后的时间点证明从计算机检索的这些电子文档的版本事实上是原始文档版本的真实副本。例如,考虑称为“Staatsblad”的比利时法律的公报。比利时政府最近停止以书面形式公布该公报,并且现在通过使其在Web站点上可得来只电子公布该公报。
然而,因为证明若干年后检索或若干年后印刷的特定文档事实上是原先在Staatsblad的Web站点上公布的真实副本,可能是困难的,所以存在问题。因为公报只在Web站点上公布,所以黑客非法修改在那个站点上的法律文档是可能的。因为没有其它的官方版本存在,证明法律文档的正确内容可能是困难的。此外,不择手段的一方可能下载官方法律文档、修改它满足他们自己的欺骗目的,而后声称他们拥有的版是原始文档的真实副本。如果没有方法证明官方Web站点的电子文档是真实文档,然后该方可能声称网站已经被黑客或反对方修改。下面用由比利时政府电子公布的法律文档作为例子来示出在任何一方以后若干年里如何可以确定从这样的Web站点获得的文档和早期版本事实上是原始文档的真实副本。
图11示出在本例的上下文中描述符文件内容的一种显示。在该例中,系统向用户呈现界面视窗302以对已经接收了唯一标识描述符文件的URL 304响应。各种各样的计算机和软件可以用于实现本发明。在该例中,运行微软操作系统的PC兼容的计算机使用因特网浏览器来访问网站“trustclip.com”。用户向浏览器提供URL 304,它不仅包括域名而且还包括27个字符的串(象征性地表示128位的消息摘要或散列值)。对接收该消息摘要响应,在域服务器上运行的系统软件可以在它的内容可寻址的存储器中定位由那个消息摘要唯一标识的描述符文件。现在视窗302将来自描述符文件的信息和其它信息的显示一起示出。标题305通过提供法语和佛兰芒语的题目连同提供用于预约服务的电子邮件地址的邀请来引入应用。日期306表明提供给系统的URL 304是对2003年1月10日电子公布的比利时法律的唯一引用。
文件名308表明通过被URL 304标识的描述符文件可得的文件。大小310表明每个文件的大小。如前所述,文件名和大小以及其它信息最好存储在描述符文件的元数据中,而在描述符文件发现的一列消息摘要提供唯一标识列出的四个文件中的每一个的链接。在该例中,服务器内容可寻址的存储器还存储这些文件并能够根据它的消息摘要使用已经在前面说明的方法或在现有技术中可用的方法来定位和访问每个文件。
两个PDF文件312是提供2003年1月10日电子公布的比利时法律的概述和完整说明的内容文件。
(虽然只示出了两个内容文件,在说明符文件内部引用任何数量的文件是可能的。)索引文件314是XML文件,它提供可用内容的索引以及到内容以前版本的链接。收据文件316是XML文件,它提供时间标记和数据签名,无可争辩地证实其中的内容和到以前版本的链接是在那个日期作为官方法律最初电子公布的内容的真实且准确的表示。选择318向用户提供了下载所选文件的方法。因此,简单的URL 304(包含消息摘要)向任何用户提供不仅对在某日公布的官方法律的访问而且对保证的以前版本的真实副本的访问,这一点将马上说明。
图12示出在图11中引用的索引文件的一种显示。视窗330提供了如浏览器视窗中所呈现的索引文件的内容的一个可能的视图。当然,其它的显示方法和其它的软件可以用于查看索引文件的内容或用来呈现它的信息。日期332表明内容涉及在2003年1月10日公布的法律。文档列表334列出了可以从官方政府站点检索每个文件的URL、文件名、文件大小和文件散列值。在该例中,列表334种示出的每个文件的文件散列值与用于从描述符文件内部引用内容文件312的散列值不是相同的。在该例中,使用不同的散列函数计算了列表334中的散列值以提供文档另外的标识。依赖于该实现,用户可以使用在列表334中提供的URL来检索文档,或者可以然后使用提供的散列值认证内容,或者用户可以使用视窗302来下载特定的PDF文件312,它存储在域“trustclip.com”的内容可寻址的存储器中。
URL 336提供了到2003年1月9日公布的这些文档的以前版本的链接。在该例中,为使对应于所列消息摘要的描述符文件被检索,域名和消息摘要相连从而允许用户可以简单容易地链接到站点“trustclip.com”。正如URL 304提供到2003年1月10日公布的文档的当前版本的唯一链接,URL 336唯一标识引用文档的早期版本的描述符文件。尽管在该例中未示出,本领域的技术人员将理解通过下面的URL 336,然后会显示给用户非常相似于视窗302的视窗,它显示了具有到这些文档的以前版本的链接的描述符文件的内容以及相应的索引文件和收据文件。
正如前面在各种实施例中说明的,视窗302中示出的描述符文件的内容包括唯一标识图12的索引文件的消息摘要。因为URL 336是索引文件的一部分,并且因为索引文件然后被散列且它的消息摘要位于302示出的描述符文件内部,可以根本不用怀疑地确认URL336是到以前版本的真实且正确的链接。换言之,黑客修改索引文件的内容或修改URL 336示出的消息摘要几乎是不可能的。值得注意的是,索引文件利用了图10说明的变体。在该例中,关于早期版本的消息摘要336不是直接包含在视窗302中的描述符文件显示内部,而摘要336包含在索引文件内部,该索引文件由描述符文件引用。换言之,索引文件是中间文件,它提供到达早期版本的附加级别的间接。
图13示出了图11中引用的收据文件的内容的一种显示。在该例中,视窗350在因特网浏览器视窗内部显示了收据文件的内容。部分352显示了关于收据文件的一般信息,包括版本、类型和创建时间。时间354提供了收据文件被时间标记的精确时间。在该实施例中,由2000年10月欧洲立法核定的专用硬件用于提供时间标记。政策356表明由当局按照欧洲立法制定的方针遵守的特定的政策。正如将被本领域的技术人员所理解的,任何的各种时间标记政策和硬件可以用于提供真实且可核实的时间标记。提供时间标记的方法和它精确的本质很可能依赖于权限、应用的类型和特定的实现而变化。
附件360列出所附的文件(除了收据文件),它包括在如在视窗302所示的描述符文件内容的内部。文件362和364是指第一和第二PDF文件,指出它们的扩展名、大小和文件散列值。文件366是指索引文件,也列出了索引文件的散列值。通过提供在收据文件(收据文件本身也被散列)内部的索引文件的散列值,提供了另外的确定性,即索引文件(包括到以前版本的链接)的内容不可能被篡改。
部分370涉及数字签名和提供数字签名的当局,即,实体HyperTrust。该部分证实实体“HyperTrust”是创建这些文件并对其数字签名的实体。实际的数字签名没有在该图中示出,但是可以在该收据文件的基础XML表示中找到。使用数字签名来验证文件的内容、认证谁对信息签名等等是本领域技术人非常熟知的方法。因此,通过使用索引和收据文件,向用户提供确定性,即当他们查看文档的最近版本时,不仅那个文档是真实的,而且他们检索的那个文档的早期版本也是真实的版本。
正向导航图14说明了用户希望通过版本正向导航的内容空间50。在该例中,拥有文档A的用户希望查看与文档B关联的随后的版本,例如,通过沿着链接402、404和406。或者,用户希望查看文档B的最近版本,通过沿着链接408直接从文档B到文档B1-2。在另一实施例中,用户持有文档B或者可能是标识文档B的消息摘要并且希望查看它后来的版本。下面的例子解决了这种情况,其中,用户拥有包括文档B的消息摘要的文档A。万一用户希望从文档B开始,描述符文件446会包含MD 428而不是MD418,并且为描述符文件446创建的消息摘要不会是MD 418’,而会标记为428’,以反映MD 428’允许从文档B(其消息摘要最初是MD 428)正向导航。
图15详细示出了用于进行正向导航的方法。在开始时,考虑这种情况,其中用户拥有特定的文档A并且系统创建了消息摘要414、描述符文件416和相应的消息摘要418以允许用户使用MD 418唯一地标识文档A。文档A包括对文档B的引用。在该例中,消息摘要428通过描述符文件426和消息摘要424引用文档B,MD 428嵌入在文档A内部。这样,持有MD 418的用户可以唯一地标识文档A并且发现唯一标识引用的文档B的链接。然而,在某一时间点,用户希望创建文档B1并且使能对那个文档的正向导航。从该起始点,我们现在转向下一幅图来说明该过程如何发生。
图16是说明用于建立正向导航的过程的流程图。在该情况下,我们假定文档A和B及它们关联的消息摘要已经存在,如前面说明的。首先,在步骤460,用户得到MD 418,它是用于标识文档A(和任何引用的文档,例如文档B)的消息摘要。在下面的例子中,我们假定为每个文档创建描述符文件并且为每个描述符文件创建相应的消息摘要。在该实施例中,每个描述符文件的元数据可以用于提供诸如文件名、创建日期等等的信息。这是优选实施例,尽管在描述符文件不是严格必需的情况中,特定文档的消息摘要可以直接标识那个文档而不使用中间描述符文件。例如,MD 428标识描述符文件426,它包含直接标识文档B的MD 424。在其它实施例中,MD 424可以直接嵌入文件A内部,这样描述符文件426就不是严格必需的。然而,通过提供同时参考多个文件的可能性并且通过提供元数据,描述符文件通常是有用的。
在步骤464,用户创建文档B1。可选择地,用户可以从别的地方得到文档B1,或者可以只是被给予文档B1的消息摘要或文档B1的描述符文件的消息摘要。在步骤468,用户向系统表明文档B1应该被认为是文档B的版本,并且希望的是,可以为了将来的使用使能正向导航。在步骤472,系统创建文档B1的消息摘要434(除非以前提供了)。最好,系统还创建描述符文件436和标识那个描述符文件并间接标识文档B1的消息摘要438。为了使能将来的正向导航,在步骤476,系统通过创建映射MD 428到MD 438的单个记录创建映射表440。换言之,MD 428(标识文档B)被映射成MD 438(它标识文档B1)。因此,在正向导航期间,映射表用于向系统表明无论何时遇到MD 428(文档B),MD 438(文档B1)应该在它的位置上使用。这样,系统可以从文档B跳转至文档B1。系统还创建消息摘要442以标识映射表。
在步骤480,系统通过包括MD 442和MD 418(最初用于标识文档A)来创建描述符文件446。然后创建消息摘要418’用于标识描述符文件446。在步骤484,将MD 418’作为将用于进行从文档A到文档B的版本的正向导航的消息摘要返回给用户。
应该注意的是,映射表440是映射表非常简单的版本,只有一个条目。映射表可以有任何数目的条目,各自把一个消息摘要映射成不同的消息摘要从而提供正向导航。例如,万一文档B实际上是包含许多文档的文档集,那么映射表会有许多条目,每个条目将文档的旧版本的消息摘要映射到文档的新版本的新消息摘要,其中,消息摘要直接标识文档。在图20所示的另一情况中,映射表可以有许多条目。在消息摘要标识描述符文件(包含多个文档的消息摘要)并且映射表映射描述符文件消息摘要的情况中,在映射表中可能只有一个条目。
在另一实施例中,映射表440不必作为描述符文件446外部的单独的表或文件存在,而是可以作为元数据驻留在文件446内部。这样将会不需要MD 442。映射表的优点是因为它可以实现为简单的表或文件,所以它可以直接存储在描述符文件内部或者它的计算的消息摘要以及存储在别处的映射表内部。通过它的散列值被计算(为了表本身或者作为描述符文件的一部分),映射表和它的内容可以生效并在以后被验证。映射表可以实现为任何类型的文件或表。在一个实施例中,映射表实现为XML文件。并且尽管映射表440示出实际标识互相映射的描述符文件的消息摘要,直接从一个到另一个映射标识文档的消息摘要也是可能的。例如,尽管映射表440将MD 428映射成MD 438,将MD 424映射成MD 434也是可能的,从而实现所希望的较低级别的映射。映射表还可以包括有用的元信息,例如与正向或反向导航有关的访问权。
图17说明了正向导航的另外的例子。图16说明了当创建文档B的新版本B1时如何可以建立映射表以使能将来的正向导航。本发明还可以处理任何这样的情况,其中,在以后创建任何数目的文档B的版本。例如,图17说明了当创建文档B1的新版本即文档B1-1时如何使能正向导航。
类似于在图16中的流程图所述的方法,用户创建或被另外提供文档B1-1并且然后向系统表明文档B1-1应该被认为是文档B1的新版本。然后,类似于步骤472,MD 504与描述符文件506和MD 508一起创建。然后,类似于步骤476,创建将MD 438(引用文档B1的消息摘要)映射成MD 508(引用文档B1-1的消息摘要)的映射表507。MD 508是标识描述符文件的消息摘要,描述符文件包含标识文档B1-1的消息摘要。然后为映射表507创建MD 514。
然后,类似于步骤480,创建描述符文件516,它包括MD 514和MD 418’(该消息摘要是以前创建的,用于允许正向导航到文档B1)。然后,创建MD 418”。最后,将MD 418”返回给用户,作为用于正向导航至文档B1-1的消息摘要。当使用MD 418”时,映射表507通过它在描述符文件516内部被引用而进入存储器,并且映射表440通过它在描述符文件446内部被引用而进入存储器。这样,当系统沿着链接418”到链接418’并最终到达允许访问文档A的链接418时,系统意识到标识文档B的消息摘要应该被标识文档B1的摘要替换,并且另外,引用文档B1的摘要应该被引用文档B1-1的摘要替换。这样,用户可以通过文档的多个版本的任何一个正向导航。
图18说明了立即跳转至文档的一系列版本中的最近或最新版本。例如,考虑这种情况,其中,不是用户一个接着一个的创建文档B的版本并在每步要求系统使能正向导航,而是突然呈现给用户内容空间50的文档。换言之,用户要么同时创建要么同时得到内容空间60的所有文档,而后向系统呈现这些文档,指出B1-1是文档B1的较近版本等等。在这种情况下,如果用户确实希望,系统可以建立映射表,将文档B立即映射到创建的最新版本,即文档B1-2。
尽管没有在图18中示出,创建引用文档B1-2(即,使用了描述符文件)的消息摘要458。然后系统创建映射表520,它将MD 428(文档B)映射成MD 458(文档B1-2)。为该映射表创建MD 524并创建也包括引用文档A的原始MD 418的描述符文件526。最后,创建MD 528并将其作为当用户希望在内容空间50导航并立即跳转至文档B可用的最新版本即B1-2时将使用的消息摘要返回给用户。当用户向系统提供MD 528时,系统访问映射表520并沿着链接418以得到文档A。因此,无论何时遇到引用文档B的MD 428,它都将被MD 458替换,MD 458提供了到文档B1-2即可用的文档B最新版本的直接链接。
图19说明了另一正向导航方案,其中,映射表有多个条目。如前所述,映射表可以有任何数目的条目,各自将一个消息摘要映射成另一个。例如,考虑内容空间570,其中,在某一时间点,文档B和C的两个新版本已经创建,即文档B1和C1。现在用户向系统表明这些新文档应该被认为是新版本。因此,当用户访问文档A时,他们会希望正向导航至新版本B1和C1。
图20说明了允许该导航类型的方法。类似于在图16的流程图中所述的方法,创建映射表530,它将MD 428(文档B)映射成MD438(文档B1)。使用前面说明的方法,创建了消息摘要538和548,其通过描述符文件分别引用文档C和C1。这些消息摘要作为条目放入表中,这样MD 538映射成MD 548。
然后创建描述符文件566,它包括MD 554和MD 418(该消息摘要引用文档A)。创建MD 558并将其作为为正向导航至文档B和C的新版本而使用的消息摘要返回给用户。因此,当用户向系统提供MD 558时,用户可以通过MD 418导航至文档A,并且映射表530将自动从文档B和C映射成它们较近的版本从而允许正向导航。
阅读了本公开内容后,本领域的技术人员将理解可以创建复杂得多的映射表,其有与具有在特定时间点创建的新版本的文档数目对应的任何数目的条目。不仅依靠用户定义他或她认为新版本是什么,而且由依靠用户定义在什么特定的时间点应该创建映射到这些新版本的映射表。例如,考虑内容空间570,如果随后而不是同时创建文档B1和C1,用户可能希望创建只提供正向导航至文档B1的映射表和消息摘要。或者,用户可能希望一直等到文档C1被创建而后创建文档A的映射表和消息摘要,它确实允许正向导航至文档B1和C1。或者,用户甚至可以选择不创建文档B1和C1的映射表,从而有效地不提供至文档B1和C1的正向导航,即使另一人可能认为它们是有效的版本。当然可能的是,该另一人可能的确创建了文档A的映射表和消息摘要,它会允许正向导航至文档B1和C1。这样,不同的用户可以为相同的文档集定义不同的内容空间。什么被认为是版本、何时创建映射表以及何时应该使能或不使能正向导航,完全由每个单独的用户决定。
图21是说明基于图15和16的正向导航的流程图。在这种情况下,用户创建了新的版本文档B1并且使能了正向导航并且得到了MD418’(标识内容空间,其中文档B1是文档B的最近版本)。
为了正向导航遍历该内容空间,在步骤580,用户首先得到该内容空间的所希望的版本的MD 418’。应该理解,使用在此所述的方法可以创建其它消息摘要,它们涉及例如创建了文档B的较近版本的内容空间的不同版本,其中创建了文档B2或C的版本等等。最好,由MD 418’唯一标识的描述符文件中的元数据包含说明内容空间版本的标题或说明。因此,用户可以得到正确的消息摘要来满足他们预期的目的。在步骤582,系统打开描述符文件446以得到映射表440和MD 418,MD 418是引用文档A和原始内容空间的原始消息摘要。在步骤584,映射表被放入存储器或被放入任何其它适当的位置(例如数据库),这样当系统进行正向导航时可以引用表。
在步骤586,系统使用MD 418和MD 414向用户提供文档A。然后,在步骤588,当用户从文档A内部选择文档B时,系统试图解析MD 428。但是,因为映射表在存储器内,在步骤590,系统将MD 428映射成MD 438并且通过文件436和MD 434向用户提供文档B1。这样,用户能够正向导航至所希望的内容空间内部的文档B的最近版本。当然,更复杂的正向导航是可能的,这依赖于用户所选择的内容空间。在可选择的实施例中,映射表将MD 424映射成MD 434。因此,在文档A中对MD 428的引用确实产生文件426,但是当系统读取MD 424时,系统将因为映射表而把它映射成MD434。该可选择的实施例是较低级别映射的例子。
当使用映射表进行正向导航时,任何映射表的内容可以在读取时间或运行时间被解析。换言之,当用户首先提供产生映射表的消息摘要时,系统可以立即解析那个映射,包括在找到的描述符文件内部查找所有的消息摘要以解析任何其它找到的映射表的映射。可选择地,系统可以一直等到用户明确地选择了链接(即消息摘要)才核对以查看是否存在那个链接的映射。
为正向导航建立内容空间的一个附加的好处是这样通过使用创建的映射表允许反向导航而不需要前面为反向导航所述的建立方法。考虑图14-17的例子,一旦使能了对内容空间50的正向导航,用户可以通过反向读取映射表来回溯。参考图17和使能了直至文档B1-1的正向导航的情况,现在系统在存储器中有映射表440和507。万一用户具有标识文档B1-1的MD 508并希望回溯,系统参考表507并确定下一个最近的版本在MD 438发现,它是文档B1。然后,通过参考表440,系统确定下一个最近的版本MD 438是标识文档B的MD 428。这样,反向导航可以通过用于正向导航的映射表使能。另外,万一用户希望更进一步回溯至文档A(其包含文档B的消息摘要),可以使用循环导航返回到文档A。
尽管说明了映射表被包括在高级消息摘要的描述符文件内部的情况,单独保存映射表并当调用会话时作为参数传递是可能的。考虑图15。在该例中,映射表440被包括在新的描述符文件446内部,创建描述符文件446以包含映射表(或它的消息摘要)和标识文档A的原始消息摘要。这样,保证设有MD 418’的用户在当他或她调用MD 418’时使用表440并且可以查看所希望的内容空间而不需要知道更多的或传递其它参数。
但是,如果不希望创建新的描述符文件来包含对映射表的引用,在创建映射表后,系统只是返回MD 418给用户(文档A的原始标识符),还一道返回唯一标识映射表的MD 442。然后系统通知用户,或者用户意识到,为了正向导航至文档B1是最近版本的内容空间,用户必须调用与系统的会话并且作为参数传递MD 418和MD 442。在一种变体中,可以为MD 442创建描述符文件,它包括作为元数据的内容空间的说明。即,例如,元数据将内容空间描述为“销售版本1.2”。因此,在调用会话和传递MD 418与描述符文件的消息摘要时,用户就可以查看所希望内容空间的说明。这些实施例考虑到用户保留原始的MD 418作为文档A的标识符,而且需要MD 418以查看特定的内容空间,当调用会话时,用户确实需要传递映射表的消息摘要作为参数(或者传递某一引用以允许发现映射表)。
循环导航图22说明了用户希望文档X和Y各自引用彼此的方案。称为“循环”引用,用户希望文档X内部的链接唯一标识文档Y并且文档Y内部的链接唯一标识文档X。尽管为了提供到文档Y的唯一链接可以创建文档Y的散列值并插入文档X内,但是然后修改文档Y以插入对文档X的唯一引用是不可能的。如果在创建了文档Y的散列值后修改文档Y,那么本质上,创建了文档Y的新版本,并且计算的原始散列值不会对应于文档Y的新版本。为了解决这种情况,本发明的实施例提供了适当的方法。
图23说明了循环导航的方法,它使用散列值允许两个文档唯一标识彼此。在某一时间点,用户得到(或创建)文档Y和包含唯一标识文档Y的引用的文档X。在这种情况下,为文档Y计算了消息摘要602(最好是描述符文件的消息摘要)并且插入文档X的内部以提供对文档Y的引用。还提供给用户(或系统计算)唯一标识文档X的消息摘要601(最好是描述符文件的MD)。在该时间点,用户可以使用MD 601以定位文档X并因此发现对文档Y的唯一引用。但是,在该时间点,在文档Y内部没有对文档X的引用。用户可能创建文档Y的新版本,即文档Y’,它确实包括MD 601,MD 601确实唯一标识文档X。但是,因为MD 601的插入改变了原始的文档Y,从而创建了文档Y的新版本。给定文档Y’,用户可以导航至文档X并然后至文档Y,但是然后不可能导航回到文档X。可选择地,给定文档X,用户可以导航至文档Y,但是然后不可能导航回到文档X。
图24是说明使能两个文档之间的循环导航的方法的流程图。基于图23的说明,用户首先在605得到文档X和Y,如前所述。文档X包含对文档Y的唯一引用并且MD 601标识文档X。为了创建循环引用,在步骤654,用户(或系统)首先创建文档Y的新版本即文档Y’,并且将文档X的消息摘要MD 601插入文档Y’内。当然,同时用户可以以任何其它方式修改文档Y。在步骤658,系统然后创建唯一标识文档Y’的MD 606(最好是描述符文件的消息摘要)。在步骤662,系统创建映射表610,它将MD 602(原始文档Y的消息摘要)映射成MD 606(新文档Y’的消息摘要)。
在步骤666,创建描述符文件616,它包括引用映射表610的MD614和唯一标识文档X的MD 601。创建描述符文件的消息摘要621并且返回给用户。MD 621从而提供入口点给用户用于进行文档X和Y之间的循环导航。
为了在文档X和Y之间导航,用户通过接收MD 621开始,MD 621被加标题或被描述为允许两个文档之间循环导航的内容空间的消息摘要。接收MD 621后,系统接着访问映射表610和文档X。用户然后能够查看文档X。当用户为查看文档Y访问(或者另外点击或选择)MD 602时,系统参考映射表,它将MD 602映射成MD 606。因此,当用户试图查看文档Y时,系统使用MD 606代替地提供到文档Y’的映射。一旦在文档Y’内部,用户有可用的MD 601,它以循环的方式提供了唯一的返回到文档X的引用。这样,在两个文档之间允许循环导航。循环导航还可用于创建自引用文档。例如,PowerPoint显示可以包含对本身的显式引用;消息摘要(或最好便于人类可读的形式)可以在分发页上打印出来。
阅读了该公布内容之后,对本领域的技术人员将明显的是更复杂的循环导航可以发生。例如,循环导航不仅可以发生在两个文档之间,而且可以以循环的方式在任何数目的文档周围发生。图25说明了在任何数目的文档周围进行循环导航的方案。在这种情况下,用户希望创建内容空间702,其中,如所示,允许从文档M到N、从O到L和从L回到M的循环导航。
图26说明了建立在多个文档周围的循环导航的方法。为建立该类型的循环导航,为文档N创建消息摘要并插入到文档M内(最好消息摘要是引用文档N的描述符文件的消息摘要)。然后,为文档M(现在包含对文档N的唯一引用)计算消息摘要(最好是描述符文件的摘要),并且文档M的该消息摘要插入到文档L内。以类似的方式,对文档L的唯一引用插入到文档O内。一旦为文档O计算了消息摘要,它不可能直接插入到文档N内部,因为文档N的消息摘要已经创建。然而,使用循环导航方法和上面描述的映射表,通过提供映射表(将文档N的消息摘要映射成文档N’的消息摘要)可以进行所希望的从文档N到文档O的映射。文档O的消息摘要(最好是描述符文件的摘要)插入到文档N’内。这样创建了内容空间704,其中,除了包含文档O的摘要,文档N’是和文档N一样的。创建映射表,将N的摘要映射成N’的摘要。最后,创建描述符文件,它包括这些文档之一的摘要和映射表。为描述符文件计算摘要并返回给用户作为这些文档周围的循环导航的入口点。
计算机系统实施例本发明可以在各种各样的计算机上实现。在一个预期的实施例中,用于存储和检索文档的计算机硬件是从EMC公司(Hopkinton,Massachusetts)可得的Centera牌计算机。Centera产品说明书指导说明了该计算机及其软件,并且可以在http//www.emc.com/pdf/products/centera/centera_guide.pdf得到并由此通过引用结合。可以使用Linux和JAVA来写系统软件。在该实施例中,预期Centera计算机是允许用户通过URL供应消息摘要的Web站点的后端,例如图2所示。在Web站点服务器上操作的系统软件在Centera和用户之间通过接口连接,并且允许在此所述的正向、反向和循环导航。在其它实施例中,文档存储、系统软件和用户接口全部驻留在单台计算机上。又在其它的实施例中,服务提供商提供与用户接口连接的因特网上的前端用户接口,而后在因特网上或其它万维网上搜索消息摘要标识的文档,而不是存储文档本身。或者,全分布对等系统完全基于内容可寻址的存储器以存取和保证它的内容。
图27A和27B说明了适于实现本发明实施例的计算机系统900。图27A示出了计算机系统的一种可能的物理形式。当然,计算机系统可以有许多物理形式,范围从集成电路、印刷电路板和小型手持设备直到大型超级计算机。计算机系统900包括监视器902、显示器904、机壳906、盘驱动器908、键盘910和鼠标912。盘914是计算机可读的介质,用于传递数据到计算机系统900和从计算机系统900传递数据。
图27B是计算机系统900的方框图的例子。附到系统总线920的是各种各样的子系统。处理器922(也被称作中央处理单元或CPU)耦合到包括存储器924的存储设备。存储器924包括随机存取存储器(RAM)和只读存储器(ROM)。如在本领域众所周知的,ROM用于单方向传递数据和指令到CPU而RAM通常用于以双向方式传递数据和指令。这两种类型的存储器都可以包括下面所述的任何适当的计算机可读介质。固定盘926也双向耦合到CPU 922;它提供附加的数据存储容量并且也可以包括任何下面所述的计算机可读介质。固定盘926可以用于存储程序、数据等等并且通常是辅助存储介质(例如硬盘),比主存储器慢。将理解,保留在固定盘926内部的信息可以,在适当的情况下,作为虚拟存储器以标准方式并入存储器924。可移除盘914可以采取下面所述的任何计算机可读介质的形式。
CPU 922还耦合到多个输入/输出装置,例如显示器904、键盘910、鼠标912和扬声器930。通常,输入/输出设备可以是以下任何一种视频显示器、跟踪球、鼠标、键盘、麦克风、触感显示器、转换卡阅读器、磁带或纸带阅读器、写字板、指示笔、声音或笔迹识别器、生物计量阅读器或其它计算机。CPU 922可以任选地耦合到另一计算机或使用网络接口940耦合到电信网络。用这种网络接口,预期在进行上述方法步骤的过程中,CPU可能接收来自网络的信息,或者可能输出信息到网络。此外,本发明的方法实施例可以完全在CPU 922上执行或者可以结合承担一部分处理的远程CPU在例如因特网的网络上执行。
此外,本发明的实施例还涉及带计算机可读介质(其上具有用于进行各种计算机实现的操作的计算机代码)的计算机存储产品。介质和计算机代码可以是专门设计和构建以用于本发明目的的那些,或者它们可以是计算机软件领域的技术人员非常熟知和可得到的那类。计算机可读介质的例子包括但不限于磁介质,例如硬盘、软盘和磁带;光介质,例如CD-ROM和全息设备;磁光介质,例如可光读的盘;以及硬件设备,专门配置来存储和执行程序代码,例如专用集成电路(ASIC)、可编程逻辑设备(PLD)及ROM和RAM设备。计算机代码的例子包括例如编译器产生的机器代码和包含使用解译器由计算机执行的较高级代码的文件。
尽管为了理解清晰已经在前面相当详细地描述了本发明,将明显的是,在所附权利要求的范围内可以实现某些变更和修改。因此,所述实施例应该被看作说明性的而非限制性的,并且本发明不应该限制于在此给出的细节而应该由下面的权利要求和它们等价物的完整范围所定义。
权利要求
1.一种使能在内容空间里反向导航的方法,所述方法包含接收标识第一计算机文件的第一消息摘要;接收标识第二计算机文件的第二消息摘要;接收所述第二计算机文件是所述第一计算机文件的较近版本的指示;创建包括所述第一消息摘要和所述第二消息摘要的描述符文件;以及创建所述描述符文件的第三消息摘要并且返回所述第三消息摘要给用户,从而所述用户可以使用所述第三消息摘要来反向导航遍历由所述第一和第二计算机文件形成的所述内容空间。
2.如权利要求1中所述的方法,其中,所述第一消息摘要是包括所述第一计算机文件的消息摘要的第一描述符文件的摘要。
3.如权利要求1中所述的方法,其中,所述第二计算机文件由所述用户接收或由所述用户创建。
4.如权利要求1中所述的方法,其中,所述描述符文件包括关于所述第二计算机文件的元数据。
5.一种使能在内容空间里正向导航的方法,所述方法包含接收标识第一计算机文件的第一消息摘要;接收标识第二计算机文件的第二消息摘要;接收所述第二计算机文件是所述第一计算机文件的较近版本的指示;创建将所述第一消息摘要映射成所述第二消息摘要的映射表;创建包括所述第一消息摘要和所述映射表的标识的描述符文件;以及创建所述描述符文件的第三消息摘要并且返回所述第三消息摘要给用户,从而所述用户可以使用所述第三消息摘要来正向导航遍历由所述第一和第二计算机文件形成的所述内容空间。
6.如权利要求5中所述的方法,其中,所述第一消息摘要是标识所述第一计算机文件的第一描述符文件的摘要,所述第二消息摘要是标识所述第二计算机文件的第二描述符文件的摘要。
7.如权利要求6中所述的方法,其中所述第一和第二描述符文件分别包括关于所述第一和第二计算机文件的元数据。
8.如权利要求5中所述的方法,其中所述第二计算机文件由所述用户接收或由所述用户创建。
9.如权利要求5中所述的方法,其中,所述描述符文件包括元数据。
10.如权利要求5中所述的方法,其中所述描述符文件包括所述映射表。
11.如权利要求5中所述的方法,其中,所述描述符文件包括标识所述映射表的消息摘要。
12.一种使能在内容空间正向导航的方法,所述方法包含接收标识第一计算机文件的第一消息摘要;接收标识第二计算机文件的第二消息摘要,所述第二计算机文件被表明为所述第一计算机文件的较近版本;创建将所述第一消息摘要映射成所述第二消息摘要的映射表;返回所述第一消息摘要和所述映射表的标识给用户;以及向所述用户表明所述第一消息摘要和所述映射表使能正向导航遍历由所述第一和第二计算机文件形成的所述内容空间,从而所述用户可以使用所述第一消息摘要和所述映射表调用会话以正向导航遍历所述内容空间。
13.如权利要求12中所述的方法,其中所述第一消息摘要是标识所述第一计算机文件的第一描述符文件的摘要,所述第二消息摘要是标识所述第二计算机文件的第二描述符文件的摘要。
14.如权利要求13中所述的方法,其中所述第一和第二描述符文件分别包括关于所述第一和第二计算机文件的元数据。
15.如权利要求12中所述的方法,其中所述第二计算机文件由所述用户接收或由所述用户创建。
16.如权利要求12中所述的方法,其中所述映射表的所述标识是所述映射表的消息摘要。
17.一种使能在内容空间里循环导航的方法,所述方法包含标识第一和第二计算机文件,所述第一计算机文件包括标识所述第二计算机文件的第二消息摘要;创建标识所述第一计算机文件的第一消息摘要;创建包括所述第一消息摘要的所述第二计算机文件的版本;创建所述第二计算机文件版本的第三消息摘要;创建将所述第二消息摘要映射成所述第三消息摘要的映射表;返回所述第一消息摘要和所述映射表的标识给用户,从而所述用户可以在所述第一和第二计算机文件之间导航。
18.如权利要求17中所述的方法,还包含向所述用户表明所述第一消息摘要和所述映射表使能在包括所述第一和第二计算机文件的所述内容空间里的循环导航,从而所述用户可以使用所述第一消息摘要和所述映射表调用会话以在所述内容空间里循环导航。
19.如权利要求18中所述的方法,其中所述映射表的所述标识是所述映射表的消息摘要。
20.如权利要求17中所述的方法,还包含创建包括所述第一消息摘要和所述映射表的所述标识的描述符文件;以及创建标识所述描述符文件的第四消息摘要并返回所述第四消息摘要给所述用户,其中,通过所述第四消息摘要将所述第一消息摘要和所述映射表的所述标识间接返回给所述用户,从而所述用户可以在所述第一和第二计算机文件之间导航,以所述第四消息摘要开始。
21.如权利要求20中所述的方法,其中,所述映射表的所述标识是映射表本身或是标识所述映射表的消息摘要。
22.如权利要求17中所述的方法,其中,所述第一、第二和第三消息摘要各分别是标识所述第一、第二和第二版本计算机文件的描述符文件的摘要。
23.如权利要求22中所述的方法,其中所述描述符文件包括关于它们各自的计算机文件的元数据。
24.如权利要求17中所述的方法,其中所述第二计算机文件由所述用户接收或由所述用户创建。
25.如权利要求19中所述的方法,其中所述描述符文件包括元数据。
全文摘要
按内容寻址用于在内容空间的文档之间正向、反向和以循环方式导航。为了使能反向导航,为新版本创建描述符文件,它不仅包含新版本的消息摘要,而且包含较旧版本的消息摘要。为描述符文件创建消息摘要。用户反向导航以描述符文档的消息摘要开始。为了使能正向导航,映射表将较旧文档的消息摘要映射成新版本的消息摘要。高级描述符文件包含原始文档的消息摘要和映射表的消息摘要。高级描述符文件的消息摘要返回给用户。用户正向导航以高级描述符文件消息摘要开始。为了使能循环导航,映射表将第二文档的消息摘要映射成包含第一文档消息摘要的第二文档版本的消息摘要。组合这些方法以允许遍历复杂内容空间的导航。
文档编号G06F7/00GK1754166SQ200380109500
公开日2006年3月29日 申请日期2003年12月9日 优先权日2002年12月10日
发明者P·R·M·卡彭捷, M·J·P·A·威廉斯, J·温特尔斯 申请人:卡林戈公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1