デジタルオブジェクト(例えば、文書が開示されている)に対応するメタデータエントリーのセット中の情報を使用する方法と装置である。このセットはここで文書ログと呼ぶ。文書ログはメタデータのログエントリーを有する。メタデータは、ユーザまたは自動化システムにより入力された短いテキストメッセージ、2進フォーマットのデータ、及び/または任意的なリンクを有する。文書ログは配信されてもよい。一実施形態では、文書ログはXMLとして配信される。
文書ログとそれに含まれる情報を使用するアプリケーションは多数ある。かかるアプリケーションは、ワークフローの検出、ワークフローの調整とトラッキング、ログコンテントを用いたデジタルオブジェクト(例えば文書)に関する知識の洗練、モバイル装置コミュニケーション等が含まれるが、これに限定されるものではない。
ウェブログのクライアント/サーバフレームワークとは異なり、文書ログの配信と処理は、ネットワークで接続されたノード(例えばユニット、装置等)の間に分散されている。プロセスは任意的にスケールすることができる。ネットワークでつながれた環境では、各ノードはログエントリーキャッシングと同期、及び他のノードとエントリーを交換する機能を最低限提供する。また、ユーザインタフェースノード(例えばクライアント)は、エントリーとその対象の文書のビューを提供し、新しいエントリー及び/またはそれからのリンクを追加するメカニズムを提供する。
一実施形態では、所与の文書ログまたはログのセットに対して、単一のノードを指定して、ログエントリーの同期を取る。この「同期」ノードの役割は、分散作業を同期させて、ノードがログエントリーを入力する順序と合うようにすることである。同期ノードはサーバであってもよい。特に、同期ノードは、各文書ログの標準的なエントリー順序を提供する。他の実施形態では、ウェブサーバを介して単一のワークグループまたはグローバルに作用することにより、かかる同期をローカルで取る。同じ同期ノードを使用するよう合意した2つのノードは、同じエントリー順序を有する。
以下の説明では、詳細に記載して本発明をより詳しく説明する。しかし、言うまでもなく、本発明はこれらの詳細がなくても実施することができる。他の場合では、詳細事項ではなくブロック図に周知の構造と機器を示すが、これは本発明が不明瞭になることを避けるためである。
以下の詳細な説明の一部は、コンピュータメモリ中のデータビットに対する操作のアルゴリズムと記号による表現により表されている。これらのアルゴリズムによる説明と表現は、データ処理技術の当業者が、自分の仕事内容を他の分野の人に最も効果的に伝える手段である。ここで、また一般的に、アルゴリズムとは、所望の結果に導く自己矛盾のないステップのシーケンスである。このステップは、物理量の物理的操作を要するステップである。通常、必ずしも必要ではないが、この物理量には、記憶し、伝達し、結合し、比較し、操作できる電気的または磁気的信号の形をとる。主に一般的な使用のために、これらの信号をビット、値、要素、記号、文字、式、数字等で表すと便利な時がある。
しかし、これらの用語や類似の用語は適当な物理量と関連しているべきであり、これらの物理量に付された便利なラベルに過ぎないことに留意すべきである。特に断らなければ、以下の説明から明らかなように、言うまでもなく、この明細書全体において、「処理」、「算出」、「計算」、「判断」、「表示」等の用語を用いた説明は、コンピュータシステム、類似の電子的計算機器の動作やプロセスであって、コンピュータシステムのレジスタやメモリ内の物理的(電子的)量として表されたデータを操作し、コンピュータシステムメモリやレジスタ、その他の情報記憶装置、伝送機器、表示機器内の物理量として同様に表された他のデータに変換するものの動作や処理を指す。
本発明は、また、これらの動作を実行する装置にも関する。この装置は、必要な目的のために特に構成されたものでもよく、コンピュータ中に記憶されたコンピュータプログラムにより選択的に起動または再構成された汎用コンピュータを有していてもよい。かかるコンピュータプログラムは、コンピュータによる読み取りが可能な記憶媒体に記憶することができる。このような記憶媒体には、例えば、フロッピー(登録商標)ディスク、光ディスク、CD−ROM、光磁気ディスク等のディスク、読出専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード、光カード、その他の電子的命令の記憶に適した媒体であってコンピュータのシステムバスに結合されたものが含まれるが、これらには限定されない。
ここで説明するアルゴリズムとディスプレイは、特定のコンピュータその他の装置に本質的に関係するものではない。いろいろな汎用システムをここでの教示に従ったプログラムで用いることができるし、必要な方法ステップを実行することに特化した装置を構成しても便利である。これらのシステムに必要な構成を以下に示す。また、本発明は特定のプログラミング言語により記述されるものではない。言うまでもなく、いろいろなプログラミング言語を用いてここに説明する本発明の教示を実施できる。
機械読み取り可能媒体には、機械により読み取り可能な形式で情報を記憶または送信するメカニズムであれば、どんなものも含まれる。例えば、機械読み取り可能媒体には、読出専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、伝搬信号(電気的・光学的・音響的その他の形式を含み、例えば搬送波・赤外線信号・デジタル信号等である)等が含まれる。
一般的な文書ログ
ログ(例えば文書ログ)は、メタデータの1つ以上のセットを有するデジタルオブジェクトにより構成される。デジタルオブジェクトは、バイトシーケンスとして表される。デジタルオブジェクトは文書でもよく、メタデータはその文書に係るコメントのセットに対応していてもよい。このように、各文書には、その文書に係るコメントのセットがある。コメントは、一般的にはテキストストリングで構成され、文書自体であってもよく、任意的なバイトストリングにより構成されていてもよい。コメントは簡単なテキストエントリーであって他の文書を参照する、誰かユーザまたは何かの装置により生成されてものであってもよい。テクニカルな論文の場合、コメントのセットはレビューした人々からのフィードバックを表す。写真(例えばJPEGファイル)の場合、コメントのセットには、誕生バーティ等のその写真に写っているイベントに関する話が含まれていてもよい。患者チャートの場合、コメントのセットには、その患者との個別のアポイントメントまたは訪問についての記載が含まれる。
(コンフリクトなしに)文書に係るコメントのリストを交換及び結合する方法をここで説明する。
一実施形態では、文書ログは、「アンカー」文書とエントリーリストを指定した簡単なXMLフォーマットを用いて表される。例えば、シンプルシンジケート(RSS)フォーマット等のフォーマットは、同じ目的に機能するように容易に適応させることができる。
一実施形態では、交換メカニズムを用いて、2つのノードがエントリーのリストを交換できるようにする。一実施形態では、ノードはHTTP GETメソッドを用いて、文書ログに対応するXMLファイルを読み出し、HTTP POSTメソッドを用いて、ノードにXMLファイルまたはエントリーを有するストリングを送る。ここでの目的のため、GETは、HTTPの一部で使用されようがされまいが、ロケータを関連するコンテントを読み出す動作を指す。あるいは、単純なファイルコピー動作やファイル共有システムを含むその他の交換メカニズムを使用することもできる。
ノードには、ユーザが文書ログエントリーを見て追加できるようにするユーザインターフェイスを含んでいてもよい。多数のユーザインターフェイスが文書ログを見て追加するために使用できる。ユーザインターフェイスの例を図1に示した。図1を参照して、アンカー文書101が右側に表示され、文書ログエントリー102が左側に表示されている。左下にはテキストボックス103があり、ユーザが新しいエントリーを入力することができる。
図1は、文書ログを見るプロトタイプのユーザインターフェイスを示している。この実施例では、文書は画像(例えば患者の画像)であって、エントリーはこの患者に関する情報に対応する。これらのエントリーは、他の文書(例えば、アポイントメントまたは処置結果等)と関連ログへのリンクを含む。このように、図1のユーザインターフェイスは、患者情報をトラッキングするための仮定的使用を容易にする。図1の右側には文書があり、この場合患者の写真である。ログエントリー102は、患者と関連するエントリーである。これらのエントリーの一部は、オフィススタッフ、内科医、または患者自身により手作業でタイプインされ、他のエントリーは、スケジューリングシステムや放射線画像化機等の関連システムにより自動的に生成される。文書ログ等の各エントリーでは、他の文書へのリンクがエントリーに含まれてもよい。関連文書の小さなサムネイル104がエントリーの右側に示されている。
一実施形態では、カーソル下の「アクティブな」コメントは魚眼効果で拡大され、単一のリスト内で多数のコメントを素早くブラウズできるようになっている。ユーザインターフェイスの一実施例で、マウスカーソル下のエントリー105は容易に見られるように拡大される。ここに示した実施例では、ハイライトされたエントリーは、本技術分野で周知のやり方で、機械により自動的に生成される。図示した文書ログの識別子は、この文書ログを印刷したものにあるバーコードその他のメカニズムを使用して、機械に入力してもよい。元の文書ログに自動的に入力されたアイテムには、画像化装置により自動的に生成された結果の画像が含まれてもよい。いずれかのエントリー102をクリックすると、そのエントリーに付随する文書ログに行く。関連文書をポイントするリンクに係わるコメントをクリックすると、文書とその参照文書に関連するログに飛ぶ。図2は、図1中のハイライトされたコメントにより参照された放射線画像に係わるログのビューを示す図である。図2を参照して、X線装置により自動的に作成された文書とその文書に関連するコメントが示されている。
場合によっては、参照された文書に関連するログは、リンクを含む元のログを逆にポイントするエントリーを有するが、多くの場合はそうではない。このプロトタイプビュアーの上部にあるナビゲーションツールは、標準的なウェブブラウザと同様の前進後退機能を提供する。
画像に加えて、文書タイプには、文書処理ファイル、フラッシュペーパー、エクセルファイル、テキスト文書、その他のタイプのデータが含まれてもよい。この現行システムでは、どのファイル(または個別にアドレス可能なユニット)を「文書」として使用することもできる。
ロケーションとしての文書
概念的には、文書ログは仮想空間すなわち(ファイルの)階層を表す。空間の原点である「ルート」ノードは文書自体により決まる。ディレクトリ名を用いて仮想空間のロケーションを指定することもできる。しかし、一実施形態では、ディレクトリ名を用いてロケーションを指定するのではなく、文書自体のハッシュ値を用いて仮想空間すなわちファイル階層上の文書とコメントのロケーションを指示する。例えば、/A/Cは、文書(A=SHA1(A)となるa)上のコメント(C=SHA1(c)となるc)を表し、ここでSHA1は任意のバイトシーケンスを固定サイズのシーケンスにマップするハッシュ関数である。すなわち、文字Aを用いてオブジェクトaのハッシュを示す、すなわちA=SHA1(a)であり、ここでAはバイトのシーケンスを表す。例えば、ストリング「This is a character string」は(16進表示を用いて)「97d981dad06b03622cbf8e1a5642724cbcae64f8」に写される。
この表示に関連する記憶は標準のディレクトリ構造であってもよい。例えば、Aはディレクトリの名前であり、Cはaに関するコメントを含むファイルの名前である。ハッシュ値を主キーとして用いるデータベース等の他の記憶メカニズムは、同様にうまく機能し、どのノードがかかる記憶メカニズムを使用してもよい。aの値がパスまたはユニフォームリソースロケータ(URL)と解釈できるストリングである混乱しやすい場合がある。a=“http://foo.com/path/to/file.ext”である場合、cがロケーションに関するコメントであるか、その内容が変化するウェブページに関するコメントであるか、特定の時間のそのウェブページの内容に関するコメントであるかどうかは明確ではない。後者の場合、参照ストリングのハッシュをアンカーとして使用するより、アンカー文書として(もしあれば)コンテンツのハッシュを使用する方がより安全である。
aがストリングであり有効なURLである場合、個々のノードを選択してストリングに関するコメントと、そのURLから取得した「既知の」コンテントに関するコメントを結合する。また、慣例により、aの文書ログはaから得られたコンテンツの各々のエントリーを、このコンテンツと関連する文書ログへのポインタとともに含む。
ここでは説明を目的として、一実施形態において、文書は1つのバイトシーケンスと同一の不変のオブジェクトであり、文書のハッシュ値はその文書を参照するために使用される。文書のバージョンが異なればハッシュ値も異なるから、異なるバージョンは異なる文書であると見なされる。(D2が文書D1の新しいバージョンである場合、変換により、文書D1のログはD2をポイントするエントリーを有し、D2のログはD1を逆にポイントするエントリーを有する。)
より具体的に、ハッシュ関数とディレクトリ構造の使用に関して、例えば、JPEGファイル、ワード文書、ポストスクリプト文書、テキストストリング等であるauは、オブジェクトaのロケーション(例えばhttp://www.server.com/path/a.jpgまたはfile:///path/to/a.jpg等のURL)を示す。
a=GET(au)
(aはauを読み出した結果である。)
AuをSHA1(GET(au))=Aであるロケーションauの集合とする。
Auの各要素は、デジタルオブジェクトを返すロケーション、すなわちaのストリング表示に対応している。
新しい「仮想的」SHA1プロトコルを:SHA1://host.name/A/B/Cと定義する。これはA,B,Cの間の関係とそれに対応する値a,b,cを表す。値bはaに関するコメント(または文書ログエントリー)であり、一方cはbに関するコメントである。
いずれかのURLを用いてGET(SHA1://host.name/A/B/C)がうまくいくと、バイトストリングとしてコンテントが返される。他のプロトコルと異なり、このコンテントはcであり、どのホストとも同一ではないが、変化しない。言い換えると、SHA1(GET(SHA1://.../C))がcと等しくなければエラーである。よって、ノードがcのコピーを有する場合、そのノードはコミュニケーションをしてGET(SHA1://.../C)を返す必要はない(クライアントはSHA1(c)を計算し、結果とCをキーとして使用するルックアップテーブルを記憶すると仮定する)。
同一の画像ファイルをいくつかの場所に置いて、同じコメントをいくつかの文書に関係づけてもよい。cがbに関するコメントであるとすると、SHA1:///A/B/CとSHA1:///B/Cの両方が有効なURLである。コメントcは文書Xに関するコメントであってもよい。この場合、SHA1:///X/Cも有効である。ここで有効とは、誰かまたはいずれかのプロセスが実際にcを文書xとbに関するコメントとして付け加えたことを言う。
文書ログリスト
慣例により、後続のスラッシュを用いて、文書に関連するコメントのリストを示す。一実施形態において、GET(SHA1://host.com/A/)は、文書aに関するコメントのリストをhost.comから返す。同様に、SHA1://foo.com/A/はホストfoo.comのリストである。/A/はaに関するローカルで知られているコメントである。SHA1://host.com/A/C/は、host.comのコメントaに関するコメントのリストを指す。
H/A/Cのルックアップを実行するアルゴリズム例は次の通りである。
a)Cのローカル記憶をチェックする(記憶内容はハッシュテーブル、データベース、ファイルディレクトリ等であってもよい)
b)あれば、関連値(例えばコンテント)を求めて返す(セットC/がルックアップされた場合、関連セットを結果に追加して、(任意的に)Aのローカル記憶のチェックを続ける。見つかった場合、コメントに関する関連セットを求める)。
c)ハッシュ値をコメントと比較する
d)いずれかのコメントがハッシュ値Cを有する場合、そのコメントを返す
e)ドメイン名H(URLに対応するストリングのハッシュ値であってもよい)をルックアップする
f)A/Cと伴にGET要求をHに送る
g)結果を返す(有効なハッシュを任意的にチェックする)
h)その要求を事前設定したサーバに送る(サーバはAまたはaを求めるため前述のロケーションにあることに注意せよ)
i)HがaURLのハッシュhである場合、通常のGET要求にそのURLを使用する。そのGET要求によりaが返される
h/、h.xml、またはhの同様の標準的変形をクライアントでコメントリスト(例えばXMLファイル)のサーバへの要求として使用できる。このコメントリストを用いてC(例えば、cがそのファイルのエントリーの1つである場合)を計算することができる。
クライアントはAをu1とu2にマッピングしたリストも保持している。u1はクライアントがa(またはaに基づく情報)を取得したロケーションのセットであり、u2はa(例えばXMLファイル)に関するコメントを含むロケーションである。別の実施形態では、クライアントは単にu2をルックアップし、関連するコメントセットを読み出し、Cの計算を試みる。
SHA1:及びHTTP:URLの間のマッピング
一実施形態では、クライアントはコンテントからロケーションへの独自のマッピングを定義して保持している。例えば、rがリコーイノベーションのホームページであるとする。この時、ruはhttp://www.rii.ricoh.com/であり、R=“c2c0bfe479dd6da1d58ec4d0c42c5c7c10a1acfe”である(これは「Welcome to RII」のハッシュ値であり、この例では、index.html=rの全コンテントである)。
この場合、クライアントは次のエントリーを有する内部テーブルを保持していてもよい。
ハッシュ値は同じ長さである必要はないことに留意せよ。特に、指示されたハッシュ値のビットが多ければ多いほど、その値は「安全」である。それ故、コンテントと識別子Iに基づいてここに説明したように、暗号キーKを使用して文書中の情報及び/またはそのログエントリーを暗号化する場合、KとIは同じアルゴリズムの出力の異なる部分であってもよく、異なるアルゴリズムの出力であってもよい。すなわち、Iはxのハッシュであり、KはIのハッシュである。同様に、Iは最初の80ビットであり、Kは同じハッシュ計算値のビット81−ビット160であってもよい。
Aの文書ログを記憶し、処理し、表示し、追加するノードまたはサーバがコンテントaにアクセス必要はないことに留意せよ。しかし、サーバの場合の慣例により、例えば、文書のコンテントのキャッシュまたはコピーを実際に有するcache.comは、http://cache.com/A等の文書の要求に応答してこれらのコンテントを提供することができ、http://cache.com/A/に応答してログエントリーのリストを提供することができる。この場合、同じ文書を参照するHTTP:及びSHA1:URLのパス成分は同じであってもよい。
個別のコメントを読み出すために、クライアントはhttp://cache.com/A/Cを要求してもよい(再度、cache.comはaにアクセスしなくてもcにアクセスして返してもよいことに留意せよ)。cがそのロケーションにより他の文書を指す場合(例えば、HREF=HTTP://foo.com/b.htmlでありbu=HTTP://foo.com/b.html)、クライアントはbu,からbを読み出し、Bを計算し、Bに関連する文書ログエントリーをGET(SHA1:///B/)を介してその位置を特定する。一実施形態では、デフォルトで、クライアントは、ランデブーポイント(同期サーバ)、ローカルキャッシュ、foo.com/b.html.xmlその他を含むいくつかの位置からのログエントリーをチェックして統合する。
もちろん、cは、SHA1:URL(例えばbu=SHA1:/B)によりそのリンクを指定する。この場合は、まだbまたはbuのHTTPバージョンを有していない場合、クライアントが実際のコンテントbをダウンロードするロケーションを特定するいくつかのメカニズムを使用する。
2つのノード間の同期
一実施形態では、個別のクライアントは、各文書のエントリーのローカルキャッシュを保持する。これらはハッシュテーブルに記憶される。ローカルキャッシュはいかなるメモリ空間でも記憶ロケーションであってもよい。一実施形態では、各ハッシュのエントリーは2つの部分からなる。第1の部分は、実際のコンテント自体及び/または(もしあれば)実際のコンテントへのポインタを含むストリングであり、第2の部分はこの文書に関するコメントに対応するハッシュ値のリストである。クライアントはエントリーリストの場所をチェックするように構成され得る。一実施形態では、デフォルトロケーションはランデブーポイントまたは同期サーバであり、定期的にチェックされる。例えば、ユーザが文書を見たときにいつもチェックされる。
クライアントが例えばGET動作の結果である追加エントリーを取得すると、そのエントリーはローカルキャッシュに追加され(コンテントがハッシュ値と等しいことを確認するためコンシステンシーチェックをしてもよい)、エントリーのローカルリストを更新して新しいエントリーを反映する。(同期サーバから取得したシーケンス番号等の情報を用いて、このリストをプレゼンテーションのために順序づける。)
交換システムの一実施形態では、ノードが対称であることに注意する。クライアントとサーバの間の違いは、クライアントは、GETを用いて通信を開始して、エントリーリストかリストを送るPOSTを読み出すマシンであることである。もちろん、異なるノード(特にサーバとして動作するもの)は、その設定が異なり、特に特定のノード(クライアント)からのエントリーを受け付けるかどうかについて異なる。
ノードは他のノード(他のクライアントまたはサーバ)との通信の経過を追い、「新しい」エントリーのみを他のノードに送る(POSTを介して、またはGETに応答して)。
別の交換プロトコルも使用することがあることにも注意する。例えば、同じ文書ログを示す2つのXMLファイルのコンテントをコピーして単一のファイルに添付する。
文書ログエントリーにいくつのXML表示を使用してもよい。
図3は、文書Aに係わるログを表すXMLファイルの例を示す図である。コンテント(「文書Aに関する最初のコメント」)に加えて、各エントリーはそのエントリーの発信者(originator)または他のノードにより割り当てられるいくつかの属性を有する。図3において、SEQ属性はランデブーポイントサーバにより割り当てられる。このXML文書自体は、Aと関連する文書ログのクエリーに応答して返される。慣例として、このクエリーは、//rp.com/A/の形である。ここで、“rp.com”はランデブーポイントのホスト名である。(他のサーバ/ホストは、このリストの自機バージョンを返す。ランデブーポイントにより与えられるシーケンス番号は「カノニカル」として指定される。)エントリーのHREF属性は、HTMLのアンカー¡a href=...¿<a href=…>タグのHREF属性と同様の他の文書へのリンクを指定する。同様に、SRCタグは、HTML IMGタグのSRC属性と類似しており、参照される文書を表すサムネイル画像の情報源を指定する。
他の可能性として、既存の非常にシンプルなシンジケーション(RSS)スキームを用いることである。RSSフィードのベース文書(アンカー)を特定するRSSの簡単な拡張により、ここで説明した使用が可能となる。あるいは、RSSを拡張するのではなく、RSSの既存のフィールドを使用してもよい。
コメントを結合することは問題ではない。コメントはそのハッシュ値により記憶されているからである。(テキスト)値に加えて、例えば、著者と日付をハッシュ値Cの計算に使用してもよい。
図4は、文書のランデブーポイントにエントリーを送るクライアントの設定を示す図である。図4を参照して、クライアントからランデブーポイントへのエントリーの提出を示す概略図を示した。いくつかのクライアントはランデブーポイントに直接エントリーをPOSTし、他のクライアントは中間ノードを介している。エントリーをそのハッシュ値により指示し、記憶しているので、いずれのノードもコンフリクトを心配せずに他のノードと直接エントリーを交換することができる。個々のノードは自分自信の順序付けをエントリーのシーケンスに割り当てることもできる。ランデブーポイントにより提供されるオーダリングは、慣例的に、カノニカルオーダリングとして扱われる。文書の元の作者は、最初の要素の¡doc..¿ルートまたはrp属性を指示することにより、その文書に関連するログエントリーのランデブーポイントまたは「ルート」を指示してもよい。しかし、文書ログは誰が作成してもよく、文書の作者に限定されないことに注意せよ。(文書の作成者は文書の最初のログエントリーを登録する最初の機会を有している。)他のノードは、文書要素中に指定されたルート属性を使用してもしなくてもよい。文書エントリーは、オフラインで作成して、そのエントリーを1つ以上のサービスと自動的に同期する。
ランデブーポイントから見えるエントリーの順序は、実際にそれが作成された順序とは異なるかもしれない(特に、作成時にクライアントがオフラインである場合)。また、中間ノードは他の複数のノードからのエントリーを集積して、提出(submit)する。
ランデブーポイントのサーバ側では、一実施形態では、シーケンス番号は受け取った順序で割り当てられる。ユーザ識別子(例えば、ポスティング権能)設定と確認は、幾つかある方法のどれかで処理することができる。これには、ユーザ名とパスワードの確認、IPアドレスのテスト、セッション識別子等が含まれる。暗号化コンテントの場合、ユーザは暗号化キーA(及び/またはコンテントa)を実際に知っていることを(暗号方法により)証明しなければならないとしてもよい。
ランデブーポイントとグローバル同期
上記の通り、上記のノードの構成は、分散化されたスケーラブルなピアツーピア構成での文書ログの交換においてよく機能する。コメントは、オフラインまたはオンラインで作成して、ローカルの交換を通じて解決され得る。
しかし、大きな問題が生じるのは、複数のクライアント間で作業の調整を試みる時である。クライアントは頻繁にエントリーの順序付けすなわちシーケンスについて合意する必要がある。同時に作成されたりコミュニケーションの時差があるので、エントリーをユニークに順序付けることは不可能であるかも知れない。それよりむしろ、各ノードが独自の順序付けをしてもよい。
一実施形態では、ランデブーポイント(RP.net)(RP.netは実際のドメイン名ではなく、単なる例として使用しているに過ぎない)としてここで参照したウェブサービスは、文書ログのグローバルな順序付けを提供するものである。POST(http://RP.net/A/C)等のPOST要求に応答して、RP.netは文書aとの関連でコメントcにシーケンス番号を割り当てる。GET要求に応答して、RP.netはGET(http://RP.net/A/)に対して既知のコメントのリストを返し、各コメントのシーケンス番号を指定する。
ルートドメイン名サーバ以外のサーバがDNS機能を提供できるのと同じやり方で、一実施形態では、RP.net以外のサーバはシーケンス番号を提供することができる。しかし、パートナーはシーケンス番号を割り当てるカノニカルサービスとして単一のサービスを使用することに同意する。一実施形態では、その権能は他のサービスに以上されるが、責任はRP.netの組織に残る。
このように、サーバはメタデータ(コメント等)とデジタルオブジェクト(コメントがなされた文書等)に関係するハッシュその他の値等である識別子とを受け取り、一実施形態では、サーバがそのメタデータエントリーにシーケンス番号を割り当てて、更新されたシーケンス番号のリストと関連するメタデータエントリーとを公開する。サーバは、エントリーのコンテントかエントリーのコンテントに基づいて計算した識別子かのいずれかを公開することができる。また、一実施形態では、サーバは公開するリストにデジタルサインをする。これには暗号キーの使用が含まれる。
図5は、同期プロセスの一実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図5を参照して、プロセスの開始では、処理ロジックがデジタルオブジェクトに対応するセットを参照する第1のユニークな識別子を受け取る(処理ブロック501)。一実施形態では、第1のユニークな識別子はデジタルオブジェクトのコンテントに基づいて計算される。一実施形態では、第1のユニークな識別子はハッシュ値であり、このハッシュ値は、デジタルオブジェクトと関連する任意のバイトシーケンスを固定サイズのシーケンスにマッピングするハッシュ関数を適用した結果である。あるいは、ハッシュ値はデジタルオブジェクトのコンテントにハッシュ関数を適用した結果である。
デジタルオブジェクトを第1のユニークな識別子によりインデックスしてもよいことに注意せよ。
処理ロジックは第1と第2のメタデータエントリーも受け取る(処理ブロック502)。第1と第2のメタデータエントリーの情報源は異なってもよい。
第1と第2のメタデータエントリーを受け取った後、処理ロジックはその第1と第2のメタデータエントリーをセットに追加する(処理ブロック503)。
一旦追加すると、処理ロジックは、第1と第2のメタデータエントリーをそれぞれ参照する第2と第3のユニーク識別子へのアクセスを提供する(処理ブロック504)。第2と第3のユニークな識別子は第1と第2のメタデータエントリーのコンテントにそれぞれ基づく。一実施形態では、第2と第3のユニーク識別子はハッシュ値である。一実施形態では、第2と第3のユニークな識別子は第1と第2のメタデータエントリーのコンテントにそれぞれ基づくハッシュ値を計算した結果である。
一実施形態では、第2と第3のユニーク識別子へのアクセスを提供する段階は、第2と第3のユニーク識別子のカノニカルな順序付けを送る段階を有する。他の実施形態では、第2と第3のユニーク識別子へのアクセスを提供する段階は、第2と第3のユニーク識別子に関連するシーケンス番号を送る段階を有する。ここで、各シーケンス番号は第2と第3のユニーク識別子の1つだけと関連する。コンテントに基づき計算された識別子を送らずに、コンテント自体を送ることもできる。
一実施形態では、ここに説明したように、プロセスは、第1と第2のメタデータエントリーをカノニカルに順序付ける段階(処理ブロック505)と、シーケンス番号を生成(及び送信)する段階(処理ブロック506)とを更に有する。
一実施形態では、第1と第2のユニークな識別子をインデックスとして用いて第1と第2のメタデータにアクセスする段階をさらに含む。一実施形態では、インデックスはハッシュ値である。
図6は、データプロセスの一実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図6を参照して、プロセスの開始では、処理ロジックがデジタルオブジェクトに対応するセットを参照する第1のユニークな識別子を送る(処理ブロック601)。
処理ロジックは、次に、セット中の各メタデータエントリーのシーケンス番号とユニーク識別子のペアを受け取る(処理ブロック602)。一実施形態では、ペア中のユニーク識別子はハッシュ値である。
一実施形態では、プロセスは、さらに、他のパーティから1つ以上の追加エントリーを受け取る段階(処理ブロック603)と、追加エントリーのユニーク識別子を生成する段階(処理ブロック604)と、生成されたユニーク識別子を受け取ったユニーク識別子と比較して、1つ以上の追加エントリーとセット中のその他のエントリーの間の順序を特定する段階(処理ブロック605)と、を更に有する。
一実施形態では、処理は、セット中のユニーク識別子間の第1のユニーク識別子の一時的ロケーションを特定する段階をさらに含む。
不正開封防止ログ
不正開封防止ログは、「チェックポイントハッシュ」により分離されたメタデータエントリーのシーケンスである。シーケンスは文書オブジェクト識別子(文書オブジェクトのハッシュ)で始まる。これはチェックポイントハッシュ#0である。
一実施形態では、チェックポイントハッシュ#nは、SHA1(#n-1,entry_n)を計算することにより構成される。ここで、#nは前のチェックポイントハッシュであり、エントリー_nはn番目のエントリーである。#n−1とエントリー_nは、ハッシュ関数に順次入力され、更新されたチェックポイントハッシュが計算され、シーケンスに追加される。
任意的に、チェックポイントハッシュは位置情報(例えば、#abc:123)を含む。ここで、abcはハッシュ値を表し、123はn(例えば、123番目のエントリー)に対応する。あるいは、123は、ファイル中の現在のバイト位置に対応する。これにより、対応するチェックポイントハッシュを与えるファイル中のエントリーを非常に効率的に見つける(locate)することができる。
文書ログのアプリケーション
文書のコンテントのみでなく、文書ログ中に格納された情報を使用するアプリケーションがある。こうしたアプリケーションのいくつかを以下に示す。
ログデータの分析によるワークフロー検出
文書ログの一アプリケーションは、文書ログ中の情報を用いてワークフローを検出するものである。一実施形態では、分析方法を文書ログのコンテントに適用する。
ワークフローには多数のタイプがある。かかるワークフローの一例はオーダー処理である。他のワークフローには、登録申し込みフォーム、医療記録/照会、文書イメージとその関連謄本などが含まれる。
図7Aは、ワークフローの例を示す図である。図7Aを参照して、コピー機720がそのメモリに格納されたオーダーをする。オーダー710のハードコピーも示してある。電子メールサーバ730とファックス機750もそのオーダーに関する情報を含む。同期サーバ760は、オーダー710に対応するログエントリーをすべて同期する。電子メールリーダ等のクライアント装置740は、同期サーバ760にアクセスして、オーダ710に対応する文書ログを取得する。クライアント装置740は、そのコンテントに基づいて文書識別子を計算することにより、オーダ710に対応する文書ログにアクセスし、同期サーバー760に文書識別子を送る。同期サーバ760は、文書710に対応する文書ログにアクセスする。
クライアント装置740は、文書ログにテキスト分析を実行して、単語及び/またはログ中に単語が現れる順序に基づき、クライアント装置740はそのオーダ710が正しいものであることを確認することができる。
図7Bは、ワークフロー情報の処理プロセスの一実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図7Bを参照して、このプロセスの開始において、処理ロジックがデジタルオブジェクトの電子フォームにアクセスする(処理ブロック701)。一実施形態では、デジタルオブジェクトは文書である。
次に、処理ロジックは、デジタルオブジェクトの電子フォームのコンテントに基づいて、識別子を計算する(処理ブロック702)。上で説明したように、識別子はハッシュ値を有してもよい。
識別子を計算した後、処理ロジックは、デジタルオブジェクトに対応するメタデータエントリーのセットのメタデータエントリーを読み出す(処理ブロック703)。一実施形態では、メタデータエントリーのセットは、デジタルオブジェクトと関連するがこのデジタルオブジェクトとは別に格納された文書ログを有する。
メタデータエントリーを一旦読み出すと、処理ロジックは、メタデータエントリーを分析し(処理ブロック704)、メタデータエントリーの分析に基づいてワークフローを検出する(処理ブロック705)。一実施形態では、処理ロジックは、ログエントリー中のパターンを分析の一部として特定し、特定されたパターンに基づきワークフローを検出する。パターンは、ログデータに表れたワークフローと関連する1つ以上の単語のセットを含んでもよい。パターンは、ログデータ中のワークフローと関連するオーダー中の単語のセットを含んでもよい。かかる場合、単語のセットがオーダー中にあることは、そのワークフローを示す。一実施形態では、分析は、パターンマッチングを実行してワークフローを特定することを含む。
その後、処理ロジックはワークフローを検出したのに応じて1つ以上の動作を実行する。一実施形態では、かかる動作は追加エントリーのログへの挿入である。他の動作は、エントリーのバックアップの実行と、データベースへのアイテムの追加と読み出しその他の動作が含む。その他の動作には、メモリロケーションへの情報の記憶、電子メールの送信、a)DCE、b)HTTP、c)HTTPS、d)CORBA等を介した遠隔手続きコールの実行、テキストメッセージの送信、電話コールの開始、機械的装置のトリガー、文書の印刷、及び/またはファックスの送信等を含む。
別の実施形態では、分析には異なる文書のログ中のデータの分析が含まれる。例えば、エントリー中のパターンは、文書A、B、Cと関連付けられ、Dと関連付けられそうなセクションを推論する。その後、処理ロジックは、異なる文書にわたって繰り返されるパターンに基づきワークフローを検出する。
かかる場合、ワークフローはすべての文書と関連付けられるか、1つの文書と関連するワークフローを特定するために複数の文書を見ることができる。 例えば、多数の医療記録が1つの入院と関連づけられていることを検出した場合である。多数の記録が入院を参照していることだけから、その入院を検出することができる。
ワークフロー特定の簡単な例は、いくつかの文書について繰り返す著者の順次パターンに気がつくことである。例えば、購入リクエストの許可は、アリス、ボブ、チャーリーによるルーチンエントリーにより構成されているかも知れない。システムは、アリスとボブが文書にエントリーをしたのを検出して、自動的にその文書をチャーリーに提示(または提示の申し出)をするかも知れない。
レガシーワークフローの調整とトラッキング
文書ログとその関連メタデータを用いて、レガシーワークフローを調整し追跡してもよい。これを用いて、すでにオーダー処理をする(か、他のワークフローを実行する)ように配置された、大きな既存のシステムを見えるようにする。一実施形態では、これはワークフローの部分を実行した結果を記録する様々な機能を実行するチェックポイントコードを構成要素(例えばクライアント、サーバ等)に挿入することにより実行される。例えば、チェックポイントコードを挿入して、文書識別子を計算し、ログエントリーをポストしてもよい。文書識別子は、既存の構成要素とやりとりされるデータに基づき計算され得る。ワークフローの処理段階と関連する結果を文書ログに加えたメタデータエントリーとしてポストするチェックポイントコードを挿入してもよい。
図7Aの構成は上記のチェックポイントコードを含んでもよい。例えば、コピー機720、電子メールサーバ730、ファックス機750は、実行するワークフローの異なる部分に対応する文書ログ中のログエントリーのデータを送り返すチェックポイントコードを、含んでいてもよい。例えば、オーダーをコピーした時はいつも、コピー機720で実行されているチェックポイントコードは同期サーバ760にそのオーダーの電子コピーを送る。電子メールサーバ730は、オーダーが出荷された時、クライアント740に電子メールを送る。電子メールサーバ730上のチェックポイントコードは、その電子メールのコピーを同期サーバ760に送り、オーダーが出荷されたことを記録する。一実施形態では、ハッシュの計算は、電子メールのコンテントと画像中のバーコードのスキャン及び/または読みとに基づくことに注意せよ。これらのバーコードは、印刷されたオブジェクトに対応するデータの識別子を含む。
図8は、ワークフロー情報の処理プロセスの別の実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図8を参照して、プロセスの開始は、処理ロジックが様々な処理段階でワークフロー中にチェックポイントソフトウェアコードを挿入する(処理ブロック801)ことによる。ワークフローは2つ以上の処理段階を有し、各処理段階には1つ以上の処理動作が含まれる。一実施形態では、1つの処理段階が新しいオブジェクトを生成する場合、古いオブジェクトと新しいオブジェクトの両方にエントリーがなされる。チェックポイントコードの実行により、処理段階の処理動作に対応するメタデータエントリーが追加される。
チェックポイントコードを用意して、処理ロジックはワークフローを実行する(処理ブロック802)。2つ以上の処理動作の各々について、処理ロジックは、識別子を計算し、各処理動作に対応する少なくとも1つのメタデータエントリーを、デジタルオブジェクト(例えばワークフローを表す文書)に対応するメタデータエントリーのセット(例えば文書ログ)に追加する。一実施形態では、識別子は各処理動作または段階に入力または出力されるデータに基づいて計算する。
ログコンテントに基づく改良(refining)
一実施形態では、分析方法を文書ログのコンテントに適用する。そうすることにより、ログエントリー中のメタデータを用いてデジタルオブジェクト(例えば文書)に関する追加データを確かめる。第1に、文書に関連した文書ログのコンテントを用いて、その文書のトピックをより正確に理解する。第2に、文書ログに格納された情報を用いて、関心のありそうな関連するデジタルオブジェクトを表示する。
一実施形態では、文書ログ中の情報の分析結果に基づいて、文書にインデックスをつける。例えば、テキスト検索エンジンは文書ログ中の単語の出現にインデックスし、そのインデックスに検索を実行することができる。かかるサーチは、用語のブール組み合わせを用いて実行される。
他の実施形態では、文書ログ中の情報の分析結果に基づいて文書を検索してもよい。これは、結果がコンテントに基づく文書サーチエンジンには特に有用であり、特に文書の検索にコンテント間の関係を使用する文書サーチエンジンに有用である。言い換えると、分析結果はサーチエンジンの動作をサポートするために使用できるメタデータである。
より具体的に、サーチを明確にし、目標とするリファレンス(後述する)を作成するために文書ログに含まれる情報は貴重である。例えば、ある文書で、コンテントを分析して最も頻繁に出現し区別しやすい単語が「shell」、「sound」、「mix」である場合、その文書はプログラミングに関する文書であるとの結論が出るかも知れない。例えば、その文書は、サウンドミキシングシステム上のオーディオ入力チャネルを管理するシェルスクリプトを説明しているかも知れない。しかし、これと同一の文書に文書ログが添付され、アルゴリズムに関する有名な著作の著者であるDonald Knuthからのコメントを含む場合を考える。追加情報に基づいて、その文書は多数のコンピュータプログラムで使用されている標準的なソートアルゴリズムであるシェルソート(shell sort)に関するとの結論が出そうである。よって、「mix」という単語は、最初オーディオ処理中の技術用語であると考えられたが、Knuthにより彼のアルゴリズムを説明するために使用された「MIX」アセンブリ言語を指すだろうと見られる。文書ログに含まれる情報は、文書とトピックを他のものから明確にするのに役立つ状況情報が豊富である。
一実施形態では、サーチは、ここで開示した方法をサポートするブラウザページを用いて実行してもよい。一実施形態では、かかるブラウザページは文書識別子を特定するボックスを含む。文書識別子に基づいて文書ログにアクセスする。文書ログを用いて、文書ログのコンテント自体、及び/または関連文書による文書ログのコンテントの分析に基づいて、コンテントサーチをする。結果が返され、ブラウザページに表示される。一実施形態では、ユーザが文書識別子に入れて文書を検索することができるインターフェイスを使用する。別のリンクやユーザインターフェイスオプションがディスプレイ上で利用でき、ユーザは任意的に文書と関係してサーチを実行することができる。
以下は、ログエントリーに含まれる情報の例である:エントリーの著者、エントリーコメント、エントリータイプ、及びエントリー共有。エントリー著者は、特定の著者は特定の主題に関してより権威があり、自分の関心トピック領域に関してコメントすることが多いから、有用である。エントリーコンテントは、ログエントリーは文書が使用される状況に関して非常に啓発的であることが多いから、有用である。上記の例では、コメントに単語「order」、「comparison」、「log」があることが、その文書がソーティングアルゴリズムに関する強い証拠であった。エントリータイプは、上記の例では、既知の標準に従うエントリーがいくつかある場合、著作が何らかの標準化団体に関連するかどうか、または学術論文であるかどうか判断するから、有用である。エントリー共有は、共有されるエントリーは通常貴重なメタデータを含むから、有用である。共有エントリーは、(同じエントリーなので同じハッシュを有するが)異なる2つのログに現れるエントリーである。エントリーがよく知られた文書(例えば、The Art of Computer Programming-Volume3)とあまり知られていない文書(例えば、A Modified Shell)の間で共有されている場合、あまり知られていない文書のトピック的つながりを推測することができる。
一実施形態では、ログエントリー中の情報を用いて、或る目的のために関連文書の関連性を計算する。関連性は関連性尺度の形であってもよい。情報には、ログエントリー、ログエントリー著者、ログエントリーのタイプ等が含まれるが、これに限定はされない。メタデータ中の重複する単語は、関連性の例である。標準のTFIDF(Term Frequency
Inverse Document Frequency)テキスト関連性計算器を用いて関連性を決定してもよい。
関連性を計算して、関連文書がサーチクエリと関連するか決定してもよい。サーチクエリの場合、文書が関連性を有するか決定する従来の方法は、文書自体のコンテントにフォーカスするものである。しかし、文書中の各エントリーのメタデータ中のコンテントを用いて、文書の主題に関する追加情報を取得してもよい。よって、サーチクエリが生成されると、文書ログ中の情報を評価して、その文書がサーチに関連するか判断し、関連する場合、その文書をサーチクエリの結果として返す。
一例として、文書ログのメタデータエントリー中に格納されたコメントは、計算された関連性尺度に基づくコメントランキングを受け取ってもよい。
セット中のメンバーを調べて、他のセットメンバーと比較して関連性をチェックすることができる。関連文書は同じ情報源、同じキーワードを含む文書、その他により生成された文書を含んでもよい。一実施形態では、文書のグループ化は関係していると見なすことができる。どのセットのコメントも、「バージョン」エントリー、「著者」、「タイプ」その他の属性のものであっても、セットに集めるために使用できる。
図9は、文書の関連性を判断するプロセスの一実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図9を参照して、プロセスは、処理ロジックがアクセスされ表示されるデジタルオブジェクトに基づいて識別子を決定する段階(処理ブロック901)で始まる。上記の通り、識別子はデジタルオブジェクト(例えば文書)のコンテントに基づく。識別子を用いて、処理ロジックは、その識別子に基づきセット(例えば文書ログ)のメタデータエントリー(例えばログエントリー)を取得する。
メタデータエントリーを取得した後、処理ロジックは、メタデータエントリーとは別に記憶されているデジタルオブジェクト(例えば文書)に対応する1つ以上のメタデータエントリーを分析する(処理ブロック903)。一実施形態では、処理ロジックは、1つ以上のメタデータエントリーにテキスト分析を実行することにより、メタデータエントリーを分析する。テキスト分析は、単語タイプ、エントリー著者、エントリーがされた時間、エントリー共有、及びエントリータイプに基づき実行してもよい。これらはすべてメタデータ中の識別子であり得る。
テキスト分析を実行する時、処理ロジックはテキストの特徴が異なれば異なるウェイトを適用してもよい。例えば、ログエントリーの著者は、ログエントリーのタイプよりウェイトが高くても、その逆であってもよい。これは、1つ以上のメタデータエントリー中のコメントの既知の著者を1つ以上のメタデータエントリー中のコメントの未知の著者よりも多かれ少なかれ関係があるとしてウェイトをかけることを含む。例えば、処理ロジックは、同じデジタルオブジェクトをより関連性があるとしてコメントする著者にウェイトをかける。また、著者に関して、ウェイトは同じ文書にどのパーティがコメントしたかに基づくものでもよい。例えば、90通の文書とその文書にコメントした人が3人(P1、P2、及びP3)とがいると仮定しよう。P1とP2の両方が90通の文書すべてにコメントし、P2とP3の両方が3通の文書だけにコメントした場合、P1とP2の間の距離は1/90であり、P2とP3の間の距離は1/3である。それゆえ、P1とP2は、P2とP3より近い。このことにより、だれがコメントをしたかに基づきコメントのウェイトを修正することができる。
メタデータエントリーを分析した後、処理ロジックは、メタデータエントリー中のコンテントに基づきデジタルオブジェクトに関する知識を洗練する(処理ブロック904)。一実施形態では、処理ロジックは、メタデータを分析してデジタルオブジェクトのトピックを識別する。
洗練されたデジタルオブジェクトの知識に基づき、処理ロジックは動作する(処理ロジック905)。一実施形態では、処理ロジックは、洗練されたデジタルオブジェクトの知識に基づき、所定目的のためにデジタルオブジェクトの関連性を決定する。
一実施形態では、処理ロジックは、文書ログのメタデータエントリーのコンテント自体に基づいて、または文書からのコンテントを用いて文書の主題を決定する。
上記の通り、文書ログに格納された情報を用いて、関心のありそうな関連するデジタルオブジェクトを表示する。これによりディスプレイが適応的(adaptive)になる。目的のリファレンス、またはより正確なサーチ結果を作ることを創造することは容易である。潜在的なトピックスに関するより多くの情報が得られるからである。一実施形態では、洗練された文書に関する知識がその関連性を分析して得られた後、文書の表示(サーチ結果ページを含む)を他の文書へのリファレンスで注釈をつけてもよい。決定された関連性により、デジタルオブジェクトに関連するコメントが自動的に検索され表示される点で、表示は適応的である。
表示を適応させる方法はいくつかある。一実施形態では、文書の集まりに対して、サムネイル(その他の画像)のサイズは、その文書に関連する文書ログ中に格納されたコメントの数に依存する。あるいは、サムネイルのサイズは、文書ログ中のコメントの著者、ログエントリー間のつながりの密度等に依存してもよい。
図10は、文書ログ中のメタデータエントリーからの情報に基づくディスプレイ適応処理の一実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図10を参照して、処理ブロック1001、1002、1003、1004は、それぞれ図9の処理ブロック901、902、903、904と同じである。
洗練されたデジタルオブジェクトの知識に基づいて、処理ロジックは、デジタルオブジェクトの洗練された知識に基づいて、目的のために、デジタルオブジェクトの関連性を決定する(処理ブロック1005)。決定された関連性に基づいて、処理ロジックは表示を変更する(処理ブロック1006)。一実施形態では、処理ロジックは、決定された関連性に基づいて、デジタルオブジェクトがサーチクエリと関連することを示すことにより、表示を変更する。一実施形態では、処理ロジックは、デジタルオブジェクトが、閾値より上の1つ以上のメタデータに関連することを示す。例えば、同じ文書へのコメント数がその関連性を示してもよい。
他の実施形態では、処理ロジックは、サーチクエリへのサーチ結果の表示の一部として、デジタルオブジェクトを表示することにより、表示を修正する。
さらに別の実施形態では、処理ロジックは、メタデータエントリー中のコンテントに基づいて表示する情報を選択してもよい。処理ロジックは、1つ以上の基準に基づき、1つ以上のサムネイル画像の表示を変更することにより、表示する情報を選択してもよい。表示の変更には、1つ以上のサムネイル画像のクラスター化と、1つ以上のサムネイル画像のサムネイルサイズの変更が含まれる。一実施形態では、基準は、メタデータエントリー中のコメント数及び/または1つ以上のメタデータエントリー中のクロスリファレンスの数に基づく。クロスリファレンスは、URLまたはハッシュ識別子のいずれかによる、他の文書へのリンクである。一実施形態では、クロスリファレンスにより共有エントリーが参照される。あるいは、エントリー内のIDへの言及はクロスリファレンスを構成する。
一実施形態では、処理ロジックはデジタルオブジェクトを表示し、そのサイズはコメントの数に基づいて決まる。コメント数がある閾値に達した場合、ディスプレイ中のデジタルオブジェクトのサイズが調整される。例えば、処理ロジックは、ログ中のコメント数が閾値より下であれば、文書(デジタルオブジェクト)を1つのサイズで表示してもよく、ログ中のコメント数が閾値より上であれば、その1つのサイズより大きいサイズで表示してもよい。
広告
ログエントリー自体のコンテントを用いて、または文書のコンテントを用いて文書のトピックに関して取得した知識を用いて、目的とする広告を選択及び表示してもよい。サーチエンジン企業は、この方法を広告の選択に使用してもよい。そのような構成を図11Aに示した。図11Aを参照して、クライアント1110はディスプレイ1111と記憶装置1112を含む。ディスプレイ1111は文書1113を表示する。一実施形態では、文書1113はサーバ1130から提供されたものである。別の実施形態では、文書1113は他の装置により提供される。広告エンジン1120は、文書1113と関連する文書識別子を用いて、文書1113に対応するログエントリーにアクセスし、これらのログエントリーを分析して、文書1113が表示されている間に、ディスプレイ1111の他の部分に何の広告を入れるべきか決定する。このように、広告エンジン1120は、文書1113に関係するログエントリーに関連したコメントを分析する。広告エンジン1120は、コメント著者のIDと見た者(viewer)のIDを分析してもよい。かかるIDはサーバ1130とID記憶装置1132に記憶される。一実施形態では、広告エンジン1120からクライアント1110へのデータには、文書と(任意的に)そのログエントリーが含まれ、これらのデータはサーバ1130のデータ1133からのものである。広告エンジン1120は、これらのデータを分析して、それに広告を付加する。同期ユニット1131は、ディスプレイ1111上で使用するために、広告(AD)1114を文書1113と同期させる。
一実施形態では、この方法を使用するため、文書が表示されている時、その識別子を自動的に計算し、その識別子をインデックスとして使用してログエントリーにアクセスする。広告スペース尺度をログエントリー中の情報に基づいて計算してもよい。その尺度に基づいて、広告を選択し表示する。このように、ログエントリーからの情報で広告を選択し、(見る者とログエントリーの著者、動作等の間の関係を含む)文書のコンテクストに表示する。
図11Bは、文書ログ中のメタデータエントリーからの情報に基づき選択され表示される広告をディスプレイに含めるプロセスの一実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図11Bを参照して、処理ブロック1101、1102、1103、1104は、それぞれ図9の処理ブロック901、902、903、904と同じである。デジタルオブジェクトの洗練された知識に基づき、処理ロジックは、メタデータエントリーのコンテントに基づき、1つ以上の広告を選択し、送信し、表示する。一実施形態では、広告の選択は、1つ以上のメタデータエントリー中の1人以上のコメント著者に関連する1つ以上の識別子に基づく。別の実施形態では、広告の選択は1つ以上のメタデータエントリー中のコメントを見た者に関連する識別子に基づく。広告は文書自体のコンテントに基づいてもよい。
ログコンテントの分析に基づくリファレンス(分析を含む)の提供
ログ中の情報を用いて、トピックをあまり理解せずに、ありそうなリファレンスを作成してもよい。これは、文書を見るときに、文書ブラウザディスプレイが関連材料を提供するのに有用である。
この方法の有用性を示す例としては、次のものがあるが、これらに限定はされない。第1に、この方法を用いて、同じ著者によるコメントを有する文書または共通コメントを有する文書を取得してもよい。また、この方法を用いて、現在表示されている文書に関するコメントをした著者による文書を見つける。これは、権威のある情報源からの文書を探す貴重な援助となるであろう。
著者ではなく、ログ中のエントリーから他のメタデータ情報を取得してもよい。例えば、文書ログのエントリー時間を他のログデータと組み合わせて使用してもよい。より具体的に、エントリー時間が1ヶ月以内になされた著者によるコメントは、特定の著者のバイアスまたはコメントがなされた状況に関する貴重な洞察を与えるであろう。
ログエントリー中の情報のさらに別の使用は、文書タイプが探している特定の文書タイプとマッチするログエントリーを特定するものである。例えば、費用レポートシステムを用いて領収書をサーチする場合、この方法を用いて所定の文書セット中のすべての領収書を集めることができる。文書コンテントは領収書ごとに違っても、購買スタッフによる認証エントリーを含むからである。
この種のサーチは、文書自体の実際のコンテントとはほとんど関係がない。これらは、ブラウザや、関係素材を探すサーチエンジンに有用である。
図12は、ログエントリー中のメタデータの分析に基づき、デジタルオブジェクトを参照するプロセスの一実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図12を参照して、プロセスは、処理ロジックがアクセスされ表示されるデジタルオブジェクトに基づいて識別子を決定する段階(処理ブロック1201)で始まる。上記の通り、識別子はデジタルオブジェクト(例えば文書)のコンテントに基づく。識別子を用いて、処理ロジックは、その識別子に基づきセット(例えば文書ログ)のメタデータエントリー(例えばログエントリー)を取得する(処理ブロック1202)。
メタデータエントリーを取得した後、処理ロジックは、デジタルオブジェクト(例えば文書)に対応するメタデータエントリーを分析する(処理ブロック1203)。上記の通り、メタデータエントリーはデジタルオブジェクトとは別に格納される。
一実施形態では、処理ロジックは、文書の関連性を決定することによりメタデータエントリー中のデータを分析する。一実施形態では、処理ロジックは、セット中の1つ以上のメタデータエントリー中のコンテント中のキーワードをサーチすることにより、関連性を決定する。あるいは、関連性は、セット中の1つ以上のメタデータエントリー中のコンテントに基づいてもよい。関連性は、セット中の1つ以上のメタデータエントリー中のコンテントに基づく関連性尺度を計算することにより決定されてもよい。これらの関連性尺度は、TFIDF(term frequency and inverse document frequency)を含んでもよい。
一実施形態では、処理ロジックは、1つ以上のメタデータエントリーにテキスト分析を実行することにより、メタデータエントリーを分析する。テキスト分析は、単語タイプ、エントリー著者、エントリーがされた時間、エントリー共有、及びエントリータイプに基づき実行してもよい。これらはすべてメタデータ中の識別子であり得る。テキスト分析を実行する時、処理ロジックはテキストの特徴が異なれば異なるウェイトを適用してもよい。
メタデータエントリーを分析した後、処理ロジックは、メタデータエントリー中のコンテントの分析に基づき他のデータへのリファレンスを提供する(処理ブロック904)。リファレンスは実行された分析(例えば、関連性尺度、キーワード分析等)に基づき特定されたデジタルオブジェクトに対するもの、及び/またはそのデジタルオブジェクトに関連する他のメタデータに対するものであってもよい。一実施形態では、処理ロジックは、現在表示されている文書に関するコメントをした1人以上の著者のデジタルオブジェクトを特定してもよい。かかる場合、処理ロジックは、特定されたデジタルオブジェクトに関する情報を表示することにより、メタデータエントリー中のコンテントの分析に基づいて、他のデータへのリファレンスを提供してもよい。一実施形態では、情報は特定された各デジタルオブジェクトへのリンクを含む。別の実施形態では、情報は、特定された各デジタルオブジェクトに対応するサムネイル(またはその他のタイプの)画像を含む。
常にオン/常に更新されている
ここで説明する付お方は、携帯電話やパーソナルデジタルアシスタント(PDA)等のモバイル装置で利用してもよい。これらの装置は文書中のメタデータにアクセスし、更新されたエントリーや新しいエントリーを含むメタデータエントリーのデータを受け取る。
図13Aは、サーバから情報を受けるモバイル装置を有する構成を示す図である。図13Aを参照して、モバイル装置1320は、マシンコードリーダ(例えばバーコードリーダ1321)を用いて紙文書1310から文書IDをスキャンし、文書識別子を計算する。モバイル装置1320は、無線トランシーバ1325を用いて、文書IDをサーバに送る。これに応じて、サーバは、コメント及び/またはその他のログエントリーのメタデータをモバイル装置1320に送る。モバイル装置1320は、無線トランシーバ1325を用いてこれらを受け取る。これらはメモリ1322に格納される。(メモリ1322は、モバイル装置1320の動作を制御する命令を記憶してもよい。)モバイル装置1320は、ディスプレイ1323上に最新のコメント(例えば、文書ログの新しいバージョン)を自動的に示す。一実施形態では、モバイル装置1320は、関連した文書ログを受け取り、オフラインで見るようにキャッシュに最新のコメントを記憶する。
モバイル装置1320で取られたノートは、文書ログにポスティングされる。コメントがされたときにオフラインであった場合、モバイル装置1320は、再び接続されるまで、そのコメントをローカルでキャッシュする。文書の新しいバージョンを生成すると、新しいハッシュ識別子が生成される。システムは、新しい識別子へのリンクを含む古い識別子のログにエントリーを自動的に追加することができ、その逆もできる。この場合、1つのバージョンへのリンクは、その文書IDで前のバージョンを参照するログエントリーである。かかるバージョンは、編集された、または印刷されただけのバージョンであってもよい。モバイル装置1320の動作はプロセッサ1324により制御される。
図13Bは、ログエントリーの管理プロセスの一実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図13Bを参照して、このプロセスは、処理ロジックが文書の文書識別子を取得する(処理ブロック1301)ことにより始まる。一実施形態では、処理ロジックは、紙に印刷された文書から機械読み取り可能コード(例えばバーコード)をスキャンすることにより、文書識別子を取得する。他の実施形態では、処理ロジックは、1つ以上の文書識別子のリストから文書識別子を選択することにより、文書識別子を取得する。
文書識別子を取得した後、処理ロジックは、文書識別子に基づいて、サーバからメタデータエントリーのセットを検索する。一実施形態では、メタデータエントリーは、文書に対応する情報(例えばコメント)を有し、一旦メタデータエントリーを取得すると、処理ロジックはメタデータエントリーからの情報を表示する(処理ブロック1303)。
任意的に、処理ロジックは、サーバに定期的に問い合わせて、メタデータエントリーのセットの更新された情報を受け取る。一実施形態では、ユーザが加入者である場合にのみ、サーバへの定期的な問い合わせを行う。加入者からの要求があったときに問い合わせが行われ、ログ中のメタデータエントリーから情報の供給を受ける。
任意的に、処理ロジックは、オフラインの間(例えば、情報を受け取るネットワークにアクセスしていない間)、ログに追加すべき追加情報を格納し、オンラインに戻ったときに(例えば、後でネットワークにアクセスした時に)、セットに追加するために、追加情報を更新させる(処理ブロック1305)。
文書識別子を解きコンテントを取得する
ここに説明する方法を用いて、文書識別子をデジタルオブジェクト(例えば文書)と結合してもよい。すなわち、既存の文書識別子と複数のデジタルオブジェクトがある場合、文書の各々の文書識別子を計算することにより、文書識別子と結合した文書を特定することができる。そして、既存の文書識別子と、生成した文書識別子の1つをマッチさせる。マッチングの結果に基づいて、その既存の識別子と対応するデジタルオブジェクトを特定する。
図14は、受け取った文書識別子に応じたデジタルオブジェクトを決定するプロセスの一実施形態を示すフロー図である。このプロセスは、ハードウェア(例えば回路、専用ロジック等)、(汎用コンピュータシステムまたは専用機上で実行される)ソフトウェア、またはこれらの組み合わせを含む処理ロジックにより実行される。
図14を参照して、プロセスは、処理ロジックが複数の文書にハッシュをかけて、文書の各々の文書識別子を決定する(処理ブロック1401)ことにより始まる。次に、処理ロジックは、文書の生成された文書識別子を所定の文書識別子と比較して、どの文書が所定の文書識別子と対応するか決定する(処理ブロック1402)。
文書間の参照
ユーザインターフェイスを用いて文書間の参照をする。一実施形態では、ログ生成ページをこの目的に使用する。ログ生成ページを用いて、ドロップダウンメニューを用いてコンテントを取得するか、コンテントのIDを計算するときに取得されたコンテントをサーチする。画面の一部には、コンテントのプレビューが示され、他の部分はログエントリーをする場所である。文書がそれに結合した既存のログを有する場合、他の文書ログがその文書(文書ログ自体の場合もある)を参照してもよい。これにより、両方に参照を入力することができる。文書への他のレファレンスが文書ログに追加されたときはいつも、それぞれの文書ログの両方にレファレンスを自動的に入れる。このように、互いにポインティングしている2つのログに同時に追加されるエントリーがある。例えば、コマンドラインコピーツールを用いてファイルをあるロケーションにコピーした場合、コピーが実行されると、コマンドラインコピーツールはそのディレクトリのファイル名のIDとしてハッシュを用いて、自動的にエントリーを入れる。そして、各ディレクトリに各ファイルのログを置き、そのファイルのコピーをこの他のロケーションに移動したことを示す。
また、新しいファイルに関連する名前とIDだけでなく反復ファイルのコンテントにもこのことを示す。これは、コンテントの他のバージョンを生成するために複数のリンクを自動的に追加する点で、上で説明した従来のワークフローアプリケーションと同様である。
エントリーがサーバーにポスティングされたとき、ユーザはコメントの基礎であるデジタルオブジェクトを示し、デジタルオブジェクトのURLをサーバに与える。サーバは他のサーバにコンタクトして、ユーザがURLと関連したデジタルオブジェクトにコメントをしていることを示す。サーバー間通信を用いて、2つの文書のログに2つのエントリーをし、そのログを通常通り複写する。
コンテントを登録するため、コンテントのコピーを取得し、そのURLを計算して送る。ファイルシステムは、リネームまたはムーブ動作に応じて、ローカルキャッシュを使用して現在の文書ファイル名を識別子にマッピングする。ムーブ(またはファイルにその他の動作)を実行する前に、そのファイルの識別子のハッシュを計算して、現在のリストされたバージョンと比較する。異なれば、エントリーを新しいバージョンとしてログに加える。それに何らかの動作が実行された場合、文書に実行された動作を示す他のエントリーを追加する。これは、URLまたは文書識別子を指示するのではなく、ウェブブラウザにより行われる。
ログインテグリティ検証システム
一実施形態では、システムはログエントリーのインテグリティを検証する。これは、重要なトランザクションレコードを格納するためにログを使用する場合に価値がある。例えば、小切手とチェックレジスタのデポジットの順序は、当座貸越が合ったかどうか決定する上で非常に重要である。
文書ログは、一方向のハッシュ関数を用いることにより、順序とコンテントを検証することができる。ログが最初に生成されたとき、大きな乱数rnを選択する。この数は、第1のエントリーとともに、ログ中に明らかなテキスト情報として格納される。SHA1、MD5等の一方向ハッシュ関数等を用いて、ログエントリーeと乱数rnの連結したコンテントのハッシュを作る。この新しい値は、ここではエントリーのチェックハッシュと呼ぶ。
新しいエントリーがされるたびに、前のエントリーのチェックハッシュをエントリーのコンテントに連結して、新しいチェックハッシュを上記と同じハッシュ関数を用いて生成する。このように、各ログエントリーは、すべての先行エントリー(前のエントリーのチェックハッシュ)のコンテントとそれ自体のコンテントとの両方から容易に検証できる方法で求められる数を含む。ベース文書がログエントリーであるログエントリーは、親エントリーのチェックハッシュを用いて自分自身のコンテントを生成する。
これらのチェックハッシュはログエントリーコンテントには依存せず、文書コンテントハッシュの計算には使用すべきではないことに注意せよ。
これらのチェックハッシュは、順次コンテントの検証には有用であるが、エントリーを単に変更することによりログを修正でき、後続のすべてのエントリーのチェックハッシュを再計算できることは、当業者には明らかである。しかし、いかなる所与のログであっても他のログのコンテントと、同時に見られるチェックハッシュとを記録できるエントリーを記憶できることも明らかである。
例えば、2つのログaとbを考える。各々は、そのチェックハッシュを用いて、コンテントとシーケンスについて検証可能である。攻撃者がログbのアイテム2を改変しようとしていると仮定する。攻撃者はエントリーを修正し、新しいログエントリーの適当なチェックハッシュを再計算する。そして、ログbの後続のすべてのエントリーについて、このプロセスを繰り返す。今、ログbが変更されるが、チェックハッシュを調べてもその変更を検出できない。
しかし、ログa中のエントリーがログbのエントリー(b中のエントリーのシーケンス番号とログb中のそのエントリーのチェックハッシュとを含む)を参照している場合、攻撃者には新しい問題が生じる。彼は、検出を逃れるには、ログaも変更しなければならない。これは、上記と同じ方法を用いて可能である。
多数のログがあり、上記の通り他のログのチェックハッシュを参照している場合を考える。攻撃者は、すべてのログを見つける方法は有さず、攻撃しているログを参照するアクセスは有さない場合、攻撃者には検出を避けるためにすべての必要なログをうまく改変することは不可能であることが分かるであろう。
コンピュータシステムの実施例
図15は、ここに記載した1つ以上の動作を実行するコンピュータシステムの例を示すブロック図である。図15を参照して、コンピュータシステム1500は、クライアントまたはサーバのコンピュータシステムを含む。コンピュータシステム1500は、情報をやりとりする通信メカニズムすなわちバス1511と、情報を処理する、バス1512に結合したプロセッサ1511とを有する。プロセッサ1512は、例えばペンティアム(商標)プロセッサ等のマイクロプロセッサを含むが、マイクロプロセッサに限定されない。
システム1500は、さらに、プロセッサ104により実行される情報及び命令を格納する、バス1511に結合したランダムアクセスメモリ(RAM)またはその他のダイナミック記憶装置1512(ここではメインメモリと呼ぶ)を有する。メインメモリ1504は、プロセッサ1512による命令の実行中に、一時的変数やその他の中間情報を記憶するために使用される。
コンピュータシステム1500は、プロセッサ1506の静的情報や命令を記憶する、バス1511に結合した読み出し専用メモリ(ROM)及び/またはその他の静的記憶装置1512と、磁気ディスク、光ディスクとその対応するディスクドライブ等であるデータ記憶装置1507とを有する。データ記憶装置1507は、情報と命令を記憶し、バス1511に結合している。
コンピュータシステム1500は、コンピュータのユーザに情報を表示するための、バス1511に結合した、陰極線管(CRT)または液晶ディスプレイ(LCD)等のディスプレイ装置1521に結合している。英数字入力装置1522は、英数字その他のキーを含み、バス1511に結合され、プロセッサ1512に情報とコマンド選択を送る。追加的なユーザ入力装置として、マウス、トラックボール、トラックパッド、スタイラス、またはカーソル方向キー等のカーソル制御1523があり、バス1511に結合し、プロセッサ1512に方向情報とコマンド選択を送り、ディスプレイ1521上のカーソルの動きを制御する。
バス1511に結合した他の装置としてハードコピー装置1524がある。このハードコピー装置824は、紙、フィルム、その他のメディア上に、命令、データ、その他の情報を印刷するために使用される。さらに、スピーカ及び/またはマイクロホン等の音声録音再生装置も任意的にバス1511に結合しており、コンピュータシステム1500のオーディオインターフェイスとして機能する。バス1511に結合する他の装置として、電話やハンドヘルドパームトップ装置と通信する、有線または無線の通信機能1525がある。
システム1500のどの構成要素もそれに関連するハードウェアも、本発明で使用してもよい。しかし、言うまでもなく、他の構成のコンピュータシステムでは、これらの構成要素の一部または全部を含んでもよい。
上記の説明を読んだ当業者には本発明の変形例や修正例が明らかになったことは間違いなく、言うまでもなく、上記のどの実施形態も本発明を限定することを目的としたものではない。それゆえ、いろいろな実施形態の詳細の説明は、本発明に本質的であると考えられる特徴のみを記載した請求項の範囲を限定するものではない。