(57)【特許請求の範囲】
【請求項１】
コンピュータが扱うコンピュータファイルとしてコンピュータ内の記憶手段に記憶された多数の文書からなるコンテンツ空間内で、バージョンの異なる複数の文書について、後で作られた文書から先に作られた文書へと辿る逆方向ナビゲーションを可能にする方法であって、当該方法は、コンピュータにより実行され、
前記バージョンの異なる複数の文書の一つに対応する第１コンピュータファイルの指定を受け付けて、該第１のコンピュータファイルを特定する第１のユニークな識別子を作ること、
前記バージョンの異なる複数の文書の他の一つに対応する第２コンピュータファイルの指定を受け付けて、該第２コンピュータファイルを特定する第２のユニークな識別子を作ること、
前記第２コンピュータファイルが前記第１コンピュータファイルよりも後のバージョンであることの指示を受け取り、前記第１のユニークな識別子および第２のユニークな識別子を含み、前記バージョンの指示を反映した記述子ファイルを作ること、および
前記記述子ファイルを示す第３のユニークな識別子を作り、前記第３のユニークな識別子をユーザが取得可能とし、前記ユーザによる前記第３のユニークな識別子の指定を受け付けたとき、前記第３のユニークな識別子により前記記述子ファイルを特定し、該記述子ファイルに含まれる前記第１，第２のユニークな識別子と前記バージョンの指示とを用いて、前記第１および第２コンピュータファイルを含む前記コンテンツ空間において、前記逆方向ナビゲーションを可能とすること
を含む方法。
【請求項２】
請求項１に記載の方法であって、前記第１のユニークな識別子は、前記第１コンピュータファイルを直接指し示すユニークな識別子を含む第１記述子ファイルのダイジェストである方法。
【請求項３】
請求項１に記載の方法であって、前記第２コンピュータファイルは、前記ユーザによって指定される文書、または前記ユーザによって作られる文書である方法。
【請求項４】
請求項１に記載の方法であって、前記記述子ファイルは、前記第２コンピュータファイルに関する情報をさらに記述、特定または説明するメタデータを含む方法。
【請求項５】
コンピュータが扱うコンピュータファイルとしてコンピュータ内の記憶手段に記憶された多数の文書からなるコンテンツ空間内で、バージョンの異なる複数の文書について、先に作られた文書から後で作られた文書へと辿る順方向ナビゲーションを可能にする方法であって、当該方法は、コンピュータにより実行され、
前記バージョンの異なる複数の文書の一つに対応する第１コンピュータファイルの指定を受け付けて、該第１コンピュータファイルを特定する第１のユニークな識別子を作ること、
前記バージョンの異なる複数の文書の他の一つに対応する第２コンピュータファイルの指定を受け付けて、第２コンピュータファイルを特定する第２のユニークな識別子を作ること、
前記第２コンピュータファイルが前記第１コンピュータファイルよりも後のバージョンであることの指示を受け取り、前記第１のユニークな識別子を前記第２のユニークな識別子にマッピングするマッピングテーブルを作ること、
前記第１のユニークな識別子および前記マッピングテーブルの識別情報を含む記述子ファイルを作ること、および
前記記述子ファイルを示す第３のユニークな識別子を作り、前記第３のユニークな識別子をユーザが取得可能とし、前記ユーザによる前記第３のユニークな識別子の指定を受け付けたとき、前記第３のユニークな識別子により前記記述子ファイルを特定し、該記述子ファイルに含まれる前記第１のユニークな識別および前記マッピングテーブルとを用いて前記第１および第２コンピュータファイルを含む前記コンテンツ空間において、前記順方向にナビゲーションを可能とすること
を含む方法。
【請求項６】
請求項５に記載の方法であって、前記第１のユニークな識別子は、前記第１コンピュータファイルを特定する第１記述子ファイルのダイジェストであり、前記第２のユニークな識別子は、前記第２コンピュータファイルを特定する第２記述子ファイルのダイジェストである方法。
【請求項７】
請求項６に記載の方法であって、前記第１および第２記述子ファイルは、それぞれ前記第１および第２コンピュータファイルに関する情報をさらに記述、特定または説明するメタデータを含む方法。
【請求項８】
請求項５に記載の方法であって、前記第２コンピュータファイルは、前記ユーザによって指定される文書、または前記ユーザによって作られる文書である方法。
【請求項９】
請求項５に記載の方法であって、前記記述子ファイルは、前記第１および第２コンピュータファイルに関する情報をさらに記述、特定または説明するメタデータを含む方法。
【請求項１０】
請求項５に記載の方法であって、前記記述子ファイルは前記マッピングテーブルを含む方法。
【請求項１１】
請求項５に記載の方法であって、前記記述子ファイルは前記マッピングテーブルを特定するユニークな識別子を含む方法。
【請求項１２】
コンピュータが扱うコンピュータファイルとしてコンピュータ内の記憶手段に記憶された多数の文書からなるコンテンツ空間内で、バージョンの異なる複数の文書について、先に作られた文書から後で作られた文書へと辿る順方向ナビゲーションを可能にする方法であって、当該方法は、コンピュータにより実行され、
前記バージョンの異なる複数の文書の一つに対応する第１コンピュータファイルの指定を受け付けて、該第１コンピュータファイルを特定する第１のユニークな識別子を作ること、
前記バージョンの異なる複数の文書の他の一つに対応する第２コンピュータファイルであって、前記第１コンピュータファイルの後のバージョンであると示されている第２コンピュータファイルを特定する第２のユニークな識別子を作ること、
前記第１のユニークな識別子を前記第２のユニークな識別子にマッピングするマッピングテーブルを作ること、
前記第１のユニークな識別子および前記マッピングテーブルの識別情報をユーザが取得可能とすること、および
前記第１のユニークな識別子および前記マッピングテーブルが、前記第１および第２コンピュータファイルによって形成される前記コンテンツ空間を通して順方向ナビゲーションを行うことを可能にすることを前記ユーザに示し、それにより前記ユーザが前記第１のユニークな識別子および前記マッピングテーブルを用いたセッションを起動し、前記コンテンツ空間を通して前記順方向ナビゲーションを可能とすること
を含む方法。
【請求項１３】
請求項１２に記載の方法であって、前記第１のユニークな識別子は、前記第１コンピュータファイルを特定する第１記述子ファイルのダイジェストであり、前記第２のユニークな識別子は、前記第２コンピュータファイルを特定する第２記述子ファイルのダイジェストである方法。
【請求項１４】
請求項１３に記載の方法であって、前記第１および第２記述子ファイルは、それぞれ第１および第２コンピュータファイルに関する情報をさらに記述、特定または説明するメタデータを含む方法。
【請求項１５】
請求項１２に記載の方法であって、前記第２コンピュータファイルは、前記ユーザによって指定される文書、または前記ユーザによって作られる文書である方法。
【請求項１６】
請求項１２に記載の方法であって、前記マッピングテーブルの前記識別情報は、前記マッピングテーブルのユニークな識別子である方法。
【請求項１７】
コンピュータが扱うコンピュータファイルとしてコンピュータ内の記憶手段に記憶された多数の文書からなるコンテンツ空間内で、バージョンの異なる複数の文書について、複数の文書間を循環的に辿る循環ナビゲーションを可能にする方法であって、当該方法は、コンピュータにより実行され、
前記バージョンの異なる複数の文書にそれぞれ対応する第１および第２コンピュータファイルのうち、前記第２コンピュータファイルを特定する第２のユニークな識別子を含んだ前記第１コンピュータファイルと、前記第２コンピュータファイルを特定すること、
前記第１コンピュータファイルを特定する第１のユニークな識別子を作ること、
前記第１のユニークな識別子を含む前記第２コンピュータファイルのバージョンを作ること、
前記第２コンピュータファイルバージョンの第３のユニークな識別子を作ること、
前記第２のユニークな識別子を前記第３のユニークな識別子にマッピングするマッピングテーブルを作ること、
前記第１のユニークな識別子および前記マッピングテーブルの識別情報をユーザが取得可能とし、前記第１および第２コンピュータファイル間で前記循環ナビゲーション可能とすること
を含む方法。
【請求項１８】
請求項１７に記載の方法であって、
前記第１のユニークな識別子および前記マッピングテーブルが、前記第１および第２コンピュータファイルを含む前記コンテンツ空間内で循環ナビゲーションを行うことを可能にすることを前記ユーザに示し、前記ユーザに、前記第１のユニークな識別子および前記マッピングテーブルを用いたセッションを起動し、前記コンテンツ空間内で循環ナビゲーション可能であることを示すメッセージを出力する
方法。
【請求項１９】
請求項１８に記載の方法であって、前記マッピングテーブルの前記識別情報は、前記マッピングテーブルのユニークな識別子である方法。
【請求項２０】
請求項１７に記載の方法であって、
前記第１のユニークな識別子および前記マッピングテーブルの前記識別情報を含む記述子ファイルを作ること、および
前記記述子ファイルを特定する第４のユニークな識別子を作り、前記第４のユニークな識別子を前記ユーザが取得可能とし、前記第１のユニークな識別子および前記マッピングテーブルの前記識別情報が間接的に前記第４のユニークな識別子を介して前記ユーザに取得可能とされ、前記ユーザによる前記第４のユニークな識別子の指定を受け付けたとき、該第４のユニークな識別子から開始して前記第１および第２コンピュータファイル間で前記循環ナビゲーション可能とすること
を含む方法。
【請求項２１】
請求項２０に記載の方法であって、前記マッピングテーブルの前記識別情報は、前記マッピングテーブルそれ自身、または前記マッピングテーブルを特定するユニークな識別子である方法。
【請求項２２】
請求項１７に記載の方法であって、前記第１、第２および第３のユニークな識別子は、それぞれ前記第１、第２および第２バージョンコンピュータファイルをそれぞれ特定する記述子ファイルのダイジェストである方法。
【請求項２３】
請求項２２に記載の方法であって、前記記述子ファイルは、それらの各コンピュータファイルに関する情報をさらに記述、特定または説明するメタデータを含む方法。
【請求項２４】
請求項１７に記載の方法であって、前記第２コンピュータファイルは、前記ユーザによって指定される文書、または前記ユーザによって作られる文書である方法。
【請求項２５】
請求項２０に記載の方法であって、前記記述子ファイルはメタデータを含む方法。
【請求項２６】
前記第１ないし第３のユニークな識別子は、メッセージダイジェストである請求項１記載の方法。
【請求項２７】
前記第１ないし第３のユニークな識別子は、メッセージダイジェストである請求項５記載の方法。
【請求項２８】
前記第１および第２ののユニークな識別子は、メッセージダイジェストである請求項１２記載の方法。
【請求項２９】
前記第１ないし第３のユニークな識別子は、メッセージダイジェストであり、
る請求項１７記載の方法。
【請求項３０】
請求項１記載の方法であって、
前記第３のユニークな識別子を用いて、前記記述子ファイルにアクセスし、
前記記述子ファイル内に存在する前記第１のユニークな識別子を用いて前記第１コンピュータファイルを取り出す
方法。
【請求項３１】
請求項５記載の方法であって、
前記第３のユニークな識別子を用いて、前記記述子ファイルにアクセスし、
前記記述子ファイル内に存在する前記マッピングテーブルを用いて前記第２コンピュータファイルを取り出す
方法。
【請求項３２】
請求項１２記載の方法であって、
前記マッピングテーブルの識別情報を用いて、前記マッピングテーブルにアクセスし、
前記マッピングテーブルを用いて前記第２コンピュータファイルを取り出す
方法。
【請求項３３】
請求項１７記載の方法であって、
前記マッピングテーブルにアクセスし、
前記マッピングテーブル内に存在する前記第３のユニークな識別子を用いて前記第２コンピュータファイルを取り出す
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、「Content-based Addressing and Navigation Over Time」と題された２００２年１２月１０日に出願された米国特許仮出願第６０／４３２，４９５号の優先権を主張し、ここで参照によって援用される。
【０００２】
本発明は、一般に、コンピュータを用いた情報の記憶および検索に関する。より具体的には、本発明は、文書およびそれらのバージョンのコンテンツベースの参照、および文書のバージョン間のナビゲーションのための技術に関する。
【背景技術】
【０００３】
従来技術は、国際公報第ＷＯ９９／３８０９３に記載されるように、コンテンツ参照可能な情報の概念、その記憶および検索、およびハッシュ関数、メッセージダイジェスト、および記述子ファイルの使用を含む。国際公報第ＷＯ９９／３８０９３は、コンテンツ参照可能な情報の記憶およびアクセスのための特定の技術を記載し、国際公報第ＷＯ０１／１８６３３は、コンテンツ参照可能な情報を暗号化する技術を記載する。これら公報は全て、参照によって援用される。
【０００４】
従来技術において説明されるように、コンテンツ参照可能な技術は、記憶されたコンテンツの完全性を保証するように文書を記憶およびアクセスするのに非常に有用でありえる。しかし文書または情報が時間につれて変化しえる場合、または文書が互いを参照する必要がある場合には、多くの新しい問題が提起される。コンテンツ参照は、具体的コンテンツをユニークに特定するので、変化するコンテンツとは、その文書についての新しいコンテンツアドレスを意味する。従来技術において説明されるように、ある技術は、特定の文書をユニークに表現するために「ＭＤ５」のようなメッセージダイジェストを用いることである。しかし複雑な文書空間が存在する場合においては、特定のタイプの情報（複雑なコンピュータシステムについてのユーザマニュアル群のセット、または航空機についての技術文書のような）を表現するためには多くの文書または文書のセットが必要となりえる。これらの状況においては、単一のＭＤ５はユニークに多くの文書を表しえ（例えば記述子ファイルを用いて）、個々の文書は、それぞれが単一の文書または文書群のセットを参照する、多くの異なるＭＤ５を含みえる。さらに、時間と共に変化する文書群のセットの多くの異なるバージョンが存在しえ（セットの中のある文書は変化し、残りは変化しないこともありえる）、２つの異なる文書がお互いを参照しなければならないかもしれない。このような複雑なコンテンツ空間（content space）では、情報の完全を確実にするようなかたちでの情報の管理、および情報へのアクセスがより難しくなる。
【０００５】
例えば、ボーイング７４７航空機のための完全な技術文書を考える。燃料サブシステム、通信サブシステム、機体サブシステムなどのような航空機の特定のサブシステムをそれぞれ記述する文書群のセットが複数存在するだろう。これらの文書群は、必然的にお互いを参照しなければならず、常に時間と共に変化していく。さらに事情を複雑にするのは、使用中の全ての７４７を完全に記述する単一の文書は存在しないことである。７４７型航空機を一般に記述する文書のマスターセットは存在するかもしれないが、ユニークなシリアル番号を持つ、製造ラインから出るそれぞれの個別の航空機は、異なるオプションを有し、異なる航空会社に納入されえるかもしれないという事実のために、それ自身の特定のセットの文書を持つことになる。よって特定の航空機について文書が時間と共に変わるからというだけではなく、異なるオプションを有する異なる航空機はオリジナルの文書の異なるバージョンを必要とするために、オリジナルの文書の異なるバージョンが存在する。それから７４７型航空機のためのこの技術文書の全ては、部品が変わり、プロシージャが変わり、そしてＦＡＡの何百という改善命令が受け取られ準拠されると共に、時間と共に進化していく。
【０００６】
問題の本質を示すなら、いったん航空機が製造され飛行できる状態になると、その航空機が飛行のために証明を受ける前に、全ての技術文書を作成し、その文書が更新され、全ての差し替えページが正しい位置に挿入されたことを確実にするのに数週間から数ヶ月もかかりえる。全ての技術文書が更新され、最新バージョンが使用可能になるときでも、特定の時点において存在した文書のバージョンに戻ってレビューすることができることは将来に非常に有用でありえる。現実の世界では、内部参照群およびバージョン群を有する複雑な文書のセットが、取り出される情報の完全性を確実にするようなやりかたで、効率的に記憶され、管理され、かつインテリジェントにアクセスされなければならない多くの他の例が存在する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
よって、エンドユーザまたは複雑なソフトウェアアプリケーションがそうすることに依存することなく、このような複雑なコンテンツを信頼性高く管理するためのメカニズムおよび技術が必要とされる。このような問題に対応するために従来技術のコンテンツ参照可能な記憶技術を利用することが特に望ましい。
【課題を解決するための手段】
【０００８】
前述を達成するために本発明の目的によれば、コンテンツが時間と共に変化するのにあわせて、コンテンツベースの参照およびコンテンツのナビゲーションを可能にし、互いに参照する文書間でのナビゲーションを可能にする技術が記載される。特定の時点における文書群の特定のセットを表す「コンテンツ空間」の概念が導入される。本発明は、そのようなコンテンツ空間内で文書を通して順方向および逆方向にナビゲーションする技術を記載する。加えて、互いを参照する文書間で循環的にナビゲーションする技術が記載される。
【０００９】
逆方向ナビゲーションを可能にするために、システムソフトウェアは、文書の新しいバージョンが作られるとき、記述子ファイルの変化形を作る。（この新しいバージョンは、ユーザによって受け取られるか、または新しいバージョンのメッセージダイジェストが受け取られえる。）ユーザは、なんらかの方法で、新しい文書が古い文書よりも後のバージョンであると考えられるべきであることを示す。新しいバージョンについてのメッセージダイジェストだけでなく、古い文書のメッセージダイジェストも含む新しいバージョンについて記述子ファイルが作られる。メッセージダイジェストはそれから記述子ファイルについて作られる。ユーザはそれから、記述子ファイルのメッセージダイジェストで開始して逆方向にナビゲーションしえる。新しいバージョンの任意の個数がこのようにして一緒に結合されえる。システムソフトウェアは、ユーザが逆方向にナビゲーションし、かつそれぞれの前のバージョンを見ることを可能にし、またはユーザが最も早いバージョンへ直接にジャンプすることを可能にしえる。真正性の証明を提供するために、タイムスタンプおよびディジタル署名が逆方向ナビゲーションと結合されえる。
【００１０】
順方向ナビゲーションを可能にするために、文書のバージョンが作られるとき、システムソフトウェアはマッピングテーブル（またはもし必要なら多くのマッピングテーブル群）を作る。（新しいバージョンはユーザによって受け取られえ、または新しいバージョンのメッセージダイジェストが受け取られえる。）ユーザは、なんらかの方法で、新しい文書がオリジナル文書の後のバージョンであると考えられるべきことを示す。オリジナル文書および新しいバージョンについて記述子ファイルが作られ、メッセージダイジェストがそれぞれの記述子ファイルについて作られる。マッピングテーブルは、古い文書のメッセージダイジェストを新しいバージョンのメッセージダイジェストにマッピングする。（代替としてマッピングテーブルは、それらのそれぞれの記述子ファイルのダイジェストではなく、文書それら自身のメッセージダイジェストをマッピングする。）オリジナル文書のメッセージダイジェストおよびマッピングテーブルのメッセージダイジェストを含むように高レベル記述子ファイルが作られる。高レベル記述子ファイルのメッセージダイジェストはユーザに返される。
【００１１】
ユーザはそれから、高レベル記述子ファイルのメッセージダイジェストで開始して順方向にナビゲーションしえる。新しバージョンの任意の個数がこのようにして一緒に結合されえる。システムソフトウェアは、ユーザが順方向にナビゲーションし、それぞれのバージョンを見ることを可能にしえ、ユーザは、最新のバージョンに直接にジャンプしえる。代替実施形態において、オリジナル文書のメッセージダイジェストは、マッピングテーブル（またはマッピングテーブルのメッセージダイジェスト）と共に返され、ユーザは、もしこれらのパラメータを用いてセッションが起動されるなら、所望のコンテンツ空間内で順方向ナビゲーションが実行されえることを知らされる。この代替の実施形態において、高レベル記述子ファイルが用いられる。作られたマッピングテーブルは、逆方向ナビゲーションを可能にするためにシステムによって用いられえる。
【００１２】
循環ナビゲーションを可能にするために、システムソフトウェアは、文書群間での参照が必要とされるとき、マッピングテーブルを作る。ある文書は第２文書のメッセージダイジェストを含む。第２文書の新しいバージョンは、第１文書のメッセージダイジェストを含むように作られ、マッピングテーブルはオリジナルの第２文書のメッセージダイジェストを第２文書の新しいバージョンのメッセージダイジェストにマッピングする。セッション中の後の使用のために第１文書のメッセージダイジェストおよびマッピングテーブルがユーザに返され、またはオリジナル文書のメッセージダイジェストおよびマッピングテーブルのメッセージダイジェストを含むよう新しい記述子ファイルが作られる。高レベル記述子ファイルのメッセージダイジェストがユーザに返される。文書の任意の個数がこの技術を用いて循環的にリンクされえる。
【００１３】
上の技術は、複雑なコンテンツ空間を通してナビゲーションを可能にするために結合されえる。
【発明を実施するための最良の形態】
【００１４】
本発明は、さらなるその利点と併せて、添付の図面と併せて以下の記載を参照して最もよく理解されえる。
【００１５】
図１Ａ〜１Ｅは、時間と共に進化する変化する（evolve）文書群の簡単なセットを示す。文書群のセットについてのコンテンツ空間（content space）を、ある特定の時点において存在する文書として参照する。もちろん本発明は、より複雑なコンテンツ空間にも適用可能である。示されるコンテンツ空間は、本発明の理解に役立ち、より詳しく述べる前に簡単に説明される。
【００１６】
図１Ａは、文書群Ａ、ＢおよびＣを含む時刻ｔ１におけるコンテンツ空間を示す。この例では、文書Ａは、そのテキスト中に文書ＢおよびＣへの参照１２および１４を含む。これら参照は、単純にテキストファイル名でありえるが、本発明の応用例に最もふさわしい実施形態においては、参照１２および１４は、それぞれ、その内容によって文書ＢおよびＣをユニークに特定するハッシュ値である。好ましくは参照１２および１４は、それぞれ、記述子ファイルをユニークに特定するハッシュ値であり、この記述子ファイルは、その文書をユニークに特定するハッシュ値を含む。この例では、ユーザは、文書Ａ、ＢおよびＣをすでに作っており、文書Ａはその中で文書ＢおよびＣへの明示的参照を含むことが望ましい。
【００１７】
図１Ｂは、時刻ｔ２におけるコンテンツ空間２０を示し、このとき、コンテンツ空間は時間と共に変化している。この状況では、ユーザは、１６によってシンボルで示されるように文書Ｂの新しいバージョンＢ１を作っている。よってもしユーザがこの文書セットの最新バージョンを見たいなら、ユーザは、Ａ、ＣおよびＢ１を見たいだろう。
【００１８】
図１Ｃは、時刻ｔ３におけるコンテンツ空間３０を示し、このとき、文書セットはさらに変化している。この例では、ユーザは、文書Ｂの他の文書、すなわち文書Ｂ２を作っている。この例では、文書Ｂ２は、必ずしも順次改訂される文書Ｂ１の新しいバージョンではない。文書Ｂ１およびＢ２は、異なる目的を意図した文書Ｂの異なるバージョンと見られえる。例えば、文書Ｂがあるビジネスプランの一部であると仮定すると、文書Ｂ１は、マーケティング部へリリースされるべきプランのバージョンに対応しえ、一方、文書Ｂ２は、技術部へリリースされるべきプランのバージョンに対応しえる。
【００１９】
図１Ｄは、時刻ｔ４におけるコンテンツ空間４０を示し、このとき、コンテンツ空間はさらに変化している。この状況では、ユーザは、文書Ｂ１の新しいバージョン、すなわち文書Ｂ１−１を作っている。
【００２０】
図１Ｅは、時刻ｔ５におけるコンテンツ空間５０を示し、このとき、コンテンツ空間は時間と共にさらに変化している。この状況では、ユーザは、Ｂ１−１から派生する文書Ｂのさらに別のバージョン、すなわちＢ１−２を作っている。この状況において、ユーザがマーケティング部のための文書セットの最新バージョンを見たいなら、そのエンドユーザは、文書Ａ、ＣおよびＢ１−２を見たいだろう。一方、もしユーザが技術部のための文書の最新バージョンを見たいなら、そのエンドユーザは、文書Ａ、ＣおよびＢ２を見たいだろう。
【００２１】
よって、文書の「バージョン」は、少なくとも２つの異なるやり方で捉えることができる。ある意味では、文書の新しいバージョンは、おそらくは改善点を含み、オリジナルに取って代わるよう意図される、その文書の次のバージョンである。例えば、文書Ｂ１−１は、おそらくはＢ１に取って代わるよう意図されている文書Ｂ１のあるバージョンである。一方、あるバージョンは、異なる目的のために意図される、文書の別のバージョンも指しえる。例えば、文書Ｂ１およびＢ２は、文書Ｂの異なるバージョンであるが、それらが文書Ｂに取って代わるように意図されていることはおそらくなく、Ｂ１がビジネスプランのマーケティングバージョンであり、Ｂ２がビジネスプランの技術バージョンであるだけである。Ｂ１およびＢ２のいずれも文書Ｂに取って代わることを意図されていないことはまず間違いない。本来の意図としては、文書Ｂはそれ自身として有用であり、文書Ｂの２つの新しいバージョンである文書Ｂ１およびＢ２も２つの異なる目的のためには有用であることだろう。
【００２２】
実際、文書の新しいバージョンとは、文書セットのユーザまたは作成者によって定義されるように、以前の文書または文書群のセットの事実上、任意の改訂を指す。例えば、図１Ｂを参照すれば、文書Ｂ１が文書Ｂのわずかに変更されたバージョンであることが可能な一方で、単にその文書セットのユーザが文書Ｂ１は文書Ｂのバージョンであると考えられるべきだと決定したために、Ｂ１は文書Ｂとは大幅に異なる文書であっても、あるバージョンと考えられることもありえる。実際、古い文書の新しいバージョンが以前の文書となんらかの関係を持たなければならないという要件はない。ユーザが、特定のコンテンツが他のコンテンツのあるバージョンだとみなされるべきだと決定するなら、本発明によればそれはあるバージョンと考えられるべきである。既存の文書のあるバージョンが、その既存の文書となんらかの類似性の程度を持たなければならないという要件はない。
【００２３】
例えば、もし会社が、そのプレスリリースの全てを一週間ごとにグループ化したいなら、プレスリリースの連続するバージョン群における情報はかなり異なっていても、それぞれの連続する週の分のプレスリリースは、以前の週のプレスリリースのあるバージョンとみなされえる。さらに、既存の文書のバージョンは、実際には、その既存の文書の前に作成された文書でありえる。例えば、もしユーザが文書Ｆおよび文書Ｆの作成後に作成された文書Ｇを提示されるなら、そのユーザは、Ｇは、Ｆのバージョン（伝統的なバージョン）であると宣言しえ、あるいは、本発明の文脈ではユーザは、文書Ｆは、文書Ｇのバージョンであると宣言しえる。
【００２４】
さらに、文書への明示的な参照および黙示的な参照（文書を他の文書のバージョンと呼ぶことによる）は、任意のやりかたで組み合わせられえる。例えば、文書Ｂは、その中にＢ１を参照する明示的な参照を持たない（すなわちＢ１がＢのバージョンであることがユーザには黙示的に理解される）が、一方、文書Ｂが文書Ｂ１への明示的な参照を含みえ、同時に、Ｂ１が文書Ｂのバージョンであると考えられることが可能である（以下の循環ナビゲーションに関するセクションで説明されるように）。代替として、示されるようにこの状況は、文書Ａのような文書が文書Ｂへの明示的な参照を含むが、文書Ｂは文書Ａのバージョンとは考えられていないときにも存在しえる。
【００２５】
ここで用いられるように、「ユーザ」という語は、文書を管理、記憶またはアクセスしている編集者、発行人、ライター、文書管理者、または他の個人またはコンピュータのような、ここで記載されるシステムの任意のユーザを指す。ここで記載される本発明の実施形態において、そのようなユーザは、文書のバージョン群にわたって逆方向参照または順方向参照にナビゲートするために、文書間で循環的にナビゲートするために、またはシステムがそのようなナビゲーションを実行できるようにするためにシステムを使う。加えて、異なるユーザたちは、彼等自身の使用のために、同時に文書のバージョン群を作成しえる。本発明は、それぞれのユーザが自身のバージョンを他人から独立して、他人もまた異なるバージョンを作成しつつあることを知ることなく作成することを可能にする。
【００２６】
よって上述のように、オリジナル文書セットのコンテンツ空間は、時間と共に変化する。任意の複雑さの任意の文書セットのユーザにとって、特定の時点における完全な文書セットを見ることができること、意図された目的のための文書セットの最新バージョンを得ることができること、および時間を遡ってその文書セットのバージョンの変化を見ることができることは有利である。コンテンツ空間内のそのような順方向、逆方向および循環ナビゲーションのための技術は、これから簡単に検討されるハッシュベースの参照技術を用いる。
【００２７】
コンテンツベースの参照
【００２８】
図２は、文書のためのハッシュベースのユニークな識別子を作る技術を示す。コンテンツ空間を通した順方向、逆方向および循環ナビゲーションの以下の説明を理解するために、本発明の文脈におけるコンテンツベースの参照技術を簡単に検討することが役に立つだろう。
【００２９】
図２は、文書１０２についてのユニークな識別子１２２を作る技術を示す。以下の記載は、本発明によって表現および管理される簡単な文書の例を用いる。しかし文書１０２は、ディジタル形式で表現される任意のタイプの情報でありえる。例えば、本発明は、コンピュータファイル、ファイル群のグループ、ファイル識別子群のグループ、または他のデータまたはデータベース情報の集合体のような情報の任意の電子表現に適用可能である。データのこのような集合体は、ディジタルオーディオまたはビデオストリームからのフレームまたはクリップ、ディジタル写真、スキャンされた紙の文書、音声メッセージ、ＣＡＤ／ＣＡＭデザイン、ＭＲＩまたはＸ線データ、メッセージレコードまたはファイルからのストリーム、システムの監査またはステータスログからのログエントリ、電子メールアーカイブ、小切手画像などを含む。データベース情報は、リレーショナル、階層、ネットワークまたは他のデータベースからのレコードを含む。一般に、ディジタル情報は、バイナリ（またはｎ進）ディジットの任意のストリングを含みえる。ある実施形態において、ディジタル情報は、バイナリラージオブジェクト、つまりＢＬＯＢとして操作される。以下の記載は、簡単な文書を例として用いるが、本発明はそのように限定されない。「コンピュータファイル」という語は、前述のタイプの情報の任意の電子表現を包含するようにここでは用いられてもいる。
【００３０】
アルゴリズム１０４は、文書１０２を処理して、その文書についてのユニークな識別子１０６を作るのに用いられる。好ましくはアルゴリズム１０４は、ハッシュ値１０６を作るハッシュ関数である。この例では、ハッシュ関数は、ハッシュ値またはメッセージダイジェスト（「ＭＤ」）１０６を作るのに用いられる。よく知られたハッシュ関数には、ＭＤ２、ＭＤ５、ＳＨＡ、ＳＨＡ−１、ＳＨＡ−２５６、ＲＩＰＥＭＤ−１６０などが含まれる。
【００３１】
この技術で知られるように、文書に対するハッシュ関数の使用は、その文書の「ディジタル指紋」であり、ユニークにそれを特定する、ユニークなハッシュ値またはメッセージダイジェストを作る。ここで用いられるように、メッセージダイジェストまたは「ＭＤ」という語は、ハッシュ関数によって作られたハッシュ値を指し、文書についてのユニークなコンテンツベースの識別子を作るのに用いられえる任意のタイプのハッシュ関数を包含するよう意図される。図２のこの例は、ＭＤ５アルゴリズムがＭＤ１０６を作るのに用いられることを想定している。
【００３２】
ＭＤ１０６は、本発明の目的のために用いられえ、またはそれは記述子ファイル１０８内に埋め込まれえる。記述子ファイル１０８は、メッセージダイジェスト１０６および文書１０２の情報または他の情報をさらに記述、特定または説明する任意のさまざまなメタデータ１１０を含む。記述子ファイルの記述およびメタデータのタイプは、上で参照された国際出願に記載される。ある実施形態において、メタデータ１１０は、記述子ファイル名、ファイルサイズ、アクセス権、所有者、保持期間などを含む。サブジェクト、タイトル、作成者、日付のような高レベル情報も含まれえる。記述子ファイルは、もし特定のアプリケーションで必要とされるならこのタイプの情報についてのプレースホルダとして機能するのに役立ち、かつもし状況がそうならファイル群のグループについてのメッセージダイジェストを保持するのにも役立つ。
【００３３】
本発明は、記述子ファイルを参照するメッセージダイジェストに適用可能であり、また個別の文書を直接に特定するメッセージダイジェストにも適用可能である。以下の記載では、コンテキストから記述子ファイルが好ましい（または必要とされる）場合が明らかになる。しかし一般に、記述子が「文書のメッセージダイジェスト」を規定するとき、これは文書の記述子ファイルのメッセージダイジェスト（このファイルは文書のＭＤ５を保持する）、または文書を直接に特定するメッセージダイジェストを参照しえる。
【００３４】
メタデータ１１０は、文書を位置特定し、そのディレクトリ環境を再構成し、閉じられたコンテンツの使用により収入を生むプリパッケージされた電子商取引、または記述子ファイルおよびその使用およびコンテンツのためのオプションを記述する情報について補助する情報を含みえる。メタデータは、記述子ファイルそのものを参照しえ、または記述子ファイルによって（記述子ファイル内にリストされている文書についてのメッセージダイジェストによって）参照された具体的な文書に特定でありえる。記述子ファイルに関するメタデータは、そのタイプ、ファイル名、作成日時、コメント、データファイルまたはそれが表すディレクトリフォルダの個数、それが表す全てのファイルのサイズ、作成者、キーワードなどを含む。特定の文書についてのメタデータは、ファイル名、ファイルサイズ、作成日時、ファイルタイプなどを含みえる。本発明の実施形態と共に補助するために、メタデータは、マッピングテーブル、意図された目的、バージョンナンバ、リリース日時などのようなコンテンツ空間の名前、そのコンテンツ空間が順方向または逆方向ナビゲーションが可能かどうか、またはディジタル署名、タイムスタンプ、ディジタル証明書、ディジタル権利管理目的のトークン、または他の暗号化キーマテリアルセットのような他のセキュリティに関係した情報も含みえる。
【００３５】
いったん記述子ファイルが形成されると、ハッシュ関数１１４が記述子ファイルに適用され、他のメッセージダイジェスト１１６を作る。メッセージダイジェスト１１６は、今度は、従来技術に示される技術を用いて文書をユニークに位置探索（locate）し、特定するために用いられえる。例えば記述子ファイル１０８および文書１０２は、コンピュータの通常のファイルシステム内に記憶されえ、ここではそれらのファイル名はそれぞれがＭＤ１１６およびＭＤ１０６によって表現されるビットストリングである。またはそれぞれのファイルは、データベース内に記憶されえ、ここではファイルへのキーは、それぞれのファイルについてのそれぞれのメッセージダイジェストである。一般にファイル１０８および文書１０２は、任意のコンテンツ参照可能な記憶システム内に記憶されえ、ここでそれらは、そのメッセージダイジェストだけを用いて位置探索され、取り出されえる。
【００３６】
好ましい実施形態において、ＭＤ５メッセージダイジェストは、人間に容易に読めて書ける形式に変換される。ＭＤ５ハッシュ関数から結果として生じるメッセージダイジェストは１２８ビットの数なので、この数をより人間が使用するのに扱いやすい形でエンコードするのが望ましい。この結果として生じる数は、１０進、１６進または２進を含む任意のさまざまな形態でエンコードされえる。好ましくはこの数は、ベースＡＳＣＩＩキャラクタセット中の２６のアルファベットおよび数字のキャラクタのセットへマッピングされるベース３２の数に変換される。このマッピングは、「ＡＳＣＩＩアーマリング（ASCII Armoring）」と呼ばれ、コンテンツがアルファニューメリックコーディングに制限されることを要求するプロトコル上で送信するために２進情報を限られたキャラクタセットに収めるためにふつう用いられる。好ましい実施形態において、フラグキャラクタは、結果として生じるストリング内の所定の位置に含まれ、ストリングの全体長を２７キャラクタにする。このフラグキャラクタは、使用するアルゴリズム、ファイルのタイプなどのような情報も提供しえる。
【００３７】
結果は、数字および大文字の２７キャラクタのＡＳＣＩＩストリングである。このようなフォーマットは、より簡単に人間に書かれて、および／またはコンピュータによって操作されえ、また容易に多くのソフトウェアプログラムによって受け入れられるコンパクトな形態を提供する。加えて、メッセージダイジェストのこの特定の表現は、より簡単にデータクエリーによって取り出され、ソフトウェアアプリケーションファイルリクエストにコーディングされ、コンテンツまたはアセット管理システムによって参照され、オブジェクトブラウザでリクエストされ、ある文書から他の文書へ電子的にコピーおよびペーストされ、電子メールを介して送られるという利点を有する。
【００３８】
この例では、ＭＤ１１６は、２７キャラクタストリング１２０に変換されている。具体的な実施形態において、ストリング１２０は、インターネット名１１８と連結され、ＵＲＬ１２２を作る。名前１１８は、ＤＮＳによって解決され、「trustclip.com」というドメインネームを含む。この具体的な実施形態において、「trustclip.com」は、コンテンツ参照可能な記憶デバイスに接続されるウェブサーバの位置特定を行うのに用いられる。ドメイン「trustclip.com」を運用するサービスプロバイダは、メッセージダイジェストをユニークな識別子として用いてこのような文書群を記憶し、ＵＲＬ（ＵＲＬ１２２のような）が与えられるときに、このような文書をユーザに利用可能にする。このようにして、ユーザがＵＲＬ１２２を与えられるとき、またはそうでなければそれをリンクとして用いるとき、ウェブサイト「trustclip.com」は、ＭＤ１２０をとり、文書を位置特定し、それをユーザに返す。もしＭＤ１２０が複数の文書についてのメッセージダイジェストを含む記述子ファイルを特定するなら、これら文書の全てが返される。本発明は、メッセージダイジェスト（形態１１６、１２０または他のもの）が多くのやり方で用いられてオリジナルの文書を位置特定することを想定する。前述のように、メッセージダイジェストは、文書のファイル名、データベースのキー、ＵＲＬまたはＵＲＩ（またはＩＰアドレスまたはパス名のような他のファイルロケータ）内に埋め込まれて、または単にそのままで用いられえる。
【００３９】
他の実施形態において、メッセージダイジェストは、そのときメッセージダイジェストを用いてメッセージダイジェストによってユニークに特定される文書を検索し位置特定をするためにサービスプロバイダに与えられる。例えば、サービスプロバイダは、それら自身のコンテンツ参照可能な記憶をサーチしてもよく、または他のエンティティの記憶内で文書を検索してもよい。またメッセージダイジェストは、企業ネットワークを通して、イントラネット上で、インターネット上で、またはそのメッセージダイジェストによってユニークに特定される文書を探す目的で他のやり方で、ブロードキャストされえる。
【００４０】
記述子ファイル
【００４１】
記述子ファイルの実施形態は、上で参照された国際出願において記載される。以下の図は、本発明のコンテキストで有用なさらなるバリエーションを示す。
【００４２】
図３は、第１タイプの記述子ファイルおよびメッセージダイジェストの例を示す。記述子ファイル１５０は、オプションのメタデータおよびユニークに文書ＡおよびＢを参照する２つのメッセージダイジェストを１５２および１５４を有する。もちろん記述子ファイルは、単一のメッセージダイジェストを含み、または任意の個数のファイルを参照する任意の個数のメッセージダイジェストを含みえる。この例では、説明を簡単にするために２つの文書が示される。このタイプの記述子ファイルにおいては、特定の文書を直接に特定するメッセージダイジェストが含まれる。もちろんメッセージダイジェスト１５８は、ファイル１５０についても計算されえ、この場合、ＭＤ１５８は、文書ＡおよびＢを参照するのに用いられる。
【００４３】
図４は、第２タイプの記述子ファイルの例を示す。記述子ファイル１６０は、オプションのメタデータおよびユニークに他の記述子ファイル１６４を特定するメッセージダイジェスト１６２を有する。ファイル１６４の中には、文書Ａを特定するメッセージダイジェスト１６６がある。このタイプの記述子ファイル１６０について、他の記述子ファイルを参照するメッセージダイジェストだけが存在する。１つのＭＤ１６２だけが示されるが、ファイル内には任意の個数のメッセージダイジェストが存在しえ、それぞれが他の記述子ファイルを参照する。もちろんメッセージダイジェスト１６８は、記述子ファイル１６０について形成されえる。
【００４４】
図５は、第３タイプの記述子ファイル１７０を示す。この例では、ファイル１７０は、オプションのメタデータ、ユニークに文書Ａを特定するメッセージダイジェスト１７２、および他の記述子ファイル１７５を特定するメッセージダイジェスト１７４を有する。ファイル１７５は、文書Ｂを特定するメッセージダイジェスト１７６を含む。このタイプの記述子１７０について、それはある文書を直接に特定するメッセージダイジェストと共に、他の記述子ファイルを特定するメッセージダイジェストも両方を含む。もちろん、メッセージダイジェスト１７８は、記述子ファイル１７０について作られえる。これらのさまざまなタイプの記述子ファイルは、本発明の実施形態において役に立つ。
【００４５】
逆方向ナビゲーション
【００４６】
図６は、時刻ｔ５における文書群のセットについてのコンテンツ空間５０を示し、ここでユーザは、バージョン群を逆方向にナビゲーションしたい。この例では、ユーザは、特定の文書の最も新しいバージョンから開始したいかもしれなく、それぞれのバージョンを順々に遡るか、または文書のオリジナルバージョンに直接に戻るかのいずれかをしたいかもしれない。例えば、もしユーザが文書Ｂ１−２を所有しているなら、彼または彼女は、２０２、２０４および２０６のリンクを辿って、その文書の以前のバージョンを検討したいかもしれない。またはユーザは、Ｂ１−２から直接に文書Ｂへと直接２０７を介してジャンプして戻りたいかもしれない。またはもしユーザが文書Ｂ２を所有しているなら、ユーザは、リンク２０８を辿って、オリジナル文書Ｂを見たいかもしれない。例えば、文書Ｂ１は、文書Ｂのマーケティングバージョンでありえ、一方、文書Ｂ２は、文書Ｂの技術バージョンでありえる。
【００４７】
この簡単な例では、単一の文書だけが示される。しかし文書Ｂ（例えば）は実際は任意の個数の文書群のセットでありえる。バージョンＢ１は、文書セットＢのあるバージョンと考えられえるが、なぜなら文書はそのセットに追加されており、文書はそのセットから削除されており、またはおそらくはセット内の単一の文書が変更されているからである。文書セットＢ１は、文書セットＢのあるバージョンとも考えられえるとも想定されるが、これはセットＢ内の全ての文書が完全に置き換えられているからである。再び、どの文書または文書セットが、以前の文書または文書セットの新しいバージョンと考えられるべきかを決めるのはシステムのユーザに委ねられている。
【００４８】
図７は、本発明の実施形態によってどのようにユーザがバージョン群にわたって逆方向にナビゲーションしえるかを詳細に示し、図８の説明においてこの図が参照される。本発明は、コンピュータ上で走るシステムソフトウェア（「システム」）を想定し、ユーザはこのコンピュータと対話して本発明のさまざまな実施形態を実行する。このシステムは、メッセージダイジェストを作り、文書を記憶し、文書をメッセージダイジェストに基づいて取り出し、バージョン群にわたって逆方向および順方向ナビゲーションを促進し、循環ナビゲーションを促進し、かつユーザが対話するユーザインタフェースを提供する。このようなシステムは、当業者には理解されるように、単一のスタンドアローンコンピュータ上で、分散されたコンピュータ群上で実現されえ、またはインターネット上でアクセスされえる。この開示を読めば、当業者なら任意の適切なコンピューティング環境を用いて本発明のさまざまな実施形態を実現し利用できるだろう。
【００４９】
図８は、バージョン群にわたる逆方向ナビゲーションをどのようにシステムがセットアップし、可能にするかを記載するフローチャートである。ステップ２５０において、ユーザは、文書Ｂを作成するかまたはそうでなければ獲得する。ユーザは、文書Ｂを特定するメッセージダイジェストも与えられえる。文書Ｂは、任意の文書または文書群のセットでありえ、これについてバージョン群が作られると予期される。ステップ２５４において、システムは、文書Ｂのメッセージダイジェスト２２１、ファイル２２３およびメッセージダイジェスト２２０（もし既に与えられていないなら）を作る。ステップ２５８において、ユーザは、文書Ｂ１を作成するかまたはそうでなければ獲得する。この例では、ユーザは、文書Ｂ１が文書Ｂのバージョンであると意図し、例えば文書Ｂ１は、文書Ｂのマーケティングバージョンである。
【００５０】
ステップ２６２において、ユーザは、システムにＢ１が文書Ｂのバージョンであることを示す。この時点でシステムは、新しいバージョンが存在し、よってあとでこれらのバージョン群にわたって逆方向ナビゲーションを可能にするステップを取る。ステップ２６６において、システムは、文書Ｂ１のメッセージダイジェスト２２２を作る。ステップ２７０において、システムは、ＭＤ２２２を含む文書Ｂ１についての記述子ファイルおよび文書ＢのＭＤ２２１を含む記述子ファイル２２３についてのメッセージダイジェスト２２０を作る。オプションとしてメタデータデータも含まれる。ステップ２７４において、システムは、文書Ｂ１についての記述子ファイル２２４を特定するメッセージダイジェスト２２６を作る。この時点で、ＭＤ２２６は、文書Ｂの最新バージョンについてのユニークな識別子としてユーザに提供されえる。後でここで記載されるように、ユーザは、文書Ｂ１にアクセスするためだけではなく、オリジナル文書Ｂへと逆方向ナビゲーションをするのにもＭＤ２２６を用いえる。
【００５１】
ユーザが今度は文書Ｂ１−１およびＢ１−２も追加し、これらがオリジナル文書Ｂの最新のバージョン群として考えられることを意図すると仮定すると、システムは、ステップ２５８〜２６６において記載された技術を用いて記述子ファイル２３４および２４４を作るようステップ２７８においてループを実行する。これらファイルを作る過程で、記述子ファイル２４４を特定するメッセージダイジェスト２４６が作られる。後に記載されるように、ユーザはＭＤ２４６を用いて、最新文書Ｂを見るだけでなく、オリジナル文書Ｂに最終的に到達するまでそれぞれのバージョンを順に辿って戻ることもできる。
【００５２】
今度はステップ２５４に戻って、ユーザ（または異なるユーザ）文書Ｂの異なるバージョン、すなわち文書Ｂ２を作りたい場合を考える。この例では、文書Ｂ２は、文書Ｂの技術バージョンであると想定する。文書Ｂ２を作るユーザは、Ｂ１を作ったのと同じユーザである必要はなく、実際、ユーザたちは他のユーザが異なるバージョンを作りつつあることに気付いている必要はないことが理解されよう。さらに、他のユーザも文書Ｂのバージョン群を作りつつあることを知らない異なるユーザによってそれぞれ作られた、文書Ｂの任意の個数のバージョン群が存在しえる。
【００５３】
この例ではユーザは、ステップ２８６において文書Ｂ２を作る。ステップ２９０において、ステップ２６２〜２７４の技術を利用し、文書Ｂ２の記述子ファイルのメッセージダイジェストが作られ、ユーザにステップ２９４において返される。このメッセージダイジェストを用いて、ユーザは、文書Ｂの最新の技術バージョン、すなわちＢ２を見ることができ、またはオリジナル文書Ｂに逆方向にナビゲーションすることもできる。文書Ｂの最新のバージョンを見るために、マーケティング部門にいるユーザにＭＤ２４６が戻され、一方で、ステップ２９０において作られた文書Ｂ２についてのメッセージダイジェストは文書Ｂの最新のマーケティングバージョンを見るためにマーケティング部門にいるユーザに返されることが理解されよう。これらは、異なる目的を意図された異なるメッセージダイジェストであり、これらのメッセージダイジェストが文書Ｂの異なるバージョン群、すなわちマーケティングバージョンおよび技術バージョンを特定することを示すよう任意の適切なやり方で記憶され、ラベルが付けられ、参照されえる。当業者なら任意の数のユーザが、特定の時刻におけるコンテンツ空間の「彼等の」バージョンである彼等が考えるものを参照する、彼等自身のメッセージダイジェストをそれぞれ作りえることがわかるだろう。例えば、ＭＤ２４６は、文書Ｂの最新のマーケティングバージョンを特定する一方で、ユーザは、その文書の最新バージョンについての識別子としてＭＤ２３６を参照することだけを望むかもしれない。このシナリオでは、ユーザは、自分自身の目的のためには文書Ｂ１−１が文書Ｂの最新バージョンだと考える選択を行うことになる。
【００５４】
バージョンにわたって逆方向ナビゲーションを行うために、図７を参照してここで記載されるようにユーザはシステムソフトウェアと対話する。マーケティング部門のユーザが文書Ｂの最新のマーケティングバージョン、または以前のバージョン群のうちの１つを見たいと仮定すると、ユーザは文書Ｂの技術バージョンについてのメッセージダイジェストであるとわかっているＭＤ２４６を得る。ユーザは、記述子ファイル２４４をユニークに特定しそれを取り出すことがそのときにできるシステムにＭＤ２４６を与える。ファイル２４４を開けると、システムは、ユーザに適切なインタフェースを通して、ＭＤ２３８（文書Ｂ１−２へのリンクを提供する）、またはその文書の次に最も新しいバージョンを特定するＭＤ２３６を提示する。記述子ファイルの実現およびリンクを辿るためにシステムが記述子ファイルをどのように使うかは、さまざまなやりかたで実現されえる。例えば、この実現は、記述子ファイル内に挙げられたメッセージダイジェストが常に特定の順番であること、および第１メッセージダイジェストは文書の現在のバージョンを特定し、一方、第２メッセージダイジェストは次に最も新しいバージョンへ戻るリンクを提供することを単に想定しえる。代替として、記述子ファイル内のメタデータは、どのメッセージダイジェストがどの文書を参照するかを示すテーブルまたは他の情報を提供しえる。
【００５５】
この例では、ユーザは、選択し、クリックし、または他のやりかたでＭＤ２３６を対象のリンクとして特定でき、これは記述子ファイル２３４への参照を提供する。いったんファイル２３４を得ると、システムはそれから、ＭＤ２２８を用いて文書Ｂ１−１を検討するか、またはＭＤ２２６を用いてさらに逆方向に進むかの選択をユーザに提供しえる。ＭＤ２２６を選択することによって、それからシステムは記述子ファイル２２４を取り出す。ユーザはそれから、ＭＤ２２２を介して文書Ｂ１を検討するか、またはＭＤ２２０を用いてオリジナル文書Ｂを検討するかの選択を有する。このようにして、ユーザは、一連の文書群のバージョン群を有する特定のコンテンツ空間をユニークに特定する単一のメッセージダイジェスト２４６で単に始めることによって、逆方向ナビゲーションを文書のバージョン群にわたって行うことができる。
【００５６】
図９は、逆方向ナビゲーションの代替実施形態を示し、ここでユーザは、その文書の最新バージョンのそれぞれを順に通る必要なく、文書のオリジナルバージョンへ直接にジャンプすることが許される。逆方向ナビゲーションのためのこの実施形態において、ユーザは、彼または彼女がＭＤ２４６を用いてオリジナル文書を見たいことを最初にシステムに示しえる。この実施形態において、それからシステムは、それが最終的にＭＤ２２０に到達し、ユーザに文書Ｂを特定し提示することができるまで自動的にメッセージダイジェストリンクを逆方向に辿る。記述子ファイル２４４、２３４および２２４のメッセージダイジェストを取り出し、開いて、用いることは、システムによって自動的になされ、ユーザにはトランスペアレントである。このようにして、図８で実行されたセットアップを用いて、ユーザはオリジナル文書へと直ちにナビゲーションできる。
【００５７】
この実施形態において、システムは、ＭＤ２２０（オリジナル文書Ｂをユニークに特定する）を記述子ファイル２２４、２３４および２４４のそれぞれにいつも挿入する。記述子ファイル内に挙げられた第１メッセージダイジェストは常にオリジナル文書のメッセージダイジェストであるか、または記述子ファイル内のメタデータがオリジナル文書についてのメッセージダイジェストがそのファイル内に存在することを示すのに用いられえることが、システムによって本質的に（inherently）理解されえる。
【００５８】
このようにしてそれから、ループ２７８のあいだ、記述子ファイル２３４が作られているときに、システムはＭＤ２２６を記述子ファイル２３４内に挿入するだけでなく、システムは、ＭＤ２２６を用いて記述子ファイル２２４をリアルタイムで得て、かつオリジナル文書ＢについてのメッセージダイジェストであるＭＤ２２０を取り出す。システムは、それからＭＤ２２０を記述子ファイル２３４内に挿入できる。同様にして、記述子ファイル２４４が作られるとき、ＭＤ２２０はファイル２４４内にも挿入されえる。
【００５９】
図９は、この実施形態の実現例を示し、ここでは記述子ファイルがそれぞれ、オリジナル文書のメッセージダイジェストであるＭＤ２２０を含むように変更されている。明瞭さのために、文書または記述子ファイルの全てがこの図に示されているわけではない。記述子ファイル２４４は、特定の順番でメッセージダイジェストをリストする。すなわち、第１メッセージダイジェストＭＤ２２０がオリジナル文書を特定し、第２のＭＤ２３８がユーザが見ることのできる文書の現在のバージョンを特定し、第３のＭＤ２３６が文書の次の最も新しいバージョンを特定する。もしこのように実現されるなら、追加のメタデータデータが、どのメッセージダイジェストがオリジナル文書を特定するかを示すために追加されることは厳しくは必要ではない。
【００６０】
しかしある実施形態においては、メタデータは、どのメッセージダイジェストがどれであるかを示すために追加される。メタデータ２９６は、記述子ファイル２４４内のどのメッセージダイジェストがどの文書を特定するかを特定するために、テーブル、リストまたは他のデータ構造の形で追加される。メタデータ２９６は、２つのカラムを表現し、第１カラムは、特定の文書が何かを記述する記述を提供し、一方、第２カラムは、文書の名前を提供する。文書がこのテーブル内に現れる順番は、これら特定の文書についてのメッセージダイジェストも同じ順番でリストされていることを意味するとシステムによって理解される。代替として、テーブル２９６は、特定の文書についての実際のメッセージダイジェストを含むように第３カラムを持つよう拡張されえる。
【００６１】
この例では、ユーザがＭＤ２４６をシステムに提示し、ユーザがオリジナル文書を見たいと示すとき、システムは、記述子ファイル２４４を特定し取り出す。それから、メタデータ２９６を用いて（またはどのメッセージダイジェストがオリジナル文書を参照するかの黙示的な理解（inherent understanding）を通して）、システムはユーザのために、ＭＤ２２０を得て、オリジナル文書Ｂをすぐに特定し、位置決定できる。システムはまた、ユーザが最新の文書Ｂ１−２を見るか、または前述のように以前のバージョンにわたって逆方向ナビゲーションができるようにしえる。
【００６２】
図１０は、中間ファイルを用いた逆方向ナビゲーションのバリエーションを示す。図１０は、説明のために図７からのファイルおよび文書の一部しか示していない。前のように、文書Ｂ１−２およびＢ１−１についてのメッセージダイジェストを含む記述子ファイル２４４および２３４が示される。しかしこのバリエーションにおいて、ファイル２４４内のメッセージダイジェストは、直接に記述子ファイル２３４を参照しないが、その代わりに中間ファイル２９７を参照する。換言すれば、中間ファイル２９７は、記述子ファイル２３４を特定するＭＤ２３６を含む逆方向ナビゲーションセットアッププロセスのあいだに作られる。ハッシュ関数は、ファイル２９７、すなわちＭＤ２９８についてのハッシュ値を作るために用いられる。ＭＤ２９８は、それから記述子ファイル２４４内に置かれる。
【００６３】
このようにして、ユーザが以前のバージョン群にわたってバックトラックするときには間接のレベルが追加される。追加のステップが図８のフローチャートのステップ２７０において中間ファイルを受け入れるように加えられる。例えば、記述子ファイル２４４が作られる前に、中間ファイル２９７がＭＤ２３６と共に作られる。ファイル２９７についてのメッセージダイジェストがそれから、ＭＤ２３８と共に新しく作られた記述子２４４内に置かれる。中間ファイルは、一連のバージョン群内のそれぞれのバージョンについて作られえる。必要であるなら、さらなる間接レベルを提供するためにバージョン群間で１つ以上の中間ファイルを作りえる。例えば、バージョンＢ１−２およびＢ１−１間に単一のファイル２９７を有する代わりに、２つ以上の中間ファイルが記述子ファイル２４４および２３４間に存在しえる。ファイル２９７は、適切なコンピュータファイルでありえる。例として、ファイル２９７は、マイクロソフトオペレーティングシステムで利用可能な「ショートカット」ファイルまたはリンクファイルである。他のタイプのファイルには、ＵＲＬファイル、ＸＭＬファイル、ＨＴＭＬファイル、テキストファイルなどが含まれる。
【００６４】
逆方向ナビゲーションの例
【００６５】
図１１〜１３は、逆方向ナビゲーションの使用の例を示す。シチュエーションによっては、文書（または文書セット）の古いバージョンを通して逆方向ナビゲーションをするだけでなく、古いバージョンがオリジナル文書の真のコピーであることを証明できることが有用でありえる。この例は、文書のバージョンを検証し、取り出されたコピーがオリジナル文書の真のコピーであることを証明するために本発明の実施形態がどのように利用されえるかを示す。
【００６６】
多くの場合において、文書群およびそれら文書群のその後のバージョンは、電子的に発行され、これら電子文書は、公式の、またはレファレンスバージョンである。後の時点で、コンピュータから取り出されたこれら電子文書のバージョンが、実際にオリジナルの真のコピーであることを証明することが有用でありえる。例として、「Staatsblad」と呼ばれるベルギー法の官報を考える。ベルギー政府は、最近、この官報を紙で発行するのを止め、今はウェブサイト上で利用可能にすることによって、この刊行物を電子的に発行するだけである。
【００６７】
しかし問題があるのは、何年も後に取り出された、または何年も後に印刷された特定の文書が、実際に、Staatsbladウェブサイト上で原本として発行された真のコピーであることを証明することが困難でありえることである。官報はウェブサイト上でのみ発行されるので、ハッカーがそのサイト上の法律文書を不法に変更することも可能である。他の公式バージョンが存在しないために、法律文書の正確な内容を証明することは困難でありえる。さらに、不届き者が公式の法律文書をダウンロードし、それを自分たちの詐欺的目的のために改竄し、それから彼等が持つそのバージョンがオリジナルの真のコピーであることを主張することがありえる。もし公式ウェブサイト上の電子文書が真の文書であることが証明できないなら、その者は、そのウェブサイトがハッカーによって、または相手方によって改竄されたと主張するかもしれない。以下は、ベルギー政府によって電子的に発行された法律文書を例として用いて、何年も後の任意の当事者が、そのようなウェブサイトから得られたその文書および以前のバージョンが実際にオリジナル文書の真のコピーであることに確信を持てることを示す。
【００６８】
図１１は、現在の例のコンテキストにおける記述子ファイルの内容のある表示を示す。この例では、システムは、記述子ファイルをユニークに特定するＵＲＬ３０４を受け取ったことに応答してインタフェースウィンドウ３０２をユーザに示す。本発明を実現するために非常にさまざまなコンピュータおよびソフトウェアが用いられえる。この例では、マイクロソフトオペレーティングシステムを走らせるＰＣ互換のコンピュータが、ウェブサイト「trustclip.com」にアクセスするためにインターネットブラウザを用いている。ユーザは、ドメイン名だけでなく、１２８ビットのメッセージダイジェストまたはハッシュ値を記号表現する２７キャラクタのストリングも含むＵＲＬ３０４をブラウザに提供している。このメッセージダイジェストを受け取るのに応答して、ドメインサーバ上で走っているシステムソフトウェアは、そのコンテンツ参照可能な記憶において、そのメッセージダイジェストによってユニークに特定される記述子ファイルを位置特定している。ウィンドウ３０２は今度は、他の情報と共にその記述子ファイルからの情報の表示を行う。ヘディング３０５は、このサービスを利用するために電子メールアドレスを提供するためのプロンプトと共に、フランス語およびフラマン語の両方でのタイトルを提供することによってアプリケーションを導入する。日付３０６は、このシステムに提供されたＵＲＬ３０４が、２００３年１月１０日に電子的に発行されたベルギー法へのユニークな参照であることを示す。
【００６９】
ファイル名３０８は、ＵＲＬ３０４によって特定された記述子ファイルを通して利用可能であるファイルを示す。サイズ３１０は、それぞれのファイルのサイズを示す。前述のように、ファイル名およびサイズおよび他の情報は、好ましくは記述子ファイルのメタデータ内に記憶されるが、一方、記述子ファイル内に見られるメッセージダイジェストのリストは、リストされた４つのファイルのそれぞれをユニークに特定するリンクを提供する。この例では、サーバのコンテンツ参照可能な記憶はまた、前述の、または従来技術において利用可能な技術を用いて、これらのファイルを記憶し、そのメッセージダイジェストに基づいてそれぞれのファイルを位置特定およびアクセスすることができる。
【００７０】
２つのＰＤＦファイル３１２が、２００３年１月１０日に電子的に発行されたベルギー法の要約および完全な記述を提供するコンテンツファイルである。（２つのコンテンツファイルだけしか示されないが、記述子ファイル内で任意の個数のファイルが参照されえる。）インデックスファイル３１４は、コンテンツの以前のバージョンへのリンクと共に利用可能なコンテンツのインデックスを提供するＸＭＬファイルである。レシートファイル３１６は、タイムスタンプおよびその中のコンテンツおよび以前のバージョンへのリンクが、その日に公式な法としてオリジナルとして電子的に発行された真正な写しであることを疑いなく証明するディジタル署名を提供するＸＭＬファイルである。オプション３１８は、選択されたファイルをダウンロードする手段をユーザに提供する。よって、簡単なＵＲＬ３０４（メッセージダイジェストを含む）は、ある日に公開された公式の法律だけでなく、後述されるように以前のバージョンの保証された真のコピーへのアクセスも任意のユーザに対して提供する。
【００７１】
図１２は、図１１において参照されたインデックスファイルのある表示を示す。ウィンドウ３３０は、ブラウザウィンドウ内に表示されるインデックスファイルのコンテンツの１つの可能な見え方を提供する。もちろん、インデックスファイルのコンテンツを見るために、またはその情報を提示するためには、表示の他の技術および他のソフトウェアが用いられえる。日付３３２は、２００３年１月１０日に公開された法律を参照するコンテンツを示す。ファイルリスト３３４は、それぞれのファイルが取り出されえるＵＲＬ、ファイル名、ファイルサイズおよびファイルハッシュ値をリストする。この例では、リスト３３４に示されるそれぞれのファイルについてのファイルハッシュ値は、記述子ファイル内から特定のコンテンツファイル３１２を参照するのに用いられるハッシュ値と同じではない。この例では、リスト３３４内のハッシュ値は、文書のさらなる特定を提供するために、異なるハッシュ関数を用いて計算されている。この実現例に依れば、ユーザは、リスト３３４に挙げられたＵＲＬを用いて文書を取り出しえ、それから与えられたハッシュ値を用いてコンテンツを認証しえ、またはユーザは、ドメイン「trustclip.com」のコンテンツ参照可能な記憶内に記憶されている特定のＰＤＦファイル３１２を、ウィンドウ３０２を用いてダウンロードしえる。
【００７２】
ＵＲＬ３３６は、２００３年１月９日に発行されたこれら文書の以前の版へのリンクを提供する。この例では、ドメイン名はメッセージダイジェストと連結されることによって、記述子ファイルを取り出されリストされたメッセージダイジェストに対応させるために、ユーザがサイト「trustclip.com」に簡単に容易にリンクできるようになっている。ＵＲＬ３０４が２００３年１月１０日に公開された文書の現在のバージョンへのユニークなリンクを提供するように、ＵＲＬ３３６は、文書の以前のバージョンを参照する記述子ファイルをユニークに特定する。この例では示されていないが、当業者は、ＵＲＬ３３６を辿ることによって、これら文書の以前バージョンへのリンクと共に対応するインデックスファイルおよびレシートファイルと併せて記述子ファイルのコンテンツを示す、ウィンドウ３０２に非常によく似たウィンドウがユーザにそれから示されることを理解するだろう。
【００７３】
さまざまな実施形態において以前に説明されたように、ウィンドウ３０２に示される記述子ファイルのコンテンツは、図１２のインデックスファイルをユニークに特定するメッセージダイジェストを含む。ＵＲＬ３３６はインデックスファイルの一部なので、またインデックスファイルはそれからハッシュされそのメッセージダイジェストが３０２に示される記述子ファイル内に置かれるので、ＵＲＬ３３６が以前のバージョンへの真正なリンクであることが合理的な疑いを超えて検証されえる。換言すれば、ハッカーがインデックスファイルのコンテンツを変更すること、またはＵＲＬ３３６に示されるメッセージダイジェストを変更することはほとんど不可能になる。インデックスファイルは、図１０で説明されたバリエーションを利用することは注記に値する。この例では、以前のバージョンを参照するメッセージダイジェスト３３６は、ウィンドウ３０２に示される記述子ファイル内に直接には含まれないが、ダイジェスト３３６は、インデックスファイル内に含まれ、このインデックスファイルが記述子ファイルによって参照される。換言すればインデックスファイルは、以前のバージョンへ到達するためのさらなる間接のレベルを提供する中間ファイルである。
【００７４】
図１３は、図１１で参照されたレシートファイルのコンテンツのある表示を示す。この例では、ウィンドウ３５０は、インターネットブラウザ内のレシートファイルのコンテンツを表す。部分３５２は、バージョン、タイプおよび作成された時刻を含むレシートファイルについての一般情報を示す。時刻３５４は、レシートファイルがタイムスタンプされるときの正確な時刻を提供する。この実施形態において、２０００年１０月の欧州法によって認可された特別なハードウェアがタイムスタンプを提供するのに用いられている。ポリシー３５６は、欧州法によって確立されたガイドライン下で公的機関によって遵守される特定のポリシーを示す。当業者には理解されるように、真正かつ検証可能であるタイムスタンプを提供するのに任意のさまざまなタイムスタンプポリシーおよびハードウェアが用いられえる。タイムスタンプを提供する方法およびまさにその性質は、管轄区域、アプリケーションのタイプおよび特定の実現例に大きく依存しえる。
【００７５】
アタッチメント３６０は、ウィンドウ３０２に示される記述子ファイルコンテンツ内に含まれる添付されたファイル（レシートファイル以外の）をリストする。ファイル３６２および３６４は、第１および第２ＰＤＦファイルを参照し、それらの拡張子、サイズおよびファイルハッシュ値を示す。ファイル３６６は、インデックスファイルを参照し、またそのインデックスファイルについてのハッシュ値もリストする。レシートファイル内にインデックスファイルについてのハッシュ値を提供することによって（レシートファイルそのものもハッシュされる）、インデックスファイルのコンテンツ（以前のバージョンへのリンクを含む）が改竄されえないというさらなる確実性が提供される。
【００７６】
部分３７０は、ディジタル署名およびそれらを提供した公的機関、すなわち組織HyperTrustに関する。この部分は、組織「HyperTrust」がこれらファイルを作り、ディジタル的にそれらに署名した組織であることを立証する。実際のディジタル署名はこの図では示されないが、このレシートファイルの元になるＸＭＬ表現に内に見いだされえる。ファイルのコンテンツを証明し、だれがその情報に署名したかを認証するなどのためにディジタル署名を使用することは、当業者にはよく知られた技術である。よってインデックスおよびレシートファイルの使用を通して、ユーザには、文書の最新バージョンを見るときに、文書が真正であるというだけでなく、ユーザが取り出すその文書の以前のバージョンも真正のバージョンであるということが確実に提供される。
【００７７】
順方向ナビゲーション
【００７８】
図１４は、ユーザがバージョン群にわたって順方向にナビゲーションしたいコンテンツ空間５０を示す。この例では、文書Ａを有するユーザは、例えば、リンク４０２、４０４および４０６を辿ることによって、文書Ｂに関連付けられた後のバージョンを見たいと思う。あるいはユーザは、文書Ｂから文書Ｂ１−２へリンク４０８を直接に辿ることによって、文書Ｂの最新バージョンを見たいと思う。他の実施形態において、ユーザは、文書Ｂ、またはおそらくは文書Ｂを特定するメッセージダイジェストを所有しており、その後のバージョンを見たいと思う。以下の例は、文書Ｂについてのメッセージダイジェストを含む文書Ａをユーザが持つシチュエーションを説明する。もしそのユーザが文書Ｂから始めたいと思うなら、記述子ファイル４４６は、ＭＤ４１８ではなくＭＤ４２８を含み、記述子ファイル４４６について作られたメッセージダイジェストは、ＭＤ４２８’が文書Ｂ（そのメッセージダイジェストは元々はＭＤ４２８である）からの順方向ナビゲーションを可能にすることを反映させるためにＭＤ４１８’ではなく、４２８’とラベルが付けられるだろう。
【００７９】
図１５は、順方向ナビゲーションを実行する技術を詳細に示す。最初に、ユーザが特定の文書Ａを持ち、システムがメッセージダイジェスト４１４、記述子ファイル４１６、およびユーザがＭＤ４１８を用いて文書Ａをユニークに特定するのを可能にする対応するメッセージダイジェスト４１８を作ったシチュエーションを考える。文書Ａは、文書Ｂへの参照を含む。この例では、メッセージダイジェスト４２８は、記述子ファイル４２６およびメッセージダイジェスト４２４を介して文書Ｂを参照し、ＭＤ４２８は文書Ａ内に埋め込まれる。このようにして、ＭＤ４１８を所有するユーザは、文書Ａをユニークに特定し、参照された文書Ｂをユニークに特定するリンクを見つけることができる。しかしある時点において、ユーザは、文書Ｂ１を作って、その文書へ順方向にナビゲーションができるようにしたくなる。これを開始点として、ここでこのプロセスがどのようにして起こるかを説明する次の図を参照する。
【００８０】
図１６は、順方向ナビゲーションをセットアップするプロシージャを記載するフローチャートである。このシチュエーションにおいて、文書ＡおよびＢおよびそれらの関連するメッセージダイジェストがすでに前述のように存在すると仮定する。まず、ステップ４６０において、ユーザは、文書Ａ（および文書Ｂのような任意の参照された文書）を特定するメッセージダイジェストであるＭＤ４１８を得る。以下の例では、記述子ファイルがそれぞれの文書について作られ、対応するメッセージダイジェストがそれぞれの記述子ファイルについて作られることを仮定する。この実施形態において、ファイル名、作成日時などのような情報を提供するためにそれぞれの記述子ファイルのメタデータが用いられえる。これは好ましい実施形態であるが、記述子ファイルが厳密には必要でない場合には、特定の文書についてのメッセージダイジェストはその文書を、中間記述子ファイルを用いるのではなく、直接に特定しえる。例えばＭＤ４２８は、文書Ｂを直接に特定するＭＤ４２４を含む記述子ファイル４２６を特定する。他の実施形態において、ＭＤ４２４は、記述子ファイル４２６が厳密には必要でないように、ファイルＡ内に直接に埋め込まれえる。しかし記述子ファイルは、複数のファイルを一度に参照できる可能性を提供することによって、かつメタデータを提供することによって、一般には有用である。
【００８１】
ステップ４６４において、ユーザは文書Ｂ１を作る。代替として、ユーザは、どこか他の所から文書Ｂ１を得てもよく、または文書Ｂ１についてのメッセージダイジェストまたは文書Ｂ１についての記述子ファイルのメッセージダイジェストが単に与えられてもよい。ステップ４６８において、ユーザは、文書Ｂ１が文書Ｂのバージョンとして考慮されるべきであること、および順方向ナビゲーションが将来に使用できることが望ましいことをシステムに示す。ステップ４７２においてシステムは、文書Ｂ１のメッセージダイジェスト４３４を作る（以前に提供されなかった場合に限り）。好ましくは、システムは記述子ファイル４３６および記述子ファイルおよび間接に文書Ｂ１を特定するメッセージダイジェスト４３８も作る。将来の順方向ナビゲーションを可能にするために、ステップ４７６において、ＭＤ４２８をＭＤ４３８にマッピングする単一レコードを作ることによってシステムはマッピングテーブル４４０を作る。換言すれば、ＭＤ４２８（文書Ｂを特定する）は、ＭＤ４３８（文書Ｂ１を特定する）にマッピングされる。よって順方向ナビゲーションのあいだ、ＭＤ４２８（文書Ｂ）が発見されるときはいつでもＭＤ４３８（文書Ｂ１）がその場所で用いられるべきであることをシステムに示すためにマッピングテーブルが用いられる。このようにして、システムは、文書Ｂから文書Ｂ１へジャンプしえる。このシステムはまた、マッピングテーブルを特定するためにメッセージダイジェスト４４２を作る。
【００８２】
ステップ４８０においてシステムは、ＭＤ４４２および元々文書Ａを特定するために用いられたＭＤ４１８を含ませることによって記述子ファイル４４６を作る。メッセージダイジェスト４１８’はそれから記述子ファイル４４６を特定するために作られる。ステップ４８４において、ＭＤ４１８’は、文書Ａから文書Ｂのバージョンへの順方向ナビゲーションを実行するためにメッセージダイジェストとしてユーザに返される。
【００８３】
マッピングテーブル４４０は、１つのエントリだけを有するマッピングテーブルの非常に簡単なバージョンであることに注意されたい。マッピングテーブルは、それぞれ１つのメッセージダイジェストを異なるメッセージダイジェストにマッピングし、よって順方向ナビゲーションを提供する任意の個数のエントリを有しえる。例えば、もし文書Ｂが実際に多くの文書群を含む文書セットであるなら、マッピングテーブルは、それぞれのエントリが、文書の古いバージョンについてのメッセージダイジェストを文書の新しいバージョンについての新しいメッセージダイジェストにマッピングする多くのエントリを有しえて、このときメッセージダイジェストは直接に文書を特定する。マッピングテーブルは、図２０に示される他のシチュエーションにおいては多くのエントリを有しえる。メッセージダイジェストが、複数の文書についてのメッセージダイジェストを保持する記述子ファイルを特定し、マッピングテーブルが記述子ファイルメッセージダイジェストをマッピングするシチュエーションにおいては、マッピングテーブル内には１つのエントリしか存在しないかもしれない。
【００８４】
他の実施形態において、マッピングテーブル４４０は、記述子ファイル４４６の外にある別個のテーブルまたはファイルとして存在する必要はないが、ファイル４４６内にメタデータとして常駐しえる。この場合、ＭＤ４４２は必要とされない。マッピングテーブルの利点は、単純なテーブルまたはファイルとして実現されえるので、それが記述子ファイルまたは計算されたそのメッセージダイジェスト内に直接に記憶されえることであり、マッピングは他の場所にも記憶されえる。そのハッシュ値が計算されることによって（テーブルそのものについて、または記述子ファイルの一部として）、マッピングテーブルおよびそのコンテンツは、検査されえ、後に証明されえる。マッピングテーブルは任意のタイプのファイルまたはテーブルとして実現されえる。ある実施形態においてマッピングテーブルは、ＸＭＬファイルとして実現されえる。マッピングテーブル４４０は、実際に記述子ファイルを特定するメッセージダイジェストが互いにマッピングされるよう示すが、文書を特定するメッセージダイジェストを直接に互いにマッピングすることも可能である。例えば、マッピングテーブル４４０はＭＤ４２８をＭＤ４３８にマッピングするが、ＭＤ４２４をＭＤ４３４にマッピングし、よってより低いレベルにおいて所望のマッピングを達成することも可能である。マッピングテーブルは、有用なメタデータ情報、例えば、順方向または逆方向ナビゲーションに関するアクセス権も含みえる。
【００８５】
図１７は、順方向ナビゲーションのさらなる例を示す。図１６は、文書Ｂの新しいバージョンＢ１が作られるときに将来の順方向ナビゲーションを可能にするためにどのようにマッピングテーブルがセットアップされえるかを記載している。本発明は、文書Ｂの任意の個数のバージョンが後に作られるいかなるシチュエーションでも扱える。例えば図１７は、文書Ｂ１の新しいバージョン、すなわち文書Ｂ１−１が作られるときにどのように順方向ナビゲーションが可能にされるかを示す。
【００８６】
図１６のフローチャートに記載された技術と同様に、ユーザは、文書Ｂ１−１を作るかまたはそうでなければ文書Ｂ１−１が与えられ、文書Ｂ１−１が文書Ｂ１の新しいバージョンと考えられるべきだとそれからシステムに示す。次にステップ４７２と同様に、ＭＤ５０４は、記述子ファイル５０６およびＭＤ５０８と共に作られる。次にステップ４７６と同様に、ＭＤ４３８（文書Ｂ１を参照するメッセージダイジェスト）をＭＤ５０８（文書Ｂ１−１を参照するメッセージダイジェスト）にマッピングするマッピングテーブル５０７が作られる。ＭＤ５０８は、文書Ｂ１−１を特定するメッセージダイジェストを含む記述子ファイルを特定するメッセージダイジェストである。ＭＤ５１４はそれからマッピングテーブル５０７のために作られる。
【００８７】
次にステップ４７０と同様に、ＭＤ４１８’（文書Ｂ１への順方向ナビゲーションを可能にするために以前に作られたメッセージダイジェスト）と共にＭＤ５１４を含む記述子ファイル５１６が作られる。次のＭＤ４１８’が作られる。最後にＭＤ４１８’が、文書Ｂ１−１への順方向ナビゲーションをするために用いられるようにユーザに返される。ＭＤ４１８’が用いられるとき、マッピングテーブル５０７は、それが記述子ファイル５１６内で参照されることによってメモリに入れられ、マッピングテーブル４４０は、それが記述子ファイル４４６内で参照されることによってメモリに入れられる。このようにしてシステムがリンク４１８”からリンク４１８’へ、最後に文書Ａへのアクセスを可能にするリンク４１８へ辿るにつれて、システムは、文書Ｂを特定するメッセージダイジェストが、文書Ｂ１を特定するダイジェストと置換されるべきであり、さらに文書Ｂ１を参照するダイジェストが、文書Ｂ１−１を参照するダイジェストと置換されるべきであることを知る。このようにして、ユーザは文書の多くのバージョン群の任意のものにわたって順方向ナビゲーションを行いえる。
【００８８】
図１８は、一連のバージョン内の文書の最も新しいまたは最後のバージョンへ直接にジャンプする順方向ナビゲーション技術を示す。例えば、文書Ｂのバージョンを次々に作り、それぞれのステップにおいて順方向ナビゲーションを可能にするようシステムに頼むユーザの代わりに、ユーザはコンテンツ空間５０の文書群の全てを一度に提示されるシチュエーションを考える。換言すれば、ユーザはコンテンツ空間５０の文書群の全てを一度に作るかまたは得るかのいずれかをし、それからこれら文書をシステムに提示し、Ｂ１−１が文書Ｂ１の後のバージョンであることなどをシステムに示す。このシチュエーションにおいて、もしユーザがそう望むならシステムは、文書Ｂを最後に作られたバージョン、すなわちＢ１−２にすぐにマッピングするマッピングテーブルをセットアップできる。
【００８９】
図１８には示されないが、メッセージダイジェスト４５８は、文書Ｂ１−２を参照するよう（すなわち記述子ファイルを用いて）作られる。システムはそれから、ＭＤ４２８（文書Ｂ）をＭＤ４５８（文書Ｂ１−２）にマッピングするマッピングテーブル５２０を作る。ＭＤ５２４は、このマッピングテーブルについて作られ、記述子ファイル５２６は文書Ａを参照するオリジナルのＭＤ４１８を含むよう作られる。最後にＭＤ５２８が作られ、ユーザがコンテンツ空間５０をナビゲーションし、文書Ｂの最後の利用可能なバージョン、すなわちＢ１−２にすぐにジャンプしようと思うときに用いられえるようにメッセージダイジェストとしてユーザに返される。ユーザがＭＤ５２８をシステムに提供するとき、システムは、マッピングテーブル５２０にアクセスし、リンク４１８を辿って文書Ａを得る。よって文書Ｂを参照するＭＤ４２８が発見されるときはいつでも、それはＭＤ４５８によって置き換えられ、これが文書Ｂの利用可能な最新バージョンである文書Ｂ１−２への直接のリンクを提供する。
【００９０】
図１９は、マッピングテーブルが複数のエントリを有する他の順方向ナビゲーションシナリオを示す。前述のように、マッピングテーブルは、それぞれが１つのメッセージダイジェストを他のメッセージダイジェストにマッピングする任意の個数のエントリを持ちえる。例えば、ある時点において文書ＢおよびＣの両方の２つの新しいバージョン、すなわち文書Ｂ１およびＣ１が作られたコンテンツ空間５７０を考える。ユーザは今度は、これら新しい文書が新しいバージョンと考えられるべきだとシステムに示す。よって、ユーザが文書Ａにアクセスするとき、新しいバージョンＢ１およびＣ１へと順方向ナビゲーションをしたいと思うだろう。
【００９１】
図２０は、このタイプのナビゲーションを可能にする技術を示す。図１６のフローチャートで記載された技術と同様に、マッピングテーブル５３０は、ＭＤ４２８（文書Ｂ）をＭＤ４３８（文書Ｂ１）にマッピングするよう作られる。前述の技術を用いて、メッセージダイジェスト５３８および５４８は、それぞれ文書ＣおよびＣ１を記述子ファイルによって参照するよう作られる。これらのメッセージダイジェストは、ＭＤ５３８がＭＤ５４８にマッピングするようにテーブル内のエントリとして置かれる。
【００９２】
それから記述子ファイル５６６は、ＭＤ５５４およびＭＤ４１８（文書Ａを参照するメッセージダイジェスト）を含むように作られる。ＭＤ５５８が作られ、文書ＢおよびＣの新しいバージョンへ順方向ナビゲーションするために用いられるメッセージダイジェストとしてユーザに返される。よってユーザがＭＤ５５８をシステムに提供するとき、ユーザは、文書ＡへＭＤ４１８を介してナビゲーションでき、マッピングテーブル５３０は自動的に文書ＢおよびＣからそれらの後のバージョンへマッピングし、よって順方向ナビゲーションを可能にする。
【００９３】
この開示を読めば、特定の時点で作られた新しいバージョン群を有する多くの文書に対応する任意の個数のエントリを有するように、ずっと複雑なマッピングテーブルが作られえることが当業者には理解するだろう。ユーザが新しいバージョンであるべきだと考えるものを定義することだけでなく、どの特定の時点でのマッピングテーブルがこれら新しいバージョンへマッピングするように作られるべきであるかを定義するのは、ユーザ次第である。例えば、コンテンツ空間５７０を考えると、もし文書Ｂ１およびＣ１が同じ時刻ではなく順に作られるなら、ユーザは、文書Ｂ１への順方向ナビゲーションを提供するだけのマッピングテーブルおよびメッセージダイジェストを作りたいと思うかもしれない。またはユーザは、文書Ｃ１が作られるまで待って、それから文書Ｂ１およびＣ１の両方への順方向ナビゲーションを可能にする文書Ａについてのマッピングおよびメッセージダイジェストを作ろうと思うかもしれない。またはユーザは、文書Ｂ１およびＣ１についてのマッピングテーブルを作らず、よって他人は有効なバージョンだと考えるかもしれないにも関わらず、文書Ｂ１およびＣ１への順方向ナビゲーションを実効的には提供しないことさえ選ぶかもしれない。この他人が本当に、文書Ｂ１およびＣ１への順方向ナビゲーションを可能にする文書Ａについてのマッピングテーブルおよびメッセージダイジェストを作るかも知れないことは実際にありえる。このようにして、異なるユーザが異なるコンテンツ空間を同じ文書のセットについて定義しえる。バージョンと考えられるもの、マッピングテーブルが作られるとき、および順方向ナビゲーションが可能にされるべきかまたは可能にされるべきではないかは、それぞれの個々のユーザに完全に委ねられる。
【００９４】
図２１は、図１５および１６に基づく順方向ナビゲーションを記載するフローチャートである。このシチュエーションにおいてユーザは、新しいバージョンの文書Ｂ１を作っており、順方向ナビゲーションを可能にしており、文書Ｂ１が文書Ｂの最新のバージョンであるコンテンツ空間を特定するＭＤ４１８’を得ている。
【００９５】
このコンテンツ空間を通して順方向ナビゲーションをするために、ステップ５８０において、ユーザは、このコンテンツ空間のこの所望のバージョンについてのＭＤ４１８’をまず得る。例えば、文書Ｂの後のバージョンが作られておりそこでは文書Ｂ２またはＣが作られているなどのようなコンテンツ空間の異なるバージョンを参照する他のメッセージダイジェストもここで記載された技術を用いて作られえることが理解されよう。好ましくは、ＭＤ４１８’によってユニークに特定される記述子ファイル内のメタデータは、コンテンツ空間のこのバージョンを記載するタイトルまたは記述を含む。よってユーザは、それぞれの意図される目的のための正しいメッセージダイジェストを得ることができる。ステップ５８２において、システムは記述子ファイル４４６を開いて、マッピングテーブル４４０および文書Ａおよびオリジナルのコンテンツ空間を参照するオリジナルのメッセージダイジェストであるＭＤ４１８を得る。ステップ５８４において、マッピングテーブルは、メモリに、またはデータベースのような他の適切な位置に置かれることで、システムが順方向ナビゲーションを実行するときにシステムがテーブルを参照できるようにする。
【００９６】
ステップ５８６において、システムは、ＭＤ４１８およびＭＤ４１４を用いて文書Ａをユーザに提供する。次にステップ５８８において、ユーザが文書Ａ内から文書Ｂを選択するとき、システムはＭＤ４２８を解決しようと試みる。しかしマッピングテーブル４４０はメモリ内にあるので、ステップ５９０においてシステムは、ＭＤ４２８をＭＤ４３８にマッピングし、ユーザはファイル４３６およびＭＤ４３４を介して文書Ｂ１が提供される。このようにしてユーザは、所望のコンテンツ空間内で文書Ｂの最新バージョンへ順方向ナビゲーションすることができる。もちろんユーザによって選ばれたコンテンツ空間に依存して、より複雑な順方向ナビゲーションが可能である。代替の実施形態においてマッピングテーブルはＭＤ４２４をＭＤ４３４にマッピングする。よって文書Ａ内でのＭＤ４２８への参照はファイル４２６を作るが、システムがＭＤ４２４を読むとき、システムはマッピングテーブルによりそれをＭＤ４３４へマッピングする。この代替実施形態は、より低いレベルにおいてマッピングする例である。
【００９７】
マッピングテーブルを用いて順方向ナビゲーションが実行されるとき、任意のマッピングテーブルのコンテンツは、読み出し時間において、またはラン時間において解決されえる。換言すればユーザがマッピングテーブルを作るメッセージダイジェストをまず提供するとき、システムは、見つけられた他のマッピングテーブル内のマッピングを解決するために見つけられた記述子ファイル内の全てのメッセージダイジェストをルックアップすることを含み、そのマッピングをすぐに解決できる。代替としてシステムは、マッピングがそのリンクについて存在するかを見るためにチェックする前に、ユーザが明示的にリンク（すなわちメッセージダイジェスト）を選択するまで待機しえる。
【００９８】
順方向ナビゲーションについてのコンテンツ空間をセットアップすることの一つのさらなる利点は、よって、逆方向ナビゲーションについて前述の技術をセットアップする必要なく、作られたマッピングテーブルの使用を通して逆方向ナビゲーションが許されることである。図１４〜１７の例を考えると、いったん順方向ナビゲーションがコンテンツ空間５０について可能にされると、ユーザはマッピングテーブルを逆方向に読むことによってバックトラックしえる。図１７および文書Ｂ１−１を通して順方向ナビゲーションが可能にされているシチュエーションを参照して、システムは今度はマッピングテーブル４４０および５０７をメモリに有する。もしユーザが文書Ｂ１−１を特定するＭＤ５０８を有し、バックトラックしたいなら、システムはテーブル５０７を参照し、次の最も新しいバージョンが文書Ｂ１であるＭＤ４３８において見つけられることを決定する。次にテーブル４４０を参照することによって、システムは次に最新のバージョンＭＤ４３８が文書Ｂを特定するＭＤ４２８であることを決定する。このようにして、逆方向ナビゲーションは、順方向ナビゲーションにおいて用いられるマッピングテーブルによって可能にされる。さらにもしユーザがさらに文書Ａ（文書Ｂについてのメッセージダイジェストを含む）へバックトラックしたいなら、文書Ａへ戻るのに循環ナビゲーションが用いられえる。
【００９９】
マッピングテーブルは、高レベルメッセージダイジェストの記述子ファイル内に含まれているコンテキストで記載されてきたが、マッピングテーブルが別個に保持され、セッションが起動されるときにパラメータとして渡されてもよい。図１５を考える。この例では、マッピングテーブル４４０は、マッピングテーブル（またはそのメッセージダイジェスト）および文書Ａを特定するオリジナルのメッセージダイジェストを保持するために作られた新しい記述子ファイル４４６内に含まれる。このようにして、ＭＤ４１８’を装備したユーザは、ユーザがＭＤ４１８’を起動するときテーブル４４０を用いることが保証され、さらに知ることなくまたは他のパラメータを渡すことなく所望のコンテンツ空間を見ることができる。
【０１００】
しかしもしマッピングテーブルへの参照を保持するための新しい記述子ファイル４４６を作ることが望ましくないなら、マッピングテーブルの作成と同時に、システムはマッピングテーブルを特定するＭＤ４４２と共に、ＭＤ４１８（文書Ａについてのオリジナルの識別子）をユーザに単に返せばよい。文書Ｂ１が最新バージョンであるコンテンツ空間への順方向ナビゲーションをするために、ユーザはシステム対してセッションを起動し、ＭＤ４１８および４４２の両方をパラメータとして渡さなければならないことをこのシステムはそれからユーザに通知し、またはそれをユーザは知っている。あるバリエーションでは、記述子ファイルは、メタデータとしてコンテンツ空間の記述を含むＭＤ４４２について作られえる。すなわちメタデータは、コンテンツ空間を「マーケティングバージョン１．２」として例えば記述する。よってセッションを起動しＭＤ４１８および記述子ファイルについてのメッセージダイジェストを渡すと同時に、ユーザは、所望のコンテンツ空間の記述を見ることができる。これらの実施形態はユーザがオリジナルのＭＤ４１８を文書Ａについての識別子として保持することを可能にし、しかし特定のコンテンツ空間を見るために、セッションを起動するときにユーザはマッピングテーブルについてのメッセージダイジェストをパラメータとして渡す（またはマッピングテーブルが見つけられるようになんらかの参照を渡す）必要があることを要件とする。
【０１０１】
循環ナビゲーション
【０１０２】
図２２は、文書ＸおよびＹがそれぞれ互いを参照することをユーザが望むシナリオを示す。「循環」参照と呼ばれ、ここで文書Ｘ内のリンクが文書Ｙをユニークに特定し、文書Ｙ内のリンクが文書Ｘをユニークに特定することをユーザが望む。文書Ｙへのユニークなリンクを提供するために文書Ｙについてのハッシュ値が作られ、文書Ｘに挿入されえる一方で、そうなると文書Ｘへのユニークなリンクを挿入するために文書Ｙを変更することができない。もしそのハッシュ値が作られた後に文書Ｙが変更されるなら、本質的に、文書Ｙの新しいバージョンが作られているので、計算されたそのオリジナルのハッシュ値は文書Ｙの新しいバージョンとは対応しないことになる。このシチュエーションに対応するために、本発明の実施形態は適切な技術を提供する。
【０１０３】
図２３は、２つの文書がハッシュ値を用いて互いをユニークに特定することを可能にする循環ナビゲーション技術を示す。ある時点で、ユーザは、文書Ｙおよび文書Ｙをユニークに特定する参照を含む文書Ｘを得る（または作る）。このシチュエーションにおいて、メッセージダイジェスト６０２（好ましくは記述子ファイルのメッセージダイジェスト）は、文書Ｙについて計算されており、文書Ｙへの参照を提供するために文書Ｘ内に挿入される。ユーザは、文書Ｘをユニークに特定するメッセージダイジェスト６０１（好ましくは記述子ファイルのＭＤ）も提供される（またはシステムが計算する）。この時点で、ユーザは、文書Ｘを位置特定して、よって文書Ｙへのユニークな参照を見つけるためにＭＤ６０１を用いえる。しかしこの時点で、文書Ｙ内には文書Ｘへの参照が存在しない。ユーザは、文書Ｘをユニークに特定するＭＤ６０１を含む新しいバージョンの文書Ｙ、すなわち文書Ｙ’を作る。しかしＭＤ６０１の挿入がオリジナルの文書Ｙを変更するので、文書Ｙの新しいバージョンはこのように作られている。文書Ｙ’が与えられると、ユーザは文書Ｘへ、それから文書Ｙへとナビゲーションできるが、文書Ｘへとナビゲーションして戻ることができない。代替として文書Ｘが与えられると、ユーザは文書Ｙへとナビゲーションできるが、文書Ｘへとナビゲーションして戻ることができない。
【０１０４】
図２４は、２つの文書間で循環ナビゲーションを可能にする技術を記載するフローチャートである。図２３の図示に基づいて、ユーザはまず６５０において文書ＸおよびＹを前述のように得る。文書Ｘは、文書Ｙへのユニークな参照を含み、ＭＤ６０１は文書Ｘを特定する。循環参照を作るためにはステップ６５４において、ユーザ（またはシステム）はまず文書Ｙの新しいバージョン、文書Ｙ’を作り、文書Ｘのメッセージダイジェスト、ＭＤ６０１を文書Ｙ’に挿入する。もちろん、ユーザは文書Ｙを同時にいかなるようにも変更しえる。ステップ６５８においてシステムはそれから、文書Ｙ’をユニークに特定するＭＤ６０６（好ましくは記述子ファイルのメッセージダイジェスト）を作る。ステップ６６２においてシステムは、ＭＤ６０２（オリジナルの文書Ｙのメッセージダイジェスト）をＭＤ６０６（新しい文書Ｙ’のメッセージダイジェスト）にマッピングするマッピングテーブル６１０を作る。
【０１０５】
ステップ６６６において、記述子ファイル６１６は、マッピングテーブル６１０を参照するＭＤ６１４、および文書Ｘをユニークに特定するＭＤ６０１を含むように作られる。記述子ファイルのメッセージダイジェスト６２１が作られ、ユーザに返される。よって記述子ファイルのＭＤ６２１は、文書ＸおよびＹ間で循環ナビゲーションを実行するためのユーザへのエントリポイントを提供する。
【０１０６】
文書ＸおよびＹ間でナビゲーションをするために、ユーザは、２つの文書間の循環ナビゲーションを可能にするコンテンツ空間についてのメッセージダイジェストとしてタイトルが付けられた、または記述されたＭＤ６２１を受け取ることから始める。ＭＤ６２１を受け取ると、それからシステムは、マッピングテーブル６１０および文書Ｘへのアクセスを有する。それからユーザは、文書Ｘを見ることができる。文書Ｙを見るためにユーザがＭＤ６０２にアクセスする（またはそうでなければクリックまたは選択する）とき、システムは、ＭＤ６０２をＭＤ６０６へマッピングするマッピングテーブルを参照する。よってユーザが文書Ｙを見ようと試みるとき、その代わりにシステムは、ＭＤ６０６を用いてＹ’へのマッピングを提供する。いったん文書Ｙ’の中に入ると、ユーザは利用可能なＭＤ６０１を有し、これが循環して文書Ｘへ戻るユニークな参照を提供する。このようにして、循環ナビゲーションが２つの文書間で許される。循環ナビゲーションは、自己参照文書（self-referencing document）を作るのに用いられえる。例えば、パワーポイントのプレゼンテーションは、それ自身への明示的な参照を含みえ、そのメッセージダイジェスト（または好ましくは容易に人間が読める形）は配布物のページ上に印刷されえる。
【０１０７】
この開示を読めば、より複雑な循環ナビゲーションが起こりえることは当業者には明らかだろう。例えば、循環ナビゲーションは、２つの文書間で単に起こりえるだけでなく、任意の個数の文書の周りで循環の形で起こりえる。図２５は、任意の個数の文書の周りで循環ナビゲーションが実行されるシナリオを示す。このシチュエーションにおいて、ユーザは、コンテンツ空間７０２を作りたいと思い、この空間は示されるように文書ＭからＮへ、ＮからＯへ、およびＬからＭへ戻るように循環ナビゲーションが許される。
【０１０８】
図２６は、複数の文書の周りで循環ナビゲーションをセットアップするための技術を示す。このタイプの循環ナビゲーションをセットアップするためには、文書Ｎについてメッセージダイジェストが作られ、文書Ｍに挿入される（好ましくはメッセージダイジェストは文書Ｎを参照する記述子ファイルに関する）。次にメッセージダイジェスト（好ましくは記述子ファイルのダイジェスト）は、文書Ｍ（これは今度は文書Ｎへのユニークな参照を含む）について計算され、文書Ｍについてのこのメッセージダイジェストは文書Ｌに挿入される。同様にして、文書Ｌへのユニークな参照は文書Ｏに挿入される。いったんメッセージダイジェストが文書Ｏについて計算されると、それは直接には文書Ｎには挿入されえないが、これは文書Ｎについてのメッセージダイジェストが既に作られているからである。しかし循環ナビゲーション技術および上述のマッピングテーブルを用いて、文書Ｎについてのメッセージダイジェストを文書Ｎ’についてのメッセージダイジェストへマッピングするマッピングテーブルを提供することによって、文書Ｎから文書Ｏへの所望のマッピングが実行されえる。文書Ｏについてのメッセージダイジェスト（好ましくは記述子ファイルのダイジェスト）は、文書Ｎ’へ挿入される。よってコンテンツ空間７０４は、文書Ｏについてのダイジェストをそれが含むことを除き、文書Ｎ’が文書Ｎと同じであるように作られる。マッピングテーブルは、ＮについてのダイジェストをＮ’についてのダイジェストへマッピングするように作られる。最後に、記述子ファイルは、マッピングテーブルおよびこれらの文書のうちの一つについてのダイジェストを含むように作られる。ダイジェストは、記述子ファイルについて計算され、これら文書の周りに循環ナビゲーションを実行するエントリポイントとしてユーザに返される。
【０１０９】
コンピュータシステム実施形態
【０１１０】
本発明は、さまざまなコンピュータ上で実現されえる。ある想定された実施形態において、文書を記憶および読み出しするのに用いられるコンピュータハードウェアは、マサチューセッツ州、Hopkinton のEMC Corporationから入手可能なCenteraブランドのコンピュータである。このCentera製品説明ガイドは、このコンピュータおよびそのソフトウェアを記述し、http://www.emc.com/pdf/products/centera/centera_guide.pdfにおいて入手可能であり、ここで参照によって援用される。このシステムソフトウェアはLinuxおよびJAVA(登録商標）を用いて記述されえる。この実施形態において、Centeraコンピュータは、図２に示されるように、ユーザがメッセージダイジェストをＵＲＬを介して供給できるようにするウェブサイトのバックエンドであることが想定される。ウェブサイト上で動作するシステムソフトウェアは、Centeraおよびユーザ間をインタフェースし、ここで記載したように順方向、逆方向および循環ナビゲーションを可能にする。他の実施形態において、文書記憶、システムソフトウェアおよびユーザインタフェースは、全て単一のコンピュータ上に常駐している。他の実施形態において、サービスプロバイダは、ユーザとインタフェースするフロントエンドユーザインタフェースをインターネットを介して提供するが、それからメッセージダイジェストによって特定された文書をそれ自身に記憶するのではなく、インターネットまたは他のワールドワイドネットワーク上で検索する。または全く分散されたピアツーピアシステムは、そのコンテンツを読み出しおよび保証するためのコンテンツ参照可能な記憶だけに基づく。
【０１１１】
図２７Ａおよび２７Ｂは、本発明の実施形態を実現するのに適するコンピュータシステム９００を示す。図２７Ａは、コンピュータの一つの可能な物理的形態を示す。もちろんコンピュータシステムは、集積回路、プリント基板、および小型携帯機器から、大型のスーパーコンピュータに至るまで多くの物理的形態をとりえる。コンピュータシステム９００は、モニタ９０２、ディスプレイ９０４、筐体９０６、ディスクドライブ９０８、キーボード９１０、およびマウス９１２を含む。ディスク９１４は、データをコンピュータシステム９００に転送し、かつデータをコンピュータシステム９００から転送するために用いられるコンピュータで読み取り可能な媒体である。
【０１１２】
図２７Ｂは、コンピュータ９００のブロック図の例である。システムバス９２０に接続されているのは、さまざまなサブシステムである。単一または複数のプロセッサ９２２（中央処理装置群、すなわちＣＰＵ群）は、メモリ９２４を含む記憶装置に結合されている。メモリ９２４は、ランダムアクセスメモリ（ＲＡＭ）および読み出し専用メモリ（ＲＯＭ）を含む。この技術ではよく知られるようにＲＯＭは、データおよび命令を単一方向にＣＰＵおよびＲＡＭに転送するようにはたらき、ＲＡＭは、典型的にはデータおよび命令を双方向に転送するのに用いられる。メモリのこれら両方のタイプは、以下に述べるコンピュータ読み出し可能な適当な媒体を含みえる。固定ディスク９２６はまた、双方向でＣＰＵ９２２に結合され、追加のデータ記憶容量を提供し、また以下に述べるコンピュータ読み出し可能な適当な媒体を含みえる。固定ディスク９２６は、プログラム、データなどを記憶するのに用いられえて、典型的には一次記憶よりも低速な二次記憶媒体（ハードディスクのような）である。固定ディスク９２６内に保持された情報は、適切な場合においては、メモリ９２４の仮想メモリとして標準的なかたちで統合されえることが理解されよう。取り外し可能なディスク９１４は、以下に説明するコンピュータ読み出し可能な媒体のいかなる形態をも取りえる。
【０１１３】
ＣＰＵ９２２はまた、ディスプレイ９０４、キーボード９１０、マウス９１２およびスピーカ９３０のようなさまざまな入力／出力装置に結合される。一般に入力／出力装置は、ビデオディスプレイ、トラックボール、マウス、キーボード、マイク、タッチパネルディスプレイ、トランスデューサカードリーダ、磁気または紙テープリーダ、タブレット、スタイラス、音声または手書き認識機、生体情報読み取り機、または他のコンピュータのいずれでもよい。ＣＰＵ９２２は追加で、ネットワークインタフェース９４０を用いて他のコンピュータまたは通信ネットワークに結合されてもよい。そのようなネットワークインタフェースによりＣＰＵは、上述の方法ステップを実行する過程で、ネットワークから情報を受け取り、または情報をネットワークに出力してもよい。さらに本発明の方法の実施形態は、ＣＰＵ９２２上だけで実行されてもよく、またはインターネットのようなネットワーク上で、処理の一部を担当する遠隔地にあるＣＰＵと協働して実行されてもよい。
【０１１４】
さらに本発明の実施形態は、コンピュータによって実現できるさまざまな操作を実行するコンピュータコードを格納した、コンピュータによって読み出し可能な媒体を持つコンピュータ記憶製品に関する。媒体およびコンピュータコードは、本発明の目的のために特別に設計され構築されたものでもよく、またはコンピュータソフトウェア技術の当業者に既知の利用可能なものであってもよい。コンピュータ読み出し可能な媒体の例としては、これらに限定はされないが、ハードディスク、フレキシブルディスク、および磁気テープのような磁気媒体、ＣＤ−ＲＯＭおよびホログラフィックデバイスのような光媒体、フロプティカルディスクのような光磁気媒体、特定アプリケーション向け集積回路（ＡＳＩＣ）、プログラム可能な論理デバイス（ＰＬＤ）、およびＲＯＭおよびＲＡＭデバイスのように、プログラムコードを記憶し実行するために特別に構成されたハードウェアデバイスが挙げられる。コンピュータコードの例としては、コンパイラによって生成される機械語、およびインタープリタを用いてコンピュータによって実行可能なより高いレベルのコードを含むファイルが挙げられる。
【０１１５】
上述の本発明は、明瞭な理解の目的にためにある程度詳細に説明されてきたが、ある種の変更および改変が添付の特許請求の範囲内で実施されえることは明らかだろう。本発明の装置および方法を実現する多くの手法が存在することに注意されたい。よって説明された実施形態は、例示的であって限定的ではないと解釈されなければならず、本発明はここに挙げられた詳細に限定されるべきではなく、特許請求の範囲およびその等価物の全ての範囲によって定義されなければならない。
【図面の簡単な説明】
【０１１６】
【図１Ａ】時間と共に変化する文書群の簡単なセットを示す図である。
【図１Ｂ】時間と共に変化する文書群の簡単なセットを示す図である。
【図１Ｃ】時間と共に変化する文書群の簡単なセットを示す図である。
【図１Ｄ】時間と共に変化する文書群の簡単なセットを示す図である。
【図１Ｅ】時間と共に変化する文書群の簡単なセットを示す図である。
【図２】文書についてのハッシュベースのユニークな固有識別子を作る技術を示す図である。
【図３】第１タイプの記述子ファイルおよびメッセージダイジェストの例を示す図である。
【図４】第２タイプの記述子ファイルの例を示す図である。
【図５】第３タイプの記述子ファイルの例を示す図である。
【図６】ユーザがバージョンにわたって逆方向にナビゲーションしたい思う時点でのコンテンツ空間を示す図である。
【図７】本発明のある実施形態によってユーザがどのようにバージョンにわたって逆方向にナビゲーションしえるかを示す図である。
【図８】システムがどのようにバージョンにわたる逆方向のナビゲーションをセットアップし可能するかを示すフローチャートである。
【図９】ユーザが文書のオリジナルバージョンへ直接にジャンプすることを可能にされる逆方向ナビゲーションの代替の実施形態を示す図である。
【図１０】中間ファイルを用いた逆方向ナビゲーションのバリエーションを示す図である。
【図１１】この例における記述子ファイルのコンテンツのある表示を示す図である。
【図１２】図１１で参照されたインデックスファイルのある表示を示す図である。
【図１３】図１１で参照されたレシートファイルのある表示を示す図である。
【図１４】ユーザがバージョンにわたって順方向ナビゲーションをしたいコンテンツ空間を示す図である。
【図１５】順方向ナビゲーションを実行する技術を詳細に示す図である。
【図１６】順方向ナビゲーションをセットアップするプロシージャを記載するフローチャートである。
【図１７】順方向ナビゲーションの更なる例を示す図である。
【図１８】一連のバージョン内で文書の最新または最後のバージョンへすぐにジャンプする順方向ナビゲーション技術を示す図である。
【図１９】マッピングテーブルが複数のエントリを有する順方向ナビゲーションシナリオを示す図である。
【図２０】順方向ナビゲーション技術を可能にする技術を示す図である。
【図２１】図１５および１６に基づいて順方向ナビゲーションを記載するフローチャートである。
【図２２】ユーザが文書ＸおよびＹが互いに参照するようにさせたいシナリオを示す図である。
【図２３】ハッシュ値を用いて２つの文書がユニークに互いを特定することを可能にする循環ナビゲーション技術を示す図である。
【図２４】２つの文書間で循環ナビゲーションを可能にする技術を記載するフローチャートである。
【図２５】任意の個数の文書の周りで循環ナビゲーションが実行されるシナリオを示す図である。
【図２６】複数の文書の周りで循環ナビゲーションをセットアップする技術を示す図である。
【図２７Ａ】本発明の実施形態を実現するのに適切なコンピュータシステムを示す図である。
【図２７Ｂ】本発明の実施形態を実現するのに適切なコンピュータシステムを示す図である。
【図１Ａ】
0004602769.tif 000002
【図１Ｂ】
0004602769.tif 000003
【図１Ｃ】
0004602769.tif 000004
【図１Ｄ】
0004602769.tif 000005
【図１Ｅ】
0004602769.tif 000006
【図２】
0004602769.tif 000007
【図３】
0004602769.tif 000008
【図４】
0004602769.tif 000009
【図５】
0004602769.tif 000010
【図６】
0004602769.tif 000011
【図７】
0004602769.tif 000012
【図８】
0004602769.tif 000013
【図９】
0004602769.tif 000014
【図１０】
0004602769.tif 000015
【図１１】
0004602769.tif 000016
【図１２】
0004602769.tif 000017
【図１３】
0004602769.tif 000018
【図１４】
0004602769.tif 000019
【図１５】
0004602769.tif 000020
【図１６】
0004602769.tif 000021
【図１７】
0004602769.tif 000022
【図１８】
0004602769.tif 000023
【図１９】
0004602769.tif 000024
【図２０】
0004602769.tif 000025
【図２１】
0004602769.tif 000026
【図２２】
0004602769.tif 000027
【図２３】
0004602769.tif 000028
【図２４】
0004602769.tif 000029
【図２５】
0004602769.tif 000030
【図２６】
0004602769.tif 000031
【図２７Ａ】
0004602769.tif 000032
【図２７Ｂ】
0004602769.tif 000033