(57)【要約】【課題】  バイナリＸＭＬに符号化された文書データに対しても、文書データへの高速アクセスが実現できるように、見出し情報の生成、削除を容易に行えるようにする。【解決手段】  読み出し要求された文書部分に対し、読み出し部分の先頭で有効な符号化規則を抽出する。抽出した符号化規則に対し、読み出し部分の先頭から読み出し開始する際に、符号化規則を復元可能な情報を生成する。生成した復元情報を、読み出し部分への参照と関連付けて保存する。【選択図】  図５
2011128988.tif 000002
【特許請求の範囲】
【請求項１】
符号化文書の読み出し部分の開始位置からの内容に依存して、前記読み出し部分に対する符号化規則を抽出する抽出手段と、
クライアントで前記読み出し部分の開始位置から読み出しを開始する際に前記抽出手段により抽出された前記符号化規則を復元可能にするための復元情報を生成する生成手段と、
前記生成手段により生成された前記復元情報を、前記読み出し部分への参照情報と関連付けて記憶する記憶手段と、
を有することを特徴とする文書管理装置。
【請求項２】
前記記憶手段は、前記生成手段により生成された前記復元情報を、前記読み出し部分への参照情報と関連付けて見出し情報として記憶し、
前記読み出し要求を再度受信したときは、前記見出し情報から前記復元情報及び前記参照情報を取得することを特徴とする請求項１に記載の文書管理装置。
【請求項３】
前記抽出手段は、前記読み出し部分の開始位置における文字列テーブルと、文法規則と、文法規則の順序列とを抽出する手段を含むことを特徴とする請求項１に記載の文書管理装置。
【請求項４】
前記復元情報のサイズが前記読み出し部分のサイズよりも大きいときは、前記読み出し部分を再符号化する手段を更に有し、
前記記憶手段は、前記復元情報に代えて、前記再符号化された読み出し部分を記憶することを特徴とする請求項１に記載の文書管理装置。
【請求項５】
前記見出し情報からアクセス頻度が少ないエントリを削除する手段を更に有することを特徴とする請求項２に記載の文書管理装置。
【請求項６】
前記符号化文書は、ＸＭＬであることを特徴とする請求項１に記載の文書管理装置。
【請求項７】
前記生成手段により生成される復元情報のサイズを削減するために、前記抽出手段により抽出された前記符号化規則から使用されない規則を削除する手段を更に有することを特徴とする請求項１に記載の文書管理装置。
【請求項８】
前記生成手段は、既定の符号化規則からの変換手順を前記復元情報として生成することを特徴とする請求項１に記載の文書管理装置。
【請求項９】
前記読み出し部分の開始位置は、前記クライアントからの符号化文書の読み出し要求で指定されたものであり、
前記記憶手段に記憶された前記復元情報及び当該復元情報に関連付けられた前記参照情報を前記クライアントに送信する送信手段を更に有することを特徴とする請求項１に記載の文書管理装置。
【請求項１０】
抽出手段が、符号化文書の読み出し部分の開始位置からの内容に依存して、前記読み出し部分に対する符号化規則を抽出する抽出ステップと、
生成手段が、クライアントで前記読み出し部分の開始位置から読み出しを開始する際に前記抽出ステップで抽出された前記符号化規則を復元可能にするための復元情報を生成する生成ステップと、
保存手段が、前記生成ステップで生成された前記復元情報を、前記読み出し部分への参照情報と関連付けて記憶手段に保存する保存ステップと、
を有することを特徴とする文書管理装置の制御方法。
【請求項１１】
コンピュータを請求項１乃至９のいずれか１項に記載の文書管理装置が有する各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化文書を管理するための文書処理技術に関する。
【背景技術】
【０００２】
従来、データベースシステムなどでは、管理している文書データへの高速アクセスを可能とするために、アクセス頻度の高いデータへのインデックス情報を記憶している。インデックス情報には、ファイルへのポインタやファイル内でのオフセット値が記録されており、文書内を探索することなく目的のデータへ高速アクセスすることができる。
【０００３】
一方、Ｗ３Ｃでは、ＸＭＬの処理効率化を目的として、Efficient XML Interchange(EXI)（非特許文献１）と呼ばれるＸＭＬ文書の符号化方式が標準化されている。この符号化方式では、従来文字として符号化していたデータを、より冗長性の少ない表現で符号化する。EXIは、既定の符号化規則でＸＭＬ文書の符号化を開始し、符号化中にＸＭＬ文書の記述に応じて符号化規則をより効率のよい規則に更新する。これらの符号化方式は学習型と呼ばれており、一定の規則で符号化する場合に比べ符号化効率がよい。しかし復号する際に、規則を再現するため文書の先頭から処理しなければならないという制約がある。よって、EXIで符号化した文書は、従来のようなインデックス情報による高速アクセスが実現できない。
【０００４】
そこで、EXIでは、self-containedと呼ばれる要素を用意している。この要素で記述された部分は、その要素以前に記述された文書データに関係なく既定の符号化規則から符号化される。インデックス化したい部分をself-contained要素内に記述しておけば、文書途中から復号でき、インデックス情報による高速アクセスが可能になる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Efficient XML Interchange (EXI) Format 1.0 - http://www.w3.org/TR/exi
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、こうしたインデックス情報は利用者にとっては意味のない情報であり、過度に作成するとインデックス情報の記憶容量の大きさが問題になりかねない。また、インデックス情報自体の処理が過大となり高速アクセスのメリットが小さくなる。そこで、アクセス頻度などをパラメータとして、必要なインデックス情報のみ残すように更新していくのが一般的である。
【０００７】
しかし、EXIで符号化された文書データにとって、インデックス情報の更新は大きな負担である。self-contained要素の記述を書き直さなければならないが、符号化データの復号、再符号化を伴い、扱う文書データのサイズに比例して負担が大きくなる。
【０００８】
そこで本発明は、符号化文書に対するインデックス情報の更新を容易に行うことができるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一側面によれば、符号化文書の読み出し部分の開始位置からの内容に依存して、前記読み出し部分に対する符号化規則を抽出する抽出手段と、クライアントで前記読み出し部分の開始位置から読み出しを開始する際に前記抽出手段により抽出された前記符号化規則を復元可能にするための復元情報を生成する生成手段と、前記生成手段により生成された前記復元情報を、前記読み出し部分への参照情報と関連付けて記憶する記憶手段とを有することを特徴とする文書管理装置が提供される。
【発明の効果】
【００１０】
本発明によれば、インデックス化前後で符号化規則を変更しなくて済むので、再符号化の必要がなくインデックス情報の更新を容易に行うことができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態における文書管理装置の構成を示すブロック図。
【図２】実施形態における文書管理装置で処理されるデータの例を示す図。
【図３】文字列テーブルの一例を示す図。
【図４】実施形態における文書管理装置で処理されるデータの例を示す図。
【図５】実施形態における文書管理装置の動作を示すフローチャート。
【図６】実施形態における文書管理装置で処理されるデータの例を示す図。
【図７】実施形態における文書管理装置の動作を示すフローチャート。
【図８】実施形態における文書管理装置で処理されるデータの例を示す図。
【図９】実施形態における文書管理装置で処理されるデータの例を示す図。
【図１０】実施形態における文書管理装置の動作を示すフローチャート。
【図１１】実施形態における文書管理装置で処理されるデータの例を示す図。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、本発明は以下の実施形態に限定されるものではなく、本発明の実施に有利な具体例を示すにすぎない。
【００１３】
＜実施形態１＞
本実施形態の文書管理装置の構成について、図１のブロック図を参照して説明する。本実施形態の文書管理装置は例えばネットワーク上のサーバによって実現される。文書管理装置は単一のコンピュータ装置で実現してもよいし、必要に応じた複数のコンピュータ装置で機能を分散して実現してもよい。複数のコンピュータ装置で構成される場合は、互いに通信可能なようにLocal Area Network(LAN)などで接続されうる。
【００１４】
図１において、１０１は文書管理装置１００全体を制御するCentral Processing Unit（ＣＰＵ）である。１０２は変更を必要としないプログラムやパラメータを格納するRead Only Memory（ＲＯＭ）である。１０３は外部装置などから供給されるプログラムやデータを一時記憶するRandom Access Memory（ＲＡＭ）である。１０４は文書管理装置１００に固定して設置された外部記憶装置である。外部記憶装置は例えば次のものを含む。ハードディスク、メモリカード、フレキシブルディスク（ＦＤ）、Compact Disk（ＣＤ）等の光ディスク、磁気カード、光カード、ＩＣカードなど。１０５はユーザの操作を受け、データを入力するポインティングデバイスやキーボード１０９などの入力デバイスとのインタフェイスである。１０６はインターネット１０３などのネットワーク回線に接続するためのネットワークインタフェイスである。１０７は１０１〜１０６の各ユニットを通信可能に接続するシステムバスである。
【００１５】
本実施形態では、複数のバイナリＸＭＬ文書のサーバである文書管理装置１００が、クライアントからの読み出しアクセスを高速化するための見出し情報を生成する処理について説明する。文書管理装置１００では、例えば図２に示すような符号化文書が管理されている。この文書は、製品の説明資料に関するものであり、catalog要素には製品の用途に合わせたカタログ情報が記述されている。description要素には詳細情報が記述されている。
【００１６】
クライアントは、必ずしもこの文書の全ての情報を必要とするとは限らず、必要な部分だけをサーバに要求しダウンロードすることができる。例えば営業担当者が、顧客先での使い方に合わせて製品資料のみをサーバに要求し、顧客先のプリンタにダウンロードして印刷する。これを実現すべく、サーバである文書管理装置１００は、クライアントからの符号化文書へのデータアクセスを管理し、管理下の符号化文書の読み出し要求に応答して、要求された読み出し部分を符号化文書から抽出する。その後、その読み出し部分のデータを後述するようなリプライメッセージとして送信する。
【００１７】
このとき、ダウンロード時間を短縮するために、サーバ側では一度発生した要求に対するインデックス情報を生成する。２回目以降の要求では、インデックス情報を参照することで目的の文書を高速に検出する。
【００１８】
一方、管理している文書は、文書サイズを小さくするために図２に示すようなバイナリＸＭＬに符号化されている。本実施形態で使用するバイナリＸＭＬは、文字列テーブルと文法規則を使った学習型の符号化を行う。
【００１９】
文字列テーブルは、図３に示すように、文書中に出現する文字列データを順にテーブルに登録したものである。同じ文字列データが２回以上出現する場合は、２回目以降にテーブルのインデックスを割り当てることで符号化データのサイズを小さくする。本実施形態では、文字列テーブルを名前用(name)と値用(value)に分けている。図２において、“ID0001”という値が２回出現しており、２回目の“ID0001”には、“0”という文字列テーブルのインデックスが使われる。また文字列テーブルは、符号化時に一時的に作られるものであり符号化文書に明記されない。よって復号する際には、文字列テーブルを再現するために、符号化データを先頭から読まなければならない。
【００２０】
文法規則は、要素や属性の構造を符号化するために用いられる。先ず既定の文法規則が用意され、文書を符号化するに従って効率のよい文法規則を学習する。図４は、図２に示した符号化を行う際の文法規則の学習を表している。以下、図４に沿って、文法規則の学習を説明する。
【００２１】
先ず、図２のproduct開始要素の符号化時に学習が行われる。文書の最初では、図４の既定のDocument Grammar 401が使用される。初めて出現する要素なので、規則中のSE(*)が適用され、0の値と“product”が符号化される。実際の符号化データは、データサイズが小さくなるように可変長のビット列になる。そして図４に示すproduct開始要素に対するgrammar 402が生成される。
【００２２】
次に、catalog要素の符号化時に学習が行われる。catalog要素はproduct要素の子要素なので、product開始要素に対するgrammarが適用される。初めて出現する要素なので、規則中のSE(*)が適用され、(0,2)の値と“catalog”が符号化される。そして図４に示すcatalog開始要素に対するgrammar 405が生成される。また、繰り返し出現する文書構造を短いデータ長で符号化できるように、SE(catalog)の規則がproduct開始要素に対するgrammarに追加される。403に示すように、追加は先頭に行われ、今までの規則の符号化データはインクリメントされる。
【００２３】
次に、serialNum属性の符号化時に学習が行われる。serialNum属性はcatalog要素の属性なので、catalog開始要素に対するgrammarが適用される。各適用grammarは入れ子の関係になりスタック構造に記憶される。これをルールスタック（文法規則の順序列）と呼ぶ。初めて出現する属性なので、規則中のAT(*)が適用され、(0,1)の値と“serialNum”が符号化される。属性も開始要素と同様に規則追加が行われ、406に示すように、AT(serialNum)の規則がcatalog開始要素に対するgrammarに追加される。
【００２４】
次に、typeAの開始要素の符号化時に学習が行われる。このときもcatalog開始要素に対するgrammarが適用される。初めて出現する要素なので、規則中のSE(*)が適用される。ただし、符号化データは既定(405)の(0,2)ではなく、追加後(406)の(1,2)と“typeA”になる。(407)に示すように、SE(typeA)の規則がcatalog開始要素に対するgrammarに追加される。
【００２５】
次に、typeB開始要素の符号化時に学習が行われる。このときもcatalog開始要素に対するgrammarが適用される。初めて出現する要素なので、規則中のSE(*)が適用される。ただし、符号化データは既定(405)の(0,2)ではなく、追加後(407)の(2,2)と“typeB”になる。408に示すように、SE(typeB)の規則がcatalog開始要素に対するgrammarに追加される。
【００２６】
次に、description開始要素の符号化時に学習が行われる。descriptor要素はproduct要素の子要素なので、product開始要素に対するgrammarが適用される。product開始要素に対するgrammarはルールスタックから取得される。初めて出現する要素なので、規則中のSE(*)が適用される。ただし、符号化データは既定(402)の(0,2)ではなく、403に示す(1,2)と“description”になる。404に示すように、SE(description)の規則がproduct開始要素に対するgrammarに追加される。
【００２７】
以後、description開始要素に対するgrammarが、production開始要素やcatalog開始要素と同様に生成される。
【００２８】
以上の文法規則の学習で説明したように、符号化する文書に従い学習が行われ符号化規則が変化する。また、図２で２回目に出現するtypeAの開始要素には、SE(*)ではなく新しく追加された規則SE(typeA)が適用される。符号化する際には、このような文法規則と適用順序を再現するために、符号化データを先頭から順に読まなければならない。
【００２９】
そこで本実施形態では、読み出し要求が発生した文書部分の開始位置からの内容に依存して、その文書部分に対して有効な符号化規則を抽出する。処理フローを図５に示す。以下、図５のフローに従って説明する。
【００３０】
まず、Ｓ５０１において、受信した読み出し要求に係る符号化文書の見出し情報が例えば外部記憶装置１０４に記憶されているかどうかをチェックする。見出し情報があれば、Ｓ５０２において、見出し情報からリプライ情報を取得する。見出し情報がなければ、Ｓ５０３において、受信した要求で指定された文書部分の位置まで符号化文書を先頭から解析する。
【００３１】
Ｓ５０４において、要求された文書部分が発見できた場合は、Ｓ５０５において、文書部分の開始位置における文字列テーブル、文法規則、ルールスタックを抽出する。本実施形態では、読み出す文書部分を最初のtypeA要素とし、図６に示す情報を抽出することになる。
【００３２】
抽出した情報は、保存するために、あるフォーマットに従って符号化される。本実施形態では、ＸＭＬで記述しバイナリＸＭＬに符号化する方法について説明する。ただし本発明は特定の符号化方式に限定されるものではない。バイナリＸＭＬに符号化することで、保存データの解釈に新たなプロセッサを必要としない、データサイズが小さくなる、リプライするバイナリＸＭＬデータに組み合わせやすいといったメリットがある。また、抽出した情報を符号化する際には、抽出した情報すべてを符号化してもよいが、図１３に示すように既定の符号化規則からの変換手順を符号化することでデータサイズを削減することができる。処理フローを図７に示す。また、ＸＭＬ表現した結果を図８に示す。以下、図７のフローに従って説明する。
【００３３】
まず、Ｓ７０１において、要求された読み出し部分の開始位置における文字列テーブルをＸＭＬで表現する。図８に示すように、文字列テーブルはtable要素として記述し、table種別を表すためにid属性を記述する。名前の文字列テーブルであれば“name”、値であれば“value”になる。各文字列テーブル内の文字列は、それぞれentry要素としてindex順にtable要素内に記述される。また、最初のentry要素のindexをtable要素のstartIndex属性で記述する。
【００３４】
次に、Ｓ７０２において、要求された読み出し部分の開始位置におけるルールスタックをＸＭＬで表現する。ルールスタックは、Ｓ７０３で表現される文法規則識別子を使って、それぞれstack要素として記述される。本実施形態ではスタックの下から上の順に記述されている。
【００３５】
次に、Ｓ７０３において、要求された読み出し部分の開始位置における文法規則をＸＭＬで表現する。各文法規則は、既定の文法規則に追加したものとして記述する。本実施形態では、product開始要素に対する文法規則と、catalog開始要素に対する文法規則が追加されたので、文法規則識別子をそれぞれ“product”、“catalog”とし、grammar要素のname属性に記述する。各grammarに対する追加規則の記述は、それぞれadd要素として記述し、要素の規則であれば“SE”、属性の規則であれば“AT”を記述する。本実施形態では追加された規則の下から上の順に記述されている。
【００３６】
最後に、Ｓ７０４において、バイナリＸＭＬに符号化する。これにより得られたバイナリＸＭＬ化した符号化規則は、クライアントで読み出し部分の開始位置から読み出しを開始する際に符号化規則を復元可能にするための復元情報となる。
【００３７】
説明を図５のフローに戻す。図７の処理フロー後、Ｓ５０６において、Ｓ７０４でバイナリＸＭＬ化した符号化規則（復元情報）のサイズと読み出し部分のサイズとを比較する。ここで読み出し部分が小さい場合は、読み出し部分自体をインデックス情報に保存したほうが効率的な場合がある。そこで比較した結果、抽出した符号化規則のサイズが読み出し部分のサイズより大きいときは、Ｓ５０７において、読み出し部分を再符号化しリプライ情報として見出し情報に保存する。見出し情報は例えば外部記憶装置１０４に記憶される。
【００３８】
バイナリＸＭＬ化した符号化規則のサイズの方が小さければ、Ｓ５０８において、バイナリＸＭＬ化した符号化規則を、読み出し部分への参照情報と関連付けてリプライ情報として見出し情報に保存する。図９に示すように、バイナリＸＭＬ化した符号化規則は復元情報として、restore1.xmlという識別子をつけて保存されている。
【００３９】
Ｓ５０９において、リプライ情報を使って、リプライメッセージを送信する。リプライ情報が、Ｓ５０７で保存された再符号化された読み出し部分であれば、直接リプライ情報をリプライメッセージに入れ送信する。Ｓ５０８で保存された情報であれば、読み出し部分の参照情報に基づいて読み出し部分を抜き出し、復元情報と共にリプライメッセージに入れ送信する。この際、ZIPなどの一般的なアーカイブ方法を用いてデータ結合してもよいが、EXIの文書ヘッダのようにユーザ定義可能なフィールドがあれば、その部分に復元情報を書き込んでもよい。
【００４０】
以上の処理により、Ｓ５０８において当該読み出し部分の見出し情報が作成されたならば、同じ読み出し要求を再度受信したときは、Ｓ５０２で、見出し情報から復元情報及び参照情報を取得すればよい。
【００４１】
読み出し要求を行った側は、リプライメッセージに復元情報が含まれていれば、復元情報から符号化規則を復元し、リプライメッセージに含まれる読み出し部分を読む。
【００４２】
図９は、見出し情報のテーブルを示しているが、この見出し情報テーブルは更新される。更新方法は、本発明において限定しないが、例えば次の方法が考えられる。テーブルにはエントリごとに参照フラグがあり、エントリ参照時には参照フラグをオンにする。一定時間ごとに参照フラグをチェックするルーチンがあり、参照フラグがオフになっていれば、アクセス頻度が少ない見出し情報と判断し、そのエントリを見出し情報テーブルから削除する。また、チェックルーチンは、チェック時に一旦全ての参照フラグをオフにする。
【００４３】
次のような方法でも、見出しテーブルは更新される。テーブルにはエントリごとに参照時刻が記録される。見出し情報テーブルが一定サイズ以上になる場合は参照時刻の古いエントリを削除する。
【００４４】
いずれの場合でも、書き換えを行うのはテーブル情報のみで、符号化文書は関与しない。
【００４５】
以上の実施形態によれば、バイナリＸＭＬの読み出しアクセスを高速化する見出し情報の生成において、効率的な見出し情報の更新を実現することができる。
【００４６】
＜実施形態２＞
実施形態２では、実施形態１で抽出した復元情報を、より小さいサイズに削減する例を示す。実施形態１で抽出した符号化規則の中には、読み出し要求が発生した文書部分で使用される規則だけでなく、読み出し部分の終了後や一度も使用されない規則も含まれる。例えば、文字列テーブルの“ID0001”はtypeA要素の外でしか使用されないし、“product”、“catalog”、“serialNum”は一度も使用されない。これらの情報は復元情報として冗長であるので削減したい。図１０に削減処理のフローを示す。また、図１１に削減結果の復元情報を示す。以下、図１０のフローに従って説明する。
【００４７】
Ｓ５０４において文書部分の開始位置を発見した際に、Ｓ１００１において、解析処理で生成された文字列テーブルの各エントリに参照フラグを設定しオフにしておく。Ｓ１００２において、読み出し部分の終了位置を検出するために符号化文書を解析する。Ｓ１００３において、解析した結果、文字列テーブルのindexを使った符号化データが記述されていたかどうかをチェックする。記述されていれば、Ｓ１００４において、記述されていたindexの参照フラグをオンにする。Ｓ１００５において、読み出し部分の終了位置を発見した場合は、Ｓ１００６において、テーブル内の参照フラグがオンになったエントリを抽出してＳ５０５の処理を行う。
【００４８】
また、Ｓ７０１において、文字列テーブルをＸＭＬで記述する際、使用されたエントリしか表現しないので、indexが不連続になる場合がある。この場合は、空のentry要素を記述するか、entryの空の範囲を記述することで不連続部分を表現する。本実施形態では、文字列テーブルの全てのエントリが、文書部分内で使用されていないので、不連続部分を表現せず、図１１に示すようにstartIndex属性に文字列テーブルの次の空きindex番号を記述するようにする。
【００４９】
実施形態２は実施形態１に比べて、必要な復元情報を抽出する処理のオーバヘッドを生じるが、読み出し部分のサイズが小さい場合には有効な場合がある。そこで、実施形態１と実施形態２の方法を読み出し部分のサイズに応じて切り替えるようにしてもよい。
【００５０】
以上の実施形態２によれば、見出し情報の生成において、よりコンパクトな復元情報で実現することができる。
【００５１】
（他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011128988.tif 000003
【図２】
2011128988.tif 000004
【図３】
2011128988.tif 000005
【図４】
2011128988.tif 000006
【図５】
2011128988.tif 000007
【図６】
2011128988.tif 000008
【図７】
2011128988.tif 000009
【図８】
2011128988.tif 000010
【図９】
2011128988.tif 000011
【図１０】
2011128988.tif 000012
【図１１】
2011128988.tif 000013