JP5064510B2 - デジタル文書を管理するコンピュータベースツール - Google Patents

デジタル文書を管理するコンピュータベースツール Download PDF

Info

Publication number
JP5064510B2
JP5064510B2 JP2009533901A JP2009533901A JP5064510B2 JP 5064510 B2 JP5064510 B2 JP 5064510B2 JP 2009533901 A JP2009533901 A JP 2009533901A JP 2009533901 A JP2009533901 A JP 2009533901A JP 5064510 B2 JP5064510 B2 JP 5064510B2
Authority
JP
Japan
Prior art keywords
document
signature
imprint
function
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009533901A
Other languages
English (en)
Other versions
JP2010507852A (ja
Inventor
ルソー・ギョーム
ビエ・マキシム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institut National de Recherche en Informatique et en Automatique INRIA
Original Assignee
Institut National de Recherche en Informatique et en Automatique INRIA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=38255266&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP5064510(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Institut National de Recherche en Informatique et en Automatique INRIA filed Critical Institut National de Recherche en Informatique et en Automatique INRIA
Publication of JP2010507852A publication Critical patent/JP2010507852A/ja
Application granted granted Critical
Publication of JP5064510B2 publication Critical patent/JP5064510B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2151Time stamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Description

本発明はコンピュータ文書の処理に関する。
コンピュータ文書は基本的にあらゆる種類のファイルであり、誰もがそのコンテンツには直接的または間接的にアクセスできるようになっている。ファイルがテキストタイプのものである場合には、アクセス可能性は相当に直接的なものとなる。当該ファイルが音楽ファイルやビデオファイルである場合には、アクセス可能性はあまり直接的ではない。これ以外の例が後に考察されるだろう。
各ファイルの正確かつ論理的に厳密な日付記入を許容するように、長い間、ファイルシステムが編成されている。同様に、様々な方法で、異なる属性を1つのコンピュータファイルに関連付けることは公知である。基本的に、これらの属性、例えば「read only(読み出し専用)」、「archive(アーカイブ)」、「system(システム)」、または「hidden(隠し)」という属性は、ファイル自身のコンピュータ特性にリンクされている。ファイルシステムにリンクされた属性と一緒に、他の属性は1つのファイルに例えばそのヘッダ内に関連付けられることがある。コンピュータシステムによって文書を比較することも可能である。ファイルシステムの属性のみを使用して「最小の」比較を実行することができる。これは全ての種類のファイルに当てはまるが、決して完全ではない。例えば、それは、異なる日付記入システムを持った同一のファイルを異なるものと見なしてしまう。高次に展開される比較は、ファイルのコンテンツに関係される。このように、比較の詳細が異なるのは、例えばそれが「テキスト」タイプのファイルであるか否かに依存して、または、比較することが非常に困難な画像ファイル等のような高次に展開された特質を持つファイルとバイナリファイルを、2つのファイル間で、対比することによってである。
出願人は、現在のところ、比較が順序だてて自動的に実行されるのを許容し、それと同時に、その比較の要素が正確に日付記入される技術が存在しないことに気付いている。このタイプの技術の必要性は、著作権の目的での作品、さらに詳細にはソフトウェアタイプの動作の法的ステータス(地位)を決定する分野のような様々な分野において影響を受け得る。
本発明は、この状況を改善することを目指している。
本発明は、時間基準を有する文書のコンテンツを記憶するメモリを備えた文書管理用のコンピュータベース装置に関し、当該装置は、所与の規則に従って文書コンテンツを要素に細分化できる抽出装置と、そのコンテンツの署名を戻すために文書要素を処理できる署名生成器と、文書コンテンツに対して、当該文書コンテンツ用の時間基準と、その文書コンテンツを要素に変換するために前記抽出装置を呼び出すことにより取得された署名の少なくともいくつかとを備えたインプリントを確立し、それから、こうして取得された前記要素に対して前記署名生成器を確立できるインプリント生成器と、時間基準識別子のリストから所定の時間選択の関数の結果を計算できるタイムクロックモジュールと、スーパーバイザーとを備え、前記スーパーバイザーは、少なくとも2つの文書コンテンツ上で前記インプリント生成器を動作させ、複数の署名を有する2つのインプリントを同時に生成するように配列され、署名値毎に、前記タイムクロックモジュールを、毎回同じ署名値を含む前記インプリントの少なくともいくつかの時間基準識別子のリストと共に繰り返し呼び出し、これにより、署名値毎に統合済み時間基準を提供するように配列され、各署名値とその統合済み時間基準との間の通信を記憶するように配列されている。
本発明のさらなる特徴および利点は、以下の詳細な説明と図面との検討から明らかになる。
本発明によるツールの実施の形態を図解する機能図を示す。 本発明によるツールの文書署名生成関数を図解するフローグラフを示す。 図1の作業ベース内の記憶装置を図解するテーブルを示す。 本発明によるツールの状態署名生成関数を図解するフローグラフを示す。 本発明によるツールの文書セット用のインプリント生成関数を図解するフローグラフである。 図1における作業ベースの記憶装置の別成分を図解するテーブルを示す。 本発明によるツールの文書署名生成関数を特定の実施の形態において図解するフローグラフを示す。 インプリント日付記入関数を特定の実施の形態において図解するフローグラフを示す。 インプリント生成関数を特定の実施の形態において図解するフローグラフを示す。 図1の生成データベースの構造を特定の実施の形態において図解する略図を示す。 図1の生成データベース内の記憶装置を特定の実施の形態において図解するテーブルを示す。 図1の比較モジュール用のインプリント比較関数を第1の実施の形態において図解するフローグラフを示す。 図1における比較モジュール用の集合関数の第1の例を図解するフローグラフを示す。 図1における比較モジュール用の集合関数の第2の例を図解するフローグラフを示す。 図1における比較モジュール用のインプリント比較関数を第2の実施の形態において図解するフローグラフを示す。
添付の図面は、定義を完全にするのに役立つだけでなく、ある場合にはその定義の一助となるものである。
既に見たように、ここでは「コンピュータ文書」という表現は相当に幅広い意味で使用されている。コンピュータ文書は、基本的には、あらゆる種類のファイルであってもよいが、本発明のある実施の形態では純粋なテキストタイプないし大部分はテキストタイプのファイル、または、テキスト含意を有するファイルが予想されている。
具体的には、1つの文書は、多くの場合、単一の物理コンピュータファイルの形式を取っている。しかしながら、「コンピュータ文書」という表現は、多数の文書が同一の物理ファイル内に含まれている場合、または反対に、所定の文書が多数の物理コンピュータファイルから作成されている場合にも及んでいる。「論理ファイル」という用語は、文書と、その文書の全体またはその一部分を含んだ物理ファイルとの間の関係から離れて使用されることが多い。
文書のコンテンツを「played(再生)」してもよく、例えば、テキストまたはウェブページを表示し、音楽を聴き、ビデオを視聴し、または、プログラムを実行してもよい。この場合、原則的には文書は変更されない。
また、文書のコンテンツは、編集すなわち作成/修正を行う人にとって利用し易いかもしれない。どんなに編成が破壊されていても、編集は同一文書の多様なバーションの存在によって示される。
基本的に、ここでは、「文書セット」という用語を使って同一文書の多数のバージョンを言及している。しかしながら、より広い見方から、文書セットは、より大きなプロジェクトの範囲において幾つかの文書バージョンの多数セットからなる。
表記法の定義および取決め
用語「Pi」はデジタル文書セットを示す。例えば、セットPiはソフトウェアプロジェクトであり、このソフトウェアプロジェクトは、「sources(ソース)」として知られる(即ち、直接実行できないが、一連の実行可能な命令にコンパイルされるように意図されたコンピュータコードを含んだ)タイプのコンピュータファイルセットと、ソフトウェア用の記述、文書化、および/または全ての準備文書を含むテキストファイルのような関連デジタル文書とを備えていてもよい。また、文書セットPiは、データベースを使用して編成されたファイル、XML(「eXtensible Markup Language」(拡張マークアップ言語)を表す)タイプまたはSVG(「Scale Vector Graphics」(スケーラブル・ベクトル・グラフィックス)を表す)タイプのファイルから作成されることができる。
セットPiの状態jは、デジタル文書が所定の瞬間で例えば日付Tijである状態のとき、セットPi内の全てのデジタル文書であると定義されている。セットPiの状態j2がこのセットの状態j1と異なってもよいのは、例えば、追加のデジタル文書の存在、あるデジタル文書の欠如、および/または、コンテンツの異なるデジタル文書の存在によってであることが理解される。
セットPiの状態jはSijと示される。
ある場合には、特に、セットPiがソフトウェアプロジェクトを含むときに、状態Sijは文書セットPiの1つのバージョンであると見られるかもしれない。これは、配布または内部作業バージョンのために意図されたバージョンであってもよく、例えば、ソフトウェアプロジェクトの状態Sijが、特にソフトウェアの関数状態を構成していない場合には製品段階に入らないかもしれない。
セットPiは状態Sijであってもよく、ここにjは1〜整数Jiである。形式的には
Pi={Sij|jは{1、・・・、Ji}に属する}
である。
各状態Sijは、特定の状態において日付TijでセットPiを構成する全てのデジタル文書から作成されている。日付Tijでの文書の状態は、別の日付でその状態と恐らく異なっているかもしれない。
文書セットPiの状態jでの特定の文書lはOijlと示される。
言い換えれば、セットPiの汎用状態Sijでの文書Oijlの特定の状態は、文書セットPiの別の汎用状態Oij′において、その状態Oij′l′と異なってもよい。
状態Sijは全ての文書Oijlから作成され、ここにlは1〜整数Lijである。その形式的な関係は
Sij={Oijl|lは{1、・・・、Lij}に属する}
である。
各状態Sijは、少なくとも1つの識別された寄与因子Aijを有していてもよい。寄与因子によって、状態Sijを作成した、またはこの状態の作成に参加した人が表される。
本明細書の記述を明瞭にするために、大文字に関連したインデックスは時々カンマ(「,」)によって別々に示される。しかしながら、この表示は曖昧な尤度(可能性)が存在する場合にのみ使用され、その表示をより読み易くしている。例えば、文書セットiの状態jはSijと印を付けられるのに対し、文書1(「1」)の状態12(「12」)は好ましくはS1、12と印を付されるだろう。
本発明による管理ツール
図1を参照すると、電子文書100を管理するツールは、インプリント生成モジュールSignM110を備え、このSignM110の配列は、文書セットPiにおける文書のコンテンツの特徴を示すデジタル署名のセットを有するデジタルインプリントEiを当該文書セットPiに関連付けできるようになっている。
モジュールSignM110は、作業データベースWDB120と対話できるように配列されている。ベースWDB120は、モジュールSignM110の作業データを少なくとも一時的に記憶することができる。理解されることは、ベースWDB120が、永久メモリサポート上のデータベースの形態(例えばハードディスクタイプのもの)、またはアドレス指定可能な一時メモリの形態(例えばRAMタイプのもの)を取るかもしれない編成データ記憶スペースを備えることである。
さらに、ツール100は、異なる文書セットPiに関連したデータを保守できる文書セット用のデータベースPDB130を備えている。特に、ベースPDB130は、文書セットPiのインプリントEiを保守できる。ベースPDB130は、永久メモリサポート上に編成されたデータベースの形態、例えばハードディスクタイプを取るかもしれない。
モジュールSignM110は、ベースPDB130と対話できるように、特に、モジュールSignM110により生成されたインプリントEiを蓄えるために配列されている。
さらに、ツール100は、異なる文書セットPiに共通な署名を識別できるように配列された文書セット比較用モジュールComM140を備えている。必要に応じて、モジュールComM140は、これら文書セット間の従属関係を決定できる。
モジュールComM140は、ベースPDB130と対話して、比較されるべき文書セットPiから生成されたインプリントEiと、該当する場合にはこのインプリントに関連されるデータとをベースPDBから抽出することができるようしている。
最後に、ツール100は、文書への権利を決定するのに有用なデータを確立するために、ベースPDB130およびモジュールComM140と対話できるように配列された権利管理モジュールRightsM150を備えている。
インプリント生成モジュール
モジュールSignM110は、文書Oijlのコンテンツのデジタル文書インプリントEijlの特徴を確立できる文書インプリント生成関数signO()を備えている。デジタル文書インプリントEijlは、文書Oijlのコンテンツに従って生成されたデジタル署名セットを備えている。
関数signO()は、図2および図3を参照して一般項で既述されている。
関数signO()は、選択した規則に従って文書Oijlを文書要素Cijlkに分割できるように配列されている(ステップ200)。さらに、関数signO()は、各要素Cijlk毎に、この要素のコンテンツのデジタル署名Nijlkの値の特徴を確立するように配列されている(ステップ202)。これは、署名関数sign()を呼び出すことで行われてもよい。また、関数signO()は、要素Cijlkの署名Nijlkの特徴とその要素への参照とを関連付けて要素インプリントEijlkを形成できるように配列されている(ステップ204)。要素Cijlkへの参照は、指数i、j、l、kの値を含んでもよい。要素Cijlkへの参照と署名Nijlkの値との相関関係を維持する要素インプリントテーブルSignEtab[]内には、要素インプリントEijlkのそれぞれが記憶されていることもある。
任意に、要素属性AEijlkを各要素Cijlkと関連付けることができる。要素属性AEijlkはテーブルSignETab[]内に記憶されることもある。例えば要素が関数でありそのオブジェクトがソースファイルである場合には、要素属性AEijlkは多数のコード行数の値を含んでもよい。また、要素属性AEijlkは、要素Cijlkのコンテンツの妥当性の値を含むこともできる。1つ以上の付加的な要素属性をテーブルSignETab[]内に記憶してもよい。
図3のテーブル300は、要素C1、1、2、2用のテーブルSignETab[]の実施の形態を示す。
文書OijlのコンテンツのインプリントEijlの特徴は、要素インプリントEijlkのセットを備えており、ここにkは1〜自然な整数Kij1の間で変化する自然な整数である(ステップ206)。適切な場合には、インプリントEijlは、要素インプリントEijlkの要素Cijlkに関連した要素属性AEijlkのセットをさらに備えている。
ベースWDB120は、文書Oijlの時間基準Tpijlに関連して、少なくとも一時的にインプリントEijlを記憶する。例えば、時間基準Tpijlは、状態Sijに関連した日付Tijを備えてもよい。時間基準Tpijlは、文書Oijlに関連した日付Tijlを、例えば文書が最後に修正された日付を同様に備えてもよい。
ベースWDB120は、例えば文書インプリントテーブルSignOTab[]内に、以下の相関関係を保持することができる:
文書識別子Oijl、例えば、指数i、j、lの値からなる識別子、
文書Oijlにおける要素インプリントEijlkのそれぞれへの参照、例えば、指数i、j、l、kからなる参照、
文書Oijlの時間基準TPijlの値、例えば日付Tij。
任意に、文書属性AOijlを各文書Oijlに関連付けすることができる。文書属性AOijlはテーブルSignOTab[]内に記憶されてもよい。文書属性AOijlは、コンピュータファイルのサイズの値、貢献者Aijの証明書、または、時間基準TPijlにおける秘匿性のレベルを限定する注釈を備えてもよい。1つ以上の付加的な文書属性をテーブルSignOTab[]内に記憶して、例えば貢献者の証明書Aijと時間基準TPijl内の秘匿指数との両方に文書Oijlを関連付けするようにしてもよい。
ここで記述されたテーブルの構造は、主に本発明が理解され得るように意図されている。したがって、テーブルSignOTab[]の他の構造は実施時に考察されるかもしれない。例えば、テーブルSignOTab[]はインプリント識別子Eijlを含んでもよく、この識別子は文書Oijlにリンクされてもよい。また、テーブルSignOTab[]は、当該文書の要素インプリントEijlk、または、これらのインプリントへの参照の代わりにあるいはこれに追加して全ての要素インプリントEijlkのそれぞれの署名Nijlkの値を含んでもよい。例えば、本発明の一実施の形態は、文書要素Cijlk(例えば指数i、j、l、kの値)の識別子と、この要素の署名Nijlkの値と、文書の時間基準Tpijlの値と、適切な場合には文書Oijlの文書属性AOijlの値と、要素の要素属性AEijlkの値とを、ある特定の文書Oijlに対して、各行が含んだテーブルを作成することから構成されてもよく、このテーブルは文書Oijlの全ての要素Cijlkを網羅するように占められている。
図3では、列COL301〜COL308と行ROW310〜ROW313からなるテーブル304は、そのような実施の形態をオブジェクトO1、1、L11用に例示している。このテーブル304では、貢献者識別子A11が文書属性AO1、1、L11(COL308)として記憶され、日付T11が時間基準TP1、1、L11(COL307)として記憶されている。
また、モジュールSignM110は、文書セットPiの状態Sijにおける状態インプリントEijの特徴を確立できるように配列された状態インプリント生成関数SignS()を備えている。
関数signS()を図4によって記述する。
状態Sijは、ある瞬間Tijで文書Oijlのセットを備え、ここにlは、1〜自然な整数Lijの間で変化する自然な整数である(ステップ400)。関数signS()は、文書Oijl毎に要素インプリントEijlkのセットを備えた文書インプリントEijlを取得するために、状態Sijの文書Oijl毎に関数sighnO()を連続的に呼び出せるように配列されている(ステップ402)。
状態インプリントEijは全ての要素インプリントEijlkを備え、ここにkは1〜Kij1の間で変化しlは1〜Lijの間で変化する(ステップ404)。
ベースWDB120はインプリントEijを少なくとも一時的に記憶する。
ベースWDB120は、相関関係において、例えば状態インプリントテーブルSignStab[]において以下を保持していることもある:
状態インプリント識別子Eij、例えば指数i、jの値からなる識別子、および、
例えば指数i、j、1からなる状態Sijの文書インプリントEijlのそれぞれへの参照。
既に説明したように、実施時には、テーブルSignSTab[]の構造は異なっているかもしれない。例えば、本発明の一実施の形態は、全ての文書インプリントEijlを収集したテーブルを作成する(並べる)ことからなり、例えば前述した実用的な実施の形態から構成されてもよい。図3では、列COL301〜COL308と行ROW314〜ROW326とから構成されたテーブル306は、この実施の形態を状態S1、2用に例示している。
任意に、状態属性Asijを各状態Sijと関連付けてもよい。この属性ASijはテーブルSignSTab[]に記憶されることもある。例えば、状態属性ASijは、日付Tijの信頼性を修飾(適格)とする指数あるいは標識(マーク)、および/または、貢献者Aijの証明書の信頼性を適格とする指数(例えば接続名または「ログイン」を使用して識別のための最小指数値と、第三者により証明された認証手順によって識別のための最大指数)とを備え得る。
また、モジュールSignM110は、文書セットPiの文書セットインプリントEiの特徴を確立できるように配列された文書セット用のインプリント生成関数signP()を備えている。
関数signP()を図5により記述する。
文書セットPiは多数の状態Sijを備え、ここにjは1〜自然な整数Jiの間で変化する自然な整数である(ステップ500)。関数singP()は、状態Sij毎に多数の要素インプリントEijlkを備えた状態インプリントEijを取得するために、文書セットPiの状態Sij毎に関数signS()を連続的に呼び出せるように配列されており、ここにkは1〜Kij1の間で変化しlは1〜Lijの間で変化する(ステップ502)。
文書セットインプリントEiは全ての要素インプリントEijlkを備えており、ここにkは1〜Kij1の間で変化しlは1〜Lijの間で変化しJは1〜Jiの間で変化する(ステップ504)。
ベースWDB120はインプリントEiを少なくとも一時的に記憶する。
ベースW120は、相関関係において、例えば文書セットインプリントテーブルSignPTab[]内において以下を保持してもよい:
文書セットインプリントEiの識別子、例えば指数iの値からなる識別子、および、
例えば指数i、jからなる状態インプリントEijのそれぞれへの参照。
既に説明したように、実施時にはテーブルSignPTab[]の構造は異なっていてもよい。本発明の一実施の形態は、文書セットPiの全ての状態インプリントEijを組み合わせたテーブルを作成することからなり、例えば前述した実用的な実施の形態から構成されてもよい。図3では、列COL301〜COL308と行ROW301〜ROW339からなるテーブル308は、そのような実施の形態を文書セットPl用に例示している。このテーブル308では、各行は以下を含んでいる:
指数iの値を記憶する列COL301と、指数jの値を記憶する列COL302と、指数lの値を記憶する列COL303と、指数kの値を記憶する列COL304とからなる文書要素への参照、
列COL305においてこの文書要素の署名の値、
列COL306においてこの要素の属の値、
列COL307においてこの要素が開始された文書の時間基準の値、
列COL308においてこの要素が開始された文書の属性の値。
モジュールSignM110は、文書セットPiの各々異なる署名値Niqに署名データムViqを関連付けその文書セットのインプリメントがベースWDB120内に記憶されるように配列された署名日付関数signTp()を、ベースWDB120内で前記署名が関連付けられた文書Oijlの時間基準TPijlの関数として備えている。
関数signTp()が図6を参照して記述される。
関数signTp()は、ベースWDB120の特定の署名値Niqに対してその署名値を含んだ全ての要素インプリントEijlkと、そのたび毎にベースWDB120内の要素インプリントEijlkに関して文書インプリントEijlの時間基準TPijlとを確立するように配列されている。
さらに、関数signTp()は、その署名値Niqに対して相関関係において、例えば署名テーブルSignTb[]において、
例えば値i、j、l、kを備えた前記特定の署名を含んだ要素インプリメントEijlkの識別子と、
ベースWDB120内の要素インプリントEijlkに関して文書インプリントEijlの時間基準TPijl、例えば日付Tijと、
を保持するように配列され、
関数SignTp()はテーブルSignTb[]を満たすように配列されて、その署名値が見つかったベースWDB120内に記憶された要素インプリントEijlk毎に識別子を含むようにしている。
図6では、テーブル600は、署名値Nia用のテーブルSignTB[]の実施の形態を示す。このテーブル600は、行ROW601〜ROW604で表されるn行を含んでおり、ここにnは署名値Niaを備えた要素インプリントEijlkの数である。4群{i、ja1、la1、ka1}、{i、ja2、la2、ka2}〜{i、jan、lan、kan}は、署名値Niaを含んだ要素インプリントの識別子をそれぞれ表している。これらの4群は、テーブル600の列COL602〜COL605に記憶されている。テーブル600の列COL606は、行ROW601〜ROW604内の日付Ti、ja1〜Ti、janを時間基準として記憶している。
テーブルSignTb[]は、例えばベースWDB120内に少なくとも一時的に記憶されてもよい。
関数signTp()は、ベースWDB120に記憶された文書インプリントEijl内に存在する異なった署名値Niq毎にテーブルSignTb[]を作成するように、繰り返されている。
必要に応じて、署名テーブルSignTb[]は、署名がNiqと同等である要素インプリントNi、jqp、lqp、kqp毎に、その要素の属性値AEi、jqp、lqp、kqpと、その要素を備える文書の属性値AOi、jqp、lqpとをさらに備えてもよい。
加えて、関数signTp()は、ベースWDB120に記憶され特定の署名値Niqに関連するテーブルSignTb[]のそれぞれに、少なくとも1つの署名データムViqを割り当てられるように配列されている。
署名データムViqは、テーブルSignTb[]の時間基準を用いる所定の日付関数dat()を適用することによって得られることがある。言い換えれば、テーブルSignTb[]に関連した署名データムViqは、そのテーブルのインプリント識別子Eijlに関連したタイマー基準TPijlの関数、例えば日付Tijであってもよい。例えば、署名データムViqは、テーブルSignTb[]に含まれる最も古い日付Tijであってもよい。
署名テーブルSignTB[]が文書属性値AOi、jqp、lqpを記憶する場合、関数dat()は、さらにそれらの属性値の関数として署名データムViqを決定するように配列されてもよい。例えば、属性値AOi、jqp、lqpが時間基準TPi、jqp、lqpのための信頼性指数を備える場合、関数dat()は、テーブルSignTb[]の最も古い日付Ti、jqpを決定する一方で、この決定に対してテーブルSignTb[]において閾値未満の文書属性値AOi、jqp、lqpに関連した日付Ti、jqpを除外するように配列されてもよい。
また、関数signTp()は、ベースWDB120に記憶され特定の署名値Niqに関連したテーブルSignTb[]のそれぞれに、文書データムWiqを割り当てるように配列されてもよい。文書データムWiqは、テーブルSignTb[]の文書属性AOi、jqp、lqpを用いる所定の認証関数aut()を適用することによって取得されてもよい。これに加え、関数aut()は、署名データViq、および/または時間基準TPi、jqp、lqpを使用するのが良いかもしれない。例えば、最も古い関連する時間基準TPi、jqp、lqpを有する文書属性AOi、jqp、lqpの値をWiqデータムとして決定するように、関数aut()は配列されてもよい。時間基準TPi、jqp、lqpが日付Ti、jqpを備え文書データムが貢献者識別子Ai、jqpを備える場合には、この種の関数aut()は、特定の署名値Niqに関連した最も古い貢献者の識別子を文書データムWiqとして確立するように配列されることもある。
実際には、一実施の形態は、特定の署名値Niqに対して、図6中のテーブル602のようなテーブルから構成されてもよく、そのテーブルでは各行は、
前記署名値Niqを記憶する1つの列(COL601)と、
コンテンツが署名値Niqを生成した文書要素の指数の値i、jqp、lqp、kqpを記憶する複数の列(COL602〜COL605)と、
前記文書要素が始まった文書の時間基準TPi、jqp、lqp、この場合には日付Ti、jqp(COL606)と、
署名データムの値Viq(COL609)と、
該当する場合には、前記要素AEiqp、jqp、lqp、kqpの属性の値(COL607)と、
前記文書要素AOi、jqp、lqpが始まった文書の属性の値(COL608)と、
文書データムの値Wiq(COL610)と、
を含み;
このテーブルは、署名値Niqを含む全ての要素インプリント、即ちこの場合にはr個のインプリントEi、jq1、lq1、kq1〜Ei、jqr、lqr、kqrを記憶するように満たされている。
任意に、関数signTp()は、署名値Niq毎に、その署名値Niqに関連する要素属性の値AEi、jqp、lqp、kqpの関数として要素データムZiq(図6では不図示)を確立するように配列されてもよい。例えば、要素データムZiqは、要素属性値AEi、jqp、lqp、kqpの最大値を備えてもよい。
また、関数signTp()は、署名テーブルSignTb[]の署名データViqを収集できるように配列されている。例えば、関数signTp()は、時限付き文書セットインプリントTempSignPTb[]のテーブルを構成するように配列されており、そのテーブルは相互関係において:
文書セットPiの識別子、例えば指数iと、
それぞれの異なる署名値Niqと、
前記の署名値Niqに関連した署名データムViqと、
を記憶している。
図6に示す例では、署名値Niq毎に、署名値Niqを含んだ行から署名データムViqと指数iの値とを抽出するように関数signTp()を配列するということになる。図6では、例えば、テーブルTempSignPTb[]は、行ROW601、ROW605、ROW609と列COL601、COL602、COL609との交点によって形成可能である。
したがって、これは文書セットインプリントの特に弱い記憶装置になる。時間基準が日付Tijを備え関数dat()が最も古い日付TijをデータムViqとして決定するように配列されている場合には、このデータムは、文書セットPiにおいて署名値の最初の出現の日付と同等である。したがって、文書セットのインプリントは、署名のセットとその最初の出現の日付とから構成される。以下で説明されるように、他の情報はdat()関数の関数として記憶されてもよい。
必要に応じて、dat()関数は文書データWiqと要素データZiqとを考慮することもできる。
別の実施の形態では、テーブルTempSignPTb[]は、例えば指数i、j、k、lの値を含んだ要素インプリントEijlkのそれぞれへの参照をも保持することができる。これにより、ベースWDB120内では、文書要素への参照と対応する署名データムとの間のリンクを維持することが可能になる。
さらに別の実施の形態では、テーブルTempSignPTb[]は、例えば指数i、j、k、lの値を備える要素インプリントEijlkのそれぞれへの参照と、例えば指数i、j、lを含んだ文書Oijlへの参照とを保持してもよい。したがって、ある特定の文書Oijlに対して、その文書に対応する文書要素Cijlkの署名データViqを確立することが可能になるだろう。データムViqが最も古い日付Tijのために確立されている場合には、文書要素Cijlkが最初に出現した文書Oijlと関係なく、文書セットPi内の文書要素Cijlkの最初の出現の日付を決定することが可能である。したがって、その文書の文書セット内での作成前に生成された文書の要素を識別することが可能である。
テーブルTempSignPTb[]の実用的な実施の形態は、例えば図6のテーブル604のようなテーブルを作成することから構成されてもよく、そのテーブルでは各行は:
署名値Niqを記憶する1つの列(COL601)と、
その署名値Niqが始まった文書要素Ci、jqp、lqp、kqpへの参照、この場合に指数i、j、l、kの値の形態での文書要素Ci、jqp、lqp、kqpへの参照(COL602〜COL605)と、
その文書要素Ci、jqp、lqp、kqpが始まった文書Oi、jqp、lqpの時間基準TPi、jqp、lqp(COL606)、この場合には日付Tiqp、jqpと、
署名データムViqの値(COL609)と、
該当する場合には要素Ci、jqp、lqp、kqpの属性AEi、jqp、lqp、kqpの値(COL607)と、
文書要素Ci、jqp、lqp、kqpが始まった文書Oi、jqp、lqpの属性AOi、jqp、lqpの値(COL608)と、
文書データムWiqの値(COL610)と、
を含み、
前記テーブルは、文書セットPiの全ての署名値Niqを同時にもたらすように満たされている。言い換えれば、ここで記述された実施の形態は、同一のテーブル内において、文書セットPiの署名値Niq毎に作成されたテーブル602と同じタイプの複数のテーブルを組み合わせることから構成されている。
モジュールSignM110、特に関数signTp()は、ベースPDB130と対話を行なって、署名データの編集結果を署名テーブルに記憶できるようにしている。
例えば、ベースPDB130は、これによって、文書セットPi内における署名値の存在期間に関連したデータムを保持してもよい。
ある特定の実施の形態では、データベースのサイズを制限するように、または、次の署名検索を補助するように、文書インプリントEijlは縮小されることもある。例えば、いくつかの要素インプリントへの参照(および要素インプリント自体)を、時間基準、要素属性データ、および/または文書属性データの値の関数として削除してもよい。
文書インプリント生成関数
関数signO()は、図7を参照して、ある特定の実施の形態において詳細に記述される。
文書Oijl、即ち、文書セットPiの状態Sijの特定の文書lが検討されるだろう(ステップ700)。
関数signO()は関数type()を呼び出すように設計されており、その関数type()自体は文書Oijlのコンピュータ性質の特徴を示すデータムを確立できるように配列されている(ステップ702)。
「コンピュータ性質」という用語によって、ここでは、この構造が同一タイプの全ての文書に共通であるという意味で文書Oijlのコンピュータ構造が表される。コンピュータ性質またはタイプは広く普及されてもよいし、または、例えば「テキスト」タイプファイル、「Microsoft Word」タイプファイル(登録商標)、ある特定形式の「画像」タイプファイルのような標準の対象となってもよい。また、このタイプは、文書を生成したソフトウェアに特定されてもよい。
文書タイプがファイルである特定の場合には、文書Oijlのタイプの特徴付けは、例えば文書が「Microsoft Windows」(登録商標)環境で作成されたファイルである時に、ファイル名拡張を認識することで実行されてもよい。
また、特徴付けは、あるタイプのファイルに特徴的なビットのシーケンスをファイル内で認識することによって実行されてもよい。特に、ソースファイル内の特徴的なキーワードを認識することにより、プログラミング言語を識別することが可能になってもよい。したがって、関数タイプ()は、ソースタイプファイルに使用される言語を決定することもできる。
関数signO()は、コンテンツフィルタ関数filterA()を呼び出すように設計されており、このコンテンツフィルタ関数filterA()自体は、文書Oijlとその文書のタイプとから、クリーンアップされたコンテンツを有する文書O′ijlを作成できるように設計されている(ステップ704)。
例えば、関数filterA()は、ソースファイルに挿入された任意のコメント、プログラミング言語の意味と関係のない文字、または、ある特定の動作システムに依存する文字を削除するように配列されてもよい。
関数filterA()は、関数signO()のロバスト性を向上させ、その結果、生成されたインプリントの関連性を向上させるように構成されている。ここでは、ロバスト性により、コンテンツにとって重要でないと思われる修正の追加とは無関係に、同一の文書インプリントを生成する関数signO()の能力が表される。重要でないと見なされるかもしれない修正は例えば次のようである:
例えばテキストタイプの文書の書式のみに関連し、恐らくは自動的に実行されている修正(例えば、連続したスペース文字または空行の追加)、および、
例えば関数名あるいは変数名の変更、または、著作権についての参照の削除あるいは追加のようなコンテンツの書き換え。
なお、コンテンツの書き換えは、例えば、ある特定の公式規則または命名習慣に文書のコンテンツを従わせるようになっている場合には、合法的または好意的となる。しかしながら、同時に、書き換えは、特に著作者を推定しまたはコンテンツの再利用を秘匿する唯一の目的を伴って実行される場合に、悪意または違法となる。
文書Oijlのクリーンアップは文書タイプの1つの関数であることが理解されるだろう。
関数signO()は、文書O′jilにおいて、例えばソースコードタイプの文書における関数や手順のような文書要素Cijlkを隔離することができるコンテンツ抽出関数cut()を呼び出すように配列されている。このように各要素を配置することは、文書タイプOijlの関数である(ステップ706)。
関数cut()は、文書O′ijlから要素Cijlkのセットを確立するように配列されており、ここにkは1〜整数Kijlの間の自然な整数である。例えば、関数cut()は、特定のプログラミング言語のソースである文書O′ijlから、このオブジェクト(対象)に含まれる関数のセットを抽出できるように配列されてもよい。
関数signO()は、要素Cijlkと文書Oijlのタイプとから、クリーンアップされた要素C′ijlkを作成できるように設計されたコンテンツフィルタ関数filterB()を呼び出すように設計されている(ステップ708)。
関数filterA()と似た方法で、関数filterB()は、例えば、識別されたプログラミング言語の意味と無関係なコメントおよび文字を削除するように、および/または、オペレーティングシステムに依存する文字を抑制するように配列されてもよい。関数filterB()は、前述した意味において、モジュールSignM100のロバスト性を向上させるようになっている。
その結果、関数filterB()はクリーンアップされた要素C′ijlkのセットとなり、ここにkは1〜整数Kijlの間の自然な整数である。
さらに、関数signO()は、クリーンアップされた要素C′ijlkから、この文書要素のコンテンツの特徴である署名Nijlkを確立できるように設計された署名生成関数sign()を呼び出すように配列されている(ステップ710)。
署名Nijlkは、特定された長さの一連の文字、例えば一連のASCII文字または16進法文字の形式を取っていてもよい。好ましくは、関数sign()は、「ハッシュ」として公知の署名生成アルゴリズムを備えている。署名Nijlkは、所与の要素C′ijlkのコンテンツにとって特有のものである。どの場合においても、関数sign()は、好ましくは、発生率を極めて低くするように決定され、即ち、要素C′ijlkの別のコンテンツから同じ署名を取得する確率が可能な限り小さくなるように決定される。さらに、関数sign()は非可逆となるように選択され、即ち、実施時にその署名から要素のコンテンツを確立することが不可能であるように配列され、とりわけ、このことにより文書の明確なコンテンツが記録も開示もされないので秘匿性に関して何ら心配せずに署名の長期間記録が可能となる。
なおここでは、より大きい異なるサイズのオブジェクトの比較よりも一定サイズのコンピュータオブジェクトの比較の方が簡単であるため、特定された長さの一連の文字を文書のコンテンツの署名として使用することは、文書の比較を容易にする。さらに、これらの一連の文字は、文書セットの比較を可能にしており、文書セットのコンテンツを開示しないので幅広く分布されてもよい。
署名生成アルゴリズム、即ち「ハッシュ」アルゴリズムは、例えばMD5(「メッセージダイジェスト5」の略)タイプのもの、または、SHA−1(「セキュアハッシュアルゴリズム」の略)のものであってもよい。
関数sign()は、署名Nijlkのセットを取得するように要素C′ijlk毎に呼び出されており、ここにkは1〜Kijlの間で変化する自然の整数である。
好ましくは関数signO()は、スコアリング関数eval()を呼び出すように配列されており、そのスコアリング関数自体は、要素属性AEijlkとしての署名関連性データムBijlkを署名Nijlkに関連付けるように配列されている(ステップ712)。
ここでは、「関連性」によって、文書に対して行われた寄与または修正について文書要素の関与の評価が表される。関数eval()は、以下から選択した1つ以上の基準を考慮するようにされてもよい:
文書要素のサイズ、例えばソースファイル関数の場合には多数のコード行数または文字と、
低い関連性の指数に関係した署名リストであって、恐らく1タイプの文書に特有であるリストにおける署名の存在と、
文書への貢献の観点からその文書および/またはアクティビティへの貢献者の数。
明らかに、このリストは包括的なものではなく、関数eval()は他の基準を考慮してもよい。
クリーンアップされた各要素C′ijklが「アトミック(原子)」であると見なされるかもしれないのは、その当時に性質そのもの(特に、特性および重要性)に関連した状況を失っているので、これ以上細分化する価値がない点である。したがって、その署名Nijlkは、文書の(グローバル)インプリントEijlと対向するように、「アトミックインプリント」として見られ得る。
また、関数signO()は、例えば要素インプリントEijlk内に指数i、j、lを含む文書基準Oijlと各署名Nijlkを関連付けるように配列されてもよい(ステップ714)。
関数signO()により、要素インプリントEijlkのセットを備えたオブジェクトOijlの特徴である文書インプリントEijlを取得することが可能になり、ここにkは1〜Kijlの間で変化する(ステップ716)。
以前に説明されたように、文書インプリントEijlはベースWDB120に記憶されてもよい。
時間基準が状態Sijの日付Tijであってもよいことが理解される。指数j自体によって時間基準が同様に与えられ、ここにjは年代順序である。
ある特定の実施の形態では、文書インプリントEijlは、状態Sijを作成しているまたは文書データムとしてその状態の作成に参加している文書属性AOijlとして、貢献者識別子Aijをも備えている。
分かっていることは、文書要素がそのコンテンツへの重要でない修正の後に明確な署名を生成するのを防止するように関数filterA()とfilterB()が配列されていることである。しかしながら、これらの関数は、重要でない方法でコンテンツが修正されていたある特定の文書のインプリントが、そのような修正を追跡する目的で、元のインプリントから一部異なるように、設計されてもよい。これにより、相互に関連する関数filterA()、関数filterB()、および関数cut()を採用することにより、例えば、署名が変わるべきか否かである要素のコンテンツをカットし、かつ、そのようにするために関数filterB()を適合させるように実行できる。
例えば最も頻繁に、文書の関数内の変数の名称を単純に変更することは、単純なコンテンツの書き換えと見なされる。関数filterA()、関数filterB()、および関数cut()は、書き換えが起こったことを示すために、この関数のコンテンツに関連したある特定の同一の署名と他の別の署名とを含んだ文書インプリントを取得するように設計されてもよい。例えば、書き換えが関数の名称の変更のみに関連している場合には、文書の関数が、この関数の断定的部分に対応する第1の文書要素とその関数の本体またはコンテンツに対応する第2の文書要素とに細分化されるように、かつ、第2の要素の署名を無変更のまま残しつつ第1の要素の署名を変更するように、例えば、関数filterA()、関数filterB()、および関数cut()が配列されてもよい。
ある場合には、関数filterA()、関数filterB()、および関数cut()は、特に文書タイプの関数として同一の文書を保存するように配列されてもよい。
関数signO()はインプリントとの後の比較を許容するためにロバスト性でなければならないことが理解される。2個のインプリントを比較できるように(即ち、共通の署名を検索するために)、使用するモジュールSignM110が何であっても、同じ文書が同じインプリントを必ず生成しなければならない。したがって、関数cut()、関数filterA()、および関数filterB()は、異なるインプリント生成ツールを使用することが望まれる場合には、開示および標準化される主要な目的を持っている。しかしながら、その開示は、特に悪意あるコンテンツの書き換えの場合には、特に書き換えに対して、これらのフィルタのロバスト性を見破るように意図された対策の実施が大事に扱われている。
関数signO()のある特定の実施の形態では、ソースコードが、恐らくはプログラミング言語に依存して、ある特定の公式規則に整合するのを確保するように、検証関数ver()はステップ706より前に呼び出されるかもしれない。例えば、文書Oijlがソースファイルである場合には、検証関数ver()は、その言語の構文と文法との規則に従ってソースコードのアブストラクト表示を確立できる、ソースコードの文法アナライザを備えてもよい。この文法アナライザ自体は、重要でない修正またはコンテンツ書き換えに影響されないかもしれない。例えば、関数ver()は、アブストラクト構文ツリー即ち「AST」を確立するように設計されてもよい。こうすることで、関数signO()は、以前に記述された意味において、もっとロバスト性になる。
署名日付関数
ある特定の実施の形態では、関数dat()は、考慮中の署名Niqの存在期間を署名データムViqとして確立するように設計されている。
この実施の形態では、署名データムViqは、文書セットPiにおける署名値Niqの出現日付TAiq、即ち最初の出現日付と、消滅日付TDiq、即ち最後の出現日付とを備えてもよい。その場合には、テーブルsignTb[]の中で最も古い時間基準、例えば日付Ti、jqを出現日付TAiqとして確立し、かつ、これらの日付の中で最新のものを消滅日付TDiqとして確立するように、関数dat()は配列されてもよい。
代替の実施の形態では、関数dat()は、存在期間のセットを署名データムViqとして確立するように設計されてもよい。関数dat()は、ベースWDB120と対話を行なって、文書セットPiのインプリントEiの中に存在する異なった日付Tijをそれぞれ収集する状態テーブルSTb[]をそのベースから抽出するように配列されてもよい。関数dat()は、テーブルSignTb[]の日付Ti、jqpのそれぞれを、テーブルSTb[]内で組み合わされた日付と比較して、当該署名が関連した、またはおそらく関連しない日付Tijを決定するように、配置されてもよい。
日付Tijの代わりに、関数dat()は、バージョン識別子、例えば指数jの異なる値に作用するように配列されてもよい。
別の実施の形態では、状態Sijは順番に配列され、即ち、指数jに対する指数j′の優越は、日付Tij′が日付Tijより最新のものであることを意味する。
それから、関数dat()は、日付TAiqと日付TDiqを異なる形で確立するように配列され得る。この特定の実施の形態では、図8を用いて関数dat()が記述されている。
関数Dat()は、要素インプリントEijlkのセットからなる状態インプリントEijで特徴付けられた(ステップ800)状態Sijを、前の状態に関連した署名値Niq′のセットで特徴付けられた前の状態Sij′の全てと比較できるように、即ち、4群i、j′、l′、k′の存在に対して配列され、署名値Nij′l′k′はNiq′と同等となるようにする(ステップ802)。状態Sijの署名値Niq毎に、即ち、NijlkがNiqと同等であるように4群i、j、l、kが存在する全ての整数qに対して(ステップ804)、関数dat()は、ベースWDB120内で状態Sij′に関連した署名値Niq′が存在するか否かをチェックする(ステップ806)。
その答えがイエスの場合(ステップ808)、文書セットPiの前の状態j′に署名値Niqが存在したことになる。文書セットPiにおける署名値Niq′の出現日付TAiq′は変更されないままである。文書セットPiにおける署名値Niq′の消滅日付TDiq′は、状態Sijの日付Tijを受け取る。
答えがノーの場合(ステップ810)、署名値Niqは文書セットPiにおいて新しくなる。出現日付TAiqと消滅日付TDiqは両方とも状態Sijの日付Tijの値を推定する。
この実施の形態では、文書セットの時限付きインプリントは、以後の状態Eij、例えば公知の最新の状態のインプリントが追加された場合に、迅速に更新され得る。この特定の実施の形態によって、文書セットの時限付きインプリントは、その連続する状態インプリントの連続的な追加により構成可能となる。ここでは更新することにより、先行の状態には存在しなかった署名値の追加と、この新規な状態の追加により変更された署名値データViqの計算とが表される。
言い換えれば、関数dat()は、文書セットPiの時限付きインプリントを更新するために、インプリントEijがベースWDBに記憶されている状態Sijと、インプリントEij′がベースPDB130に記憶されている前の状態のセットSij′とを比較するように配列されてもよく、ここにj′はj未満の自然な整数である。
インプリント生成モジュールの特定の実施の形態
ある特定の実施の形態では、モジュールSignM110は、例えばCVSタイプのバージョン管理ツールまたはそれと同等のものと対話を行なうように設計されている。
バージョン管理ツールは、文書セットとそれらの異なった状態との記憶を編成できる。特に、バージョン管理ツールは、漸進的かつ固有な方法で文書セットの多様な状態を管理でき、バージョン管理ツールの使用により、前述した状態Sijのスケジューリングを取得することが可能になる。
多数の貢献者が同一の文書セットを同時に修正できる場合には、バージョン管理ツールは、貢献者によって補正された状態を識別することが可能になる。ある特定のバージョン管理ツールは、連続した修正のみを記憶し、および/または、必要に応じて同一文書の全体または一部に対して同時になされた修正間の矛盾の欠如をチェックできる。また、バージョン管理ツールは、元のバージョン(公知である場合)に対するよりも、最新の公知のバージョンに対して必ず更新が実行されることを請け負い得る。実際には、多様なバージョン管理ツールが多様な方法で動作する。ここでは、バージョン管理ツールを使用することで生じる状態Sij間の固有性を用いて、時限付きインプリント生成工程を向上させている。
また、バージョン管理ツールは、更新を実行した貢献者の識別子、および/または、特定の状態から変更された文書のリストを供給する。
例えば、CVSタイプのツールは、文書Oijlの最後の状態と、連続した文書Oimlの異なる前の状態間の差とを記憶することができ、ここにmはj未満の自然な整数である。ここでは、指数lは、状態指数jには関係なく、名称およびファイルパスによって一意的に特徴付けられたファイルに関連している。
また、バージョン管理ツールは、例えば中央サーバ上での更新日を提供する。この日付は、文書セットの状態の時間基準として記憶されている。
状態は、サーバ上に存在するバージョンの更新に対応してもよい。したがって、典型的には、貢献者は状態に関連付けられている。
なお、使用するバージョンツールに依存してまたはその使用に従って、以下を割り当てることが可能である:
文書セット内の1文書が変更されたら直ぐに新規な状態、または
同一貢献の過程で多数の文書を変更する新規な状態。
このことは、特に状態数の増減によって、ツール100の動作を僅かだけ変化させる。
この実施の形態では、モジュールSignM110はバージョン比較関数compS()を含んでもよい。
図9を用いて関数compS()が記述される。
記載を単純にするために、ここでは2つの状態Sij′とSijが連続していると仮定する。
ここでは、そのツールはCVSタイプである。その場合には、指数lは、状態とは関係なく、文書を特徴付けている。
関数compS()は、状態Sijにおける文書セットPi内の文書Oijl毎に、前の状態Sij′での文書セットPi内に文書Oij′lが存在するか否かを決定するように設計されている(ステップ900)。
答えがノーである場合、関数compS()は、文書Oijlに対して全ての要素インプリントEijlkを生成するために、前述の関数signO()を呼び出すように設計されている(ステップ902)。
前述されたように、各要素インプリントEijlk、特にそれが含む署名NijlkはベースWDB120に記憶される。また、バージョン管理ツールを使用して取得した文書Oijlの時間基準TPijl、例えば更新(または貢献)の日付Tijは、ベースWDB120に記憶されている。好ましくは、文書属性AOijl、例えば状態Sijの貢献者Aijの識別子もまたベースWDB120に記憶される(ステップ904)。必要に応じて、文書属性AOijlは、状態Sij内で各貢献者Aij用の識別子を含むことができる。
ステップ900での試験が確実(positive)であった場合には、関数compS()が、文書Oijlが文書Oij′lと同一であるかどうかをチェックするように設計されている(ステップ906)。これは、状態を比較することで行え得る。ある特定の場合では、バージョン管理ツールがこのチェックを実行できる。
答えがイエスの場合には、関数compS()は、要素インプリントEij′lk′の各署名を文書Oijlと関連付けるように設計される。言い換えれば、関数compS()は、文書Oijlのものである時間基準TPijlを除き、文書Oij′lのインプリントEij′lを文書OijlのインプリントEijlとして確立する(ステップ908)。
この実施の形態では、関数compS()が文書Oijlの全ての要素インプリントEijlkを生成するように設計されることは必要ない。関数compS()は、文書Oij′lの要素インプリントEij′lk′を使用することができる。モジュールSignM110と対話するバージョン管理ツールを使用することで、マテリアルリソース上に特にプロセッサユニットロードを保存することを可能にする。
ステップ906での試験が確実である場合には、文書OijlとOij′lは異なる。その時に、文書Oijlは、日付Tijで起こるとともに貢献者Aijを有するオブジェクトOij′lの変形として理解され得る(ステップ910)。図9では、この変形が関数hijl()の形で示されている。
関数compS()は、前述したように、関数signO()を呼び出して、文書Oijlの全ての要素インプリントEijlkを生成するように設計されている(ステップ912)。必要に応じて時間基準TPijl(例えば日付Tij)と文書属性AOijl(例えば貢献者識別子データム(Aij))と通信して、要素インプリントEijlkはベースWDB120に記憶される。
文書セットデータベースの構造
図10にPDBベース130の構造の一例が示される。
文書セットPi毎に、ベースPDB130は、文書セットTpSignPTb[]1000の時限付きインプリントテーブルを維持するように設計されてもよい。
このテーブルTpSignPTb[]1000内の各行は以下を含んでもよい:
別の行の署名値と異なった、文書セットPiの特定の署名値Niqを記憶する署名列1002と、
例えば指数iの値の記憶する文書セットへの参照列1004と、
署名データムNiqの値に関連した署名データムViq、例えばこの場合では文書セットPi内での署名値Niqの出現日付TAiqを記憶する署名データム列1006。
必要に応じて、このテーブルTpSignPTb[]1000内の各行はまた以下を含んでもよい:
要素データムZiq、例えばこの場合には関連性指数Biqの値を記憶する要素属性データム用列1008と、
文書データムWiq、例えばこの場合には貢献者識別子Aiqを記憶する文書データム列1010。
テーブルTpSignPTb[]1000内の各行は、時限付き要素インプリントEiqとして見なされてもよい。
また、テーブルTpSignPTb[]1000は、他のデータ、特に、モジュールSignM110によって確立されたおよび/またはベースWDB120に一時的に記憶されたデータを含んでもよい。
ある特定の実施の形態は、ある特定の文書セット用のテーブルTpSignPTb[]1000として、図6中のテーブルを記憶することから構成されてもよい。
次に、文書セットPi毎にそのような1つのテーブルを記憶するように、または、1つのテーブル内で異なる文書セットPiに関連した複数のテーブルを組み合わせるために、ベースPDB130は配列され得る。図11では、例えば、テーブル1100は、文書セットP1用のテーブル604と類似し列COL1101〜COL1110および行ROW1101〜ROW1113からなるテーブル1102と、文書セットP2用のテーブル604と類似し列COL1101〜COL1110および行ROW1114〜ROW1126からなるテーブル1104と、任意の文書セットPi用のテーブル604と類似し列COL1101〜COL1110および行ROW1128〜ROW1140からなるテーブル1106とを組み合わせている。
文書セットを比較するモジュールの第1の実施の形態
本発明によるツールは文書セット比較モジュールComM140を備え、この文書セット比較モジュールComM140は、ベースPDB130において文書セットPiと別の文書セットPi′との両方に関連する署名値のセットを生成するように設計されている。これにより、文書セットPiの文書要素Oijlが別の文書セットPi′内で見つけられていることを決定することが可能になる。
また、モジュールComM140は、文書セットPi′の文書要素を文書セットPi内に組み込むこと、これとは逆に文書セットPi′の文書要素を文書セットPi内に組み込むことを決定することより、文書セットPiと文書セットPi′との間に従属性を確立するように設計されている。言い換えれば、モジュールComM140は、文書セット間に従属性を確立しこの従属性を方向付けるように設計されている。
なお、実用的な理由のため関数filterA()、関数filterB()、および関数cut()は配列されていなければならず、同一コンテンツでは関数signO()(または同等の関数)が、これらのコンテンツに共通する少なくとも1つの署名値のサブセットに到達するようになっている。同一に配列された関数filterA()、関数filterB()、および関数cut()を、比較されるべき別々のコンテンツに適用して、コンテンツが同一である時に関数signO()を介して同一署名値のセットを取得するようにすることが望ましい場合がある。
モジュールComM140は、文書セットを比較する関数comp()を備えている。関数comp()は、第1の文書セットP1を第2の文書セットP2と比較して、文書セットP1およびP2に共通する文書要素を決定するように配列されている。
図12を参照して関数comp()は記述される。
関数comp()は、文書セットP1に関係した署名値N1qと、対応する署名データV1qとを含んだサブセットE′lをベースPDB130から抽出するように配列されている(ステップ1200)。ここでは、文書セットP1に関連したQ1個の異なる署名値N1qが存在すると仮定している。
任意に、関数comp()は、ベースPDB130内で署名値N1qに関連している全てのデータをさらに抽出するように設計されている。例えば、関数comp()は、図11のテーブル1102と同タイプのテーブルを抽出するように配列されていてもよい。
これと同じ方法で、関数comp()は、文書セットP2に関連し(ステップ1202)Q2個の異なる署名値N2q′から構成されるサブセットE′2をベースPDB130から抽出するように配列されている。例えば、関数comp()は、図11のテーブル1104と同じ種類のテーブルを抽出するように配列されてもよい。
関数comp()は、署名値N1qと署名値N2q′が等しいセットE′1とセットE′2とのサブセットを寄せ集めることからなる交差セットE′12を構成するように配列されている(ステップ1204)。言い換えれば、関数comp()はテーブルPintTb[]を作成するように配列されており、このテーブルPintTb[]は、E′1およびE′2の同一の署名値N1qおよびN2q′と、それらのそれぞれの署名データV1qおよびV2q′を組み合わせている。必要に応じて、関数comp()は、これらの署名値に関連するデータのいくつかまたは全てをベースPDB130にさらに記憶するように配列されてもよい。
関数comp()は、従属性セットE″12を確立するように配列されている。例えば、関数comp()は、従属性PDepTb[]のテーブルを構成するように配列されてもよく、このテーブルの各行は文書セットP1およびP2の間で方位付けされた従属性を表している(ステップ1206)。
「従属性」によって、文書セットP2に関連した署名値N2q′のセットの中に、文書セットP1に関連した署名値N1qが表され、または、その逆が表される。言い換えれば、文書セットP1およびP2の間の従属性は、これらの文書セットの一方に他方の文書セットの文書要素の存在を明かしている。
関数comp()は、テーブルPdepTb[]を作成するように配列されて、そのテーブル内の各行は:
署名値Nmと、
その署名値に対してソース文書セットPOmへの(即ち、文書セットP1またはP2の一方への)参照と、
その署名値に対して宛先文書セットPDmへの(即ち、文書セットP1またはP2の他方への)参照と、
を備えるようになり、テーブルPdepTb[]は、セットE′12の各署名値Nmをカウントするように満たされ、ソース文書セットPOmおよび宛先文書セットPDmは、署名データV1mおよびV2mから開始する方位関数dir()を使って、即ちセットE′1およびE′2内で署名値Nmに対応する署名データV1qおよびV2q′の値をそれぞれ使って決定される。ソース文書セットによって、署名値Nmを伴う文書要素Cijlkが宛先文書セット内へインポートされた可能性が最も高い文書セットが表される。
テーブルPdepTb[]の各行は、署名値Nmに対して、「ソース」文書セットPOmへの参照と「宛先」文書セットPDmへの参照とを示す方位付け従属性を表している。
任意に、テーブルPdepTb[]は、署名値Nm毎に、以下もまた記憶しているかもしれない:
署名データV1mおよびV2mから確立されるかもしれない従属属性Fm、例えばソース文書セットPOm内での署名値Nmの最初の出現日付と、
文書属性データW1qおよびW2qから確立されるかもしれない文書従属属性Gm、例えば署名値を生成する要素が始まった文書タイプを特徴付け、または時間基準の信頼性指数を特徴付けるデータと、
要素属性データZ1qおよびZ2qから確立されるかもしれない要素従属属性Hm、例えば署名値Nmを生成する要素のサイズの指摘。
文書従属属性Gmが文書タイプを特徴付けるデータムを備える場合には、生成する要素が別々のタイプの文書から始まっている署名値Nmを除外することは可能である。
ソース文書セットPOmと宛先文書セットPDmとを決定することは、別々の基準を考慮してもよい。結果として、関数dir()が配列されてもよい。
特に、関数dir()は、ソース文書セットPOmとして、署名値Nmを生成する文書要素が最初に出現した文書セットを決定するように配列されてもよい。その場合には、セットPOmは、インプリントにおいて署名値Nmが最も早く出現した文書セットであるのに対し、セットPDmは、この署名値Nmがその後にだけ出現した文書セットであってもよい。
ある特定の実施の形態では、署名データV1mおよびV2mは、文書セットP1およびP2において署名値Nmの出現日付TA1mおよびTA2mをそれぞれ含んでいる。それから、関数dir()は、最も古い日付TA1mおよびTA2mに対応した文書セットP1およびP2のうち特定の一方をソースセットPOmとして決定するように配列され得る。文書セットP1およびP2のうち他方は宛先セットPDmとして決定される。
任意に、関数comp()は、日付TA1mおよびTA2mを従属属性Fmとして記憶するように配置されてもよい。次に、従属属性Fmは、文書セットPOmのコンテンツが文書セットPDmに組み込まれていた時間間隔に対応している。
別の実施の形態では、署名データムV1m(またはV2mのそれぞれ)は、文書セットP1(またはP2のそれぞれ)において署名値N1m(またはN2mのそれぞれ)の登場日付TA1m(またはTA2mのそれぞれ)と、その文書セットからその署名値Nmの消滅日付TD1m(またはTD2mのそれぞれ)とを備えている。この場合には、関数comp()は、以前のものとしてソースセットPOmおよびPDmを確立し宛先文書セットPDmにおいて消滅日付TD1mまたはTD2mを従属属性Fmとして保持するように配置されてもよい。
任意に、前述した実施の形態に対して、文書データW1mおよびW2mは、特にこれらのデータが出現日付TA1mおよびTA2mを含む場合には、署名データV1mおよびV2mの信頼性指数を備えている。それから、関数comp()は、テーブルPdepTb[]を署名値Nmのみで満たすように配列可能であり、文書データムW1mまたはW2mは特定の閾値より大きい。
より一般的には、関数dir()は、要素属性データZ1mおよびZ2m、文書属性データW1mおよびW2m、状態属性データX1mおよびX2m、および/または、署名データV1mおよびV2mを考慮することにより、文書セットP()mおよびPDmを決定するように配列されてもよい。
例えば、対応する関連指数BlmまたはB2mのそれぞれが特定の値よりも大きい場合に、データTA1mおよびTA2mのうち最も古い方に対応した文書セットP1およびP2のうち特定の一方を文書セットPOmとして確立するように、関数comp()は配列されてもよい。
任意に、署名値Nmとこれに関連したデータとを従属性テーブルPdepTb[]から削除するように関数comp()は配列されてもよく、その関連指数B1mおよびB2mのうち一方は所定値よりも低く、または、出現日付TA1mまたはTA2mと出現日付Td1mまたはTD2mとは、ある固定値よりも大きい時間距離で離間されている。
従属性集合関数
関数comp()は、テーブルPdepTb[]の従属性を寄せ集めることが可能な集合関数を呼び出すように配列されている。これは、このテーブルPdepTb[]内の属性の数が相当数である場合には特に有利である。
図13を参照して集合関数agrDep1()の第1の例が記述される。
関数agrDep1()は、2つの従属性サブセットD12およびD21の間の従属性の方位に従って、全ての属性E″12を分割するように配列されてもよく、当該2つの従属性サブセットD12およびD21はそれぞれ以下に対応している:
POmがP1と等値になるようにE″12の全ての従属性と、
POmがP2と等値になるようにE″12の全ての従属性(ステップ1300)。
例えば、関数agrDep1()は、2つのサブテーブルPdep12Tb[]およびPdep21Tb[]の間でテーブルPdepTb[]を分割するように配列されてもよく、当該2つのサブテーブルPdep12Tb[]およびPdep21Tb[]はそれぞれ以下に対応している:
POmがP1と等値になるようにテーブルPdepTb[]内の行、即ち署名値Nmおよびそれらの値に関連するデータと、
POmがP2と等値になるようにテーブルPdepTb[]内の行、即ち署名値Nmおよびそれらの値に関連するデータ。
セットD12は、関連する出現日付TA1mが関連する出現日付TA2mよりも古い(つまり、その日付未満)署名値Nmのセットを備えている。同様に、セットD21は、関連する出現日付TA2mが関連する出現日付TA1mよりも古い全ての署名値Nmを備えている。
まず、関数agrDep1()によるサブセットD12の集合が記述されるだろう。
任意に、関数agrDep1()は、セットD12およびD21を編成するように配列されて、それらの署名値Nmに関連した日付に従って従属性を組み合わせるようしてもよい。
関数agrDep1()は、セットD12における署名値Nmの個数U12を確立するように配列されている。これは、カウント関数count()を使用して行うことができる(ステップ1302)。
関数agrDep1()は、文書セットP1の任意の要素が初めて文書セットP2に統合された日付T12を確立するように配列されている。言い換えれば、日付T12は、サブセットD12に属する署名値Nmに関連した最も古い日付TA2mである(ステップ1304)。
関数agrDep1()は、セットD12に属する従属性の従属性サブセット即ち集合体De12uを確立するように配列されており、その署名値Nmの出現日付TA1mは、または、署名Nmと同一の署名が文書セットP1と最初に関連する日付は、日付T12よりも古い。言い換えれば、セットDe12uは、出現日付TA1mが日付T12よりも古いセットD12に属する署名値Nmを、任意にはそれらの値に関連したデータを備えている(ステップ1306)。
関数agrDep1()は、日付T12′を確立するように配列されており、この日付T12′は、セットD12に属するが、従属性集合体De12uに属さない従属性の署名値Nmに関連する日付の中で最も古いものであると定義されている。言い換えれば、日付T12′は、文書セットP1の文書要素が文書セットP2に統合されるが、署名Nmが構成中のグループに属さない最も古い日付を表している(ステップ1308)。
任意に、関数agrDep1()は集合体De12uから従属性を削除するように配列されてもよく、セットP2内で署名値Nmの最初の出現日付TA2mは日付T12′よりも新しい(ステップ1310)。
ステップ1304〜1310は、得られたセットの和集合体De12uがセットD12と同一になるまでに既に形成された集合体De12uの従属性を除いて、再スタートされる。これは、ちょうど構成されたセットDe12uから従属性を排除すること(ステップ1312)によって、かつ、セットD12が空になるまでステップ1304〜1312を再スタートさせること(ステップ1314)によって実行できる。
関数agrDep1()は、和集合が従属性D21のサブセットに対応する従属性の集合体De21uを得るために、サブセットD21に対してステップ1302〜1314を対称的に実行するように配列されている。
任意に、関数agrDep1()は、集合体De12u(またはDe21uのそれぞれ)毎に、特にこの集合体の署名値Nmに関連している従属属性Fmと、文書従属属性Gmと、要素従属属性Hmとから、集合体データを確立するように配列されてもよい。必要に応じて、データV1mまたはV2m、データW1mまたはW2m、および/または、データZ1mまたはZ2mから前記集合体データを確立するように、関数agrDep1()は配列されてもよい。
例えば、関数agrDep1()は、集合体De12u(またはDe21uのそれぞれ)毎に、集合体の任意の要素の最初の統合日付、即ち、当該集合体の署名値Nmに関連する日付TA1mのうち最も古いものを確立するように配列されてもよい。これに加え、または代替的に、関数agrDep1()は、集合体毎に、以下を確立するように配列されてもよい:
当該集合体に含まれている署名値Nm(およびこれにより従属性)の数、
例えば文書従属属性Gmから計算された時間基準の信頼性指数の平均値、および/または、
署名値Nmが当該集合体に含まれた文書要素の累積サイズ、例えばそれらの署名の要素従属属性Hmから計算される累積サイズを示す値。
任意に、関数agrDep1()は、集合体の確率の特徴を示すデータムを確立するように配列されてもよい。集合体の確率によって、主に、署名値Nmが当該集合体に含まれる全ての文書要素がコンテンツ統合の同じ工程から生じているという事実が表される。例えば、集合体De12u(またはDe21uのそれぞれ)に対して、この集合体の全ての署名値がソース文書セットのインプリントの中に共存する時間間隔があるかどうかをチェックするように、関数agrDep1()は配列されてもよい。
なお、ここでは、文書セットP1およびP2のうち一方への新規な状態の追加が、これらの状態がセットE″12を確立した状態に後続するのであれば、既にカウントされたセットE″12の従属性は変わらない。さらに、新規な状態の追加は、関数agrDep1()によって取得された集合体を変更させないが、これらの集合体の従属性の数のみを変更させることができる。実際には、文書セットP1およびP2に対して文書要素を追加または削除に関係なく、比較後に、確立された従属性は有効なままである。例えば、その結果として従属性を生成した文書セットP1から文書セットP2内の文書要素を削除することにより従属性は消滅されない。したがって、本発明により可能となった文書セット間の比較は「ロバスト性」として記述されることもある。この性質は、主として、モジュールSignM110によって確立されたような文書セットの時限付きインプリントが、以下の状態の追加により破壊されないということから生じる:特に初回の出現日付の場合には、新規の署名値がインプリントに追加されてもよいが、既存の署名値の署名データは変更されない。言い換えれば、特定の日付での文書セットのインプリントは、前の日付に作成されたこの文書のインプリントを含んでいる。
図14を参照して集合関数agrDep2()の第2の例が記述される。
関数agrDep2()は、従属性の方位に従って、全ての従属性E″12を、図13のステップ1300による2個の従属サブセットD12およびD21に分割するように配列されている(ステップ1400)。
従属性D12のセット内に含まれる署名値Nuが存在するように文書セットP1内の最初の出現日付TA1uの値毎に、関数agrDep2()は、全ての署名値Nmと、日付TA1mが日付TA1uと同一であるこれらの署名データ値に関連したデータとを備えた
従属性または集合体のサブセットDe12uを確立するように、配列されてもよい(ステップ1402)。言い換えれば、関数agrDep2()は、署名が文書セットP1内に同一の出現日付を有する集合体De12uにセットD12を分割するように配列されている。
任意には、関数agrDep2()は、例えば番号付け関数nbr()によって、セットD12に含まれる集合体De12uの数を決定するように、および、この数が所定値VALよりも大きいかどうかを証明するように配置されてもよい(ステップ1404)。値VALは、処理に妥当であると判断された集合体の数と等しい。値VALは、一方で、多数の集合体が後続の処理を面倒にすること、他方で、少数の集合体が、後続の動作を無意味にする情報の損失を生じさせることを考慮に入れて決定されるかもしれない。後続の動作によって、特に、モジュールRightsM150によって実行される処理が表される。
ステップ1404での試験が否定的(negative)である場合、関数agrDep2()は停止される。そうでない場合、関数agrDep2()は、以降で記述される方法で時間間隔のセットDeltaT12vを決定するように配列されている(ステップ1406)。
ステップ1406で決定される時間間隔DeltaT12v毎に、関数agrDep2()は、集合体De12uのセットを含んだ従属性のスーパーセットまたは集合体De12uのスーパーセットを構成するように配列されており、日付TA1uが当該の範囲DeltaT12v内に含まれるようになっている(ステップ1408)。言い換えれば、関数agrDep2()は、文書セットP1内でその署名の最初の出現日付の関数として、署名値Nmに従って、より詳細にはこれらの日付が時間間隔DeltaT12vに属するかどうかに従って、セットD12の従属性を組み合わすように配列されている。ある場合には、集合体De12vの構造は、日付TA1uに代わって日付TA2uを考慮するかもしれない。
時間間隔DeltaT12vは、文書要素を作成する工程で一貫性を記録するように決定されている。この時間間隔DeltaT12vの決定により、1つ以上の基準が考慮されることもある。
例えば、関数agrDept2()は、それぞれが宛先文書セットPDmの状態、この場合には文書セットP2の状態に対応する時間間隔DeltaT12vを確立するように配列されてもよい。したがって、セットD12の従属性が、宛先文書セットの状態の関数として再グループ化される。この場合には、関数agrDep2()は、集合体De12vを日付TA2uの関数として定義するように配列されている。
また、日付TA2uの関数は、時間間隔DeltaT12vを決定するよう配列されてもよく、各々の時間間隔が文書セットの一連の状態に対応し、状態属性の値、特に貢献者識別子Aijの値が同一であるようになっている。次に、セットD12の従属性は、ソース文書セットの状態の関数として、および貢献者によってグループ化されている。
一般的に、時間間隔DeltaT12vの定義は、文書コンテンツを更新する頻度の特徴を示す期間の選択からもたらされ、例えば、バージョン管理ツールによって取得されたデータ、例えば日付Tijデータから得られる。
関数agrDep2()は、セットD21に対してステップ1402〜1408を対称的に実行するように配列されていることが理解される。
関数agrDep1()と同様に、関数agrDep2()は、得られた集合体De12vおよびDe21vの確率を証明するように配列されてもよい。
再び同様に、関数agrDep2()は、集合体De12v毎に、特にこの集合体の署名値Nmに関連する従属属性Fm、文書従属属性Gm、要素従属属性Hmから、必要に応じてデータV1mまたはV2m、データW1mまたはW2m、および/または、データZ1mまたはZ2mから集合体データを確立するように配置されてもよい。
例えば、関数agrDep2()は、集合体De12v(またはDe21vのそれぞれ)毎に、集合体の任意要素の最初の統合の日付、当該集合体内に含まれる署名値Nm(またその従属性)の数、時間基準の信頼性指数の平均値、および/または、当該集合体に署名値Nmが含まれた文書要素の累積サイズを確立するように配列されてもよい。
ここで記述された関数agr1Dep()および関数agr2Dep()は限定的ではなく、他の集合関数は追加的または代替的に定義されてもよい。例えば、署名値Nmと、これらの値に関連するデータとは、データFm、データGm、および/またはデータHmに従って、および/または、任意にデータV1mまたはV2m、データW1mまたはW2m、および/または、データZ1mまたはZ2mに従ってグループ化されてもよい。
集合関数の全ての実施の形態において、これらの関数は、取得された集合体毎に、重要さと等価のデータムを確立するようにも配列されてもよい。これによって、集合体の階層構造を確立することが可能となって、例えばその後の処理がより容易になるようにしている。例えば、集合関数は、前記重要さを決定する際に、集合体内に含まれている従属性の数と、署名が従属性を表示する文書要素の累積サイズと、ソース文書セットおよび/または宛先文書セット内の重要さと、集合体の署名に関連する時間基準の信頼性と、任意の使用可能な情報とを考慮するように配列されてもよい。
文書セットを比較するモジュールの第2の実施の形態
この実施の形態では、モジュールComM140は、前述した意味において、1つの文書セットPiをいくつかの文書セットPi′と比較するように配列されている。
モジュールComM140は、文書要素の文書セットPi内への組み込みを文書セットPi′から決定し、それと反対に、文書セットPiの文書要素の文書セットPi′内への組み込みを文書セットPiから決定することにより、文書セットPiと文書セットPi′との間で従属性を確立するように配置されている。言い換えれば、モジュールComM140は、1つの文書セットと多数の文書セットとの間で従属性を確認しそれらの従属性を方向付けるように配列されている。
モジュールComM140は、文書セットを比較する関数comp1N()を備えている。関数comp1N()は、第1の文書セットP1を文書セットP2、P3、・・・、Pn、・・・、PNと比較するように配列されており、ここにNはnの全ての値に対して文書セットP1およびPnに共通する文書要素を決定するために自然な整数である。
図15を参照して関数comp1N()は記述される。
関数comp1N()は、文書セットP1に関連する署名値N1qと、対応する署名データV1qとを含んだベースPDB130からサブセットE′1を抽出するように配列されている(ステップ1500)。ここでは、文書セットP1に関連したQ1個の異なる署名値N1qが存在すると仮定する。
任意に、これに加えて、関数comp1N()は、ベースPDB130内に署名値N1qに関連する全てのデータを抽出するように配列されている。例えば、関数comp1N()は、図11でのテーブル1102と同じタイプのテーブルを抽出するように配列されてもよい。
関数comp1N()は、各文書セットPnに関連しQn個の異なる署名値N1′から構成されるサブセットE′nをベースPDB130から抽出するように配列されている(ステップ1502)。例えば、関数comp1N()は、文書セットPn毎に、図11のテーブル1104と同じタイプのテーブルを抽出するように配列されてもよい。
関数comp1N()は、セットE′1の交差サブセットをセットE′nの各々と組み合わせることにより作成された交差セットE′1Nを構成するように配列されている。2つのセット間の交差により、同時に2つのセットの中に含まれている署名値のセットと、必要に応じて両方のセット内にこれらの署名値と関連するデータとが表される(ステップ1504)。言い換えれば、関数comp1N()は、E′1と、セットE′nのうち少なくとも1セットとに共通した署名値を組み合わせたテーブルPintTb[]を確立するように配列されている。共通の署名値毎に、関数comp1N()は、セットE′1と、発見された場合にはセットE′nのそれぞれとにおいてその署名値と関連する署名データをテーブルPintTb[]内に記憶するように配列されている。必要に応じて、関数comp1N()は、さらに、これらの署名値と関連するデータのいくつかまたは全てをベースPDB130内に記憶するように配列されてもよい。
関数comp()は、従属性セットE″1Nを確立するように配列されている。例えば、関数comp1N()は、従属性テーブルPDepTb[]を構成するように配列されてもよく、各行が文書セットP1と文書セットPnとの間で方向付けられるようにしている(ステップ1506)。
関数comp1N()は、テーブルPdepTb[]を確立するように配列されており、このテーブルの各行は以下を備えるようにしている:
署名値Nmと、
その署名値に対してソース文書セットPOmへの(即ち、特に、セットP1またはセットPnのうちの1つへの)参照と、
その署名値に対して宛先文書セットPDm(即ち、POmがP1と同等である場合には特定のセットPn、または、POmが特定のセットPnと同等である場合にはセットP1)への参照。
テーブルPdepTb[]は、セットE′1Nの各署名値Nmをカウントするように満たされている。署名データV1mおよびVnmから開始する方位付け関数dir()によって、ソース文書セットPOmおよび宛先文書セットPDmへの参照が決定される。
テーブルPdepTb[]内の各行は、署名値Nmに対して、「ソース」文書セットPOmへの参照と「宛先」文書セットPDmへの参照とを示す方向付け従属性を表している。
任意に、テーブルPdepTb[]は、署名値Nm毎に、以下を記憶していることもある:
署名値V1およびVnmに基づいて確立できる従属属性Fm、例えば、ソース文書セットPOm内での署名値Nmの最初の出現日付と、
文書属性データW1qおよびWnqに基づいて確立できる文書従属属性Gm、例えば、署名値生成要素が始まった文書のタイプを、または、時間基準の信頼性の指数を特徴付けるデータムと、
要素属性データZ1qおよびZnqに基づいて確立できる要素従属属性Hm、例えば、署名値生成要素Nmのサイズの表示。
ソース文書セットPOmと宛先文書セットPDmの決定は、様々な基準を考慮するかもしれない。その結果として、関数dir()は配列されることもある。
特に、署名値Nmを生成する文書要素が最初に出現する文書セットをソース文書セットPOmとして決定するように、関数dir()は配列されてもよい。この場合には、セットPOmは、署名値Nmが最初に出現したインプリント内の文書セットであるのに対し、セットPDmは、その署名値Nmが後にのみ出現した文書セットであってもよい。
毎回、2つの文書セット、即ちセットP1およびPnの間で従属性を方向付けることが重要であるため、前述した関数comp()の様々な変数が関数comp1N()へ転置されてもよい。
したがって、関数comp1N()は、文書セットP1と文書セットPnのいずれか1つとの間に従属性のセットE″1Nを確立するように配列されてもよい。言い換えれば、セットE″1Nの各従属性(または署名値Nm)は、文書セットPn内におけるセットP1の文書要素の存在を、ソース文書セットPOmと宛先文書セットPDmとを使って特徴付けている。
この実施の形態は、文書セットP1と文書セットP2、・・・、Pn、・・・、PNのそれぞれとの間で、比較モジュールの第1の実施の形態の関数comp()の適用と見られるかもしれない。
この実施の形態では、関数comp1N()は、従属性を集合体、即ちセットE″1Nのサブセットに結合するために集合関数を呼び出すかもしれない。
第1の実施の形態では、関数comp1N()は、集合関数agrDep3()を呼び出すように配列されている。関数agrDep3()は、従属性E″1NのセットをサブセットE″1nに分割するように配列されて、サブセットE″1nの各々が、当該の文書セットP1と文書セットPnとの間で従属性を組み合わせるようにしている。また、関数agrDep3()は、従属性E″1nのセット毎に、比較モジュールの第1の実施の形態の集合関数のうちの1つを、特に、関数agrDep1()とagrDep2()とのうち一方を呼び出すように配列されている。
第2の実施の形態では、関数comp1N()は、集合関数agrDep4()を呼び出すように配列されている。関数agrDep4()は、特定の署名値Nmに対して、文書セットP1と、ソースセットPOm内で署名値Nmの出現日付が、文書セットP1、P2、・・・、Pn、・・・、PNのセット内でその署名値Nmの出現日付の全てのうちで最も古いものとならないセットPnのうち1つとの間での従属性を、従属性のセットE″1Nから削除するように配列されている。
任意に、特に従属性の数が多すぎる場合、例えば後で都合よく処理されるために、ソース文書セットPOmの関数として集合体を作成するように関数agrDep4()が配列されてもよい。また、関数agrDep4()は、ソース文書セットの状態の関数として集合体を作成するように配列されてもよい。また、比較モジュールの第1の実施の形態において前に挙げた記述と同様に、関数agrDep4()は、以下の基準の関数として集合体を作成するように配列されてもよい:
宛先文書セットの状態、
貢献者の識別子、および/または、
時間間隔。
前述と同様に、特徴データは集合体の結果であると考えられる。
比較モジュールの第3の実施の形態
この実施の形態では、モジュールComM140は、多数の文書セットPiを相互に比較するように配置されている。モジュールComM140は、文書セットPi毎に関数comp1N()を連続的に呼び出して、従属性E″NNのセットを確立するように配置された比較関数compNN()を備えている。
ある特定の開発では、関数compNN()は、特定の署名値Nmに対して、ソースセットPOm内での署名値Nmの出現日付が、文書セットP1、・・・、Pn、・・・、PNのセットでのその署名値Nmの出現日付の全てのうちで最も古いものとならないセットPnのうち2つの間の従属性を従属性のセットE″NNから削除するように配列されている。
次に、従属性は、前述した1つまたはその他の関数に従って、組み合わされた方法または置換の何れかによって集合させることができる。特に、従属性は、宛先文書セットPDmに従って、集合させることが可能であり、即ち、署名値Nmと、宛先文書セットPDmが同一であるデータに関連したデータとが組み合わせられる。
前述と同様に、特徴データは、こうして取得された集合体と関連付けられてもよく、その集合体は、例えば、要素サイズの表示を、即ち、署名が当該集合体に存在する文書要素に関連した関連指数Bijlkによって恐らく計量される平均値の表示を含んだ時の要素属性AEijlk、宛先セットでの最初の出現データ、または、その類似ものを合計することにより得られる文書要素の累積サイズである。
権利管理モジュール
権利管理モジュールRightsM150は、モジュールComM140およびベースPDB130と対話するように配列されている。
モジュールRightsM150は、文書セットPiに対して、従属性のセットを、即ち署名値Nmとこれらの署名値に関連したデータとのセットを確立するように配列されたリスト関数list()を備えており、宛先文書セットPDmは文書セットPiである。必要に応じて、従属性E″12、従属性E″1N、または従属性E″NNのセットが集合されている場合に(即ち、これらの従属性のセットのサブセットが作成されている場合)、関数list()はこれらの集合体のリストを作成するように配列され、関連する属性が宛先文書セットPDmでありその属性はPiと等しくなっている。
ある特定の実施の形態では、関数リスト()は、従属性のセットE″NN内に存在する署名値Nim毎に、以下を確立するように配列されている:
ソース文書セットPOmへの参照のセット(これ以降Pi′と示す)、
ソース文書セットPi′の各々に関連した要素属性AEi′、jqp、lqp、kqpのセット、
ソース文書セットPi′の各々に関連した文書属性AOi′、jqp、lqpのセット、例えば全ての貢献者識別子Ai′、jqp、
ソース文書セットPi′の各々に関連した状態属性ASi′、jqpのセット、および/または、
文書要素の時間基準のセット、例えば日付Ti′、jqpのセット。
ある特定の開発では、関数list()はさらに以下を確立するように配列されている:
従属属性Fmのセット、文書従属属性Gm、および/または要素従属属性Hm、および/または、
従属性集合体の各々に関連した属性のセット、例えば、ライセンスを表す従属属性。
例えば、従属属性Fmは、ソース文書セットPOmが被るライセンスのタイプを示すこともある。
ある特定の開発では、要素属性AEj′、jqp、lqp、kqpは、ライセンスのタイプを識別する情報(例えば、「GPLライセンス」または「BSDライセンス」)を備えている。それから、関数list()は、ソース文書セットPi′用のライセンスのセットを確立するように配列されている。これにより、例えば、従属性とライセンスとの間にリンクを確立して、文書セットPiの動作基準がセットPi′と互換するか否かを決定するのに補助することが可能になる。
別の特定の実施の形態では、list()関数は、同じように従属性のリスト(または従属性の集合体)を確立するように配列されており、ソース文書セットPOmはPiであり各宛先文書セットPDmの属性(この場合にはPi′)はライセンスのタイプを表している。
さらに別の実施の形態では、list()関数は、ライセンスlicver()の非互換性を証明する関数を呼び出すように配列され、文書セット属性として記憶されたソース文書セットPOmのライセンスのタイプと、事前に構築されたライセンスの法的な不適合性のリストを使って文書セット属性としても記憶された宛先文書セットPDmのライセンスのタイプとを比較するように配列されてもよい。list()関数は、セットE″NNの従属性毎にlicver()関数を呼び出すように配列されてもよい。
ある場合には、署名値NimおよびNi′m、並びにそれらに関連したデータは、list()関数でも確立されることがある。文書セットに対して行った様々な修正(この場合には元の文書セットと宛先文書セット)の記録を保存するように配列されたバージョン管理ツールを使用する場合には、これによって、様々な文書セットに関連する権利の所有権を決定する際にユーザを補助することが可能になるかもしれない。
ある特定の実施の形態では、list()関数は、文書セットPiに対して、従属性中に見つかった署名値Nmを確立するように配列されており、宛先文書セットPDmはこの文書セットPiであり、全ての従属性のセットから欠如している署名値である。各署名値は、ある特定の場合に依存して、署名データムViqまたはVi′q′のうち少なくとも一方に関連付けられ、かつ、文書データムWiqまたはWi′q′に関連付けられている。例えば、署名データムViqまたはVi′q′は、(文書セットとは無関係に)最初に出現した日付と、文書データムWiqまたはWi′q′とを備えてもよく、その署名値を生成したコンテンツが、文書データムWiqまたはWi′q′内の文書の識別子に最初に見つけられている。
他方、list()関数は、ベースPDB130あるいはWDB120において文書セットPiと関連した文書AOijlあるいは状態ASijの要素属性AEijlkのセットを確立するように、またはその要素属性AEijlkからの抽出を確立するように配列されてもよい。
ある特定の実施の形態では、例えば、文書属性AOi、jqp、lqpのそれぞれは、少なくとも1つの貢献者識別子と、その貢献者のステータスの表示(例えば「従業員」、「個人」、「研究者」)とを備えている。それから、関数list()は、識別子とそれらのステータスとのリストを作成するように配列されている。
開発
本発明は、各文書が署名に関連した要素に細分化される場合に最大の価値を持つ。しかしながら、例えばその細分化が目的なく、または当該目的にとって価値がない場合には、要素に細分化することができない文書もある。そのような場合には、署名は、全体として考えられる文書に関連付けられるかもしれない。
前述の説明では、切断アルゴリズムは、1つの文書セットの各コンピュータ管理システムに適していることもある。各ファイルの性質および/または所望の目的に依存して、切断アルゴリズムが標準化されることが有益かもしれない。こうして、1つのシステムを別のシステムと直接比較することが可能になる。
前述の記述は日付Tを活用している。ある場合には、日付識別子は十分であろう。「日付識別子」によって、ここでは、年代順に一致する分類動作の対象を形成できる任意のパラメータが表される。したがって、日付識別子は、単純に文書セット内のバージョン識別子であってもよい。
さらに、常に全ての署名を記憶する必要はない。「グレーリスト」と呼ばれるリストに記憶された特定の署名の重要性を最小化することが可能であることがわかっている。恐らく、ある特定の条件の下で記憶されない署名の「ブラックリスト」の作成を考慮することが可能である。
アプリケーション
ここまでの詳細な記述は、本質的には、ソフトウェア開発プロジェクトの範囲に入る。ここで記述された手段は、自動化できるとともに、特にソフトウェアの法的ステータスを定義することを可能にするツールを提供する。これは、ひとたび個人貢献者と彼等の法的ステータスの数とが増加すると、ますますそのように、そのステータスが長期にわたって発展するにつれ、特に難しい作業であることが知られる。ソフトウェアがコンポーネントに基づく場合および/または共同開発されている場合には、この作業はより一層困難なものになる。
この作業の複雑性を考慮すると、例えば、以下のように純粋で知的なおおよそであるが不正確な解決法を定義することは標準的な技法である:
各人がどのように貢献したかを、および、権利の対応する割り当てを正確に解決することは可能でなかったという理由だけで、共同作業の勝手な資格と、
些細であると判断され影響力のある作者の個性と対面させられた、不当に看過する貢献。
これに対し、本発明により、各文書を要素に細分化する際に誰もが発見を望む粒度を備えた厳格かつ精密で信頼性ある技術を使用することが可能となる。これは、ソフトウェア、特に「オープンソース」ライセンス下で配布されたソフトウェアの使用または運用の範囲における法的リスクの評価および管理の点で重要な基本要素を構成する。
しかしながら、本発明は、デジタル作品の一連の製造工程レベルで、および/または、そのような工程が使用または呼び出すデジタル化ツールとトレーサビリティツールとで、他の用途にも適している。この範囲には、共同作業、および/または再利用可能コンポーネントに基づく共同作業にも見られる。
より一般的には、本発明は、ひとたび作者の特徴を示す要素に文書を分割することが可能になるならば、および、2つの連続する状態の細分化から生じた要素を比較することが最新または最終バージョンを製造するために最も古い状態に対して行う修正の特徴を示すように様々な基準(原作者または作品の著作権)に従うならば、ある特定の価値をもったものとなる。
ソフトウェア(コード)に関し、細分化は言語の構文および文法を活用する。これに対し、ビデオ/アニメーションに関し、細分化は記憶形式に依存し、SVG(「スケーラブル・ベクター・グラフィックス」の略)のような形式は、コンテンツの点から見て有効ならびに有意義である細分化の定義に特に十分に適している。
文書間における類似性の検索が、細分化において発見される要素の存在または不存在に基づいて実行される。
1.従来技術とは対照的に、インプリントのタイミングにより2つのソフトウェアアイテム(製品)が類似性を持つ時に、何れの一方が他方にかつ後者のいずれかのバージョンに全体的または部分的に組み込まれるかを、時間基準の信頼性の関数として決定することが可能になる。したがって、例えば以下を決定することが可能になる:
(1)ライセンス互換性の問題に自身を限定せずに法的に識別された外部貢献の法的ステータス、
(2)一連の製造工程のどの段階からソフトウェアの集積部品が始まるのか、
(3)使用するプロジェクトの識別によりオープンソースコードの「配布率」、即ちその「悪評」。
2.そのことにより、ソースコードに直接アクセスせずに、外因性コードの検索を実行することが可能になる。
3.この工程は、新規署名さらには新規従属性(原子かつ集合体)を任意で追加しているが、過去の署名および従属性を削除せずに(しかしながら、その関連性の影響が及ぼされることは留意すべき)、貢献の記録の増分更新(最終公知状態への次の状態の追加)が時間署名だけに及んでいるという意味で、製造ツールの観点から見てロバストである。従属性は、比較ベースの新規の文書セットを考慮することで変更されるかもしれない。このことは、トレーサビリティの問題の観点から見て(即ち、品質コントロール手順の観点から見て)重要な性質である。
4.コンテンツをファイルタイプ(特に言語毎に)に従って細分化するためのフィルタおよびアルゴリズムを適用することは、例えば、1つのシステムから別のシステムへ、およびまたは1つの開発環境から別の開発環境へ影響されないことによって、データの永久性を確保することを可能にしている。また、次善の策略に耐える切断フィルタまたは切断関数(例えば、機能性を変えない変数名への変更に、または、それを変えないブロック置換に影響されないフィルタ)を定義するが可能になる。
5.ソフトウェアのアイテムの法的ステータスを定義するために、「コンテンツ作成ツール」間のリンク、即ち時限付きインプリントの生成と従属性の検索との間のリンクによって、動作基準のような第三者要素を含めて後者(作者とそのステータスとのリスト)を作り上げる全ての要素を考慮することが可能になる。
6.また、外因性コードを汚染する集積化への影響を測定すること、または、責任を識別すること(誰がいつその外因性コードを組み込んだのか)が必要になる時に、ライセンス互換性問題が生じた場合(例えば、前または後続のバージョンがより寛容なライセンスを被っている場合)に、回避方法を定義することが可能になる。
7.また、そのことにより、「コンテンツ」の観点から、特定の貢献者のアクティビティを特徴付けることが可能になる。例えば、生成された原子インプリントの数により、生成ツール(即ち、更新回数または変更ファイル数)の意味において、新規の測定基準を定義したり、または、アクティビティに関しての測定基準を計量したりすることが可能になる。任意に、(例えば、単に生成したライン数よりもっと関連性があってロバスト(確固)である方法で共同所有部分を提案するために)インプリントの関連性を考慮することも可能である。
前述は特にソフトウェアに関連するが、他のタイプの作品にも、より一般的には、タイミングの記録と結び付く細かい分析を実行することが望まれる他のタイプのコンピュータ文書に適用できる。
より一般的には、ここでは、文書のコンピュータ管理の工程は提案され、その工程は次のステップの組み合わせを備えている:
a)第1の時間基準(TPijl)を有する第1(j=1)の文書コンテンツ(Oijl)を考慮するステップと、
b)選択した規則に従って、この第1の文書コンテンツを要素(Cijlk)に細分化するステップ(200)と、
c)ステップb)で得た各文書要素(Cijlk)をそのコンテンツの署名(Nijlk)と比較するステップと、
d)第1の文書コンテンツに対して、ステップb)で取得した署名のうち少なくともいくつかと、この第1の文書コンテンツの前記第1の時間基準の識別子とを備えたインプリント(Eijl)を記憶するステップと、
e)毎回(j=j+1)、時間基準を有する少なくとも1つの他の文書コンテンツのためにステップa)〜d)を繰り返すステップと、
f)第1の署名値(Nijlk)を作業値(Niq)として考慮するステップと、
g)この作業値を含むインプリント(Eijl)の時間基準識別子(TPijl)にタイムクロック関数(dat())を適用し、統合された時間基準として、前記タイムクロック関数の結果値(Viq)にその作業値(Niq)を関連付けするステップと、
h)毎回、作業値(Niq)として別の署名値(Nijlk)を使用してステップf)〜h)を繰り返すステップと、
i)各署名値とその統合された時間基準との間の通信を記憶するステップ。
原則的に、文書コンテンツ(Oijl)は、所与の文書と、文書状態と、文書バージョンと、いくつかの文書バージョンを含むことができる文書セットとから選択した少なくとも2つのカテゴリに従って識別(または等級付け)され得る。その結果、以下の詳細な記載では、「文書コンテンツ」という表現は、特別な記載がある場合を除き、正確な文書(l)、文書状態(j)、文書バージョン、または文書セット(i)に関していてもよい。
以下の詳細な記述では、4つのカテゴリが与えられている。原則的に、文書セットのレベルまで、同一の最終状態が保たれる。これは同一と見られるものの発展である。これに対し、2つの異なる文書セットは、少なくともその一部において、2つの異なるものに関する。
潜在的に独創的な貢献を研究するため顕著に有益な一実施の形態では:
タイムクロック関数(dat())は、署名データム(Viq)として、リスト上の最も古い時間基準(TPi、jqp、lqp)の識別子と、リスト上の最新の時間基準(TPi、jqp、lqp)の識別子とのうちから選択した少なくとも1つを確立するように配列されている。
少なくとも数個の文書要素を選び出して、例えばその重要性を変更することが有効である場合もある。この目的のために:
ステップc)は、各文書要素(Cijlk)が、この文書要素に関する要素属性(AEijlk)にさらに関連付けられるという事実を備え、
ステップd)において、インプリント(Eijl)は、要素属性(AEijlk)の少なくともいくつかの識別子も備え、
ステップg)において、タイムクロック関数(dat())は、特に条件を確認する場合に、時間選択に対して要素属性識別子(AEijlk)を考慮するように配列されている。
互いに組み合わせることができる特定の実施の形態では:
ステップd)において、インプリント(Eijl)は要素の署名を備え、要素属性(AEijlk)は特定の値よりも大きく、
ステップc)において、要素属性は、文書要素のコンテンツに関する統計データに依存する。
同じように、文書自体のうち少なくとも数個を取り出すことが有効である場合もある。この目的のために:
ステップa)において、文書コンテンツ(Oijl)は文書属性(AOijl)をも有し、
ステップd)において、インプリント(Eijl)は第1の文書コンテンツの前記文書属性の識別子をも備え、
ステップg)は、作業値を含んだインプリント(Eijl)の文書属性識別子(AOijl)に認証関数(Aut())を適用し、統合された文書属性データムとして、前記認証関数の結果値(Wiq)にその作業値(Niq)を関連付けることをさらに備え、
ステップi)は、各署名値とその統合された文書属性データムとの間の通信を記憶するということもまた備える。
前述した特定の実施の形態では:
ステップg)において、認証関数は、作業値を含むインプリント(Eijl)の時間基準識別子にも適用される。
組み合わせ可能であるとともにより一般的に適用可能である他の特定の実施の形態によれば:
文書コンテンツ属性(AOijl)は、前記文書コンテンツ(Oijl)への貢献者の識別子を備え、
(例えばステップd)において)予想されることは、少なくとも1つの公知の文書コンテンツ構造(Oijl)が認識されるべきであること、および、構造が認識された文書の存在下で、その文書が、インプリント(Eijl)の確立に伴われるその構造の特徴を示すデータム(702)と関連付けられるべきことであり、
(例えばステップa)において)予想されることは、クリーンアップ済みの文書コンテンツ(O′ijl)が、文書コンテンツ(Oijl)に基づいて、文書コンテンツ(Oijl)の構造の特徴を示す前記データムに依存する所定の規則の第1のセットに従って確立されるべきであるのに対し、一連の動作b)〜d)が、このようなクリーンアップ済みの文書要素(C′ijlk)に基づいて実行されることであり、
(例えばステップb)において)予想されることは、クリーンアップ済みの文書要素(C′ijlk)が、文書(Oijl)の構造の特徴を示すデータムに特に依存する所定の規則の第2のセットに従って、文書要素(Cijlk)から確立されるべきであるのに対し、一連の動作b)〜d)が、こうして取得したクリーンアップ済みの文書要素(C′ijlk)に基づいて実行されることである。
この方法では、文書コンテンツの数に対応する多数のインプリントを取得することが可能になる。
これらのインプリントを寄せ集めるために、以下のとおりに工程が完成されることもある:
所与の署名値(Niq)に対し、時間基準識別子(TPi、jqp、lqp)のリストが、その署名値(Niq)を含むインプリント(Ei、jqp、lqp)用に決定され、
統合された時間基準(Viq)が署名値(Niq)毎に確立され、リスト上で最も古い時間基準(Tpi、jqp、lqp)の識別子を検索する(または、リスト上で最新の時間基準(Tpi、jqp、lpq)を検索するように別の時間基準を適用する)。
したがって、所与の署名に対して、その初期の時間基準を統合済み時間基準(Viq)で補う(または交換する)ことが可能になる。
その部分に対して、各文書コンテンツは時間基準識別子(TPijl)のリストを設けられており、このリストは文書コンテンツ(Oijl)の全ての時間基準(TPijl)を含んだグローバルリストと比較され得る。1つの文書コンテンツに対して、1つ以上の時間期間がここから取られている。このような時間期間は、時間基準(TPijl)のセットに関して連続した時間基準を備えている。それは、所与の署名を有する文書要素が文書コンテンツ内に継続的に存在している期間を表している。
時間基準は、多様な方法で、恐らくは入力によって定義されるかもしれない。
文書コンテンツのバージョンを管理するツールを使用し、このバージョン管理ツールからメモリに、文書コンテンツ用の時間基準(TPijl)を記憶することが好ましい。
同様に、貢献者識別子は多様な方法で、恐らくは入力によって定義されるかもしれない。やはりここでも、バージョン管理ツールを使用して、このバージョン管理ツールからメモリに、文書コンテンツ(Oijl)毎に少なくとも1つの貢献者識別子を記憶することが好ましい。
当然ながら、バージョン管理ツールは、単一の文書として地球規模で閲覧されるもののために、その開発または寿命の様々な局面において、多様なコンテンツを有する多様なバージョンを表示することもある。バージョン管理ツールはさらにサブバージョンまたは「状態」を表示してもよい。バージョン管理ツールは、複数の文書コンテンツ(Oijl)から開始し、互いに異なる文書コンテンツ(Oijl)のサブセットを確立してもよい。その場合には、前記文書コンテンツ(Oijl)のサブセットに基づいて、動作a)〜c)を1回だけ適用すれば十分である。次に、動作d)の前に全ての有益な署名が計算される。
理解されていることは、この工程が各署名値とその時間基準との間の通信の記憶を考察することである。また、署名値および時間基準が始まった文書コンテンツ(Oijl)のセットへのリンク例えば識別子を記憶することは有効かもしれない。したがって、所与の1つの時間署名に対し、この署名を含んだ文書コンテンツのセットが存在する。
文書コンテンツを寄せ集めることは共通部分を明らかにするかもしれない。原則的に、これらの文書コンテンツは同一のソースを有し、このソースは従属性を調べることで検索され得る。これを行うために:
α)第1の識別子(1)と第2の識別子(2)をそれぞれ有する第1のセットのインプリント(E′1)と第2のセットのインプリント(E′2)が比較され;第1のセットのインプリント(E′1)は、第1の識別子(1)に対応する署名値(Niq)および統合済み時間基準(Viq)を備え;また、第2のセットのインプリント(E′2)は、前記第2の識別子(2)に対応する署名値(N2q′)およびその統合済み時間基準(V2q′)を備え、
β)成功した比較のセットは、従属性のサブセット(E″12)を提供し;それらに共通する署名値(N1q:N2q′)毎に、このサブセットは、前記第1および第2のセットのインプリント用に、対応する統合済み時間基準(V1q;V2q′)を含み、
γ)各従属性の方向または方位は定義(または事前定義)され;最も普通の方法は、最も早い時間で起源または「ソース」を配置し、その後の時間に宛先または「ターゲット」(PDm)を配置することである。一般に、これは、統合済み時間基準(V1q、V2q′)に基づいて適用された所定の規則のセットを意味する。インプリントが共通の署名値(N1q)を有する第1の識別子(1)と第2の識別子(2)を見ると、この方位付け動作によって第1および第2の識別子(1;2)の一方を起源または「ソース」識別子(POm)として、他方の識別子(2;1)を宛先または「ターゲット」識別子(PDm)として適格にすることが可能になる。
文書コンテンツは、分解(細分化)のために、文脈と、選択した粒度(精度)とに依存して、少数の要素または非常に多数の要素に細分化されてもよい。微細の粒度、つまり多数の(文書)要素を使って、従属性(方位付けの有無)のサブセット(E″12)はまた非常に多数の要素からなる。こうして、「集合体」と呼ばれ得る同一の状況でその要素を検索することが有益となる。サブセット(E′12)は従属性の方位に従って分割されてもよいし、その後に、以下の分割規準のうち少なくとも1つの反復(遂次)適用に基づいて、従属性集合体(De12u;De21u)がそれぞれ作成されるかもしれない:
まだグループ化されていない最も古い(1304)共通署名(Nm)を取り、それを、この最も古い(1306)共通署名(Nm)よりも早い「ソース」側の時間基準から生じた他の共通署名(Nm)と共にグループ化し、
所与のグループから、まだグループ化されていない共通の署名のうち最も古い署名に「ターゲット」時間基準が続く共通の署名を取り出し(1310)、
反復は、ループ基準の所与の最後が確認されるまで実行される。
また、Nセットのインプリント(N個の文書コンテンツ)に関して、マルチ文書比較が実行され得る。この場合には:
N個の文書(またはこれらのいくつか)に関して、可能な1〜1個の比較が全て実行される。合計N(N−1)個の可能な比較が存在する。これにより、複数の従属性サブセットが提供され、結合時にそのサブセットが1つの従属性セットを作り出す:
従属性が前述したように方位付けられ;
これらの従属性サブセット内(または従属性セット内)の署名毎に、当該署名用の「ターゲット」時間基準が、当該署名に対して、Nセットのインプリントの中で最も古い状態に後続する従属性が除去される。
この比較は、高次で、例えば、先に定義されたN個の文書セット間で実行されてもよい。
権利の管理のような応用では、この工程は次のステップを含んでもよい:
インプリントおよび任意の従属性から検証された日付入り貢献者リストを確立する。
また、本発明は、実行可能なプログラム、即ち、既述のコンピュータ装置を活発にでき、および/または、対応する工程を実現できる作成済みのプログラムを包含してもよい。この種の実行可能なプログラムは、任意のコンピュータ読み出し可能な「媒体」(サポート)において利用可能とされてもよい。「コンピュータ読み出し可能な媒体」という用語は、磁気的、光学的、および/または電子的であるデータを記憶するためのサポートと、アナログ信号またはデジタル信号のような伝送用の担体または伝達手段とを包括している。
本発明は、前述の実施の形態に限定されるものではなく、当業者によって考案されるかもしれない全ての変形を含んでいる。

Claims (26)

  1. 時間基準を有する文書のコンテンツを記憶するメモリを備える文書管理用のコンピュータベース装置であって、
    所与の規則に従って文書コンテンツを要素に細分化できる抽出装置(200)と、
    そのコンテンツの署名を戻すために文書要素を処理できる署名生成器(202)と、
    文書コンテンツに対して、当該文書コンテンツ用の時間基準と、その文書コンテンツを要素に変換するために前記抽出装置(200)を呼び出すことにより取得された署名の少なくともいくつかとを備えたインプリントを確立し、それから、こうして取得された前記要素に対して前記署名生成器(202)を確立できるインプリント生成器(signO())と、
    時間基準識別子のリストから時間選択の所定関数の結果を計算できるタイムクロックモジュール(dat())と、
    スーパーバイザー(110)と、を備え、前記スーパーバイザーは、
    少なくとも2つの文書コンテンツ上で前記インプリント生成器(signO())を動作させ、複数の署名を有する2つのインプリントを同時に生成するように、
    署名値毎に、前記タイムクロックモジュール(dat())を、毎回同じ署名値を含む前記インプリントの少なくともいくつかの時間基準識別子のリストと共に繰り返し呼び出し、これにより、署名値毎に統合済み時間基準を提供するように、
    各署名値とその統合済み時間基準との間の通信を記憶するように、
    配列されていることを特徴とする、コンピュータベース装置。
  2. 前記タイムクロックモジュールによって計算された所定の時間選択の関数は、結果の値として、前記リスト上で最も古い時間基準識別子と、前記リスト上で最新の時間基準識別子との中から選択した少なくとも1つを決定するように配列されていることを特徴とする、請求項1に記載の装置。
  3. 文書要素に関する要素属性を戻すために、その文書要素を処理できるコンテンツクオリファイア(eval())もまた備えていることを特徴とする、請求項1または2に記載の装置。
  4. 前記インプリント生成器(signO())は、文書コンテンツに対し、前記抽出装置(200)から得た要素のために前記コンテンツ識別子(eval())を呼び出すことにより文書コンテンツの要素属性の少なくともいくつかの識別子をも備えたインプリントを確立することができ、
    時間選択の前記所定の関数は、時間選択に対して、要素属性識別子を考慮するように配列されており、
    前記スーパーバイザー(110)は、毎回、前記タイムクロックモジュール(dat())を、前記同一の署名値と、関連する要素属性識別子とを含んだ前記インプリントの時間基準識別子のリストと共に繰り返し呼び出すように配列されていることを特徴とする、請求項3に記載の装置。
  5. 前記インプリント生成器は、文書コンテンツに対し、この文書コンテンツの前記時間基準を備えたインプリントと、要素属性が特定の状況を検証する文書要素の署名とを確立するように配列されていることを特徴とする、請求項3または4に記載の装置。
  6. 前記コンテンツクオリファイア(eval())は、文書要素のコンテンツに関する所定の統計タイプの関数の結果値を要素属性として戻すために、文書要素を処理できることを特徴とする、請求項3〜5のいずれか一項に記載の装置。
  7. それぞれが少なくとも1つの文書コンテンツ属性をも有する文書の少なくとも幾つかにおいて、
    前記インプリント生成器(sign())は、文書コンテンツに対して、その文書コンテンツの前記属性の識別子をも備えたインプリントを確立できることを特徴とする、請求項1〜6のいずれか一項に記載の装置。
  8. 文書コンテンツの属性の識別子のリストから、所定の文書属性選択関数の前記結果の値を、時間基準識別子のリストの関数として計算できる認証モジュール(aut())をさらに備えていることを特徴とする、請求項7に記載の装置。
  9. 前記スーパーバイザー(110)は、
    毎回、同一の署名値を含む前記インプリントの文書コンテンツの属性の前記識別子のリストと共に、認証モジュール(aut())を繰り返し呼び出し、これにより、署名値毎に統合済み文書コンテンツ属性データムを提供するように、
    各署名値と、その統合済み文書コンテンツ属性データムとの間の通信を記憶するように配列されていることを特徴とする、請求項8に記載の装置。
  10. 前記文書コンテンツ属性は、前記文書コンテンツへの貢献者の識別子を備えていることを特徴とする、請求項7〜9のいずれか一項に記載の装置。
  11. 文書コンテンツの少なくとも1つの公知の構造を認識できるとともに、その構造が認識された文書の存在下で、その特徴を示すデータム(702)をその文書と関連付けできるクオリファイアモジュール(type())をさらに備え、
    前記インプリント生成器(signO())は、前記クオリファイアモジュール(type())を呼び出して前記インプリントを確立するように配列されていることを特徴とする、請求項1〜10のいずれか一項に記載の装置。
  12. 前記文書のコンテンツの構造の特徴を示す前記データムに依存する第1の所定の規則のセットに従ってクリーンアップされた文書コンテンツを、文書コンテンツから確立するように配列された第1のフィルタリングモジュール(filterA())をさらに備え、
    前記インプリント生成器(signO())は、クリーンアップ済みの文書コンテンツを得るために、1つの文書に対して、前記第1のフィルタリングモジュール(filterA())を呼び出すように、および、このクリーンアップ済みの文書コンテンツを要素に変換するために前記抽出装置(200)を呼び出すことによってインプリントを確立するように配列され、それから、要素用の前記署名生成器(202)はこのように取得されていることを特徴とする、請求項11に記載の装置。
  13. 前記文書構造の特徴を示すデータムに依存し第2の所定の規則のセットに従って、文書要素から、クリーンアップされた文書要素を確立するように配列された第2のフィルタリングモジュール(filterB())をさらに備え、
    前記インプリント生成器(signO())は、前記抽出装置(200)を呼び出すことによって取得された前記文書要素からクリーンアップ済みの文書要素を取得するために、1つの文書に対して、前記第2のフィルタリングモジュール(filterB())を呼び出すように配列され、これにより、これらのクリーンアップ済みの文書要素のための前記署名生成器(202)はこのように取得されていることを特徴とする、請求項11または12に記載の装置。
  14. 前記スーパーバイザー(110)は、統合済み時間基準を署名値毎に供給するために、毎回、同一の署名値を含んだ前記インプリントの全ての時間基準識別子のリストと共に、前記タイムクロックモジュール(dat())を繰り返し呼び出すように配列されていることを特徴とする、請求項1〜13のいずれか一項に記載の装置。
  15. 前記スーパーバイザー(110)は、それぞれの署名値用の新規に統合された時間基準を供給するために、毎回署名値とその書名値用の統合済み時間基準とを含んだインプリントの時間基準識別子と共に、署名値毎に、前記タイムクロックモジュール(dat())を繰り返し呼び出すように配列されていることを特徴とする、請求項1〜14のいずれか一項に記載の装置。
  16. 前記タイムクロックモジュール(dat())は、時間基準識別子の前記リストを、前記文書コンテンツの時間基準のセットと比較するように、この比較から、結果の値として、前記リスト内の時間期間の識別子を推定するように配列されており、それぞれの時間期間は時間基準のセットに関連する連続した時間基準から作成されていることを特徴とする、請求項1〜15のいずれか一項に記載の装置。
  17. 前記コンピュータベース装置は、文書コンテンツのバージョンを管理するツールと対話するように配列されており、前記メモリは、前記バージョン管理ツールから前記文書コンテンツ用の時間基準を受信することを特徴とする、請求項1〜16のいずれか一項に記載の装置。
  18. 文書コンテンツのバージョンを管理する前記ツールもまた貢献者識別子を前記文書コンテンツの各々と関連付けでき、前記メモリもまたこの種の貢献者識別子を受信することを特徴とする、請求項17に記載の装置。
  19. 前記スーパーバイザー(110)は、
    文書コンテンツのバージョンを管理するツールと対話して、複数の文書コンテンツから互いに異なった文書コンテンツのサブセットを確立するように配列され、
    複数の署名を共に有するインプリントを得るために、前記文書コンテンツのサブセットの各々の上で前記インプリント生成器(signO())を動作するように配列され、
    前記サブセットから取得したインプリントの時間識別子と、前記署名値が始まった前記サブセットの前記文書コンテンツと同一である前記文書コンテンツの各々の時間識別子とを同時に備えるリストを使って、前記サブセット用に取得した署名値毎に、タイムクロックモジュール(dat())を繰り返し呼び出すように配列されていることを特徴とする、請求項17または18に記載の装置。
  20. 前記スーパーバイザー(110)は、
    各署名値とその時間基準との間での通信に加えて、前記署名値および前記時間基準が始まった文書コンテンツのセットの識別子をも記憶するように配列されていることを特徴とする、請求項1〜20のいずれか一項に記載の装置。
  21. 第1の識別子と第2の識別子をそれぞれ有する第1のセットのインプリントと第2のセットのインプリントを比較でき、前記第1のセットのインプリントは、前記第1の識別子に対応する署名値およびそれらの統合済み時間基準を備え、前記第2のセットのインプリントは、前記第2の識別子に対応する署名値およびその統合済み時間基準を備え、成功した比較のセットは、サブセットの従属性に、それに共通の署名値毎に前記第1および第2のセットのインプリント用に対応する統合済み時間基準を提供するインプリント比較装置(comp())と、
    所定の規則のセットに従って、前記統合済み時間基準に基づいて、共通の署名値に対して、第1および第2の識別子のうち一方を元または「ソース」識別子として、他方の識別子を宛先または「ターゲット」識別子として修飾できる方位付けモジュール(dir())とをさらに備え、
    前記インプリント比較装置(comp())は、前記ソースとターゲットとの差異を提案するために、対応する統合済み時間基準を備える従属性の前記サブセットの署名値毎に、前記方位モジュール(dir())を呼び出しできることを特徴とする、請求項20に記載の装置。
  22. 前記方位モジュール(dir())は、ソース文書コンテンツのセットの識別子として、
    最も古い統合済み時間基準に対応する前記識別子を確立するように配列されていることを特徴とする、請求項21に記載の装置。
  23. 前記第1および第2のセットのインプリントの間の前記従属性のサブセットを分割し、前記署名の起源の識別子に従って前記サブセットを細分化するように、次に、以下の分割基準の少なくとも1つの反復適用に基づいて、従属性の集合体をそれぞれ制作するように配列されたモジュール(agrDep1())をさらに備え、
    未だグループ化されていない最も古い共通署名(1304)を取り、それを、この最も古い共通署名(1306)よりも早い「ソース」側で時間基準から生じる他の共通署名と共にグループ化し、
    「ターゲット」時間基準がまだグループ化されていない前記共通署名の中で最も古い署名より後である共通署名を、所与のグループから除去し(1310)、
    所与のエンドオブループ基準が検証されるまで前記反復が継続することを特徴とする、請求項22に記載の装置。
  24. Nセットのインプリントを受信でき、次に、前記インプリントのセットのうち少なくとも一つをその他と比較することにより、複数の従属性サブセットを提供する前記署名の少なくとも幾つかに対して、1つのインプリントのセットから別のセットへ方位付け比較を実行でき、それから、これらの従属性サブセット内の署名毎に、当該署名用の「ターゲット」時間基準が、当該署名用の前記Nセットのインプリントのうち最も古い日付よりも後である従属性を除去できるマルチ文書比較装置をさらに備えていることを特徴とする、請求項21〜23のいずれか一項に記載の装置。
  25. 前記インプリントおよび任意の従属性に基づいて検証される貢献者の日付付きリストを作成できるグローバル文書管理モジュール(150)を備えることを特徴とする、請求項21〜24のいずれか一項に記載の装置。
  26. 前記文書コンテンツは、所与の文書、文書状態、文書バージョン、および、いくつかの文書バージョンを含む可能性のある文書のセットの中から選択した少なくとも2つのカテゴリに従って識別できることを特徴とする、請求項1〜25のいずれか一項に記載の装置。
JP2009533901A 2006-10-27 2007-10-25 デジタル文書を管理するコンピュータベースツール Active JP5064510B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0609464A FR2907934B1 (fr) 2006-10-27 2006-10-27 Outil informatique de gestion de documents numeriques
FR06/09464 2006-10-27
PCT/FR2007/001766 WO2008059124A2 (fr) 2006-10-27 2007-10-25 Outil informatique de gestion de documents numeriques

Publications (2)

Publication Number Publication Date
JP2010507852A JP2010507852A (ja) 2010-03-11
JP5064510B2 true JP5064510B2 (ja) 2012-10-31

Family

ID=38255266

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009533901A Active JP5064510B2 (ja) 2006-10-27 2007-10-25 デジタル文書を管理するコンピュータベースツール

Country Status (9)

Country Link
US (1) US8566369B2 (ja)
EP (1) EP2084644B1 (ja)
JP (1) JP5064510B2 (ja)
CN (1) CN101568928B (ja)
BR (1) BRPI0718427A2 (ja)
CA (1) CA2667111C (ja)
ES (1) ES2401727T3 (ja)
FR (1) FR2907934B1 (ja)
WO (1) WO2008059124A2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009097459A1 (en) * 2008-01-29 2009-08-06 Educational Testing Service System and method for disambiguating the effect of text document length on vector-based similarit scores
WO2009146536A1 (en) * 2008-06-02 2009-12-10 Corporation De L'ecole Polytechnique De Montreal File presence detection and monitoring
US10303722B2 (en) 2009-05-05 2019-05-28 Oracle America, Inc. System and method for content selection for web page indexing
US20100287152A1 (en) 2009-05-05 2010-11-11 Paul A. Lipari System, method and computer readable medium for web crawling
US8321382B2 (en) * 2010-03-25 2012-11-27 Xerox Corporation Validating aggregate documents
JP2012175552A (ja) * 2011-02-23 2012-09-10 Seiko Instruments Inc 情報処理装置、及び情報処理プログラム
CA2741212C (en) 2011-05-27 2020-12-08 Ibm Canada Limited - Ibm Canada Limitee Automated self-service user support based on ontology analysis
US8849776B2 (en) * 2011-10-17 2014-09-30 Yahoo! Inc. Method and system for resolving data inconsistency
CA2767676C (en) * 2012-02-08 2022-03-01 Ibm Canada Limited - Ibm Canada Limitee Attribution using semantic analysis
FR3046688B1 (fr) * 2016-01-07 2018-01-12 Guillaume Rousseau Dispositif d'aide au referencement de documents numeriques
CN110968413A (zh) * 2018-09-28 2020-04-07 华为技术有限公司 一种数据管理方法、装置和服务器
US11354409B1 (en) * 2020-02-11 2022-06-07 Trend Micro Inc. Malware detection using locality sensitive hashing of API call sequences
US11537392B2 (en) * 2021-01-04 2022-12-27 Capital One Services, Llc Dynamic review of software updates after pull requests

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282698B1 (en) * 1998-02-09 2001-08-28 Lucent Technologies Inc. Detecting similarities in Java sources from bytecodes
CA2317139C (en) * 1999-09-01 2006-08-08 Nippon Telegraph And Telephone Corporation Folder type time stamping system and distributed time stamping system
US6658423B1 (en) * 2001-01-24 2003-12-02 Google, Inc. Detecting duplicate and near-duplicate files
JP2004260664A (ja) * 2003-02-27 2004-09-16 Nec Corp タイムスタンプ付与機能をもつxml署名生成システム,装置,方法およびプログラム
JP4257269B2 (ja) * 2004-07-13 2009-04-22 日本電気株式会社 メタデータ送信装置及びメタデータ受信装置
WO2006008847A1 (ja) * 2004-07-20 2006-01-26 Fujitsu Limited 電子文書管理システム
US7809695B2 (en) * 2004-08-23 2010-10-05 Thomson Reuters Global Resources Information retrieval systems with duplicate document detection and presentation functions
US7574742B2 (en) * 2004-11-15 2009-08-11 Industrial Technology Research Institute System and method of string matching for uniform data classification
US20070168671A1 (en) * 2006-01-16 2007-07-19 Fujitsu Limited Digital document management system, digital document management method, and digital document management program

Also Published As

Publication number Publication date
ES2401727T3 (es) 2013-04-24
CA2667111A1 (fr) 2008-05-22
US8566369B2 (en) 2013-10-22
CN101568928B (zh) 2013-07-31
US20100049760A1 (en) 2010-02-25
FR2907934A1 (fr) 2008-05-02
BRPI0718427A2 (pt) 2013-11-12
FR2907934B1 (fr) 2009-02-06
EP2084644B1 (fr) 2012-12-05
WO2008059124A3 (fr) 2008-11-06
CN101568928A (zh) 2009-10-28
JP2010507852A (ja) 2010-03-11
WO2008059124A2 (fr) 2008-05-22
EP2084644A2 (fr) 2009-08-05
CA2667111C (fr) 2016-01-05

Similar Documents

Publication Publication Date Title
JP5064510B2 (ja) デジタル文書を管理するコンピュータベースツール
CN109063421B (zh) 一种开源许可证合规性分析与冲突性检测方法
Prowell et al. Cleanroom software engineering: technology and process
JP5306360B2 (ja) データ記録を一致させるシステムの分析のための方法およびシステム
US8645332B1 (en) Systems and methods for capturing data refinement actions based on visualized search of information
US20100030795A1 (en) Maintaining referential integrity while masking
JP2000148461A (ja) ソフトウェアモデル及び既存のソ―スコ―ドを同期化させる方法及びその装置
CN110442847B (zh) 基于代码仓库过程管理的代码相似性检测方法及装置
Cheah et al. Provenance analysis: Towards quality provenance
CN110134663B (zh) 组织结构数据处理方法、装置、电子设备
US20080133455A1 (en) Method of processing data
US7159171B2 (en) Structured document management system, structured document management method, search device and search method
FI119160B (fi) Tietokannan hallintajärjestelmä
CN106777097B (zh) 一种元数据分层扩展时的合并方法
CN105824792A (zh) 文本比对方法和设备
US8359592B2 (en) Identifying groups and subgroups
Schlie et al. Incremental feature model synthesis for clone-and-own software systems in MATLAB/Simulink
CN114118944A (zh) 一种取证实验室分级管理方法、终端设备及存储介质
CN107402920A (zh) 确定关系数据库表关联复杂度的方法和装置
CN112381229B (zh) 一种基于三维数模的知识集成系统及方法
Silva et al. Assisting data warehousing populating processes design through modelling using coloured petri nets
Hara et al. Incremental data fusion based on provenance information
Santangelo Rise of the machines
CN114491195A (zh) 特征数据识别方法及装置、电子设备、存储介质
CN114416735A (zh) 数据存储方法、查询方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120620

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120717

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120808

R150 Certificate of patent or registration of utility model

Ref document number: 5064510

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250