(57)【要約】  本発明は、文書を管理するコンピュータ装置に関し、特に、協同して開発されたソフトウェアプロジェクトに関する。メモリが、時間基準を有する文書のコンテンツを記憶している。抽出装置は文書コンテンツを文書要素に分解する。署名生成器は、要素コンテンツの署名を戻す。インプリント生成装置は、文書毎に、その時間基準とその要素の署名とを関連付ける。タイムクロックモジュールは、時間選択関数の結果を計算する。スーパーバイザー（管理者）は、生成器を文書コンテンツ上で動作させる。署名値毎に、スーパーバイザーは、署名値を含んだインプリント時間基準のリストを使って、タイムクロックモジュールを呼び出す。署名値毎に統合済み時間基準が取得される。各署名値とその統合済み時間基準とは記憶される。【選択図】図１
2010507852.tif 000002
【特許請求の範囲】
【請求項１】
時間基準を有する文書のコンテンツを記憶する文書管理用のコンピュータベース装置であって、
所与の規則に従って文書コンテンツを要素に細分化できる抽出装置（２００）と、
そのコンテンツの署名を戻すために文書要素を処理できる署名生成器（２０２）と、
文書コンテンツに対して、当該文書コンテンツ用の時間基準と、その文書コンテンツを要素に変換するために前記抽出装置（２００）を呼び出すことにより取得された署名の少なくともいくつかとを備えたインプリントを確立し、それから、こうして取得された前記要素に対して前記署名生成器（２０２）を確立できるインプリント生成器（ｓｉｇｎＯ（））と、
時間基準識別子のリストから時間選択の所定関数の結果を計算できるタイムクロックモジュール（ｄａｔ（））と、
スーパーバイザー（１１０）と、
を備え、前記スーパーバイザーは、
少なくとも２つの文書コンテンツ上で前記インプリント生成器（ｓｉｇｎＯ（））を動作させ、複数の署名を有する２つのインプリントを同時に生成するように、
署名値毎に、前記タイムクロックモジュール（ｄａｔ（））を、毎回同じ署名値を含む前記インプリントの少なくともいくつかの時間基準識別子のリストと共に繰り返し呼び出し、これにより、署名値毎に統合済み時間基準を提供するように、
各署名値とその統合済み時間基準との間の通信を記憶するように、
配列されていることを特徴とする、コンピュータベース装置。
【請求項２】
前記タイムクロックモジュールによって計算された所定の時間選択の関数は、結果の値として、前記リスト上で最も古い時間基準識別子と、前記リスト上で最新の時間基準識別子との中から選択した少なくとも１つを決定するように配列されていることを特徴とする、請求項１に記載の装置。
【請求項３】
文書要素に関する要素属性を戻すために、その文書要素を処理できるコンテンツクオリファイア（ｅｖａｌ（））もまた備えていることを特徴とする、請求項１または２に記載の装置。
【請求項４】
前記インプリント生成器（ｓｉｇｎＯ（））は、文書コンテンツに対し、前記抽出装置（２００）から得た要素のために前記コンテンツ識別子（ｅｖａｌ（））を呼び出すことにより文書コンテンツの要素属性の少なくともいくつかの識別子をも備えたインプリントを確立することができ、
時間選択の前記所定の関数は、時間選択に対して、要素属性識別子を考慮するように配列されており、
前記スーパーバイザー（１１０）は、毎回、前記タイムクロックモジュール（ｄａｔ（））を、前記同一の署名値と、関連する要素属性識別子とを含んだ前記インプリントの時間基準識別子のリストと共に繰り返し呼び出すように配列されていることを特徴とする、請求項３に記載の装置。
【請求項５】
前記インプリント生成器は、文書コンテンツに対し、この文書コンテンツの前記時間基準を備えたインプリントと、要素属性が特定の状況を検証する文書要素の署名とを確立するように配列されていることを特徴とする、請求項３または４に記載の装置。
【請求項６】
前記コンテンツクオリファイア（ｅｖａｌ（））は、文書要素のコンテンツに関する所定の統計タイプの関数の結果値を要素属性として戻すために、文書要素を処理できることを特徴とする、請求項３〜５のいずれか一項に記載の装置。
【請求項７】
それぞれが少なくとも１つの文書コンテンツ属性をも有する文書の少なくとも幾つかにおいて、
前記インプリント生成器（ｓｉｇｎ（））は、文書コンテンツに対して、その文書コンテンツの前記属性の識別子をも備えたインプリントを確立できることを特徴とする、請求項１〜６のいずれか一項に記載の装置。
【請求項８】
文書コンテンツの属性の識別子のリストから、所定の文書属性選択関数の前記結果の値を、時間基準識別子のリストの関数として計算できる認証モジュール（ａｕｔ（））をさらに備えていることを特徴とする、請求項７に記載の装置。
【請求項９】
前記スーパーバイザー（１１０）は、
毎回、同一の署名値を含む前記インプリントの文書コンテンツの属性の前記識別子のリストと共に、認証モジュール（ａｕｔ（））を繰り返し呼び出し、これにより、署名値毎に統合済み文書コンテンツ属性データムを提供するように、
各署名値と、その統合済み文書コンテンツ属性データムとの間の通信を記憶するように配列されていることを特徴とする、請求項８に記載の装置。
【請求項１０】
前記文書コンテンツ属性は、前記文書コンテンツへの貢献者の識別子を備えていることを特徴とする、請求項７〜９のいずれか一項に記載の装置。
【請求項１１】
文書コンテンツの少なくとも１つの公知の構造を認識できるとともに、その構造が認識された文書の存在下で、その特徴を示すデータム（７０２）をその文書と関連付けできるクオリファイアモジュール（ｔｙｐｅ（））をさらに備え、
前記インプリント生成器（ｓｉｇｎＯ（））は、前記クオリファイアモジュール（ｔｙｐｅ（））を呼び出して前記インプリントを確立するように配列されていることを特徴とする、請求項１〜１０のいずれか一項に記載の装置。
【請求項１２】
前記文書のコンテンツの構造の特徴を示す前記データムに依存する第１の所定の規則のセットに従ってクリーンアップされた文書コンテンツを、文書コンテンツから確立するように配列された第１のフィルタリングモジュール（ｆｉｌｔｅｒＡ（））をさらに備え、
前記インプリント生成器（ｓｉｇｎＯ（））は、クリーンアップ済みの文書コンテンツを得るために、１つの文書に対して、前記第１のフィルタリングモジュール（ｆｉｌｔｅｒＡ（））を呼び出すように、および、このクリーンアップ済みの文書コンテンツを要素に変換するために前記抽出装置（２００）を呼び出すことによってインプリントを確立するように配列され、それから、要素用の前記署名生成器（２０２）はこのように取得されていることを特徴とする、請求項１１に記載の装置。
【請求項１３】
前記文書構造の特徴を示すデータムに依存し第２の所定の規則のセットに従って、文書要素から、クリーンアップされた文書要素を確立するように配列された第２のフィルタリングモジュール（ｆｉｌｔｅｒＢ（））をさらに備え、
前記インプリント生成器（ｓｉｇｎＯ（））は、前記抽出装置（２００）を呼び出すことによって取得された前記文書要素からクリーンアップ済みの文書要素を取得するために、１つの文書に対して、前記第２のフィルタリングモジュール（ｆｉｌｔｅｒＢ（））を呼び出すように配列され、これにより、これらのクリーンアップ済みの文書要素のための前記署名生成器（２０２）はこのように取得されていることを特徴とする、請求項１１または１２に記載の装置。
【請求項１４】
前記スーパーバイザー（１１０）は、統合済み時間基準を署名値毎に供給するために、毎回、同一の署名値を含んだ前記インプリントの全ての時間基準識別子のリストと共に、前記タイムクロックモジュール（ｄａｔ（））を繰り返し呼び出すように配列されていることを特徴とする、請求項１〜１３のいずれか一項に記載の装置。
【請求項１５】
前記スーパーバイザー（１１０）は、それぞれの署名値用の新規に統合された時間基準を供給するために、毎回署名値とその書名値用の統合済み時間基準とを含んだインプリントの時間基準識別子と共に、署名値毎に、前記タイムクロックモジュール（ｄａｔ（））を繰り返し呼び出すように配列されていることを特徴とする、請求項１〜１４のいずれか一項に記載の装置。
【請求項１６】
前記タイムクロックモジュール（ｄａｔ（））は、時間基準識別子の前記リストを、前記文書コンテンツの時間基準のセットと比較するように、この比較から、結果の値として、前記リスト内の時間期間の識別子を推定するように配列されており、それぞれの時間期間は時間基準のセットに関連する連続した時間基準から作成されていることを特徴とする、請求項１〜１５のいずれか一項に記載の装置。
【請求項１７】
前記コンピュータベース装置は、文書コンテンツのバージョンを管理するツールと対話するように配列されており、前記メモリは、前記バージョン管理ツールから前記文書コンテンツ用の時間基準を受信することを特徴とする、請求項１〜１６のいずれか一項に記載の装置。
【請求項１８】
文書コンテンツのバージョンを管理する前記ツールもまた貢献者識別子を前記文書コンテンツの各々と関連付けでき、前記メモリもまたこの種の貢献者識別子を受信することを特徴とする、請求項１７に記載の装置。
【請求項１９】
前記スーパーバイザー（１１０）は、
文書コンテンツのバージョンを管理するツールと対話して、複数の文書コンテンツから互いに異なった文書コンテンツのサブセットを確立するように配列され、
複数の署名を共に有するインプリントを得るために、前記文書コンテンツのサブセットの各々の上で前記インプリント生成器（ｓｉｇｎＯ（））を動作するように配列され、
前記サブセットから取得したインプリントの時間識別子と、前記署名値が始まった前記サブセットの前記文書コンテンツと同一である前記文書コンテンツの各々の時間識別子とを同時に備えるリストを使って、前記サブセット用に取得した署名値毎に、タイムクロックモジュール（ｄａｔ（））を繰り返し呼び出すように配列されていることを特徴とする、請求項１７または１８に記載の装置。
【請求項２０】
前記スーパーバイザー（１１０）は、
各署名値とその時間基準との間での通信に加えて、前記署名値および前記時間基準が始まった文書コンテンツのセットの識別子をも記憶するように配列されていることを特徴とする、請求項１〜２０のいずれか一項に記載の装置。
【請求項２１】
第１の識別子と第２の識別子をそれぞれ有する第１のセットのインプリントと第２のセットのインプリントを比較でき、前記第１のセットのインプリントは、前記第１の識別子に対応する署名値およびそれらの統合済み時間基準を備え、前記第２のセットのインプリントは、前記第２の識別子に対応する署名値およびその統合済み時間基準を備え、成功した比較のセットは、サブセットの従属性に、それに共通の署名値毎に前記第１および第２のセットのインプリント用に対応する統合済み時間基準を提供するインプリント比較装置（ｃｏｍｐ（））と、
所定の規則のセットに従って、前記統合済み時間基準に基づいて、共通の署名値に対して、第１および第２の識別子のうち一方を元または「ソース」識別子として、他方の識別子を宛先または「ターゲット」識別子として修飾できる方位付けモジュール（ｄｉｒ（））とをさらに備え、
前記インプリント比較装置（ｃｏｍｐ（））は、前記ソースとターゲットとの差異を提案するために、対応する統合済み時間基準を備える従属性の前記サブセットの署名値毎に、前記方位モジュール（ｄｉｒ（））を呼び出しできることを特徴とする、請求項２０に記載の装置。
【請求項２２】
前記方位モジュール（ｄｉｒ（））は、ソース文書コンテンツのセットの識別子として、
最も古い統合済み時間基準に対応する前記識別子を確立するように配列されていることを特徴とする、請求項２１に記載の装置。
【請求項２３】
前記第１および第２のセットのインプリントの間の前記従属性のサブセットを分割し、前記署名の起源の識別子に従って前記サブセットを細分化するように、次に、以下の分割基準の少なくとも１つの反復適用に基づいて、従属性の集合体をそれぞれ制作するように配列されたモジュール（ａｇｒＤｅｐ１（））をさらに備え、
未だグループ化されていない最も古い共通署名（１３０４）を取り、それを、この最も古い共通署名（１３０６）よりも早い「ソース」側で時間基準から生じる他の共通署名と共にグループ化し、
「ターゲット」時間基準がまだグループ化されていない前記共通署名の中で最も古い署名より後である共通署名を、所与のグループから除去し（１３１０）、
所与のエンドオブループ基準が検証されるまで前記反復が継続することを特徴とする、請求項２２に記載の装置。
【請求項２４】
Ｎセットのインプリントを受信でき、次に、前記インプリントのセットのうち少なくとも一つをその他と比較することにより、複数の従属性サブセットを提供する前記署名の少なくとも幾つかに対して、１つのインプリントのセットから別のセットへ方位付け比較を実行でき、それから、これらの従属性サブセット内の署名毎に、当該署名用の「ターゲット」時間基準が、当該署名用の前記Ｎセットのインプリントのうち最も古い日付よりも後である従属性を除去できるマルチ文書比較装置をさらに備えていることを特徴とする、請求項２１〜２３のいずれか一項に記載の装置。
【請求項２５】
前記インプリントおよび任意の従属性に基づいて検証される貢献者の日付付きリストを作成できるグローバル文書管理モジュール（１５０）を備えることを特徴とする、請求項２１〜２４のいずれか一項に記載の装置。
【請求項２６】
前記文書コンテンツは、所与の文書、文書状態、文書バージョン、および、いくつかの文書バージョンを含む可能性のある文書のセットの中から選択した少なくとも２つのカテゴリに従って識別できることを特徴とする、請求項１〜２５のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ文書の処理に関する。
【背景技術】
【０００２】
コンピュータ文書は基本的にあらゆる種類のファイルであり、誰もがそのコンテンツには直接的または間接的にアクセスできるようになっている。ファイルがテキストタイプのものである場合には、アクセス可能性は相当に直接的なものとなる。当該ファイルが音楽ファイルやビデオファイルである場合には、アクセス可能性はあまり直接的ではない。これ以外の例が後に考察されるだろう。
【０００３】
各ファイルの正確かつ論理的に厳密な日付記入を許容するように、長い間、ファイルシステムが編成されている。同様に、様々な方法で、異なる属性を１つのコンピュータファイルに関連付けることは公知である。基本的に、これらの属性、例えば「read only（読み出し専用）」、「archive（アーカイブ）」、「system（システム）」、または「hidden（隠し）」という属性は、ファイル自身のコンピュータ特性にリンクされている。ファイルシステムにリンクされた属性と一緒に、他の属性は１つのファイルに例えばそのヘッダ内に関連付けられることがある。コンピュータシステムによって文書を比較することも可能である。ファイルシステムの属性のみを使用して「最小の」比較を実行することができる。これは全ての種類のファイルに当てはまるが、決して完全ではない。例えば、それは、異なる日付記入システムを持った同一のファイルを異なるものと見なしてしまう。高次に展開される比較は、ファイルのコンテンツに関係される。このように、比較の詳細が異なるのは、例えばそれが「テキスト」タイプのファイルであるか否かに依存して、または、比較することが非常に困難な画像ファイル等のような高次に展開された特質を持つファイルとバイナリファイルを、２つのファイル間で、対比することによってである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
出願人は、現在のところ、比較が順序だてて自動的に実行されるのを許容し、それと同時に、その比較の要素が正確に日付記入される技術が存在しないことに気付いている。このタイプの技術の必要性は、著作権の目的での作品、さらに詳細にはソフトウェアタイプの動作の法的ステータス（地位）を決定する分野のような様々な分野において影響を受け得る。
【０００５】
本発明は、この状況を改善することを目指している。
【課題を解決するための手段】
【０００６】
本発明は、時間基準を有する文書のコンテンツを記憶するメモリを備えた文書管理用のコンピュータベース装置に関し、当該装置は、所与の規則に従って文書コンテンツを要素に細分化できる抽出装置と、そのコンテンツの署名を戻すために文書要素を処理できる署名生成器と、文書コンテンツに対して、当該文書コンテンツ用の時間基準と、その文書コンテンツを要素に変換するために前記抽出装置を呼び出すことにより取得された署名の少なくともいくつかとを備えたインプリントを確立し、それから、こうして取得された前記要素に対して前記署名生成器を確立できるインプリント生成器と、時間基準識別子のリストから所定の時間選択の関数の結果を計算できるタイムクロックモジュールと、スーパーバイザーとを備え、前記スーパーバイザーは、少なくとも２つの文書コンテンツ上で前記インプリント生成器を動作させ、複数の署名を有する２つのインプリントを同時に生成するように配列され、署名値毎に、前記タイムクロックモジュールを、毎回同じ署名値を含む前記インプリントの少なくともいくつかの時間基準識別子のリストと共に繰り返し呼び出し、これにより、署名値毎に統合済み時間基準を提供するように配列され、各署名値とその統合済み時間基準との間の通信を記憶するように配列されている。
【０００７】
本発明のさらなる特徴および利点は、以下の詳細な説明と図面との検討から明らかになる。
【図面の簡単な説明】
【０００８】
【図１】本発明によるツールの実施の形態を図解する機能図を示す。
【図２】本発明によるツールの文書署名生成関数を図解するフローグラフを示す。
【図３】図１の作業ベース内の記憶装置を図解するテーブルを示す。
【図４】本発明によるツールの状態署名生成関数を図解するフローグラフを示す。
【図５】本発明によるツールの文書セット用のインプリント生成関数を図解するフローグラフである。
【図６】図１における作業ベースの記憶装置の別成分を図解するテーブルを示す。
【図７】本発明によるツールの文書署名生成関数を特定の実施の形態において図解するフローグラフを示す。
【図８】インプリント日付記入関数を特定の実施の形態において図解するフローグラフを示す。
【図９】インプリント生成関数を特定の実施の形態において図解するフローグラフを示す。
【図１０】図１の生成データベースの構造を特定の実施の形態において図解する略図を示す。
【図１１】図１の生成データベース内の記憶装置を特定の実施の形態において図解するテーブルを示す。
【図１２】図１の比較モジュール用のインプリント比較関数を第１の実施の形態において図解するフローグラフを示す。
【図１３】図１における比較モジュール用の集合関数の第１の例を図解するフローグラフを示す。
【図１４】図１における比較モジュール用の集合関数の第２の例を図解するフローグラフを示す。
【図１５】図１における比較モジュール用のインプリント比較関数を第２の実施の形態において図解するフローグラフを示す。
【発明を実施するための形態】
【０００９】
添付の図面は、定義を完全にするのに役立つだけでなく、ある場合にはその定義の一助となるものである。
【００１０】
既に見たように、ここでは「コンピュータ文書」という表現は相当に幅広い意味で使用されている。コンピュータ文書は、基本的には、あらゆる種類のファイルであってもよいが、本発明のある実施の形態では純粋なテキストタイプないし大部分はテキストタイプのファイル、または、テキスト含意を有するファイルが予想されている。
【００１１】
具体的には、１つの文書は、多くの場合、単一の物理コンピュータファイルの形式を取っている。しかしながら、「コンピュータ文書」という表現は、多数の文書が同一の物理ファイル内に含まれている場合、または反対に、所定の文書が多数の物理コンピュータファイルから作成されている場合にも及んでいる。「論理ファイル」という用語は、文書と、その文書の全体またはその一部分を含んだ物理ファイルとの間の関係から離れて使用されることが多い。
【００１２】
文書のコンテンツを「played（再生）」してもよく、例えば、テキストまたはウェブページを表示し、音楽を聴き、ビデオを視聴し、または、プログラムを実行してもよい。この場合、原則的には文書は変更されない。
【００１３】
また、文書のコンテンツは、編集すなわち作成／修正を行う人にとって利用し易いかもしれない。どんなに編成が破壊されていても、編集は同一文書の多様なバーションの存在によって示される。
【００１４】
基本的に、ここでは、「文書セット」という用語を使って同一文書の多数のバージョンを言及している。しかしながら、より広い見方から、文書セットは、より大きなプロジェクトの範囲において幾つかの文書バージョンの多数セットからなる。
【００１５】
表記法の定義および取決め
用語「Ｐｉ」はデジタル文書セットを示す。例えば、セットＰｉはソフトウェアプロジェクトであり、このソフトウェアプロジェクトは、「sources（ソース）」として知られる（即ち、直接実行できないが、一連の実行可能な命令にコンパイルされるように意図されたコンピュータコードを含んだ）タイプのコンピュータファイルセットと、ソフトウェア用の記述、文書化、および／または全ての準備文書を含むテキストファイルのような関連デジタル文書とを備えていてもよい。また、文書セットＰｉは、データベースを使用して編成されたファイル、ＸＭＬ（「eXtensible Markup Language」（拡張マークアップ言語）を表す）タイプまたはＳＶＧ（「Scale Vector Graphics」（スケーラブル・ベクトル・グラフィックス）を表す）タイプのファイルから作成されることができる。
【００１６】
セットＰｉの状態ｊは、デジタル文書が所定の瞬間で例えば日付Ｔｉｊである状態のとき、セットＰｉ内の全てのデジタル文書であると定義されている。セットＰｉの状態ｊ２がこのセットの状態ｊ１と異なってもよいのは、例えば、追加のデジタル文書の存在、あるデジタル文書の欠如、および／または、コンテンツの異なるデジタル文書の存在によってであることが理解される。
【００１７】
セットＰｉの状態ｊはＳｉｊと示される。
【００１８】
ある場合には、特に、セットＰｉがソフトウェアプロジェクトを含むときに、状態Ｓｉｊは文書セットＰｉの１つのバージョンであると見られるかもしれない。これは、配布または内部作業バージョンのために意図されたバージョンであってもよく、例えば、ソフトウェアプロジェクトの状態Ｓｉｊが、特にソフトウェアの関数状態を構成していない場合には製品段階に入らないかもしれない。
【００１９】
セットＰｉは状態Ｓｉｊであってもよく、ここにｊは１〜整数Ｊｉである。形式的には
Ｐｉ＝{Ｓｉｊ｜ｊは{１、・・・、Ｊｉ}に属する}
である。
【００２０】
各状態Ｓｉｊは、特定の状態において日付ＴｉｊでセットＰｉを構成する全てのデジタル文書から作成されている。日付Ｔｉｊでの文書の状態は、別の日付でその状態と恐らく異なっているかもしれない。
【００２１】
文書セットＰｉの状態ｊでの特定の文書ｌはＯｉｊｌと示される。
【００２２】
言い換えれば、セットＰｉの汎用状態Ｓｉｊでの文書Ｏｉｊｌの特定の状態は、文書セットＰｉの別の汎用状態Ｏｉｊ′において、その状態Ｏｉｊ′ｌ′と異なってもよい。
【００２３】
状態Ｓｉｊは全ての文書Ｏｉｊｌから作成され、ここにｌは１〜整数Ｌｉｊである。その形式的な関係は
Ｓｉｊ＝｛Ｏｉｊｌ｜ｌは｛１、・・・、Ｌｉｊ｝に属する｝
である。
【００２４】
各状態Ｓｉｊは、少なくとも１つの識別された寄与因子Ａｉｊを有していてもよい。寄与因子によって、状態Ｓｉｊを作成した、またはこの状態の作成に参加した人が表される。
【００２５】
本明細書の記述を明瞭にするために、大文字に関連したインデックスは時々カンマ（「,」）によって別々に示される。しかしながら、この表示は曖昧な尤度（可能性）が存在する場合にのみ使用され、その表示をより読み易くしている。例えば、文書セットｉの状態ｊはＳｉｊと印を付けられるのに対し、文書１（「１」）の状態１２（「１２」）は好ましくはＳ１、１２と印を付されるだろう。
【００２６】
本発明による管理ツール
図１を参照すると、電子文書１００を管理するツールは、インプリント生成モジュールＳｉｇｎＭ１１０を備え、このＳｉｇｎＭ１１０の配列は、文書セットＰｉにおける文書のコンテンツの特徴を示すデジタル署名のセットを有するデジタルインプリントＥｉを当該文書セットＰｉに関連付けできるようになっている。
【００２７】
モジュールＳｉｇｎＭ１１０は、作業データベースＷＤＢ１２０と対話できるように配列されている。ベースＷＤＢ１２０は、モジュールＳｉｇｎＭ１１０の作業データを少なくとも一時的に記憶することができる。理解されることは、ベースＷＤＢ１２０が、永久メモリサポート上のデータベースの形態（例えばハードディスクタイプのもの）、またはアドレス指定可能な一時メモリの形態（例えばＲＡＭタイプのもの）を取るかもしれない編成データ記憶スペースを備えることである。
【００２８】
さらに、ツール１００は、異なる文書セットＰｉに関連したデータを保守できる文書セット用のデータベースＰＤＢ１３０を備えている。特に、ベースＰＤＢ１３０は、文書セットＰｉのインプリントＥｉを保守できる。ベースＰＤＢ１３０は、永久メモリサポート上に編成されたデータベースの形態、例えばハードディスクタイプを取るかもしれない。
【００２９】
モジュールＳｉｇｎＭ１１０は、ベースＰＤＢ１３０と対話できるように、特に、モジュールＳｉｇｎＭ１１０により生成されたインプリントＥｉを蓄えるために配列されている。
【００３０】
さらに、ツール１００は、異なる文書セットＰｉに共通な署名を識別できるように配列された文書セット比較用モジュールＣｏｍＭ１４０を備えている。必要に応じて、モジュールＣｏｍＭ１４０は、これら文書セット間の従属関係を決定できる。
【００３１】
モジュールＣｏｍＭ１４０は、ベースＰＤＢ１３０と対話して、比較されるべき文書セットＰｉから生成されたインプリントＥｉと、該当する場合にはこのインプリントに関連されるデータとをベースＰＤＢから抽出することができるようしている。
【００３２】
最後に、ツール１００は、文書への権利を決定するのに有用なデータを確立するために、ベースＰＤＢ１３０およびモジュールＣｏｍＭ１４０と対話できるように配列された権利管理モジュールＲｉｇｈｔｓＭ１５０を備えている。
【００３３】
インプリント生成モジュール
モジュールＳｉｇｎＭ１１０は、文書Ｏｉｊｌのコンテンツのデジタル文書インプリントＥｉｊｌの特徴を確立できる文書インプリント生成関数ｓｉｇｎＯ（）を備えている。デジタル文書インプリントＥｉｊｌは、文書Ｏｉｊｌのコンテンツに従って生成されたデジタル署名セットを備えている。
【００３４】
関数ｓｉｇｎＯ（）は、図２および図３を参照して一般項で既述されている。
【００３５】
関数ｓｉｇｎＯ（）は、選択した規則に従って文書Ｏｉｊｌを文書要素Ｃｉｊｌｋに分割できるように配列されている（ステップ２００）。さらに、関数ｓｉｇｎＯ（）は、各要素Ｃｉｊｌｋ毎に、この要素のコンテンツのデジタル署名Ｎｉｊｌｋの値の特徴を確立するように配列されている（ステップ２０２）。これは、署名関数ｓｉｇｎ（）を呼び出すことで行われてもよい。また、関数ｓｉｇｎＯ（）は、要素Ｃｉｊｌｋの署名Ｎｉｊｌｋの特徴とその要素への参照とを関連付けて要素インプリントＥｉｊｌｋを形成できるように配列されている（ステップ２０４）。要素Ｃｉｊｌｋへの参照は、指数ｉ、ｊ、ｌ、ｋの値を含んでもよい。要素Ｃｉｊｌｋへの参照と署名Ｎｉｊｌｋの値との相関関係を維持する要素インプリントテーブルＳｉｇｎＥｔａｂ［］内には、要素インプリントＥｉｊｌｋのそれぞれが記憶されていることもある。
【００３６】
任意に、要素属性ＡＥｉｊｌｋを各要素Ｃｉｊｌｋと関連付けることができる。要素属性ＡＥｉｊｌｋはテーブルＳｉｇｎＥＴａｂ［］内に記憶されることもある。例えば要素が関数でありそのオブジェクトがソースファイルである場合には、要素属性ＡＥｉｊｌｋは多数のコード行数の値を含んでもよい。また、要素属性ＡＥｉｊｌｋは、要素Ｃｉｊｌｋのコンテンツの妥当性の値を含むこともできる。１つ以上の付加的な要素属性をテーブルＳｉｇｎＥＴａｂ［］内に記憶してもよい。
【００３７】
図３のテーブル３００は、要素Ｃ１、１、２、２用のテーブルＳｉｇｎＥＴａｂ［］の実施の形態を示す。
【００３８】
文書ＯｉｊｌのコンテンツのインプリントＥｉｊｌの特徴は、要素インプリントＥｉｊｌｋのセットを備えており、ここにｋは１〜自然な整数Ｋｉｊ１の間で変化する自然な整数である（ステップ２０６）。適切な場合には、インプリントＥｉｊｌは、要素インプリントＥｉｊｌｋの要素Ｃｉｊｌｋに関連した要素属性ＡＥｉｊｌｋのセットをさらに備えている。
【００３９】
ベースＷＤＢ１２０は、文書Ｏｉｊｌの時間基準Ｔｐｉｊｌに関連して、少なくとも一時的にインプリントＥｉｊｌを記憶する。例えば、時間基準Ｔｐｉｊｌは、状態Ｓｉｊに関連した日付Ｔｉｊを備えてもよい。時間基準Ｔｐｉｊｌは、文書Ｏｉｊｌに関連した日付Ｔｉｊｌを、例えば文書が最後に修正された日付を同様に備えてもよい。
【００４０】
ベースＷＤＢ１２０は、例えば文書インプリントテーブルＳｉｇｎＯＴａｂ［］内に、以下の相関関係を保持することができる：
文書識別子Ｏｉｊｌ、例えば、指数ｉ、ｊ、ｌの値からなる識別子、
文書Ｏｉｊｌにおける要素インプリントＥｉｊｌｋのそれぞれへの参照、例えば、指数ｉ、ｊ、ｌ、ｋからなる参照、
文書Ｏｉｊｌの時間基準ＴＰｉｊｌの値、例えば日付Ｔｉｊ。
【００４１】
任意に、文書属性ＡＯｉｊｌを各文書Ｏｉｊｌに関連付けすることができる。文書属性ＡＯｉｊｌはテーブルＳｉｇｎＯＴａｂ［］内に記憶されてもよい。文書属性ＡＯｉｊｌは、コンピュータファイルのサイズの値、貢献者Ａｉｊの証明書、または、時間基準ＴＰｉｊｌにおける秘匿性のレベルを限定する注釈を備えてもよい。１つ以上の付加的な文書属性をテーブルＳｉｇｎＯＴａｂ［］内に記憶して、例えば貢献者の証明書Ａｉｊと時間基準ＴＰｉｊｌ内の秘匿指数との両方に文書Ｏｉｊｌを関連付けするようにしてもよい。
【００４２】
ここで記述されたテーブルの構造は、主に本発明が理解され得るように意図されている。したがって、テーブルＳｉｇｎＯＴａｂ［］の他の構造は実施時に考察されるかもしれない。例えば、テーブルＳｉｇｎＯＴａｂ［］はインプリント識別子Ｅｉｊｌを含んでもよく、この識別子は文書Ｏｉｊｌにリンクされてもよい。また、テーブルＳｉｇｎＯＴａｂ［］は、当該文書の要素インプリントＥｉｊｌｋ、または、これらのインプリントへの参照の代わりにあるいはこれに追加して全ての要素インプリントＥｉｊｌｋのそれぞれの署名Ｎｉｊｌｋの値を含んでもよい。例えば、本発明の一実施の形態は、文書要素Ｃｉｊｌｋ（例えば指数ｉ、ｊ、ｌ、ｋの値）の識別子と、この要素の署名Ｎｉｊｌｋの値と、文書の時間基準Ｔｐｉｊｌの値と、適切な場合には文書Ｏｉｊｌの文書属性ＡＯｉｊｌの値と、要素の要素属性ＡＥｉｊｌｋの値とを、ある特定の文書Ｏｉｊｌに対して、各行が含んだテーブルを作成することから構成されてもよく、このテーブルは文書Ｏｉｊｌの全ての要素Ｃｉｊｌｋを網羅するように占められている。
【００４３】
図３では、列ＣＯＬ３０１〜ＣＯＬ３０８と行ＲＯＷ３１０〜ＲＯＷ３１３からなるテーブル３０４は、そのような実施の形態をオブジェクトＯ１、１、Ｌ１１用に例示している。このテーブル３０４では、貢献者識別子Ａ１１が文書属性ＡＯ１、１、Ｌ１１（ＣＯＬ３０８）として記憶され、日付Ｔ１１が時間基準ＴＰ１、１、Ｌ１１（ＣＯＬ３０７）として記憶されている。
【００４４】
また、モジュールＳｉｇｎＭ１１０は、文書セットＰｉの状態Ｓｉｊにおける状態インプリントＥｉｊの特徴を確立できるように配列された状態インプリント生成関数ＳｉｇｎＳ（）を備えている。
【００４５】
関数ｓｉｇｎＳ（）を図４によって記述する。
【００４６】
状態Ｓｉｊは、ある瞬間Ｔｉｊで文書Ｏｉｊｌのセットを備え、ここにｌは、１〜自然な整数Ｌｉｊの間で変化する自然な整数である（ステップ４００）。関数ｓｉｇｎＳ（）は、文書Ｏｉｊｌ毎に要素インプリントＥｉｊｌｋのセットを備えた文書インプリントＥｉｊｌを取得するために、状態Ｓｉｊの文書Ｏｉｊｌ毎に関数ｓｉｇｈｎＯ（）を連続的に呼び出せるように配列されている（ステップ４０２）。
【００４７】
状態インプリントＥｉｊは全ての要素インプリントＥｉｊｌｋを備え、ここにｋは１〜Ｋｉｊ１の間で変化しｌは１〜Ｌｉｊの間で変化する（ステップ４０４）。
【００４８】
ベースＷＤＢ１２０はインプリントＥｉｊを少なくとも一時的に記憶する。
【００４９】
ベースＷＤＢ１２０は、相関関係において、例えば状態インプリントテーブルＳｉｇｎＳｔａｂ［］において以下を保持していることもある：
状態インプリント識別子Ｅｉｊ、例えば指数ｉ、ｊの値からなる識別子、および、
例えば指数ｉ、ｊ、１からなる状態Ｓｉｊの文書インプリントＥｉｊｌのそれぞれへの参照。
【００５０】
既に説明したように、実施時には、テーブルＳｉｇｎＳＴａｂ［］の構造は異なっているかもしれない。例えば、本発明の一実施の形態は、全ての文書インプリントＥｉｊｌを収集したテーブルを作成する（並べる）ことからなり、例えば前述した実用的な実施の形態から構成されてもよい。図３では、列ＣＯＬ３０１〜ＣＯＬ３０８と行ＲＯＷ３１４〜ＲＯＷ３２６とから構成されたテーブル３０６は、この実施の形態を状態Ｓ１、２用に例示している。
【００５１】
任意に、状態属性Ａｓｉｊを各状態Ｓｉｊと関連付けてもよい。この属性ＡＳｉｊはテーブルＳｉｇｎＳＴａｂ［］に記憶されることもある。例えば、状態属性ＡＳｉｊは、日付Ｔｉｊの信頼性を修飾（適格）とする指数あるいは標識（マーク）、および／または、貢献者Ａｉｊの証明書の信頼性を適格とする指数（例えば接続名または「ログイン」を使用して識別のための最小指数値と、第三者により証明された認証手順によって識別のための最大指数）とを備え得る。
【００５２】
また、モジュールＳｉｇｎＭ１１０は、文書セットＰｉの文書セットインプリントＥｉの特徴を確立できるように配列された文書セット用のインプリント生成関数ｓｉｇｎＰ（）を備えている。
【００５３】
関数ｓｉｇｎＰ（）を図５により記述する。
【００５４】
文書セットＰｉは多数の状態Ｓｉｊを備え、ここにｊは１〜自然な整数Ｊｉの間で変化する自然な整数である（ステップ５００）。関数ｓｉｎｇＰ（）は、状態Ｓｉｊ毎に多数の要素インプリントＥｉｊｌｋを備えた状態インプリントＥｉｊを取得するために、文書セットＰｉの状態Ｓｉｊ毎に関数ｓｉｇｎＳ（）を連続的に呼び出せるように配列されており、ここにｋは１〜Ｋｉｊ１の間で変化しｌは１〜Ｌｉｊの間で変化する（ステップ５０２）。
【００５５】
文書セットインプリントＥｉは全ての要素インプリントＥｉｊｌｋを備えており、ここにｋは１〜Ｋｉｊ１の間で変化しｌは１〜Ｌｉｊの間で変化しＪは１〜Ｊｉの間で変化する（ステップ５０４）。
【００５６】
ベースＷＤＢ１２０はインプリントＥｉを少なくとも一時的に記憶する。
【００５７】
ベースＷ１２０は、相関関係において、例えば文書セットインプリントテーブルＳｉｇｎＰＴａｂ［］内において以下を保持してもよい：
文書セットインプリントＥｉの識別子、例えば指数ｉの値からなる識別子、および、
例えば指数ｉ、ｊからなる状態インプリントＥｉｊのそれぞれへの参照。
【００５８】
既に説明したように、実施時にはテーブルＳｉｇｎＰＴａｂ［］の構造は異なっていてもよい。本発明の一実施の形態は、文書セットＰｉの全ての状態インプリントＥｉｊを組み合わせたテーブルを作成することからなり、例えば前述した実用的な実施の形態から構成されてもよい。図３では、列ＣＯＬ３０１〜ＣＯＬ３０８と行ＲＯＷ３０１〜ＲＯＷ３３９からなるテーブル３０８は、そのような実施の形態を文書セットＰｌ用に例示している。このテーブル３０８では、各行は以下を含んでいる：
指数ｉの値を記憶する列ＣＯＬ３０１と、指数ｊの値を記憶する列ＣＯＬ３０２と、指数ｌの値を記憶する列ＣＯＬ３０３と、指数ｋの値を記憶する列ＣＯＬ３０４とからなる文書要素への参照、
列ＣＯＬ３０５においてこの文書要素の署名の値、
列ＣＯＬ３０６においてこの要素の属の値、
列ＣＯＬ３０７においてこの要素が開始された文書の時間基準の値、
列ＣＯＬ３０８においてこの要素が開始された文書の属性の値。
【００５９】
モジュールＳｉｇｎＭ１１０は、文書セットＰｉの各々異なる署名値Ｎｉｑに署名データムＶｉｑを関連付けその文書セットのインプリメントがベースＷＤＢ１２０内に記憶されるように配列された署名日付関数ｓｉｇｎＴｐ（）を、ベースＷＤＢ１２０内で前記署名が関連付けられた文書Ｏｉｊｌの時間基準ＴＰｉｊｌの関数として備えている。
【００６０】
関数ｓｉｇｎＴｐ（）が図６を参照して記述される。
【００６１】
関数ｓｉｇｎＴｐ（）は、ベースＷＤＢ１２０の特定の署名値Ｎｉｑに対してその署名値を含んだ全ての要素インプリントＥｉｊｌｋと、そのたび毎にベースＷＤＢ１２０内の要素インプリントＥｉｊｌｋに関して文書インプリントＥｉｊｌの時間基準ＴＰｉｊｌとを確立するように配列されている。
【００６２】
さらに、関数ｓｉｇｎＴｐ（）は、その署名値Ｎｉｑに対して相関関係において、例えば署名テーブルＳｉｇｎＴｂ［］において、
例えば値ｉ、ｊ、ｌ、ｋを備えた前記特定の署名を含んだ要素インプリメントＥｉｊｌｋの識別子と、
ベースＷＤＢ１２０内の要素インプリントＥｉｊｌｋに関して文書インプリントＥｉｊｌの時間基準ＴＰｉｊｌ、例えば日付Ｔｉｊと、
を保持するように配列され、
関数ＳｉｇｎＴｐ（）はテーブルＳｉｇｎＴｂ［］を満たすように配列されて、その署名値が見つかったベースＷＤＢ１２０内に記憶された要素インプリントＥｉｊｌｋ毎に識別子を含むようにしている。
【００６３】
図６では、テーブル６００は、署名値Ｎｉａ用のテーブルＳｉｇｎＴＢ［］の実施の形態を示す。このテーブル６００は、行ＲＯＷ６０１〜ＲＯＷ６０４で表されるｎ行を含んでおり、ここにｎは署名値Ｎｉａを備えた要素インプリントＥｉｊｌｋの数である。４群｛ｉ、ｊａ１、ｌａ１、ｋａ１｝、｛ｉ、ｊａ２、ｌａ２、ｋａ２｝〜｛ｉ、ｊａｎ、ｌａｎ、ｋａｎ｝は、署名値Ｎｉａを含んだ要素インプリントの識別子をそれぞれ表している。これらの４群は、テーブル６００の列ＣＯＬ６０２〜ＣＯＬ６０５に記憶されている。テーブル６００の列ＣＯＬ６０６は、行ＲＯＷ６０１〜ＲＯＷ６０４内の日付Ｔｉ、ｊａ１〜Ｔｉ、ｊａｎを時間基準として記憶している。
【００６４】
テーブルＳｉｇｎＴｂ［］は、例えばベースＷＤＢ１２０内に少なくとも一時的に記憶されてもよい。
【００６５】
関数ｓｉｇｎＴｐ（）は、ベースＷＤＢ１２０に記憶された文書インプリントＥｉｊｌ内に存在する異なった署名値Ｎｉｑ毎にテーブルＳｉｇｎＴｂ［］を作成するように、繰り返されている。
【００６６】
必要に応じて、署名テーブルＳｉｇｎＴｂ［］は、署名がＮｉｑと同等である要素インプリントＮｉ、ｊｑｐ、ｌｑｐ、ｋｑｐ毎に、その要素の属性値ＡＥｉ、ｊｑｐ、ｌｑｐ、ｋｑｐと、その要素を備える文書の属性値ＡＯｉ、ｊｑｐ、ｌｑｐとをさらに備えてもよい。
【００６７】
加えて、関数ｓｉｇｎＴｐ（）は、ベースＷＤＢ１２０に記憶され特定の署名値Ｎｉｑに関連するテーブルＳｉｇｎＴｂ［］のそれぞれに、少なくとも１つの署名データムＶｉｑを割り当てられるように配列されている。
【００６８】
署名データムＶｉｑは、テーブルＳｉｇｎＴｂ［］の時間基準を用いる所定の日付関数ｄａｔ（）を適用することによって得られることがある。言い換えれば、テーブルＳｉｇｎＴｂ［］に関連した署名データムＶｉｑは、そのテーブルのインプリント識別子Ｅｉｊｌに関連したタイマー基準ＴＰｉｊｌの関数、例えば日付Ｔｉｊであってもよい。例えば、署名データムＶｉｑは、テーブルＳｉｇｎＴｂ［］に含まれる最も古い日付Ｔｉｊであってもよい。
【００６９】
署名テーブルＳｉｇｎＴＢ［］が文書属性値ＡＯｉ、ｊｑｐ、ｌｑｐを記憶する場合、関数ｄａｔ（）は、さらにそれらの属性値の関数として署名データムＶｉｑを決定するように配列されてもよい。例えば、属性値ＡＯｉ、ｊｑｐ、ｌｑｐが時間基準ＴＰｉ、ｊｑｐ、ｌｑｐのための信頼性指数を備える場合、関数ｄａｔ（）は、テーブルＳｉｇｎＴｂ［］の最も古い日付Ｔｉ、ｊｑｐを決定する一方で、この決定に対してテーブルＳｉｇｎＴｂ［］において閾値未満の文書属性値ＡＯｉ、ｊｑｐ、ｌｑｐに関連した日付Ｔｉ、ｊｑｐを除外するように配列されてもよい。
【００７０】
また、関数ｓｉｇｎＴｐ（）は、ベースＷＤＢ１２０に記憶され特定の署名値Ｎｉｑに関連したテーブルＳｉｇｎＴｂ［］のそれぞれに、文書データムＷｉｑを割り当てるように配列されてもよい。文書データムＷｉｑは、テーブルＳｉｇｎＴｂ［］の文書属性ＡＯｉ、ｊｑｐ、ｌｑｐを用いる所定の認証関数ａｕｔ（）を適用することによって取得されてもよい。これに加え、関数ａｕｔ（）は、署名データＶｉｑ、および／または時間基準ＴＰｉ、ｊｑｐ、ｌｑｐを使用するのが良いかもしれない。例えば、最も古い関連する時間基準ＴＰｉ、ｊｑｐ、ｌｑｐを有する文書属性ＡＯｉ、ｊｑｐ、ｌｑｐの値をＷｉｑデータムとして決定するように、関数ａｕｔ（）は配列されてもよい。時間基準ＴＰｉ、ｊｑｐ、ｌｑｐが日付Ｔｉ、ｊｑｐを備え文書データムが貢献者識別子Ａｉ、ｊｑｐを備える場合には、この種の関数ａｕｔ（）は、特定の署名値Ｎｉｑに関連した最も古い貢献者の識別子を文書データムＷｉｑとして確立するように配列されることもある。
【００７１】
実際には、一実施の形態は、特定の署名値Ｎｉｑに対して、図６中のテーブル６０２のようなテーブルから構成されてもよく、そのテーブルでは各行は、
前記署名値Ｎｉｑを記憶する１つの列（ＣＯＬ６０１）と、
コンテンツが署名値Ｎｉｑを生成した文書要素の指数の値ｉ、ｊｑｐ、ｌｑｐ、ｋｑｐを記憶する複数の列（ＣＯＬ６０２〜ＣＯＬ６０５）と、
前記文書要素が始まった文書の時間基準ＴＰｉ、ｊｑｐ、ｌｑｐ、この場合には日付Ｔｉ、ｊｑｐ（ＣＯＬ６０６）と、
署名データムの値Ｖｉｑ（ＣＯＬ６０９）と、
該当する場合には、前記要素ＡＥｉｑｐ、ｊｑｐ、ｌｑｐ、ｋｑｐの属性の値（ＣＯＬ６０７）と、
前記文書要素ＡＯｉ、ｊｑｐ、ｌｑｐが始まった文書の属性の値（ＣＯＬ６０８）と、
文書データムの値Ｗｉｑ（ＣＯＬ６１０）と、
を含み；
このテーブルは、署名値Ｎｉｑを含む全ての要素インプリント、即ちこの場合にはｒ個のインプリントＥｉ、ｊｑ１、ｌｑ１、ｋｑ１〜Ｅｉ、ｊｑｒ、ｌｑｒ、ｋｑｒを記憶するように満たされている。
【００７２】
任意に、関数ｓｉｇｎＴｐ（）は、署名値Ｎｉｑ毎に、その署名値Ｎｉｑに関連する要素属性の値ＡＥｉ、ｊｑｐ、ｌｑｐ、ｋｑｐの関数として要素データムＺｉｑ（図６では不図示）を確立するように配列されてもよい。例えば、要素データムＺｉｑは、要素属性値ＡＥｉ、ｊｑｐ、ｌｑｐ、ｋｑｐの最大値を備えてもよい。
【００７３】
また、関数ｓｉｇｎＴｐ（）は、署名テーブルＳｉｇｎＴｂ［］の署名データＶｉｑを収集できるように配列されている。例えば、関数ｓｉｇｎＴｐ（）は、時限付き文書セットインプリントＴｅｍｐＳｉｇｎＰＴｂ［］のテーブルを構成するように配列されており、そのテーブルは相互関係において：
文書セットＰｉの識別子、例えば指数ｉと、
それぞれの異なる署名値Ｎｉｑと、
前記の署名値Ｎｉｑに関連した署名データムＶｉｑと、
を記憶している。
【００７４】
図６に示す例では、署名値Ｎｉｑ毎に、署名値Ｎｉｑを含んだ行から署名データムＶｉｑと指数ｉの値とを抽出するように関数ｓｉｇｎＴｐ（）を配列するということになる。図６では、例えば、テーブルＴｅｍｐＳｉｇｎＰＴｂ［］は、行ＲＯＷ６０１、ＲＯＷ６０５、ＲＯＷ６０９と列ＣＯＬ６０１、ＣＯＬ６０２、ＣＯＬ６０９との交点によって形成可能である。
【００７５】
したがって、これは文書セットインプリントの特に弱い記憶装置になる。時間基準が日付Ｔｉｊを備え関数ｄａｔ（）が最も古い日付ＴｉｊをデータムＶｉｑとして決定するように配列されている場合には、このデータムは、文書セットＰｉにおいて署名値の最初の出現の日付と同等である。したがって、文書セットのインプリントは、署名のセットとその最初の出現の日付とから構成される。以下で説明されるように、他の情報はｄａｔ（）関数の関数として記憶されてもよい。
【００７６】
必要に応じて、ｄａｔ（）関数は文書データＷｉｑと要素データＺｉｑとを考慮することもできる。
【００７７】
別の実施の形態では、テーブルＴｅｍｐＳｉｇｎＰＴｂ［］は、例えば指数ｉ、ｊ、ｋ、ｌの値を含んだ要素インプリントＥｉｊｌｋのそれぞれへの参照をも保持することができる。これにより、ベースＷＤＢ１２０内では、文書要素への参照と対応する署名データムとの間のリンクを維持することが可能になる。
【００７８】
さらに別の実施の形態では、テーブルＴｅｍｐＳｉｇｎＰＴｂ［］は、例えば指数ｉ、ｊ、ｋ、ｌの値を備える要素インプリントＥｉｊｌｋのそれぞれへの参照と、例えば指数ｉ、ｊ、ｌを含んだ文書Ｏｉｊｌへの参照とを保持してもよい。したがって、ある特定の文書Ｏｉｊｌに対して、その文書に対応する文書要素Ｃｉｊｌｋの署名データＶｉｑを確立することが可能になるだろう。データムＶｉｑが最も古い日付Ｔｉｊのために確立されている場合には、文書要素Ｃｉｊｌｋが最初に出現した文書Ｏｉｊｌと関係なく、文書セットＰｉ内の文書要素Ｃｉｊｌｋの最初の出現の日付を決定することが可能である。したがって、その文書の文書セット内での作成前に生成された文書の要素を識別することが可能である。
【００７９】
テーブルＴｅｍｐＳｉｇｎＰＴｂ［］の実用的な実施の形態は、例えば図６のテーブル６０４のようなテーブルを作成することから構成されてもよく、そのテーブルでは各行は：
署名値Ｎｉｑを記憶する１つの列（ＣＯＬ６０１）と、
その署名値Ｎｉｑが始まった文書要素Ｃｉ、ｊｑｐ、ｌｑｐ、ｋｑｐへの参照、この場合に指数ｉ、ｊ、ｌ、ｋの値の形態での文書要素Ｃｉ、ｊｑｐ、ｌｑｐ、ｋｑｐへの参照（ＣＯＬ６０２〜ＣＯＬ６０５）と、
その文書要素Ｃｉ、ｊｑｐ、ｌｑｐ、ｋｑｐが始まった文書Ｏｉ、ｊｑｐ、ｌｑｐの時間基準ＴＰｉ、ｊｑｐ、ｌｑｐ（ＣＯＬ６０６）、この場合には日付Ｔｉｑｐ、ｊｑｐと、
署名データムＶｉｑの値（ＣＯＬ６０９）と、
該当する場合には要素Ｃｉ、ｊｑｐ、ｌｑｐ、ｋｑｐの属性ＡＥｉ、ｊｑｐ、ｌｑｐ、ｋｑｐの値（ＣＯＬ６０７）と、
文書要素Ｃｉ、ｊｑｐ、ｌｑｐ、ｋｑｐが始まった文書Ｏｉ、ｊｑｐ、ｌｑｐの属性ＡＯｉ、ｊｑｐ、ｌｑｐの値（ＣＯＬ６０８）と、
文書データムＷｉｑの値（ＣＯＬ６１０）と、
を含み、
前記テーブルは、文書セットＰｉの全ての署名値Ｎｉｑを同時にもたらすように満たされている。言い換えれば、ここで記述された実施の形態は、同一のテーブル内において、文書セットＰｉの署名値Ｎｉｑ毎に作成されたテーブル６０２と同じタイプの複数のテーブルを組み合わせることから構成されている。
【００８０】
モジュールＳｉｇｎＭ１１０、特に関数ｓｉｇｎＴｐ（）は、ベースＰＤＢ１３０と対話を行なって、署名データの編集結果を署名テーブルに記憶できるようにしている。
【００８１】
例えば、ベースＰＤＢ１３０は、これによって、文書セットＰｉ内における署名値の存在期間に関連したデータムを保持してもよい。
【００８２】
ある特定の実施の形態では、データベースのサイズを制限するように、または、次の署名検索を補助するように、文書インプリントＥｉｊｌは縮小されることもある。例えば、いくつかの要素インプリントへの参照（および要素インプリント自体）を、時間基準、要素属性データ、および／または文書属性データの値の関数として削除してもよい。
【００８３】
文書インプリント生成関数
関数ｓｉｇｎＯ（）は、図７を参照して、ある特定の実施の形態において詳細に記述される。
【００８４】
文書Ｏｉｊｌ、即ち、文書セットＰｉの状態Ｓｉｊの特定の文書ｌが検討されるだろう（ステップ７００）。
【００８５】
関数ｓｉｇｎＯ（）は関数ｔｙｐｅ（）を呼び出すように設計されており、その関数ｔｙｐｅ（）自体は文書Ｏｉｊｌのコンピュータ性質の特徴を示すデータムを確立できるように配列されている（ステップ７０２）。
【００８６】
「コンピュータ性質」という用語によって、ここでは、この構造が同一タイプの全ての文書に共通であるという意味で文書Ｏｉｊｌのコンピュータ構造が表される。コンピュータ性質またはタイプは広く普及されてもよいし、または、例えば「テキスト」タイプファイル、「Ｍｉｃｒｏｓｏｆｔ  Ｗｏｒｄ」タイプファイル（登録商標）、ある特定形式の「画像」タイプファイルのような標準の対象となってもよい。また、このタイプは、文書を生成したソフトウェアに特定されてもよい。
【００８７】
文書タイプがファイルである特定の場合には、文書Ｏｉｊｌのタイプの特徴付けは、例えば文書が「Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ」（登録商標）環境で作成されたファイルである時に、ファイル名拡張を認識することで実行されてもよい。
【００８８】
また、特徴付けは、あるタイプのファイルに特徴的なビットのシーケンスをファイル内で認識することによって実行されてもよい。特に、ソースファイル内の特徴的なキーワードを認識することにより、プログラミング言語を識別することが可能になってもよい。したがって、関数タイプ（）は、ソースタイプファイルに使用される言語を決定することもできる。
【００８９】
関数ｓｉｇｎＯ（）は、コンテンツフィルタ関数ｆｉｌｔｅｒＡ（）を呼び出すように設計されており、このコンテンツフィルタ関数ｆｉｌｔｅｒＡ（）自体は、文書Ｏｉｊｌとその文書のタイプとから、クリーンアップされたコンテンツを有する文書Ｏ′ｉｊｌを作成できるように設計されている（ステップ７０４）。
【００９０】
例えば、関数ｆｉｌｔｅｒＡ（）は、ソースファイルに挿入された任意のコメント、プログラミング言語の意味と関係のない文字、または、ある特定の動作システムに依存する文字を削除するように配列されてもよい。
【００９１】
関数ｆｉｌｔｅｒＡ（）は、関数ｓｉｇｎＯ（）のロバスト性を向上させ、その結果、生成されたインプリントの関連性を向上させるように構成されている。ここでは、ロバスト性により、コンテンツにとって重要でないと思われる修正の追加とは無関係に、同一の文書インプリントを生成する関数ｓｉｇｎＯ（）の能力が表される。重要でないと見なされるかもしれない修正は例えば次のようである：
例えばテキストタイプの文書の書式のみに関連し、恐らくは自動的に実行されている修正（例えば、連続したスペース文字または空行の追加）、および、
例えば関数名あるいは変数名の変更、または、著作権についての参照の削除あるいは追加のようなコンテンツの書き換え。
【００９２】
なお、コンテンツの書き換えは、例えば、ある特定の公式規則または命名習慣に文書のコンテンツを従わせるようになっている場合には、合法的または好意的となる。しかしながら、同時に、書き換えは、特に著作者を推定しまたはコンテンツの再利用を秘匿する唯一の目的を伴って実行される場合に、悪意または違法となる。
【００９３】
文書Ｏｉｊｌのクリーンアップは文書タイプの１つの関数であることが理解されるだろう。
【００９４】
関数ｓｉｇｎＯ（）は、文書Ｏ′ｊｉｌにおいて、例えばソースコードタイプの文書における関数や手順のような文書要素Ｃｉｊｌｋを隔離することができるコンテンツ抽出関数ｃｕｔ（）を呼び出すように配列されている。このように各要素を配置することは、文書タイプＯｉｊｌの関数である（ステップ７０６）。
【００９５】
関数ｃｕｔ（）は、文書Ｏ′ｉｊｌから要素Ｃｉｊｌｋのセットを確立するように配列されており、ここにｋは１〜整数Ｋｉｊｌの間の自然な整数である。例えば、関数ｃｕｔ（）は、特定のプログラミング言語のソースである文書Ｏ′ｉｊｌから、このオブジェクト（対象）に含まれる関数のセットを抽出できるように配列されてもよい。
【００９６】
関数ｓｉｇｎＯ（）は、要素Ｃｉｊｌｋと文書Ｏｉｊｌのタイプとから、クリーンアップされた要素Ｃ′ｉｊｌｋを作成できるように設計されたコンテンツフィルタ関数ｆｉｌｔｅｒＢ（）を呼び出すように設計されている（ステップ７０８）。
【００９７】
関数ｆｉｌｔｅｒＡ（）と似た方法で、関数ｆｉｌｔｅｒＢ（）は、例えば、識別されたプログラミング言語の意味と無関係なコメントおよび文字を削除するように、および／または、オペレーティングシステムに依存する文字を抑制するように配列されてもよい。関数ｆｉｌｔｅｒＢ（）は、前述した意味において、モジュールＳｉｇｎＭ１００のロバスト性を向上させるようになっている。
【００９８】
その結果、関数ｆｉｌｔｅｒＢ（）はクリーンアップされた要素Ｃ′ｉｊｌｋのセットとなり、ここにｋは１〜整数Ｋｉｊｌの間の自然な整数である。
【００９９】
さらに、関数ｓｉｇｎＯ（）は、クリーンアップされた要素Ｃ′ｉｊｌｋから、この文書要素のコンテンツの特徴である署名Ｎｉｊｌｋを確立できるように設計された署名生成関数ｓｉｇｎ（）を呼び出すように配列されている（ステップ７１０）。
【０１００】
署名Ｎｉｊｌｋは、特定された長さの一連の文字、例えば一連のＡＳＣＩＩ文字または１６進法文字の形式を取っていてもよい。好ましくは、関数ｓｉｇｎ（）は、「ハッシュ」として公知の署名生成アルゴリズムを備えている。署名Ｎｉｊｌｋは、所与の要素Ｃ′ｉｊｌｋのコンテンツにとって特有のものである。どの場合においても、関数ｓｉｇｎ（）は、好ましくは、発生率を極めて低くするように決定され、即ち、要素Ｃ′ｉｊｌｋの別のコンテンツから同じ署名を取得する確率が可能な限り小さくなるように決定される。さらに、関数ｓｉｇｎ（）は非可逆となるように選択され、即ち、実施時にその署名から要素のコンテンツを確立することが不可能であるように配列され、とりわけ、このことにより文書の明確なコンテンツが記録も開示もされないので秘匿性に関して何ら心配せずに署名の長期間記録が可能となる。
【０１０１】
なおここでは、より大きい異なるサイズのオブジェクトの比較よりも一定サイズのコンピュータオブジェクトの比較の方が簡単であるため、特定された長さの一連の文字を文書のコンテンツの署名として使用することは、文書の比較を容易にする。さらに、これらの一連の文字は、文書セットの比較を可能にしており、文書セットのコンテンツを開示しないので幅広く分布されてもよい。
【０１０２】
署名生成アルゴリズム、即ち「ハッシュ」アルゴリズムは、例えばＭＤ５（「メッセージダイジェスト５」の略）タイプのもの、または、ＳＨＡ−１（「セキュアハッシュアルゴリズム」の略）のものであってもよい。
【０１０３】
関数ｓｉｇｎ（）は、署名Ｎｉｊｌｋのセットを取得するように要素Ｃ′ｉｊｌｋ毎に呼び出されており、ここにｋは１〜Ｋｉｊｌの間で変化する自然の整数である。
【０１０４】
好ましくは関数ｓｉｇｎＯ（）は、スコアリング関数ｅｖａｌ（）を呼び出すように配列されており、そのスコアリング関数自体は、要素属性ＡＥｉｊｌｋとしての署名関連性データムＢｉｊｌｋを署名Ｎｉｊｌｋに関連付けるように配列されている（ステップ７１２）。
【０１０５】
ここでは、「関連性」によって、文書に対して行われた寄与または修正について文書要素の関与の評価が表される。関数ｅｖａｌ（）は、以下から選択した１つ以上の基準を考慮するようにされてもよい：
文書要素のサイズ、例えばソースファイル関数の場合には多数のコード行数または文字と、
低い関連性の指数に関係した署名リストであって、恐らく１タイプの文書に特有であるリストにおける署名の存在と、
文書への貢献の観点からその文書および／またはアクティビティへの貢献者の数。
【０１０６】
明らかに、このリストは包括的なものではなく、関数ｅｖａｌ（）は他の基準を考慮してもよい。
【０１０７】
クリーンアップされた各要素Ｃ′ｉｊｋｌが「アトミック（原子）」であると見なされるかもしれないのは、その当時に性質そのもの（特に、特性および重要性）に関連した状況を失っているので、これ以上細分化する価値がない点である。したがって、その署名Ｎｉｊｌｋは、文書の（グローバル）インプリントＥｉｊｌと対向するように、「アトミックインプリント」として見られ得る。
【０１０８】
また、関数ｓｉｇｎＯ（）は、例えば要素インプリントＥｉｊｌｋ内に指数ｉ、ｊ、ｌを含む文書基準Ｏｉｊｌと各署名Ｎｉｊｌｋを関連付けるように配列されてもよい（ステップ７１４）。
【０１０９】
関数ｓｉｇｎＯ（）により、要素インプリントＥｉｊｌｋのセットを備えたオブジェクトＯｉｊｌの特徴である文書インプリントＥｉｊｌを取得することが可能になり、ここにｋは１〜Ｋｉｊｌの間で変化する（ステップ７１６）。
【０１１０】
以前に説明されたように、文書インプリントＥｉｊｌはベースＷＤＢ１２０に記憶されてもよい。
【０１１１】
時間基準が状態Ｓｉｊの日付Ｔｉｊであってもよいことが理解される。指数ｊ自体によって時間基準が同様に与えられ、ここにｊは年代順序である。
【０１１２】
ある特定の実施の形態では、文書インプリントＥｉｊｌは、状態Ｓｉｊを作成しているまたは文書データムとしてその状態の作成に参加している文書属性ＡＯｉｊｌとして、貢献者識別子Ａｉｊをも備えている。
【０１１３】
分かっていることは、文書要素がそのコンテンツへの重要でない修正の後に明確な署名を生成するのを防止するように関数ｆｉｌｔｅｒＡ（）とｆｉｌｔｅｒＢ（）が配列されていることである。しかしながら、これらの関数は、重要でない方法でコンテンツが修正されていたある特定の文書のインプリントが、そのような修正を追跡する目的で、元のインプリントから一部異なるように、設計されてもよい。これにより、相互に関連する関数ｆｉｌｔｅｒＡ（）、関数ｆｉｌｔｅｒＢ（）、および関数ｃｕｔ（）を採用することにより、例えば、署名が変わるべきか否かである要素のコンテンツをカットし、かつ、そのようにするために関数ｆｉｌｔｅｒＢ（）を適合させるように実行できる。
【０１１４】
例えば最も頻繁に、文書の関数内の変数の名称を単純に変更することは、単純なコンテンツの書き換えと見なされる。関数ｆｉｌｔｅｒＡ（）、関数ｆｉｌｔｅｒＢ（）、および関数ｃｕｔ（）は、書き換えが起こったことを示すために、この関数のコンテンツに関連したある特定の同一の署名と他の別の署名とを含んだ文書インプリントを取得するように設計されてもよい。例えば、書き換えが関数の名称の変更のみに関連している場合には、文書の関数が、この関数の断定的部分に対応する第１の文書要素とその関数の本体またはコンテンツに対応する第２の文書要素とに細分化されるように、かつ、第２の要素の署名を無変更のまま残しつつ第１の要素の署名を変更するように、例えば、関数ｆｉｌｔｅｒＡ（）、関数ｆｉｌｔｅｒＢ（）、および関数ｃｕｔ（）が配列されてもよい。
【０１１５】
ある場合には、関数ｆｉｌｔｅｒＡ（）、関数ｆｉｌｔｅｒＢ（）、および関数ｃｕｔ（）は、特に文書タイプの関数として同一の文書を保存するように配列されてもよい。
【０１１６】
関数ｓｉｇｎＯ（）はインプリントとの後の比較を許容するためにロバスト性でなければならないことが理解される。２個のインプリントを比較できるように（即ち、共通の署名を検索するために）、使用するモジュールＳｉｇｎＭ１１０が何であっても、同じ文書が同じインプリントを必ず生成しなければならない。したがって、関数ｃｕｔ（）、関数ｆｉｌｔｅｒＡ（）、および関数ｆｉｌｔｅｒＢ（）は、異なるインプリント生成ツールを使用することが望まれる場合には、開示および標準化される主要な目的を持っている。しかしながら、その開示は、特に悪意あるコンテンツの書き換えの場合には、特に書き換えに対して、これらのフィルタのロバスト性を見破るように意図された対策の実施が大事に扱われている。
【０１１７】
関数ｓｉｇｎＯ（）のある特定の実施の形態では、ソースコードが、恐らくはプログラミング言語に依存して、ある特定の公式規則に整合するのを確保するように、検証関数ｖｅｒ（）はステップ７０６より前に呼び出されるかもしれない。例えば、文書Ｏｉｊｌがソースファイルである場合には、検証関数ｖｅｒ（）は、その言語の構文と文法との規則に従ってソースコードのアブストラクト表示を確立できる、ソースコードの文法アナライザを備えてもよい。この文法アナライザ自体は、重要でない修正またはコンテンツ書き換えに影響されないかもしれない。例えば、関数ｖｅｒ（）は、アブストラクト構文ツリー即ち「ＡＳＴ」を確立するように設計されてもよい。こうすることで、関数ｓｉｇｎＯ（）は、以前に記述された意味において、もっとロバスト性になる。
【０１１８】
署名日付関数
ある特定の実施の形態では、関数ｄａｔ（）は、考慮中の署名Ｎｉｑの存在期間を署名データムＶｉｑとして確立するように設計されている。
【０１１９】
この実施の形態では、署名データムＶｉｑは、文書セットＰｉにおける署名値Ｎｉｑの出現日付ＴＡｉｑ、即ち最初の出現日付と、消滅日付ＴＤｉｑ、即ち最後の出現日付とを備えてもよい。その場合には、テーブルｓｉｇｎＴｂ［］の中で最も古い時間基準、例えば日付Ｔｉ、ｊｑを出現日付ＴＡｉｑとして確立し、かつ、これらの日付の中で最新のものを消滅日付ＴＤｉｑとして確立するように、関数ｄａｔ（）は配列されてもよい。
【０１２０】
代替の実施の形態では、関数ｄａｔ（）は、存在期間のセットを署名データムＶｉｑとして確立するように設計されてもよい。関数ｄａｔ（）は、ベースＷＤＢ１２０と対話を行なって、文書セットＰｉのインプリントＥｉの中に存在する異なった日付Ｔｉｊをそれぞれ収集する状態テーブルＳＴｂ［］をそのベースから抽出するように配列されてもよい。関数ｄａｔ（）は、テーブルＳｉｇｎＴｂ［］の日付Ｔｉ、ｊｑｐのそれぞれを、テーブルＳＴｂ［］内で組み合わされた日付と比較して、当該署名が関連した、またはおそらく関連しない日付Ｔｉｊを決定するように、配置されてもよい。
【０１２１】
日付Ｔｉｊの代わりに、関数ｄａｔ（）は、バージョン識別子、例えば指数ｊの異なる値に作用するように配列されてもよい。
【０１２２】
別の実施の形態では、状態Ｓｉｊは順番に配列され、即ち、指数ｊに対する指数ｊ′の優越は、日付Ｔｉｊ′が日付Ｔｉｊより最新のものであることを意味する。
【０１２３】
それから、関数ｄａｔ（）は、日付ＴＡｉｑと日付ＴＤｉｑを異なる形で確立するように配列され得る。この特定の実施の形態では、図８を用いて関数ｄａｔ（）が記述されている。
【０１２４】
関数Ｄａｔ（）は、要素インプリントＥｉｊｌｋのセットからなる状態インプリントＥｉｊで特徴付けられた（ステップ８００）状態Ｓｉｊを、前の状態に関連した署名値Ｎｉｑ′のセットで特徴付けられた前の状態Ｓｉｊ′の全てと比較できるように、即ち、４群ｉ、ｊ′、ｌ′、ｋ′の存在に対して配列され、署名値Ｎｉｊ′ｌ′ｋ′はＮｉｑ′と同等となるようにする（ステップ８０２）。状態Ｓｉｊの署名値Ｎｉｑ毎に、即ち、ＮｉｊｌｋがＮｉｑと同等であるように４群ｉ、ｊ、ｌ、ｋが存在する全ての整数ｑに対して（ステップ８０４）、関数ｄａｔ（）は、ベースＷＤＢ１２０内で状態Ｓｉｊ′に関連した署名値Ｎｉｑ′が存在するか否かをチェックする（ステップ８０６）。
【０１２５】
その答えがイエスの場合（ステップ８０８）、文書セットＰｉの前の状態ｊ′に署名値Ｎｉｑが存在したことになる。文書セットＰｉにおける署名値Ｎｉｑ′の出現日付ＴＡｉｑ′は変更されないままである。文書セットＰｉにおける署名値Ｎｉｑ′の消滅日付ＴＤｉｑ′は、状態Ｓｉｊの日付Ｔｉｊを受け取る。
【０１２６】
答えがノーの場合（ステップ８１０）、署名値Ｎｉｑは文書セットＰｉにおいて新しくなる。出現日付ＴＡｉｑと消滅日付ＴＤｉｑは両方とも状態Ｓｉｊの日付Ｔｉｊの値を推定する。
【０１２７】
この実施の形態では、文書セットの時限付きインプリントは、以後の状態Ｅｉｊ、例えば公知の最新の状態のインプリントが追加された場合に、迅速に更新され得る。この特定の実施の形態によって、文書セットの時限付きインプリントは、その連続する状態インプリントの連続的な追加により構成可能となる。ここでは更新することにより、先行の状態には存在しなかった署名値の追加と、この新規な状態の追加により変更された署名値データＶｉｑの計算とが表される。
【０１２８】
言い換えれば、関数ｄａｔ（）は、文書セットＰｉの時限付きインプリントを更新するために、インプリントＥｉｊがベースＷＤＢに記憶されている状態Ｓｉｊと、インプリントＥｉｊ′がベースＰＤＢ１３０に記憶されている前の状態のセットＳｉｊ′とを比較するように配列されてもよく、ここにｊ′はｊ未満の自然な整数である。
【０１２９】
インプリント生成モジュールの特定の実施の形態
ある特定の実施の形態では、モジュールＳｉｇｎＭ１１０は、例えばＣＶＳタイプのバージョン管理ツールまたはそれと同等のものと対話を行なうように設計されている。
【０１３０】
バージョン管理ツールは、文書セットとそれらの異なった状態との記憶を編成できる。特に、バージョン管理ツールは、漸進的かつ固有な方法で文書セットの多様な状態を管理でき、バージョン管理ツールの使用により、前述した状態Ｓｉｊのスケジューリングを取得することが可能になる。
【０１３１】
多数の貢献者が同一の文書セットを同時に修正できる場合には、バージョン管理ツールは、貢献者によって補正された状態を識別することが可能になる。ある特定のバージョン管理ツールは、連続した修正のみを記憶し、および／または、必要に応じて同一文書の全体または一部に対して同時になされた修正間の矛盾の欠如をチェックできる。また、バージョン管理ツールは、元のバージョン（公知である場合）に対するよりも、最新の公知のバージョンに対して必ず更新が実行されることを請け負い得る。実際には、多様なバージョン管理ツールが多様な方法で動作する。ここでは、バージョン管理ツールを使用することで生じる状態Ｓｉｊ間の固有性を用いて、時限付きインプリント生成工程を向上させている。
【０１３２】
また、バージョン管理ツールは、更新を実行した貢献者の識別子、および／または、特定の状態から変更された文書のリストを供給する。
【０１３３】
例えば、ＣＶＳタイプのツールは、文書Ｏｉｊｌの最後の状態と、連続した文書Ｏｉｍｌの異なる前の状態間の差とを記憶することができ、ここにｍはｊ未満の自然な整数である。ここでは、指数ｌは、状態指数ｊには関係なく、名称およびファイルパスによって一意的に特徴付けられたファイルに関連している。
【０１３４】
また、バージョン管理ツールは、例えば中央サーバ上での更新日を提供する。この日付は、文書セットの状態の時間基準として記憶されている。
【０１３５】
状態は、サーバ上に存在するバージョンの更新に対応してもよい。したがって、典型的には、貢献者は状態に関連付けられている。
【０１３６】
なお、使用するバージョンツールに依存してまたはその使用に従って、以下を割り当てることが可能である：
文書セット内の１文書が変更されたら直ぐに新規な状態、または
同一貢献の過程で多数の文書を変更する新規な状態。
【０１３７】
このことは、特に状態数の増減によって、ツール１００の動作を僅かだけ変化させる。
【０１３８】
この実施の形態では、モジュールＳｉｇｎＭ１１０はバージョン比較関数ｃｏｍｐＳ（）を含んでもよい。
【０１３９】
図９を用いて関数ｃｏｍｐＳ（）が記述される。
【０１４０】
記載を単純にするために、ここでは２つの状態Ｓｉｊ′とＳｉｊが連続していると仮定する。
【０１４１】
ここでは、そのツールはＣＶＳタイプである。その場合には、指数ｌは、状態とは関係なく、文書を特徴付けている。
【０１４２】
関数ｃｏｍｐＳ（）は、状態Ｓｉｊにおける文書セットＰｉ内の文書Ｏｉｊｌ毎に、前の状態Ｓｉｊ′での文書セットＰｉ内に文書Ｏｉｊ′ｌが存在するか否かを決定するように設計されている（ステップ９００）。
【０１４３】
答えがノーである場合、関数ｃｏｍｐＳ（）は、文書Ｏｉｊｌに対して全ての要素インプリントＥｉｊｌｋを生成するために、前述の関数ｓｉｇｎＯ（）を呼び出すように設計されている（ステップ９０２）。
【０１４４】
前述されたように、各要素インプリントＥｉｊｌｋ、特にそれが含む署名ＮｉｊｌｋはベースＷＤＢ１２０に記憶される。また、バージョン管理ツールを使用して取得した文書Ｏｉｊｌの時間基準ＴＰｉｊｌ、例えば更新（または貢献）の日付Ｔｉｊは、ベースＷＤＢ１２０に記憶されている。好ましくは、文書属性ＡＯｉｊｌ、例えば状態Ｓｉｊの貢献者Ａｉｊの識別子もまたベースＷＤＢ１２０に記憶される（ステップ９０４）。必要に応じて、文書属性ＡＯｉｊｌは、状態Ｓｉｊ内で各貢献者Ａｉｊ用の識別子を含むことができる。
【０１４５】
ステップ９００での試験が確実（positive）であった場合には、関数ｃｏｍｐＳ（）が、文書Ｏｉｊｌが文書Ｏｉｊ′ｌと同一であるかどうかをチェックするように設計されている（ステップ９０６）。これは、状態を比較することで行え得る。ある特定の場合では、バージョン管理ツールがこのチェックを実行できる。
【０１４６】
答えがイエスの場合には、関数ｃｏｍｐＳ（）は、要素インプリントＥｉｊ′ｌｋ′の各署名を文書Ｏｉｊｌと関連付けるように設計される。言い換えれば、関数ｃｏｍｐＳ（）は、文書Ｏｉｊｌのものである時間基準ＴＰｉｊｌを除き、文書Ｏｉｊ′ｌのインプリントＥｉｊ′ｌを文書ＯｉｊｌのインプリントＥｉｊｌとして確立する（ステップ９０８）。
【０１４７】
この実施の形態では、関数ｃｏｍｐＳ（）が文書Ｏｉｊｌの全ての要素インプリントＥｉｊｌｋを生成するように設計されることは必要ない。関数ｃｏｍｐＳ（）は、文書Ｏｉｊ′ｌの要素インプリントＥｉｊ′ｌｋ′を使用することができる。モジュールＳｉｇｎＭ１１０と対話するバージョン管理ツールを使用することで、マテリアルリソース上に特にプロセッサユニットロードを保存することを可能にする。
【０１４８】
ステップ９０６での試験が確実である場合には、文書ＯｉｊｌとＯｉｊ′ｌは異なる。その時に、文書Ｏｉｊｌは、日付Ｔｉｊで起こるとともに貢献者Ａｉｊを有するオブジェクトＯｉｊ′ｌの変形として理解され得る（ステップ９１０）。図９では、この変形が関数ｈｉｊｌ（）の形で示されている。
【０１４９】
関数ｃｏｍｐＳ（）は、前述したように、関数ｓｉｇｎＯ（）を呼び出して、文書Ｏｉｊｌの全ての要素インプリントＥｉｊｌｋを生成するように設計されている（ステップ９１２）。必要に応じて時間基準ＴＰｉｊｌ（例えば日付Ｔｉｊ）と文書属性ＡＯｉｊｌ（例えば貢献者識別子データム（Ａｉｊ））と通信して、要素インプリントＥｉｊｌｋはベースＷＤＢ１２０に記憶される。
【０１５０】
文書セットデータベースの構造
図１０にＰＤＢベース１３０の構造の一例が示される。
【０１５１】
文書セットＰｉ毎に、ベースＰＤＢ１３０は、文書セットＴｐＳｉｇｎＰＴｂ［］１０００の時限付きインプリントテーブルを維持するように設計されてもよい。
【０１５２】
このテーブルＴｐＳｉｇｎＰＴｂ［］１０００内の各行は以下を含んでもよい：
別の行の署名値と異なった、文書セットＰｉの特定の署名値Ｎｉｑを記憶する署名列１００２と、
例えば指数ｉの値の記憶する文書セットへの参照列１００４と、
署名データムＮｉｑの値に関連した署名データムＶｉｑ、例えばこの場合では文書セットＰｉ内での署名値Ｎｉｑの出現日付ＴＡｉｑを記憶する署名データム列１００６。
【０１５３】
必要に応じて、このテーブルＴｐＳｉｇｎＰＴｂ［］１０００内の各行はまた以下を含んでもよい：
要素データムＺｉｑ、例えばこの場合には関連性指数Ｂｉｑの値を記憶する要素属性データム用列１００８と、
文書データムＷｉｑ、例えばこの場合には貢献者識別子Ａｉｑを記憶する文書データム列１０１０。
【０１５４】
テーブルＴｐＳｉｇｎＰＴｂ［］１０００内の各行は、時限付き要素インプリントＥｉｑとして見なされてもよい。
【０１５５】
また、テーブルＴｐＳｉｇｎＰＴｂ［］１０００は、他のデータ、特に、モジュールＳｉｇｎＭ１１０によって確立されたおよび／またはベースＷＤＢ１２０に一時的に記憶されたデータを含んでもよい。
【０１５６】
ある特定の実施の形態は、ある特定の文書セット用のテーブルＴｐＳｉｇｎＰＴｂ［］１０００として、図６中のテーブルを記憶することから構成されてもよい。
【０１５７】
次に、文書セットＰｉ毎にそのような１つのテーブルを記憶するように、または、１つのテーブル内で異なる文書セットＰｉに関連した複数のテーブルを組み合わせるために、ベースＰＤＢ１３０は配列され得る。図１１では、例えば、テーブル１１００は、文書セットＰ１用のテーブル６０４と類似し列ＣＯＬ１１０１〜ＣＯＬ１１１０および行ＲＯＷ１１０１〜ＲＯＷ１１１３からなるテーブル１１０２と、文書セットＰ２用のテーブル６０４と類似し列ＣＯＬ１１０１〜ＣＯＬ１１１０および行ＲＯＷ１１１４〜ＲＯＷ１１２６からなるテーブル１１０４と、任意の文書セットＰｉ用のテーブル６０４と類似し列ＣＯＬ１１０１〜ＣＯＬ１１１０および行ＲＯＷ１１２８〜ＲＯＷ１１４０からなるテーブル１１０６とを組み合わせている。
【０１５８】
文書セットを比較するモジュールの第１の実施の形態
本発明によるツールは文書セット比較モジュールＣｏｍＭ１４０を備え、この文書セット比較モジュールＣｏｍＭ１４０は、ベースＰＤＢ１３０において文書セットＰｉと別の文書セットＰｉ′との両方に関連する署名値のセットを生成するように設計されている。これにより、文書セットＰｉの文書要素Ｏｉｊｌが別の文書セットＰｉ′内で見つけられていることを決定することが可能になる。
【０１５９】
また、モジュールＣｏｍＭ１４０は、文書セットＰｉ′の文書要素を文書セットＰｉ内に組み込むこと、これとは逆に文書セットＰｉ′の文書要素を文書セットＰｉ内に組み込むことを決定することより、文書セットＰｉと文書セットＰｉ′との間に従属性を確立するように設計されている。言い換えれば、モジュールＣｏｍＭ１４０は、文書セット間に従属性を確立しこの従属性を方向付けるように設計されている。
【０１６０】
なお、実用的な理由のため関数ｆｉｌｔｅｒＡ（）、関数ｆｉｌｔｅｒＢ（）、および関数ｃｕｔ（）は配列されていなければならず、同一コンテンツでは関数ｓｉｇｎＯ（）（または同等の関数）が、これらのコンテンツに共通する少なくとも１つの署名値のサブセットに到達するようになっている。同一に配列された関数ｆｉｌｔｅｒＡ（）、関数ｆｉｌｔｅｒＢ（）、および関数ｃｕｔ（）を、比較されるべき別々のコンテンツに適用して、コンテンツが同一である時に関数ｓｉｇｎＯ（）を介して同一署名値のセットを取得するようにすることが望ましい場合がある。
【０１６１】
モジュールＣｏｍＭ１４０は、文書セットを比較する関数ｃｏｍｐ（）を備えている。関数ｃｏｍｐ（）は、第１の文書セットＰ１を第２の文書セットＰ２と比較して、文書セットＰ１およびＰ２に共通する文書要素を決定するように配列されている。
【０１６２】
図１２を参照して関数ｃｏｍｐ（）は記述される。
【０１６３】
関数ｃｏｍｐ（）は、文書セットＰ１に関係した署名値Ｎ１ｑと、対応する署名データＶ１ｑとを含んだサブセットＥ′ｌをベースＰＤＢ１３０から抽出するように配列されている（ステップ１２００）。ここでは、文書セットＰ１に関連したＱ１個の異なる署名値Ｎ１ｑが存在すると仮定している。
【０１６４】
任意に、関数ｃｏｍｐ（）は、ベースＰＤＢ１３０内で署名値Ｎ１ｑに関連している全てのデータをさらに抽出するように設計されている。例えば、関数ｃｏｍｐ（）は、図１１のテーブル１１０２と同タイプのテーブルを抽出するように配列されていてもよい。
【０１６５】
これと同じ方法で、関数ｃｏｍｐ（）は、文書セットＰ２に関連し（ステップ１２０２）Ｑ２個の異なる署名値Ｎ２ｑ′から構成されるサブセットＥ′２をベースＰＤＢ１３０から抽出するように配列されている。例えば、関数ｃｏｍｐ（）は、図１１のテーブル１１０４と同じ種類のテーブルを抽出するように配列されてもよい。
【０１６６】
関数ｃｏｍｐ（）は、署名値Ｎ１ｑと署名値Ｎ２ｑ′が等しいセットＥ′１とセットＥ′２とのサブセットを寄せ集めることからなる交差セットＥ′１２を構成するように配列されている（ステップ１２０４）。言い換えれば、関数ｃｏｍｐ（）はテーブルＰｉｎｔＴｂ［］を作成するように配列されており、このテーブルＰｉｎｔＴｂ［］は、Ｅ′１およびＥ′２の同一の署名値Ｎ１ｑおよびＮ２ｑ′と、それらのそれぞれの署名データＶ１ｑおよびＶ２ｑ′を組み合わせている。必要に応じて、関数ｃｏｍｐ（）は、これらの署名値に関連するデータのいくつかまたは全てをベースＰＤＢ１３０にさらに記憶するように配列されてもよい。
【０１６７】
関数ｃｏｍｐ（）は、従属性セットＥ″１２を確立するように配列されている。例えば、関数ｃｏｍｐ（）は、従属性ＰＤｅｐＴｂ［］のテーブルを構成するように配列されてもよく、このテーブルの各行は文書セットＰ１およびＰ２の間で方位付けされた従属性を表している（ステップ１２０６）。
【０１６８】
「従属性」によって、文書セットＰ２に関連した署名値Ｎ２ｑ′のセットの中に、文書セットＰ１に関連した署名値Ｎ１ｑが表され、または、その逆が表される。言い換えれば、文書セットＰ１およびＰ２の間の従属性は、これらの文書セットの一方に他方の文書セットの文書要素の存在を明かしている。
【０１６９】
関数ｃｏｍｐ（）は、テーブルＰｄｅｐＴｂ［］を作成するように配列されて、そのテーブル内の各行は：
署名値Ｎｍと、
その署名値に対してソース文書セットＰＯｍへの（即ち、文書セットＰ１またはＰ２の一方への）参照と、
その署名値に対して宛先文書セットＰＤｍへの（即ち、文書セットＰ１またはＰ２の他方への）参照と、
を備えるようになり、テーブルＰｄｅｐＴｂ［］は、セットＥ′１２の各署名値Ｎｍをカウントするように満たされ、ソース文書セットＰＯｍおよび宛先文書セットＰＤｍは、署名データＶ１ｍおよびＶ２ｍから開始する方位関数ｄｉｒ（）を使って、即ちセットＥ′１およびＥ′２内で署名値Ｎｍに対応する署名データＶ１ｑおよびＶ２ｑ′の値をそれぞれ使って決定される。ソース文書セットによって、署名値Ｎｍを伴う文書要素Ｃｉｊｌｋが宛先文書セット内へインポートされた可能性が最も高い文書セットが表される。
【０１７０】
テーブルＰｄｅｐＴｂ［］の各行は、署名値Ｎｍに対して、「ソース」文書セットＰＯｍへの参照と「宛先」文書セットＰＤｍへの参照とを示す方位付け従属性を表している。
【０１７１】
任意に、テーブルＰｄｅｐＴｂ［］は、署名値Ｎｍ毎に、以下もまた記憶しているかもしれない：
署名データＶ１ｍおよびＶ２ｍから確立されるかもしれない従属属性Ｆｍ、例えばソース文書セットＰＯｍ内での署名値Ｎｍの最初の出現日付と、
文書属性データＷ１ｑおよびＷ２ｑから確立されるかもしれない文書従属属性Ｇｍ、例えば署名値を生成する要素が始まった文書タイプを特徴付け、または時間基準の信頼性指数を特徴付けるデータと、
要素属性データＺ１ｑおよびＺ２ｑから確立されるかもしれない要素従属属性Ｈｍ、例えば署名値Ｎｍを生成する要素のサイズの指摘。
【０１７２】
文書従属属性Ｇｍが文書タイプを特徴付けるデータムを備える場合には、生成する要素が別々のタイプの文書から始まっている署名値Ｎｍを除外することは可能である。
【０１７３】
ソース文書セットＰＯｍと宛先文書セットＰＤｍとを決定することは、別々の基準を考慮してもよい。結果として、関数ｄｉｒ（）が配列されてもよい。
【０１７４】
特に、関数ｄｉｒ（）は、ソース文書セットＰＯｍとして、署名値Ｎｍを生成する文書要素が最初に出現した文書セットを決定するように配列されてもよい。その場合には、セットＰＯｍは、インプリントにおいて署名値Ｎｍが最も早く出現した文書セットであるのに対し、セットＰＤｍは、この署名値Ｎｍがその後にだけ出現した文書セットであってもよい。
【０１７５】
ある特定の実施の形態では、署名データＶ１ｍおよびＶ２ｍは、文書セットＰ１およびＰ２において署名値Ｎｍの出現日付ＴＡ１ｍおよびＴＡ２ｍをそれぞれ含んでいる。それから、関数ｄｉｒ（）は、最も古い日付ＴＡ１ｍおよびＴＡ２ｍに対応した文書セットＰ１およびＰ２のうち特定の一方をソースセットＰＯｍとして決定するように配列され得る。文書セットＰ１およびＰ２のうち他方は宛先セットＰＤｍとして決定される。
【０１７６】
任意に、関数ｃｏｍｐ（）は、日付ＴＡ１ｍおよびＴＡ２ｍを従属属性Ｆｍとして記憶するように配置されてもよい。次に、従属属性Ｆｍは、文書セットＰＯｍのコンテンツが文書セットＰＤｍに組み込まれていた時間間隔に対応している。
【０１７７】
別の実施の形態では、署名データムＶ１ｍ（またはＶ２ｍのそれぞれ）は、文書セットＰ１（またはＰ２のそれぞれ）において署名値Ｎ１ｍ（またはＮ２ｍのそれぞれ）の登場日付ＴＡ１ｍ（またはＴＡ２ｍのそれぞれ）と、その文書セットからその署名値Ｎｍの消滅日付ＴＤ１ｍ（またはＴＤ２ｍのそれぞれ）とを備えている。この場合には、関数ｃｏｍｐ（）は、以前のものとしてソースセットＰＯｍおよびＰＤｍを確立し宛先文書セットＰＤｍにおいて消滅日付ＴＤ１ｍまたはＴＤ２ｍを従属属性Ｆｍとして保持するように配置されてもよい。
【０１７８】
任意に、前述した実施の形態に対して、文書データＷ１ｍおよびＷ２ｍは、特にこれらのデータが出現日付ＴＡ１ｍおよびＴＡ２ｍを含む場合には、署名データＶ１ｍおよびＶ２ｍの信頼性指数を備えている。それから、関数ｃｏｍｐ（）は、テーブルＰｄｅｐＴｂ［］を署名値Ｎｍのみで満たすように配列可能であり、文書データムＷ１ｍまたはＷ２ｍは特定の閾値より大きい。
【０１７９】
より一般的には、関数ｄｉｒ（）は、要素属性データＺ１ｍおよびＺ２ｍ、文書属性データＷ１ｍおよびＷ２ｍ、状態属性データＸ１ｍおよびＸ２ｍ、および／または、署名データＶ１ｍおよびＶ２ｍを考慮することにより、文書セットＰ（）ｍおよびＰＤｍを決定するように配列されてもよい。
【０１８０】
例えば、対応する関連指数ＢｌｍまたはＢ２ｍのそれぞれが特定の値よりも大きい場合に、データＴＡ１ｍおよびＴＡ２ｍのうち最も古い方に対応した文書セットＰ１およびＰ２のうち特定の一方を文書セットＰＯｍとして確立するように、関数ｃｏｍｐ（）は配列されてもよい。
【０１８１】
任意に、署名値Ｎｍとこれに関連したデータとを従属性テーブルＰｄｅｐＴｂ［］から削除するように関数ｃｏｍｐ（）は配列されてもよく、その関連指数Ｂ１ｍおよびＢ２ｍのうち一方は所定値よりも低く、または、出現日付ＴＡ１ｍまたはＴＡ２ｍと出現日付Ｔｄ１ｍまたはＴＤ２ｍとは、ある固定値よりも大きい時間距離で離間されている。
【０１８２】
従属性集合関数
関数ｃｏｍｐ（）は、テーブルＰｄｅｐＴｂ［］の従属性を寄せ集めることが可能な集合関数を呼び出すように配列されている。これは、このテーブルＰｄｅｐＴｂ［］内の属性の数が相当数である場合には特に有利である。
【０１８３】
図１３を参照して集合関数ａｇｒＤｅｐ１（）の第１の例が記述される。
【０１８４】
関数ａｇｒＤｅｐ１（）は、２つの従属性サブセットＤ１２およびＤ２１の間の従属性の方位に従って、全ての属性Ｅ″１２を分割するように配列されてもよく、当該２つの従属性サブセットＤ１２およびＤ２１はそれぞれ以下に対応している：
ＰＯｍがＰ１と等値になるようにＥ″１２の全ての従属性と、
ＰＯｍがＰ２と等値になるようにＥ″１２の全ての従属性（ステップ１３００）。
【０１８５】
例えば、関数ａｇｒＤｅｐ１（）は、２つのサブテーブルＰｄｅｐ１２Ｔｂ［］およびＰｄｅｐ２１Ｔｂ［］の間でテーブルＰｄｅｐＴｂ［］を分割するように配列されてもよく、当該２つのサブテーブルＰｄｅｐ１２Ｔｂ［］およびＰｄｅｐ２１Ｔｂ［］はそれぞれ以下に対応している：
ＰＯｍがＰ１と等値になるようにテーブルＰｄｅｐＴｂ［］内の行、即ち署名値Ｎｍおよびそれらの値に関連するデータと、
ＰＯｍがＰ２と等値になるようにテーブルＰｄｅｐＴｂ［］内の行、即ち署名値Ｎｍおよびそれらの値に関連するデータ。
【０１８６】
セットＤ１２は、関連する出現日付ＴＡ１ｍが関連する出現日付ＴＡ２ｍよりも古い（つまり、その日付未満）署名値Ｎｍのセットを備えている。同様に、セットＤ２１は、関連する出現日付ＴＡ２ｍが関連する出現日付ＴＡ１ｍよりも古い全ての署名値Ｎｍを備えている。
【０１８７】
まず、関数ａｇｒＤｅｐ１（）によるサブセットＤ１２の集合が記述されるだろう。
【０１８８】
任意に、関数ａｇｒＤｅｐ１（）は、セットＤ１２およびＤ２１を編成するように配列されて、それらの署名値Ｎｍに関連した日付に従って従属性を組み合わせるようしてもよい。
【０１８９】
関数ａｇｒＤｅｐ１（）は、セットＤ１２における署名値Ｎｍの個数Ｕ１２を確立するように配列されている。これは、カウント関数ｃｏｕｎｔ（）を使用して行うことができる（ステップ１３０２）。
【０１９０】
関数ａｇｒＤｅｐ１（）は、文書セットＰ１の任意の要素が初めて文書セットＰ２に統合された日付Ｔ１２を確立するように配列されている。言い換えれば、日付Ｔ１２は、サブセットＤ１２に属する署名値Ｎｍに関連した最も古い日付ＴＡ２ｍである（ステップ１３０４）。
【０１９１】
関数ａｇｒＤｅｐ１（）は、セットＤ１２に属する従属性の従属性サブセット即ち集合体Ｄｅ１２ｕを確立するように配列されており、その署名値Ｎｍの出現日付ＴＡ１ｍは、または、署名Ｎｍと同一の署名が文書セットＰ１と最初に関連する日付は、日付Ｔ１２よりも古い。言い換えれば、セットＤｅ１２ｕは、出現日付ＴＡ１ｍが日付Ｔ１２よりも古いセットＤ１２に属する署名値Ｎｍを、任意にはそれらの値に関連したデータを備えている（ステップ１３０６）。
【０１９２】
関数ａｇｒＤｅｐ１（）は、日付Ｔ１２′を確立するように配列されており、この日付Ｔ１２′は、セットＤ１２に属するが、従属性集合体Ｄｅ１２ｕに属さない従属性の署名値Ｎｍに関連する日付の中で最も古いものであると定義されている。言い換えれば、日付Ｔ１２′は、文書セットＰ１の文書要素が文書セットＰ２に統合されるが、署名Ｎｍが構成中のグループに属さない最も古い日付を表している（ステップ１３０８）。
【０１９３】
任意に、関数ａｇｒＤｅｐ１（）は集合体Ｄｅ１２ｕから従属性を削除するように配列されてもよく、セットＰ２内で署名値Ｎｍの最初の出現日付ＴＡ２ｍは日付Ｔ１２′よりも新しい（ステップ１３１０）。
【０１９４】
ステップ１３０４〜１３１０は、得られたセットの和集合体Ｄｅ１２ｕがセットＤ１２と同一になるまでに既に形成された集合体Ｄｅ１２ｕの従属性を除いて、再スタートされる。これは、ちょうど構成されたセットＤｅ１２ｕから従属性を排除すること（ステップ１３１２）によって、かつ、セットＤ１２が空になるまでステップ１３０４〜１３１２を再スタートさせること（ステップ１３１４）によって実行できる。
【０１９５】
関数ａｇｒＤｅｐ１（）は、和集合が従属性Ｄ２１のサブセットに対応する従属性の集合体Ｄｅ２１ｕを得るために、サブセットＤ２１に対してステップ１３０２〜１３１４を対称的に実行するように配列されている。
【０１９６】
任意に、関数ａｇｒＤｅｐ１（）は、集合体Ｄｅ１２ｕ（またはＤｅ２１ｕのそれぞれ）毎に、特にこの集合体の署名値Ｎｍに関連している従属属性Ｆｍと、文書従属属性Ｇｍと、要素従属属性Ｈｍとから、集合体データを確立するように配列されてもよい。必要に応じて、データＶ１ｍまたはＶ２ｍ、データＷ１ｍまたはＷ２ｍ、および／または、データＺ１ｍまたはＺ２ｍから前記集合体データを確立するように、関数ａｇｒＤｅｐ１（）は配列されてもよい。
【０１９７】
例えば、関数ａｇｒＤｅｐ１（）は、集合体Ｄｅ１２ｕ（またはＤｅ２１ｕのそれぞれ）毎に、集合体の任意の要素の最初の統合日付、即ち、当該集合体の署名値Ｎｍに関連する日付ＴＡ１ｍのうち最も古いものを確立するように配列されてもよい。これに加え、または代替的に、関数ａｇｒＤｅｐ１（）は、集合体毎に、以下を確立するように配列されてもよい：
当該集合体に含まれている署名値Ｎｍ（およびこれにより従属性）の数、
例えば文書従属属性Ｇｍから計算された時間基準の信頼性指数の平均値、および／または、
署名値Ｎｍが当該集合体に含まれた文書要素の累積サイズ、例えばそれらの署名の要素従属属性Ｈｍから計算される累積サイズを示す値。
【０１９８】
任意に、関数ａｇｒＤｅｐ１（）は、集合体の確率の特徴を示すデータムを確立するように配列されてもよい。集合体の確率によって、主に、署名値Ｎｍが当該集合体に含まれる全ての文書要素がコンテンツ統合の同じ工程から生じているという事実が表される。例えば、集合体Ｄｅ１２ｕ（またはＤｅ２１ｕのそれぞれ）に対して、この集合体の全ての署名値がソース文書セットのインプリントの中に共存する時間間隔があるかどうかをチェックするように、関数ａｇｒＤｅｐ１（）は配列されてもよい。
【０１９９】
なお、ここでは、文書セットＰ１およびＰ２のうち一方への新規な状態の追加が、これらの状態がセットＥ″１２を確立した状態に後続するのであれば、既にカウントされたセットＥ″１２の従属性は変わらない。さらに、新規な状態の追加は、関数ａｇｒＤｅｐ１（）によって取得された集合体を変更させないが、これらの集合体の従属性の数のみを変更させることができる。実際には、文書セットＰ１およびＰ２に対して文書要素を追加または削除に関係なく、比較後に、確立された従属性は有効なままである。例えば、その結果として従属性を生成した文書セットＰ１から文書セットＰ２内の文書要素を削除することにより従属性は消滅されない。したがって、本発明により可能となった文書セット間の比較は「ロバスト性」として記述されることもある。この性質は、主として、モジュールＳｉｇｎＭ１１０によって確立されたような文書セットの時限付きインプリントが、以下の状態の追加により破壊されないということから生じる：特に初回の出現日付の場合には、新規の署名値がインプリントに追加されてもよいが、既存の署名値の署名データは変更されない。言い換えれば、特定の日付での文書セットのインプリントは、前の日付に作成されたこの文書のインプリントを含んでいる。
【０２００】
図１４を参照して集合関数ａｇｒＤｅｐ２（）の第２の例が記述される。
【０２０１】
関数ａｇｒＤｅｐ２（）は、従属性の方位に従って、全ての従属性Ｅ″１２を、図１３のステップ１３００による２個の従属サブセットＤ１２およびＤ２１に分割するように配列されている（ステップ１４００）。
【０２０２】
従属性Ｄ１２のセット内に含まれる署名値Ｎｕが存在するように文書セットＰ１内の最初の出現日付ＴＡ１ｕの値毎に、関数ａｇｒＤｅｐ２（）は、全ての署名値Ｎｍと、日付ＴＡ１ｍが日付ＴＡ１ｕと同一であるこれらの署名データ値に関連したデータとを備えた
従属性または集合体のサブセットＤｅ１２ｕを確立するように、配列されてもよい（ステップ１４０２）。言い換えれば、関数ａｇｒＤｅｐ２（）は、署名が文書セットＰ１内に同一の出現日付を有する集合体Ｄｅ１２ｕにセットＤ１２を分割するように配列されている。
【０２０３】
任意には、関数ａｇｒＤｅｐ２（）は、例えば番号付け関数ｎｂｒ（）によって、セットＤ１２に含まれる集合体Ｄｅ１２ｕの数を決定するように、および、この数が所定値ＶＡＬよりも大きいかどうかを証明するように配置されてもよい（ステップ１４０４）。値ＶＡＬは、処理に妥当であると判断された集合体の数と等しい。値ＶＡＬは、一方で、多数の集合体が後続の処理を面倒にすること、他方で、少数の集合体が、後続の動作を無意味にする情報の損失を生じさせることを考慮に入れて決定されるかもしれない。後続の動作によって、特に、モジュールＲｉｇｈｔｓＭ１５０によって実行される処理が表される。
【０２０４】
ステップ１４０４での試験が否定的（negative）である場合、関数ａｇｒＤｅｐ２（）は停止される。そうでない場合、関数ａｇｒＤｅｐ２（）は、以降で記述される方法で時間間隔のセットＤｅｌｔａＴ１２ｖを決定するように配列されている（ステップ１４０６）。
【０２０５】
ステップ１４０６で決定される時間間隔ＤｅｌｔａＴ１２ｖ毎に、関数ａｇｒＤｅｐ２（）は、集合体Ｄｅ１２ｕのセットを含んだ従属性のスーパーセットまたは集合体Ｄｅ１２ｕのスーパーセットを構成するように配列されており、日付ＴＡ１ｕが当該の範囲ＤｅｌｔａＴ１２ｖ内に含まれるようになっている（ステップ１４０８）。言い換えれば、関数ａｇｒＤｅｐ２（）は、文書セットＰ１内でその署名の最初の出現日付の関数として、署名値Ｎｍに従って、より詳細にはこれらの日付が時間間隔ＤｅｌｔａＴ１２ｖに属するかどうかに従って、セットＤ１２の従属性を組み合わすように配列されている。ある場合には、集合体Ｄｅ１２ｖの構造は、日付ＴＡ１ｕに代わって日付ＴＡ２ｕを考慮するかもしれない。
【０２０６】
時間間隔ＤｅｌｔａＴ１２ｖは、文書要素を作成する工程で一貫性を記録するように決定されている。この時間間隔ＤｅｌｔａＴ１２ｖの決定により、１つ以上の基準が考慮されることもある。
【０２０７】
例えば、関数ａｇｒＤｅｐｔ２（）は、それぞれが宛先文書セットＰＤｍの状態、この場合には文書セットＰ２の状態に対応する時間間隔ＤｅｌｔａＴ１２ｖを確立するように配列されてもよい。したがって、セットＤ１２の従属性が、宛先文書セットの状態の関数として再グループ化される。この場合には、関数ａｇｒＤｅｐ２（）は、集合体Ｄｅ１２ｖを日付ＴＡ２ｕの関数として定義するように配列されている。
【０２０８】
また、日付ＴＡ２ｕの関数は、時間間隔ＤｅｌｔａＴ１２ｖを決定するよう配列されてもよく、各々の時間間隔が文書セットの一連の状態に対応し、状態属性の値、特に貢献者識別子Ａｉｊの値が同一であるようになっている。次に、セットＤ１２の従属性は、ソース文書セットの状態の関数として、および貢献者によってグループ化されている。
【０２０９】
一般的に、時間間隔ＤｅｌｔａＴ１２ｖの定義は、文書コンテンツを更新する頻度の特徴を示す期間の選択からもたらされ、例えば、バージョン管理ツールによって取得されたデータ、例えば日付Ｔｉｊデータから得られる。
【０２１０】
関数ａｇｒＤｅｐ２（）は、セットＤ２１に対してステップ１４０２〜１４０８を対称的に実行するように配列されていることが理解される。
【０２１１】
関数ａｇｒＤｅｐ１（）と同様に、関数ａｇｒＤｅｐ２（）は、得られた集合体Ｄｅ１２ｖおよびＤｅ２１ｖの確率を証明するように配列されてもよい。
【０２１２】
再び同様に、関数ａｇｒＤｅｐ２（）は、集合体Ｄｅ１２ｖ毎に、特にこの集合体の署名値Ｎｍに関連する従属属性Ｆｍ、文書従属属性Ｇｍ、要素従属属性Ｈｍから、必要に応じてデータＶ１ｍまたはＶ２ｍ、データＷ１ｍまたはＷ２ｍ、および／または、データＺ１ｍまたはＺ２ｍから集合体データを確立するように配置されてもよい。
【０２１３】
例えば、関数ａｇｒＤｅｐ２（）は、集合体Ｄｅ１２ｖ（またはＤｅ２１ｖのそれぞれ）毎に、集合体の任意要素の最初の統合の日付、当該集合体内に含まれる署名値Ｎｍ（またその従属性）の数、時間基準の信頼性指数の平均値、および／または、当該集合体に署名値Ｎｍが含まれた文書要素の累積サイズを確立するように配列されてもよい。
【０２１４】
ここで記述された関数ａｇｒ１Ｄｅｐ（）および関数ａｇｒ２Ｄｅｐ（）は限定的ではなく、他の集合関数は追加的または代替的に定義されてもよい。例えば、署名値Ｎｍと、これらの値に関連するデータとは、データＦｍ、データＧｍ、および／またはデータＨｍに従って、および／または、任意にデータＶ１ｍまたはＶ２ｍ、データＷ１ｍまたはＷ２ｍ、および／または、データＺ１ｍまたはＺ２ｍに従ってグループ化されてもよい。
【０２１５】
集合関数の全ての実施の形態において、これらの関数は、取得された集合体毎に、重要さと等価のデータムを確立するようにも配列されてもよい。これによって、集合体の階層構造を確立することが可能となって、例えばその後の処理がより容易になるようにしている。例えば、集合関数は、前記重要さを決定する際に、集合体内に含まれている従属性の数と、署名が従属性を表示する文書要素の累積サイズと、ソース文書セットおよび／または宛先文書セット内の重要さと、集合体の署名に関連する時間基準の信頼性と、任意の使用可能な情報とを考慮するように配列されてもよい。
【０２１６】
文書セットを比較するモジュールの第２の実施の形態
この実施の形態では、モジュールＣｏｍＭ１４０は、前述した意味において、１つの文書セットＰｉをいくつかの文書セットＰｉ′と比較するように配列されている。
【０２１７】
モジュールＣｏｍＭ１４０は、文書要素の文書セットＰｉ内への組み込みを文書セットＰｉ′から決定し、それと反対に、文書セットＰｉの文書要素の文書セットＰｉ′内への組み込みを文書セットＰｉから決定することにより、文書セットＰｉと文書セットＰｉ′との間で従属性を確立するように配置されている。言い換えれば、モジュールＣｏｍＭ１４０は、１つの文書セットと多数の文書セットとの間で従属性を確認しそれらの従属性を方向付けるように配列されている。
【０２１８】
モジュールＣｏｍＭ１４０は、文書セットを比較する関数ｃｏｍｐ１Ｎ（）を備えている。関数ｃｏｍｐ１Ｎ（）は、第１の文書セットＰ１を文書セットＰ２、Ｐ３、・・・、Ｐｎ、・・・、ＰＮと比較するように配列されており、ここにＮはｎの全ての値に対して文書セットＰ１およびＰｎに共通する文書要素を決定するために自然な整数である。
【０２１９】
図１５を参照して関数ｃｏｍｐ１Ｎ（）は記述される。
【０２２０】
関数ｃｏｍｐ１Ｎ（）は、文書セットＰ１に関連する署名値Ｎ１ｑと、対応する署名データＶ１ｑとを含んだベースＰＤＢ１３０からサブセットＥ′１を抽出するように配列されている（ステップ１５００）。ここでは、文書セットＰ１に関連したＱ１個の異なる署名値Ｎ１ｑが存在すると仮定する。
【０２２１】
任意に、これに加えて、関数ｃｏｍｐ１Ｎ（）は、ベースＰＤＢ１３０内に署名値Ｎ１ｑに関連する全てのデータを抽出するように配列されている。例えば、関数ｃｏｍｐ１Ｎ（）は、図１１でのテーブル１１０２と同じタイプのテーブルを抽出するように配列されてもよい。
【０２２２】
関数ｃｏｍｐ１Ｎ（）は、各文書セットＰｎに関連しＱｎ個の異なる署名値Ｎ１′から構成されるサブセットＥ′ｎをベースＰＤＢ１３０から抽出するように配列されている（ステップ１５０２）。例えば、関数ｃｏｍｐ１Ｎ（）は、文書セットＰｎ毎に、図１１のテーブル１１０４と同じタイプのテーブルを抽出するように配列されてもよい。
【０２２３】
関数ｃｏｍｐ１Ｎ（）は、セットＥ′１の交差サブセットをセットＥ′ｎの各々と組み合わせることにより作成された交差セットＥ′１Ｎを構成するように配列されている。２つのセット間の交差により、同時に２つのセットの中に含まれている署名値のセットと、必要に応じて両方のセット内にこれらの署名値と関連するデータとが表される（ステップ１５０４）。言い換えれば、関数ｃｏｍｐ１Ｎ（）は、Ｅ′１と、セットＥ′ｎのうち少なくとも１セットとに共通した署名値を組み合わせたテーブルＰｉｎｔＴｂ［］を確立するように配列されている。共通の署名値毎に、関数ｃｏｍｐ１Ｎ（）は、セットＥ′１と、発見された場合にはセットＥ′ｎのそれぞれとにおいてその署名値と関連する署名データをテーブルＰｉｎｔＴｂ［］内に記憶するように配列されている。必要に応じて、関数ｃｏｍｐ１Ｎ（）は、さらに、これらの署名値と関連するデータのいくつかまたは全てをベースＰＤＢ１３０内に記憶するように配列されてもよい。
【０２２４】
関数ｃｏｍｐ（）は、従属性セットＥ″１Ｎを確立するように配列されている。例えば、関数ｃｏｍｐ１Ｎ（）は、従属性テーブルＰＤｅｐＴｂ［］を構成するように配列されてもよく、各行が文書セットＰ１と文書セットＰｎとの間で方向付けられるようにしている（ステップ１５０６）。
【０２２５】
関数ｃｏｍｐ１Ｎ（）は、テーブルＰｄｅｐＴｂ［］を確立するように配列されており、このテーブルの各行は以下を備えるようにしている：
署名値Ｎｍと、
その署名値に対してソース文書セットＰＯｍへの（即ち、特に、セットＰ１またはセットＰｎのうちの１つへの）参照と、
その署名値に対して宛先文書セットＰＤｍ（即ち、ＰＯｍがＰ１と同等である場合には特定のセットＰｎ、または、ＰＯｍが特定のセットＰｎと同等である場合にはセットＰ１）への参照。
【０２２６】
テーブルＰｄｅｐＴｂ［］は、セットＥ′１Ｎの各署名値Ｎｍをカウントするように満たされている。署名データＶ１ｍおよびＶｎｍから開始する方位付け関数ｄｉｒ（）によって、ソース文書セットＰＯｍおよび宛先文書セットＰＤｍへの参照が決定される。
【０２２７】
テーブルＰｄｅｐＴｂ［］内の各行は、署名値Ｎｍに対して、「ソース」文書セットＰＯｍへの参照と「宛先」文書セットＰＤｍへの参照とを示す方向付け従属性を表している。
【０２２８】
任意に、テーブルＰｄｅｐＴｂ［］は、署名値Ｎｍ毎に、以下を記憶していることもある：
署名値Ｖ１およびＶｎｍに基づいて確立できる従属属性Ｆｍ、例えば、ソース文書セットＰＯｍ内での署名値Ｎｍの最初の出現日付と、
文書属性データＷ１ｑおよびＷｎｑに基づいて確立できる文書従属属性Ｇｍ、例えば、署名値生成要素が始まった文書のタイプを、または、時間基準の信頼性の指数を特徴付けるデータムと、
要素属性データＺ１ｑおよびＺｎｑに基づいて確立できる要素従属属性Ｈｍ、例えば、署名値生成要素Ｎｍのサイズの表示。
【０２２９】
ソース文書セットＰＯｍと宛先文書セットＰＤｍの決定は、様々な基準を考慮するかもしれない。その結果として、関数ｄｉｒ（）は配列されることもある。
【０２３０】
特に、署名値Ｎｍを生成する文書要素が最初に出現する文書セットをソース文書セットＰＯｍとして決定するように、関数ｄｉｒ（）は配列されてもよい。この場合には、セットＰＯｍは、署名値Ｎｍが最初に出現したインプリント内の文書セットであるのに対し、セットＰＤｍは、その署名値Ｎｍが後にのみ出現した文書セットであってもよい。
【０２３１】
毎回、２つの文書セット、即ちセットＰ１およびＰｎの間で従属性を方向付けることが重要であるため、前述した関数ｃｏｍｐ（）の様々な変数が関数ｃｏｍｐ１Ｎ（）へ転置されてもよい。
【０２３２】
したがって、関数ｃｏｍｐ１Ｎ（）は、文書セットＰ１と文書セットＰｎのいずれか１つとの間に従属性のセットＥ″１Ｎを確立するように配列されてもよい。言い換えれば、セットＥ″１Ｎの各従属性（または署名値Ｎｍ）は、文書セットＰｎ内におけるセットＰ１の文書要素の存在を、ソース文書セットＰＯｍと宛先文書セットＰＤｍとを使って特徴付けている。
【０２３３】
この実施の形態は、文書セットＰ１と文書セットＰ２、・・・、Ｐｎ、・・・、ＰＮのそれぞれとの間で、比較モジュールの第１の実施の形態の関数ｃｏｍｐ（）の適用と見られるかもしれない。
【０２３４】
この実施の形態では、関数ｃｏｍｐ１Ｎ（）は、従属性を集合体、即ちセットＥ″１Ｎのサブセットに結合するために集合関数を呼び出すかもしれない。
【０２３５】
第１の実施の形態では、関数ｃｏｍｐ１Ｎ（）は、集合関数ａｇｒＤｅｐ３（）を呼び出すように配列されている。関数ａｇｒＤｅｐ３（）は、従属性Ｅ″１ＮのセットをサブセットＥ″１ｎに分割するように配列されて、サブセットＥ″１ｎの各々が、当該の文書セットＰ１と文書セットＰｎとの間で従属性を組み合わせるようにしている。また、関数ａｇｒＤｅｐ３（）は、従属性Ｅ″１ｎのセット毎に、比較モジュールの第１の実施の形態の集合関数のうちの１つを、特に、関数ａｇｒＤｅｐ１（）とａｇｒＤｅｐ２（）とのうち一方を呼び出すように配列されている。
【０２３６】
第２の実施の形態では、関数ｃｏｍｐ１Ｎ（）は、集合関数ａｇｒＤｅｐ４（）を呼び出すように配列されている。関数ａｇｒＤｅｐ４（）は、特定の署名値Ｎｍに対して、文書セットＰ１と、ソースセットＰＯｍ内で署名値Ｎｍの出現日付が、文書セットＰ１、Ｐ２、・・・、Ｐｎ、・・・、ＰＮのセット内でその署名値Ｎｍの出現日付の全てのうちで最も古いものとならないセットＰｎのうち１つとの間での従属性を、従属性のセットＥ″１Ｎから削除するように配列されている。
【０２３７】
任意に、特に従属性の数が多すぎる場合、例えば後で都合よく処理されるために、ソース文書セットＰＯｍの関数として集合体を作成するように関数ａｇｒＤｅｐ４（）が配列されてもよい。また、関数ａｇｒＤｅｐ４（）は、ソース文書セットの状態の関数として集合体を作成するように配列されてもよい。また、比較モジュールの第１の実施の形態において前に挙げた記述と同様に、関数ａｇｒＤｅｐ４（）は、以下の基準の関数として集合体を作成するように配列されてもよい：
宛先文書セットの状態、
貢献者の識別子、および／または、
時間間隔。
【０２３８】
前述と同様に、特徴データは集合体の結果であると考えられる。
【０２３９】
比較モジュールの第３の実施の形態
この実施の形態では、モジュールＣｏｍＭ１４０は、多数の文書セットＰｉを相互に比較するように配置されている。モジュールＣｏｍＭ１４０は、文書セットＰｉ毎に関数ｃｏｍｐ１Ｎ（）を連続的に呼び出して、従属性Ｅ″ＮＮのセットを確立するように配置された比較関数ｃｏｍｐＮＮ（）を備えている。
【０２４０】
ある特定の開発では、関数ｃｏｍｐＮＮ（）は、特定の署名値Ｎｍに対して、ソースセットＰＯｍ内での署名値Ｎｍの出現日付が、文書セットＰ１、・・・、Ｐｎ、・・・、ＰＮのセットでのその署名値Ｎｍの出現日付の全てのうちで最も古いものとならないセットＰｎのうち２つの間の従属性を従属性のセットＥ″ＮＮから削除するように配列されている。  
【０２４１】
次に、従属性は、前述した１つまたはその他の関数に従って、組み合わされた方法または置換の何れかによって集合させることができる。特に、従属性は、宛先文書セットＰＤｍに従って、集合させることが可能であり、即ち、署名値Ｎｍと、宛先文書セットＰＤｍが同一であるデータに関連したデータとが組み合わせられる。
【０２４２】
前述と同様に、特徴データは、こうして取得された集合体と関連付けられてもよく、その集合体は、例えば、要素サイズの表示を、即ち、署名が当該集合体に存在する文書要素に関連した関連指数Ｂｉｊｌｋによって恐らく計量される平均値の表示を含んだ時の要素属性ＡＥｉｊｌｋ、宛先セットでの最初の出現データ、または、その類似ものを合計することにより得られる文書要素の累積サイズである。
【０２４３】
権利管理モジュール
権利管理モジュールＲｉｇｈｔｓＭ１５０は、モジュールＣｏｍＭ１４０およびベースＰＤＢ１３０と対話するように配列されている。
【０２４４】
モジュールＲｉｇｈｔｓＭ１５０は、文書セットＰｉに対して、従属性のセットを、即ち署名値Ｎｍとこれらの署名値に関連したデータとのセットを確立するように配列されたリスト関数ｌｉｓｔ（）を備えており、宛先文書セットＰＤｍは文書セットＰｉである。必要に応じて、従属性Ｅ″１２、従属性Ｅ″１Ｎ、または従属性Ｅ″ＮＮのセットが集合されている場合に（即ち、これらの従属性のセットのサブセットが作成されている場合）、関数ｌｉｓｔ（）はこれらの集合体のリストを作成するように配列され、関連する属性が宛先文書セットＰＤｍでありその属性はＰｉと等しくなっている。
【０２４５】
ある特定の実施の形態では、関数リスト（）は、従属性のセットＥ″ＮＮ内に存在する署名値Ｎｉｍ毎に、以下を確立するように配列されている：
ソース文書セットＰＯｍへの参照のセット（これ以降Ｐｉ′と示す）、
ソース文書セットＰｉ′の各々に関連した要素属性ＡＥｉ′、ｊｑｐ、ｌｑｐ、ｋｑｐのセット、
ソース文書セットＰｉ′の各々に関連した文書属性ＡＯｉ′、ｊｑｐ、ｌｑｐのセット、例えば全ての貢献者識別子Ａｉ′、ｊｑｐ、
ソース文書セットＰｉ′の各々に関連した状態属性ＡＳｉ′、ｊｑｐのセット、および／または、
文書要素の時間基準のセット、例えば日付Ｔｉ′、ｊｑｐのセット。
【０２４６】
ある特定の開発では、関数ｌｉｓｔ（）はさらに以下を確立するように配列されている：
従属属性Ｆｍのセット、文書従属属性Ｇｍ、および／または要素従属属性Ｈｍ、および／または、
従属性集合体の各々に関連した属性のセット、例えば、ライセンスを表す従属属性。
【０２４７】
例えば、従属属性Ｆｍは、ソース文書セットＰＯｍが被るライセンスのタイプを示すこともある。
【０２４８】
ある特定の開発では、要素属性ＡＥｊ′、ｊｑｐ、ｌｑｐ、ｋｑｐは、ライセンスのタイプを識別する情報（例えば、「ＧＰＬライセンス」または「ＢＳＤライセンス」）を備えている。それから、関数ｌｉｓｔ（）は、ソース文書セットＰｉ′用のライセンスのセットを確立するように配列されている。これにより、例えば、従属性とライセンスとの間にリンクを確立して、文書セットＰｉの動作基準がセットＰｉ′と互換するか否かを決定するのに補助することが可能になる。
【０２４９】
別の特定の実施の形態では、ｌｉｓｔ（）関数は、同じように従属性のリスト（または従属性の集合体）を確立するように配列されており、ソース文書セットＰＯｍはＰｉであり各宛先文書セットＰＤｍの属性（この場合にはＰｉ′）はライセンスのタイプを表している。
【０２５０】
さらに別の実施の形態では、ｌｉｓｔ（）関数は、ライセンスｌｉｃｖｅｒ（）の非互換性を証明する関数を呼び出すように配列され、文書セット属性として記憶されたソース文書セットＰＯｍのライセンスのタイプと、事前に構築されたライセンスの法的な不適合性のリストを使って文書セット属性としても記憶された宛先文書セットＰＤｍのライセンスのタイプとを比較するように配列されてもよい。ｌｉｓｔ（）関数は、セットＥ″ＮＮの従属性毎にｌｉｃｖｅｒ（）関数を呼び出すように配列されてもよい。
【０２５１】
ある場合には、署名値ＮｉｍおよびＮｉ′ｍ、並びにそれらに関連したデータは、ｌｉｓｔ（）関数でも確立されることがある。文書セットに対して行った様々な修正（この場合には元の文書セットと宛先文書セット）の記録を保存するように配列されたバージョン管理ツールを使用する場合には、これによって、様々な文書セットに関連する権利の所有権を決定する際にユーザを補助することが可能になるかもしれない。
【０２５２】
ある特定の実施の形態では、ｌｉｓｔ（）関数は、文書セットＰｉに対して、従属性中に見つかった署名値Ｎｍを確立するように配列されており、宛先文書セットＰＤｍはこの文書セットＰｉであり、全ての従属性のセットから欠如している署名値である。各署名値は、ある特定の場合に依存して、署名データムＶｉｑまたはＶｉ′ｑ′のうち少なくとも一方に関連付けられ、かつ、文書データムＷｉｑまたはＷｉ′ｑ′に関連付けられている。例えば、署名データムＶｉｑまたはＶｉ′ｑ′は、（文書セットとは無関係に）最初に出現した日付と、文書データムＷｉｑまたはＷｉ′ｑ′とを備えてもよく、その署名値を生成したコンテンツが、文書データムＷｉｑまたはＷｉ′ｑ′内の文書の識別子に最初に見つけられている。
【０２５３】
他方、ｌｉｓｔ（）関数は、ベースＰＤＢ１３０あるいはＷＤＢ１２０において文書セットＰｉと関連した文書ＡＯｉｊｌあるいは状態ＡＳｉｊの要素属性ＡＥｉｊｌｋのセットを確立するように、またはその要素属性ＡＥｉｊｌｋからの抽出を確立するように配列されてもよい。
【０２５４】
ある特定の実施の形態では、例えば、文書属性ＡＯｉ、ｊｑｐ、ｌｑｐのそれぞれは、少なくとも１つの貢献者識別子と、その貢献者のステータスの表示（例えば「従業員」、「個人」、「研究者」）とを備えている。それから、関数ｌｉｓｔ（）は、識別子とそれらのステータスとのリストを作成するように配列されている。
【０２５５】
開発
本発明は、各文書が署名に関連した要素に細分化される場合に最大の価値を持つ。しかしながら、例えばその細分化が目的なく、または当該目的にとって価値がない場合には、要素に細分化することができない文書もある。そのような場合には、署名は、全体として考えられる文書に関連付けられるかもしれない。
【０２５６】
前述の説明では、切断アルゴリズムは、１つの文書セットの各コンピュータ管理システムに適していることもある。各ファイルの性質および／または所望の目的に依存して、切断アルゴリズムが標準化されることが有益かもしれない。こうして、１つのシステムを別のシステムと直接比較することが可能になる。
【０２５７】
前述の記述は日付Ｔを活用している。ある場合には、日付識別子は十分であろう。「日付識別子」によって、ここでは、年代順に一致する分類動作の対象を形成できる任意のパラメータが表される。したがって、日付識別子は、単純に文書セット内のバージョン識別子であってもよい。
【０２５８】
さらに、常に全ての署名を記憶する必要はない。「グレーリスト」と呼ばれるリストに記憶された特定の署名の重要性を最小化することが可能であることがわかっている。恐らく、ある特定の条件の下で記憶されない署名の「ブラックリスト」の作成を考慮することが可能である。
【０２５９】
アプリケーション
ここまでの詳細な記述は、本質的には、ソフトウェア開発プロジェクトの範囲に入る。ここで記述された手段は、自動化できるとともに、特にソフトウェアの法的ステータスを定義することを可能にするツールを提供する。これは、ひとたび個人貢献者と彼等の法的ステータスの数とが増加すると、ますますそのように、そのステータスが長期にわたって発展するにつれ、特に難しい作業であることが知られる。ソフトウェアがコンポーネントに基づく場合および／または共同開発されている場合には、この作業はより一層困難なものになる。
【０２６０】
この作業の複雑性を考慮すると、例えば、以下のように純粋で知的なおおよそであるが不正確な解決法を定義することは標準的な技法である：
各人がどのように貢献したかを、および、権利の対応する割り当てを正確に解決することは可能でなかったという理由だけで、共同作業の勝手な資格と、
些細であると判断され影響力のある作者の個性と対面させられた、不当に看過する貢献。
【０２６１】
これに対し、本発明により、各文書を要素に細分化する際に誰もが発見を望む粒度を備えた厳格かつ精密で信頼性ある技術を使用することが可能となる。これは、ソフトウェア、特に「オープンソース」ライセンス下で配布されたソフトウェアの使用または運用の範囲における法的リスクの評価および管理の点で重要な基本要素を構成する。
【０２６２】
しかしながら、本発明は、デジタル作品の一連の製造工程レベルで、および／または、そのような工程が使用または呼び出すデジタル化ツールとトレーサビリティツールとで、他の用途にも適している。この範囲には、共同作業、および／または再利用可能コンポーネントに基づく共同作業にも見られる。
【０２６３】
より一般的には、本発明は、ひとたび作者の特徴を示す要素に文書を分割することが可能になるならば、および、２つの連続する状態の細分化から生じた要素を比較することが最新または最終バージョンを製造するために最も古い状態に対して行う修正の特徴を示すように様々な基準（原作者または作品の著作権）に従うならば、ある特定の価値をもったものとなる。
【０２６４】
ソフトウェア(コード)に関し、細分化は言語の構文および文法を活用する。これに対し、ビデオ／アニメーションに関し、細分化は記憶形式に依存し、ＳＶＧ（「スケーラブル・ベクター・グラフィックス」の略）のような形式は、コンテンツの点から見て有効ならびに有意義である細分化の定義に特に十分に適している。
【０２６５】
文書間における類似性の検索が、細分化において発見される要素の存在または不存在に基づいて実行される。
【０２６６】
１．従来技術とは対照的に、インプリントのタイミングにより２つのソフトウェアアイテム（製品）が類似性を持つ時に、何れの一方が他方にかつ後者のいずれかのバージョンに全体的または部分的に組み込まれるかを、時間基準の信頼性の関数として決定することが可能になる。したがって、例えば以下を決定することが可能になる：
（１）ライセンス互換性の問題に自身を限定せずに法的に識別された外部貢献の法的ステータス、
（２）一連の製造工程のどの段階からソフトウェアの集積部品が始まるのか、
（３）使用するプロジェクトの識別によりオープンソースコードの「配布率」、即ちその「悪評」。
【０２６７】
２．そのことにより、ソースコードに直接アクセスせずに、外因性コードの検索を実行することが可能になる。
【０２６８】
３．この工程は、新規署名さらには新規従属性（原子かつ集合体）を任意で追加しているが、過去の署名および従属性を削除せずに（しかしながら、その関連性の影響が及ぼされることは留意すべき）、貢献の記録の増分更新（最終公知状態への次の状態の追加）が時間署名だけに及んでいるという意味で、製造ツールの観点から見てロバストである。従属性は、比較ベースの新規の文書セットを考慮することで変更されるかもしれない。このことは、トレーサビリティの問題の観点から見て（即ち、品質コントロール手順の観点から見て）重要な性質である。
【０２６９】
４．コンテンツをファイルタイプ（特に言語毎に）に従って細分化するためのフィルタおよびアルゴリズムを適用することは、例えば、１つのシステムから別のシステムへ、およびまたは１つの開発環境から別の開発環境へ影響されないことによって、データの永久性を確保することを可能にしている。また、次善の策略に耐える切断フィルタまたは切断関数（例えば、機能性を変えない変数名への変更に、または、それを変えないブロック置換に影響されないフィルタ）を定義するが可能になる。
【０２７０】
５．ソフトウェアのアイテムの法的ステータスを定義するために、「コンテンツ作成ツール」間のリンク、即ち時限付きインプリントの生成と従属性の検索との間のリンクによって、動作基準のような第三者要素を含めて後者（作者とそのステータスとのリスト）を作り上げる全ての要素を考慮することが可能になる。
【０２７１】
６．また、外因性コードを汚染する集積化への影響を測定すること、または、責任を識別すること（誰がいつその外因性コードを組み込んだのか）が必要になる時に、ライセンス互換性問題が生じた場合（例えば、前または後続のバージョンがより寛容なライセンスを被っている場合）に、回避方法を定義することが可能になる。
【０２７２】
７．また、そのことにより、「コンテンツ」の観点から、特定の貢献者のアクティビティを特徴付けることが可能になる。例えば、生成された原子インプリントの数により、生成ツール（即ち、更新回数または変更ファイル数）の意味において、新規の測定基準を定義したり、または、アクティビティに関しての測定基準を計量したりすることが可能になる。任意に、（例えば、単に生成したライン数よりもっと関連性があってロバスト（確固）である方法で共同所有部分を提案するために）インプリントの関連性を考慮することも可能である。
【０２７３】
前述は特にソフトウェアに関連するが、他のタイプの作品にも、より一般的には、タイミングの記録と結び付く細かい分析を実行することが望まれる他のタイプのコンピュータ文書に適用できる。
【０２７４】
より一般的には、ここでは、文書のコンピュータ管理の工程は提案され、その工程は次のステップの組み合わせを備えている：
ａ）第１の時間基準（ＴＰｉｊｌ）を有する第１（ｊ＝１）の文書コンテンツ（Ｏｉｊｌ）を考慮するステップと、
ｂ）選択した規則に従って、この第１の文書コンテンツを要素（Ｃｉｊｌｋ）に細分化するステップ（２００）と、
ｃ）ステップｂ）で得た各文書要素（Ｃｉｊｌｋ）をそのコンテンツの署名（Ｎｉｊｌｋ）と比較するステップと、
ｄ）第１の文書コンテンツに対して、ステップｂ）で取得した署名のうち少なくともいくつかと、この第１の文書コンテンツの前記第１の時間基準の識別子とを備えたインプリント（Ｅｉｊｌ）を記憶するステップと、
ｅ）毎回（ｊ＝ｊ＋１）、時間基準を有する少なくとも１つの他の文書コンテンツのためにステップａ）〜ｄ）を繰り返すステップと、
ｆ）第１の署名値（Ｎｉｊｌｋ）を作業値（Ｎｉｑ）として考慮するステップと、
ｇ）この作業値を含むインプリント（Ｅｉｊｌ）の時間基準識別子（ＴＰｉｊｌ）にタイムクロック関数（ｄａｔ（））を適用し、統合された時間基準として、前記タイムクロック関数の結果値（Ｖｉｑ）にその作業値（Ｎｉｑ）を関連付けするステップと、
ｈ）毎回、作業値（Ｎｉｑ）として別の署名値（Ｎｉｊｌｋ）を使用してステップｆ）〜ｈ）を繰り返すステップと、
ｉ）各署名値とその統合された時間基準との間の通信を記憶するステップ。
【０２７５】
原則的に、文書コンテンツ（Ｏｉｊｌ）は、所与の文書と、文書状態と、文書バージョンと、いくつかの文書バージョンを含むことができる文書セットとから選択した少なくとも２つのカテゴリに従って識別（または等級付け）され得る。その結果、以下の詳細な記載では、「文書コンテンツ」という表現は、特別な記載がある場合を除き、正確な文書（ｌ）、文書状態（ｊ）、文書バージョン、または文書セット（ｉ）に関していてもよい。
【０２７６】
以下の詳細な記述では、４つのカテゴリが与えられている。原則的に、文書セットのレベルまで、同一の最終状態が保たれる。これは同一と見られるものの発展である。これに対し、２つの異なる文書セットは、少なくともその一部において、２つの異なるものに関する。
【０２７７】
潜在的に独創的な貢献を研究するため顕著に有益な一実施の形態では：
タイムクロック関数（ｄａｔ（））は、署名データム（Ｖｉｑ）として、リスト上の最も古い時間基準（ＴＰｉ、ｊｑｐ、ｌｑｐ）の識別子と、リスト上の最新の時間基準（ＴＰｉ、ｊｑｐ、ｌｑｐ）の識別子とのうちから選択した少なくとも１つを確立するように配列されている。
【０２７８】
少なくとも数個の文書要素を選び出して、例えばその重要性を変更することが有効である場合もある。この目的のために：
ステップｃ）は、各文書要素（Ｃｉｊｌｋ）が、この文書要素に関する要素属性（ＡＥｉｊｌｋ）にさらに関連付けられるという事実を備え、
ステップｄ）において、インプリント（Ｅｉｊｌ）は、要素属性（ＡＥｉｊｌｋ）の少なくともいくつかの識別子も備え、
ステップｇ）において、タイムクロック関数（ｄａｔ（））は、特に条件を確認する場合に、時間選択に対して要素属性識別子（ＡＥｉｊｌｋ）を考慮するように配列されている。
【０２７９】
互いに組み合わせることができる特定の実施の形態では：
ステップｄ）において、インプリント（Ｅｉｊｌ）は要素の署名を備え、要素属性（ＡＥｉｊｌｋ）は特定の値よりも大きく、
ステップｃ）において、要素属性は、文書要素のコンテンツに関する統計データに依存する。
【０２８０】
同じように、文書自体のうち少なくとも数個を取り出すことが有効である場合もある。この目的のために：
ステップａ）において、文書コンテンツ（Ｏｉｊｌ）は文書属性（ＡＯｉｊｌ）をも有し、
ステップｄ）において、インプリント（Ｅｉｊｌ）は第１の文書コンテンツの前記文書属性の識別子をも備え、
ステップｇ）は、作業値を含んだインプリント（Ｅｉｊｌ）の文書属性識別子（ＡＯｉｊｌ）に認証関数（Ａｕｔ（））を適用し、統合された文書属性データムとして、前記認証関数の結果値（Ｗｉｑ）にその作業値（Ｎｉｑ）を関連付けることをさらに備え、
ステップｉ）は、各署名値とその統合された文書属性データムとの間の通信を記憶するということもまた備える。
【０２８１】
前述した特定の実施の形態では：
ステップｇ）において、認証関数は、作業値を含むインプリント（Ｅｉｊｌ）の時間基準識別子にも適用される。
【０２８２】
組み合わせ可能であるとともにより一般的に適用可能である他の特定の実施の形態によれば：
文書コンテンツ属性（ＡＯｉｊｌ）は、前記文書コンテンツ（Ｏｉｊｌ）への貢献者の識別子を備え、
（例えばステップｄ）において）予想されることは、少なくとも１つの公知の文書コンテンツ構造（Ｏｉｊｌ）が認識されるべきであること、および、構造が認識された文書の存在下で、その文書が、インプリント（Ｅｉｊｌ）の確立に伴われるその構造の特徴を示すデータム（７０２）と関連付けられるべきことであり、
（例えばステップａ）において）予想されることは、クリーンアップ済みの文書コンテンツ（Ｏ′ｉｊｌ）が、文書コンテンツ（Ｏｉｊｌ）に基づいて、文書コンテンツ（Ｏｉｊｌ）の構造の特徴を示す前記データムに依存する所定の規則の第１のセットに従って確立されるべきであるのに対し、一連の動作ｂ）〜ｄ）が、このようなクリーンアップ済みの文書要素（Ｃ′ｉｊｌｋ）に基づいて実行されることであり、
（例えばステップｂ）において）予想されることは、クリーンアップ済みの文書要素（Ｃ′ｉｊｌｋ）が、文書（Ｏｉｊｌ）の構造の特徴を示すデータムに特に依存する所定の規則の第２のセットに従って、文書要素（Ｃｉｊｌｋ）から確立されるべきであるのに対し、一連の動作ｂ）〜ｄ）が、こうして取得したクリーンアップ済みの文書要素（Ｃ′ｉｊｌｋ）に基づいて実行されることである。
【０２８３】
この方法では、文書コンテンツの数に対応する多数のインプリントを取得することが可能になる。
【０２８４】
これらのインプリントを寄せ集めるために、以下のとおりに工程が完成されることもある：
所与の署名値（Ｎｉｑ）に対し、時間基準識別子（ＴＰｉ、ｊｑｐ、ｌｑｐ）のリストが、その署名値（Ｎｉｑ）を含むインプリント（Ｅｉ、ｊｑｐ、ｌｑｐ）用に決定され、
統合された時間基準（Ｖｉｑ）が署名値（Ｎｉｑ）毎に確立され、リスト上で最も古い時間基準（Ｔｐｉ、ｊｑｐ、ｌｑｐ）の識別子を検索する（または、リスト上で最新の時間基準（Ｔｐｉ、ｊｑｐ、ｌｐｑ）を検索するように別の時間基準を適用する）。
【０２８５】
したがって、所与の署名に対して、その初期の時間基準を統合済み時間基準（Ｖｉｑ）で補う（または交換する）ことが可能になる。
【０２８６】
その部分に対して、各文書コンテンツは時間基準識別子（ＴＰｉｊｌ）のリストを設けられており、このリストは文書コンテンツ（Ｏｉｊｌ）の全ての時間基準（ＴＰｉｊｌ）を含んだグローバルリストと比較され得る。１つの文書コンテンツに対して、１つ以上の時間期間がここから取られている。このような時間期間は、時間基準（ＴＰｉｊｌ）のセットに関して連続した時間基準を備えている。それは、所与の署名を有する文書要素が文書コンテンツ内に継続的に存在している期間を表している。
【０２８７】
時間基準は、多様な方法で、恐らくは入力によって定義されるかもしれない。
【０２８８】
文書コンテンツのバージョンを管理するツールを使用し、このバージョン管理ツールからメモリに、文書コンテンツ用の時間基準（ＴＰｉｊｌ）を記憶することが好ましい。
【０２８９】
同様に、貢献者識別子は多様な方法で、恐らくは入力によって定義されるかもしれない。やはりここでも、バージョン管理ツールを使用して、このバージョン管理ツールからメモリに、文書コンテンツ（Ｏｉｊｌ）毎に少なくとも１つの貢献者識別子を記憶することが好ましい。
【０２９０】
当然ながら、バージョン管理ツールは、単一の文書として地球規模で閲覧されるもののために、その開発または寿命の様々な局面において、多様なコンテンツを有する多様なバージョンを表示することもある。バージョン管理ツールはさらにサブバージョンまたは「状態」を表示してもよい。バージョン管理ツールは、複数の文書コンテンツ（Ｏｉｊｌ）から開始し、互いに異なる文書コンテンツ（Ｏｉｊｌ）のサブセットを確立してもよい。その場合には、前記文書コンテンツ（Ｏｉｊｌ）のサブセットに基づいて、動作ａ）〜ｃ）を１回だけ適用すれば十分である。次に、動作ｄ）の前に全ての有益な署名が計算される。
【０２９１】
理解されていることは、この工程が各署名値とその時間基準との間の通信の記憶を考察することである。また、署名値および時間基準が始まった文書コンテンツ（Ｏｉｊｌ）のセットへのリンク例えば識別子を記憶することは有効かもしれない。したがって、所与の１つの時間署名に対し、この署名を含んだ文書コンテンツのセットが存在する。
【０２９２】
文書コンテンツを寄せ集めることは共通部分を明らかにするかもしれない。原則的に、これらの文書コンテンツは同一のソースを有し、このソースは従属性を調べることで検索され得る。これを行うために：
α）第１の識別子（１）と第２の識別子（２）をそれぞれ有する第１のセットのインプリント（Ｅ′１）と第２のセットのインプリント（Ｅ′２）が比較され；第１のセットのインプリント（Ｅ′１）は、第１の識別子（１）に対応する署名値（Ｎｉｑ）および統合済み時間基準（Ｖｉｑ）を備え；また、第２のセットのインプリント（Ｅ′２）は、前記第２の識別子（２）に対応する署名値（Ｎ２ｑ′）およびその統合済み時間基準（Ｖ２ｑ′）を備え、
β）成功した比較のセットは、従属性のサブセット（Ｅ″１２）を提供し；それらに共通する署名値（Ｎ１ｑ：Ｎ２ｑ′）毎に、このサブセットは、前記第１および第２のセットのインプリント用に、対応する統合済み時間基準（Ｖ１ｑ；Ｖ２ｑ′）を含み、
γ）各従属性の方向または方位は定義（または事前定義）され；最も普通の方法は、最も早い時間で起源または「ソース」を配置し、その後の時間に宛先または「ターゲット」（ＰＤｍ）を配置することである。一般に、これは、統合済み時間基準（Ｖ１ｑ、Ｖ２ｑ′）に基づいて適用された所定の規則のセットを意味する。インプリントが共通の署名値（Ｎ１ｑ）を有する第１の識別子（１）と第２の識別子（２）を見ると、この方位付け動作によって第１および第２の識別子（１；２）の一方を起源または「ソース」識別子（ＰＯｍ）として、他方の識別子（２；１）を宛先または「ターゲット」識別子（ＰＤｍ）として適格にすることが可能になる。
【０２９３】
文書コンテンツは、分解（細分化）のために、文脈と、選択した粒度（精度）とに依存して、少数の要素または非常に多数の要素に細分化されてもよい。微細の粒度、つまり多数の（文書）要素を使って、従属性（方位付けの有無）のサブセット（Ｅ″１２）はまた非常に多数の要素からなる。こうして、「集合体」と呼ばれ得る同一の状況でその要素を検索することが有益となる。サブセット（Ｅ′１２）は従属性の方位に従って分割されてもよいし、その後に、以下の分割規準のうち少なくとも１つの反復（遂次）適用に基づいて、従属性集合体（Ｄｅ１２ｕ；Ｄｅ２１ｕ）がそれぞれ作成されるかもしれない：
まだグループ化されていない最も古い（１３０４）共通署名（Ｎｍ）を取り、それを、この最も古い（１３０６）共通署名（Ｎｍ）よりも早い「ソース」側の時間基準から生じた他の共通署名（Ｎｍ）と共にグループ化し、
所与のグループから、まだグループ化されていない共通の署名のうち最も古い署名に「ターゲット」時間基準が続く共通の署名を取り出し（１３１０）、
反復は、ループ基準の所与の最後が確認されるまで実行される。
【０２９４】
また、Ｎセットのインプリント（Ｎ個の文書コンテンツ）に関して、マルチ文書比較が実行され得る。この場合には：
Ｎ個の文書（またはこれらのいくつか）に関して、可能な１〜１個の比較が全て実行される。合計Ｎ（Ｎ−１）個の可能な比較が存在する。これにより、複数の従属性サブセットが提供され、結合時にそのサブセットが１つの従属性セットを作り出す：
従属性が前述したように方位付けられ；
これらの従属性サブセット内（または従属性セット内）の署名毎に、当該署名用の「ターゲット」時間基準が、当該署名に対して、Ｎセットのインプリントの中で最も古い状態に後続する従属性が除去される。
【０２９５】
この比較は、高次で、例えば、先に定義されたＮ個の文書セット間で実行されてもよい。
【０２９６】
権利の管理のような応用では、この工程は次のステップを含んでもよい：
インプリントおよび任意の従属性から検証された日付入り貢献者リストを確立する。
【０２９７】
また、本発明は、実行可能なプログラム、即ち、既述のコンピュータ装置を活発にでき、および／または、対応する工程を実現できる作成済みのプログラムを包含してもよい。この種の実行可能なプログラムは、任意のコンピュータ読み出し可能な「媒体」（サポート）において利用可能とされてもよい。「コンピュータ読み出し可能な媒体」という用語は、磁気的、光学的、および／または電子的であるデータを記憶するためのサポートと、アナログ信号またはデジタル信号のような伝送用の担体または伝達手段とを包括している。
【０２９８】
本発明は、前述の実施の形態に限定されるものではなく、当業者によって考案されるかもしれない全ての変形を含んでいる。
【図１】
2010507852.tif 000003
【図２】
2010507852.tif 000004
【図３】
2010507852.tif 000005
【図４】
2010507852.tif 000006
【図５】
2010507852.tif 000007
【図６】
2010507852.tif 000008
【図７】
2010507852.tif 000009
【図８】
2010507852.tif 000010
【図９】
2010507852.tif 000011
【図１０】
2010507852.tif 000012
【図１１】
2010507852.tif 000013
【図１２】
2010507852.tif 000014
【図１３】
2010507852.tif 000015
【図１４】
2010507852.tif 000016
【図１５】
2010507852.tif 000017
【国際調査報告】
2010507852.tif 000018
2010507852.tif 000019
2010507852.tif 000020
2010507852.tif 000021
2010507852.tif 000022
2010507852.tif 000023