(57)【特許請求の範囲】
【請求項１】
処理手段と、記憶手段を備える構造化文書管理装置において、前記処理手段が前記記憶手段に格納された文書管理プログラムを読み出して解釈実行することにより、文書記述言語を用いて記述された構造化文書を管理する構造化文書管理方法であって、
文書登録制御部が、文書の登録を行う際に、前記記憶手段から読み出した文書内容を構文解析して該文書中に含まれるすべての実体参照情報を抽出し、該抽出した実体参照情報を用いて、解析された文書論理構造の木構造中に、下位ノード群の内容を前記文書記述言語のテキストとして含んでいるファイルを参照する実体参照ノードを挿入する実体参照情報付加ステップと、
内容データ更新処理部が、文書の更新を行う際に、前記文書論理構造の木構造中から、ユーザの指示に従って任意の実体参照ノードを選択し、該実体参照ノードが示すファイルを更新対象として選択し、前記記憶手段内にある該選択された更新対象ファイルの内容テキストを更新するファイル更新ステップと、
部分的対応関係データ生成処理部が、前記更新されたファイルの内容テキストを構文解析し、該内容テキストに対応する部分的な論理構造を生成する部分論理構造生成ステップと、
対応関係データ更新処理部が、前記文書論理構造の木構造中に含まれる実体参照ノードのうち、前記更新対象ファイルを参照している実体参照ノードをすべて検出し、該検出された実体参照ノードの下位にあるノード群を、前記部分論理構造生成ステップにおいて生成された前記部分的な論理構造によって置換し、該置換後の文書論理構造を前記記憶手段に格納する文書論理構造更新ステップとを有することを特徴とする構造化文書管理方法。
【請求項２】
処理手段と、記憶手段を備える構造化文書管理装置において、前記処理手段が前記記憶手段に格納された文書管理プログラムを読み出して解釈実行することにより、文書記述言語を用いて記述された構造化文書を管理する構造化文書管理方法であって、
文書登録制御部が、文書の登録を行う際に、前記記憶手段から読み出した文書内容を構文解析して該文書中に含まれるすべての実体参照情報を抽出し、該抽出した実体参照情報を用いて、解析された文書論理構造の木構造中に、下位ノード群の内容を前記文書記述言語のテキストとして含んでいるファイルを参照する実体参照ノードを挿入する実体参照情報付加ステップと、
論理構造編集処理部が、文書の更新を行う際に、前記文書論理構造の木構造中から、ユーザの指示に従って任意の部分的な論理構造を更新対象として選択し、該部分的な論理構造の編集を行う論理構造編集ステップと、
編集結果データ生成処理部が、前記文書論理構造中に含まれる実体参照ノードを参照して、前記部分的な論理構造を対象として行った編集の影響を受けるファイル群を検出し、該検出された各ファイルについて、その更新後の内容となる前記文書記述言語のテキストを生成する編集結果データ生成ステップと、
対応内容データ更新処理部が、前記生成した各テキストによって前記記憶手段内にある前記各ファイルのデータ内容を置換する対応データ内容更新ステップと、
対応関係データ更新処理部が、前記文書論理構造の木構造中に含まれる実体参照ノードのうち、前記更新されたファイルを参照している実体参照ノードをすべて検出し、該検出された実体参照ノードの下位にあるノード群を、前記論理構造編集ステップにおいて編集された部分的な論理構造と整合する構造に置換し、該置換後の文書論理構造を前記記憶手段に格納する文書論理構造更新ステップとを有することを特徴とする構造化文書管理方法。
【請求項３】
処理手段と、記憶手段を備える構造化文書管理装置において、前記処理手段が前記記憶手段に格納された文書管理プログラムを読み出して解釈実行するように構成された、文書記述言語を用いて記述された構造化文書を管理する構造化文書管理装置であって、
文書の登録を行う際に、前記記憶手段から読み出した文書内容を構文解析して該文書中に含まれるすべての実体参照情報を抽出し、該抽出した実体参照情報を用いて、解析された文書論理構造の木構造中に、下位ノード群の内容を前記文書記述言語のテキストとして含んでいるファイルを参照する実体参照ノードを挿入する文書登録制御部と、
文書の更新を行う際に、前記文書論理構造の木構造中から、ユーザの指示に従って任意の実体参照ノードを選択し、該実体参照ノードが示すファイルを更新対象として選択し、前記記憶手段内にある該選択された更新対象ファイルの内容テキストを更新する内容データ更新処理部と、
前記更新されたファイルの内容テキストを構文解析し、該内容テキストに対応する部分的な論理構造を生成する部分的対応関係データ生成処理部と、
前記文書論理構造の木構造中に含まれる実体参照ノードのうち、前記更新対象ファイルを参照している実体参照ノードをすべて検出し、該検出された実体参照ノードの下位にあるノード群を、前記部分的対応関係データ生成処理部において生成された前記部分的な論理構造によって置換し、該置換後の文書論理構造を前記記憶手段に格納する対応関係データ更新処理部とを備えることを特徴とする構造化文書管理装置。
【請求項４】
処理手段と、記憶手段を備える構造化文書管理装置において、文書記述言語を用いて記述された構造化文書を管理する構造化文書管理方法を処理手段に実行させる為のプログラムを記録した媒体であって、
文書登録制御部が、文書の登録を行う際に、前記記憶手段から読み出した文書内容を構文解析して該文書中に含まれるすべての実体参照情報を抽出し、該抽出した実体参照情報を用いて、解析された文書論理構造の木構造中に、下位ノード群の内容を前記文書記述言語のテキストとして含んでいるファイルを参照する実体参照ノードを挿入する実体参照情報付加ステップと、
内容データ更新処理部が、文書の更新を行う際に、前記文書論理構造の木構造中から、ユーザの指示に従って任意の実体参照ノードを選択し、該実体参照ノードが示すファイルを更新対象として選択し、前記記憶手段内にある該選択された更新対象ファイルの内容テキストを更新するファイル更新ステップと、
部分的対応関係データ生成処理部が、前記更新されたファイルの内容テキストを構文解析し、該内容テキストに対応する部分的な論理構造を生成する部分論理構造生成ステップと、
対応関係データ更新処理部が、前記文書論理構造の木構造中に含まれる実体参照ノードのうち、前記更新対象ファイルを参照している実体参照ノードをすべて検出し、該検出された実体参照ノードの下位にあるノード群を、前記部分論理構造生成ステップにおいて生成された前記部分的な論理構造によって置換し、該置換後の文書論理構造を前記記憶手段に格納する文書論理構造更新ステップとを前記処理手段に実行させる為のプログラムを記録したことを特徴とする媒体。
【請求項５】
処理手段と、記憶手段を備える構造化文書管理装置において、前記処理手段が前記記憶手段に格納された文書管理プログラムを読み出して解釈実行することにより、文書記述言語を用いて記述された構造化文書を管理する構造化文書管理方法であって、
文書登録制御部が、文書の登録を行う際に、前記記憶手段から読み出した文書内容を構文解析して該文書中に含まれるすべての実体参照情報を抽出し、該抽出した実体参照情報を用いて、解析された文書論理構造の木構造中の各ノードに、その内容を前記文書記述言語のテキストとして含んでいるファイルを参照する実体参照属性を付加する実体参照情報付加ステップと、
内容データ更新処理部が、文書の更新を行う際に、前記文書論理構造の木構造中から、ユーザの指示に従って任意のノードを選択し、該ノードの実体参照属性が示すファイルを更新対象として選択し、前記記憶手段内にある該選択された更新対象ファイルの内容テキストを更新するファイル更新ステップと、
部分的対応関係データ生成処理部が、前記更新されたファイルの内容テキストを構文解析し、該内容テキストに対応する部分的な論理構造を生成する部分論理構造生成ステップと、
対応関係データ更新処理部が、前記文書論理構造の木構造中において、前記更新対象ファイルを参照している実体参照属性を持つノード群の中で最上位に位置するノードをすべて検出し、該検出されたノード以下のノード群を、前記部分論理構造生成ステップにおいて生成された前記部分的な論理構造によって置換し、該置換後の文書論理構造を前記記憶手段に格納する文書論理構造更新ステップとを有することを特徴とする構造化文書管理方法。
【請求項６】
処理手段と、記憶手段を備える構造化文書管理装置において、前記処理手段が前記記憶手段に格納された文書管理プログラムを読み出して解釈実行することにより、文書記述言語を用いて記述された構造化文書を管理する構造化文書管理方法であって、
文書登録制御部が、文書の登録を行う際に、前記記憶手段から読み出した文書内容を構文解析して該文書中に含まれるすべての実体参照情報を抽出し、該抽出した実体参照情報を用いて、解析された文書論理構造の木構造中の各ノードに、その内容を前記文書記述言語のテキストとして含んでいるファイルを参照する実体参照属性を付加する実体参照情報付加ステップと、
論理構造編集処理部が、文書の更新を行う際に、前記文書論理構造の木構造中から、ユーザの指示に従って任意の部分的な論理構造を更新対象として選択し、該部分的な論理構造の編集を行う論理構造編集ステップと、
編集結果データ生成処理部が、前記文書論理構造中に含まれる実体参照属性を参照して、前記部分的な論理構造を対象として行った編集の影響を受けるファイル群を検出し、該検出された各ファイルについて、その更新後の内容となる前記文書記述言語のテキストを生成する編集結果データ生成ステップと、
対応内容データ更新処理部が、前記生成した各テキストによって前記記憶手段内にある前記各ファイルのデータ内容を置換する対応データ内容更新ステップと、
対応関係データ更新処理部が、前記文書論理構造の木構造中に含まれるノードのうち、前記更新されたファイルを参照している実体参照属性を持つノード群の中で最上位に位置するノードをすべて検出し、該検出されたノード以下のノード群を、前記論理構造編集ステップにおいて編集された部分的な論理構造と整合する構造に置換し、該置換後の文書論理構造を前記記憶手段に格納する文書論理構造更新ステップとを有することを特徴とする構造化文書管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータ装置を用いた電子化文書データを管理する構造化文書管理システムに関し、特に文書の論理的構造とそのエンティティ構成とを対応付けて管理する構造化文書管理システムに適用して有効な技術に関するものである。
【０００２】
【従来の技術】
情報化社会の本格的進展に伴い、ワードプロセッサ、パーソナルコンピュータ等を用いて作成された電子化文書データが爆発的な勢いで増加しつつある。単に雑多な文書をコンピュータ上で作成して表示や印刷に用いるだけでなく、組織体の業務上重要な役割を果たす文書（ミッションクリティカル文書）を電子的に作成し、それらの文書を取り扱う業務全体を電子化することによって、業務効率の大幅な向上を実現することが望まれている。
【０００３】
この様なミッションクリティカル文書は、単に表示・印刷のみを目的とするものではなく、文書内部からのデータの抽出、派生文書の作成や表示体裁を変えての再利用等、さまざまな処理の対象となる為、多くの場合SGML(Standard Generalized Markup Language)、XML(eXtensible Markup Language)、HTML(Hyper Text Markup Language)等の文書記述言語を用いて、容易に機械処理可能な構造化文書データとして作成される。従って、これらのミッションクリティカル文書を扱う文書管理システムは、構造化文書を格納・管理し、構造情報の参照、文書内容の編集・改訂、バージョン履歴の管理等を行う機能を備える必要がある。
【０００４】
前記文書記述言語によって記述された構造化文書は、実体構造と論理構造との二重の構造を持つ。ここで論理構造とは、文書を構成する個々の論理的な要素（章、節、段落その他）の並び順や相互の包含関係からなる構造であり、前記文書記述言語では、その要素の種別（要素型）を示す文字列である「タグ」を各論理要素の先頭と末尾に配置することによって文書の論理構造を表現する。また実体構造とは、文書データを「エンティティ」と呼ぶ単位に分割し、内容テキスト中に他のエンティティへの参照を記述することによって表現される構造であり、エンティティ間の呼び出し関係からなる。
【０００５】
一般に、文書が長大になり、単一の連続したテキストとして文書を維持するのが不適切になった場合、文書を複数のエンティティに分割し、各エンティティ毎に担当者を割り当てて個別に執筆・編集する等の管理が行なわれる。また、図表データの様に各種の処理プログラム固有のデータ形式で記述され、内容文字列やタグからなるテキストと混在させることができないデータも、それぞれ別のエンティティとして扱われる。文書が複数個のエンティティから構成される場合、通常は各エンティティをそれぞれ１個のファイルに格納する。なお、構造化文書中で要素を識別する為に用いられるタグ、エンティティへの参照を記述するエンティティ参照、及びコメント等を記述した文字列を総称してマークと呼ぶ。
【０００６】
図１５は従来の文書記述言語SGMLによって記述された構造化文書の一例を示す図である。１個のSGML文書の実体構造は、文書本体に対応する１個のエンティティ（文書エンティティ）と、ここから直接間接に参照される０個以上の外部エンティティから構成される。
外部エンティティには、文書エンティティと同様にSGMLテキストとして記述されるテキストエンティティと、図表等の非SGMLデータエンティティとがある（本明細書では、文書エンティティと外部エンティティとを総称して単にエンティティと呼ぶ）。図１５に例示する文書の場合、文書エンティティ１０１からテキストエンティティ１０２及び１０３並びに非SGMLデータエンティティ１０４が参照されている。またテキストエンティティ１０２中にもテキストエンティティ１０３への参照がある。その結果、テキストエンティティ１０３は文書エンティティ１０１とテキストエンティティ１０２の両方から参照され、両者の間で共有されている。
【０００７】
図１６は従来の図１５のSGML文書を解析して得られる論理構造の例を示す図である。図１６に示す様にSGML文書の持つ論理構造は、要素と内容データをノードとする木構造として表現することができる。
図１６において楕円形のノードが要素、矩形のノードが内容データ（解析済み文字列データまたは非SGMLデータ）を表している。また図中で点線で囲った範囲はそれぞれノードの集合を表している。ここでノード集合２０１は前記の文書エンティティ１０１に対応しており、ノード集合２０２はテキストエンティティ１０２、ノード集合２０３及び２０４はテキストエンティティ１０３、ノード集合２０５はデータエンティティ１０４に対応している。エンティティとノード集合との対応関係が示す通り、エンティティ参照によって呼び出した被参照エンティティの内容をその呼び出し位置に展開し、結果として得られる展開済みテキストを構文解析することにより、SGML文書の論理構造が得られる。
【０００８】
従来、文書データはファイルに格納され、ファイルシステム上で管理されてきた。特開平9-223054号公報に示される発明（以後、これを公知例１と呼ぶ）は、複数のファイルからなるファイル集合を単位として、記憶手段からのファイルの読み出し及び記憶手段へのファイルの格納、またファイル集合を単位とするバージョン管理を実現している。公知例１は本来コンピュータプログラムを構成するファイル群の管理を目的とした発明であるが、そのファイル管理機能は大規模な文書を構成するファイル群を管理する目的にも使用することができる。しかし、公知例１の発明は、構造を持たないデータとして個々のファイルを扱うので、文書管理に適用した場合に文書の構造を意識した操作を行うことはできない。
【０００９】
これに対して構造化文書を直接管理できる従来技術として、例えば特開平8-44718号公報に示された発明（以後、これを公知例２と呼ぶ）がある。公知例２に示される文書処理装置は、登録された文書の構造を解析し、章、節等の論理要素をノードとする木構造データを生成してこれを格納・管理する手段を備えている。また文書構造の一部を構成する部分木を複数文書間で共有する手段や、部分木に対して論理要素の追加/削除/更新等が行われた場合に、そのバージョンを管理する手段を備えている。
【００１０】
【発明が解決しようとする課題】
前記公知例１に示す従来技術では、文書を構成する個々のファイル及びそれらのファイルの集合としての文書の状態を管理することはできるが、文書の持つ論理的構造を認識し、構造に沿った操作を行う手段を持たないので、構造化文書を扱う文書管理システムとしては適していない。これに対して前記公知例２に示す従来技術では、登録された文書の持つ論理的構造を表現する木構造データを直接格納・管理するので、格納されている構造化文書データに対して構造情報の参照や編集、部分構造（部分木）単位の共有制御、部分構造のバージョンの管理等が可能となる。しかし、SGMLやXML等の文書記述言語を用いて記述された構造化文書を管理しようとした場合、前記公知例２に示す従来技術によっても以下に説明する様な課題が解決されずに残る。
【００１１】
すなわち前記公知例２に示す従来技術は、文書の論理構造を格納・管理する手段は備えているものの、実体構造と論理構造とを対応付けて管理する手段や、木構造形式で表現された対応関係データと文書記述言語を用いてテキスト形式で記述されたエンティティデータとの間で随時相互変換を行う手段は備えていない。前記公知例２に示す従来技術を適用した文書管理システムにSGML文書を登録した場合、登録前にそのSGML文書が持っていたエンティティ構成に関する情報は失われてしまう。
【００１２】
この為、前記公知例２に示す従来技術を適用した文書管理システムに複数個のエンティティから構成されるSGML文書を登録して論理構造データを生成する場合、登録対象文書の持つエンティティ構成に対応したノード集合を設定し、各ノード集合毎に、対応するエンティティの持つ属性を継承してその属性（所有者名、アクセス権等）を付与することはできない。登録した文書に関して分担執筆や部分構造の共有を行う場合、分担や共有の単位となるノード集合の設定と該ノード集合に対する属性設定が必要になるが、前記公知例２に示す従来技術を適用した文書管理システムではこれをユーザが手作業で行わなければならず、作業が極めて煩雑になる。
【００１３】
また、前記公知例２に示す従来技術を適用した文書管理システムから登録済み文書を再びテキスト形式のSGML文書として外部に取り出そうとした場合、登録時に存在していたエンティティ構成に対応する複数のファイルに分割して文書データを取り出すことはできず、文書内容全体を含む単一の文書エンティティとして取り出すことしかできない。従って、前記公知例２に示す従来技術を適用した文書管理システムを文書サーバとして使用し、該文書サーバにネットワークを介して接続したクライアントコンピュータで文書内容の表示や再利用を行うシステム構成をとった場合、クライアント側で必要とする部分的なテキストをエンティティ単位で取り出して処理することができず、毎回文書データ全体を取り出すことになるので、クライアントとサーバ間での転送データ量が増大し、処理効率が低下する。
【００１４】
また、クライアント側で文書内容の編集・更新を行うシステム構成をとった場合、登録済みSGML文書から特定のエンティティ部分だけを取り出して編集し、更新後のエンティティを再登録することにより文書論理構造を部分的に更新することができないので、複数人の担当者による大規模文書の共同管理・分担執筆が困難になる。
【００１５】
更に、文書を構成するエンティティ毎に、その内容と作成者を保証する為に電子署名データを付加して管理しようとした場合、前記公知例２に示す従来技術を適用した文書管理システムでは文書を登録した段階でエンティティ単位のテキストデータは論理構造データに展開されて失われてしまう為、この様な厳密な文書管理が不可能であるという問題がある。
【００１６】
本発明の目的は上記問題を解決し、登録文書の持つ論理構造と実体構造とを相互に変換可能な形で対応付けて管理することが可能な技術を提供することにある。
【００１７】
本発明の他の目的は属性設定を手作業で行うことなく登録前の構造化文書の各エンティティが持っていた属性に従って登録済み文書の各エンティティのアクセス制御を行うことが可能な技術を提供することにある。
【００１８】
本発明の他の目的はエンティティ取り出し時の転送データ量を減少させて処理効率を向上させることが可能な技術を提供することにある。
【００１９】
本発明の他の目的は複数人の担当者による大規模文書の共同管理・分担執筆を容易に行うことが可能な技術を提供することにある。
【００２０】
本発明の他の目的はその内容と作成者を保証する為に文書を構成するエンティティ毎に電子署名データを付加して厳密な文書管理を行うことが可能な技術を提供することにある。
【００２１】
【課題を解決するための手段】
本発明は、文書記述言語を用いて記述された構造化文書を管理する構造化文書管理システムにおいて、構造化文書の実体構成及び論理構造を示す対応関係データを使用して複数のエンティティから成る構造化文書を管理するものである。
【００２２】
本発明では、SGML等の文書記述言語で記載された構造化文書を登録する際に登録対象文書の構文解析を行い、その実体構造を示すエンティティ構成表と、論理構造を示す解析済みインスタンスデータとを有する構文解析結果データを生成する。そして前記生成した構文解析結果データを参照し、登録対象文書を構成するエンティティのリソース名を当該エンティティのエンティティ識別子に対応付けて前記エンティティ構成表に設定する。すなわち登録対象文書を構成する全てのエンティティについて、そのエンティティ種別、エンティティ名、エンティティ識別子及びリソース名を表形式で前記エンティティ構成表にまとめ、登録対象文書の文書インスタンスを構文解析していく過程で検出したタグ等の記号で表されるイベントを、その出現順に従ってイベント種別とパラメタとの対応表の形で解析済みインスタンスデータにまとめておく。
【００２３】
次に前記生成した構文解析結果データを参照して登録対象文書が持つ実体構造と論理構造との対応関係を抽出し、前記エンティティ識別子と解析済みインスタンスデータにより得られる論理構造部分とを対応付けて登録対象文書の実体構造及び論理構造を示す対応関係データを生成する。
【００２４】
前記対応関係データは、登録対象文書の要素、内容データ及びエンティティ遷移をノードとして接続した木構造で表される。この対応関係データでは、あるエンティティ遷移ノードを根とする部分木から、下位のエンティティ遷移ノードを根とする全ての部分木を除いた部分が、そのエンティティ遷移ノードに対応するエンティティに内容として含まれる部分になる。すなわち本発明の対応関係データは、実体構造（エンティティ構成）と論理構造との対応関係をエンティティ遷移ノードという形でその内部に含んでいる。
【００２５】
前記の様に本発明では登録対象文書が元々持っていた複数のエンティティの実体構造とそれらの論理構造を保持したまま登録を行っているので、登録した文書を更新する場合には登録済み文書の特定のエンティティまたは特定の論理構造部分を選択した部分的な更新処理を行うことができる。
【００２６】
登録済み文書のエンティティを更新する場合には登録済み文書の任意のエンティティを更新対象として選択し、前記更新対象の内容データを更新する。そして前記更新対象エンティティの実体構成及び論理構造を示す部分的な対応関係データを生成する。次に登録済み文書の対応関係データ中で前記更新対象エンティティに対応する部分範囲を求め、前記求めた部分範囲の対応関係データを前記更新対象エンティティの部分的な対応関係データによって置換して登録済み文書の対応関係データを更新する。
【００２７】
登録済み文書の論理構造を更新する場合には登録済み文書の任意の論理構造を更新対象として選択し、前記更新対象の論理構造を編集する。そして前記編集の行われた論理構造の範囲内にあるエンティティの部分的な対応関係データを文字列化して記述した編集結果エンティティデータを生成し、前記生成した編集結果エンティティデータによって前記編集の行われた論理構造の範囲内のエンティティの内容データを置換する。次に登録済み文書の対応関係データ中で前記エンティティに対応する部分範囲を求め、前記求めた部分範囲の対応関係データを前記エンティティの部分的な対応関係データによって置換して登録済み文書の対応関係データを更新する。
【００２８】
前記の様に本発明では、実体構造と論理構造とを対応付けて管理しており、木構造で表現された対応関係データと、文書記述言語を用いてテキスト形式で記述されたエンティティデータとの間で随時相互変換を行う。前記従来技術を適用した文書管理システムにSGML文書を登録した場合、複数のファイルから成るエンティティを文書内容全体が含まれた単一の文書エンティティとしてしまうので、登録前にそのSGML文書が持っていたエンティティ構成に関する情報は失われてしまうが、本発明では登録対象文書のエンティティ構成に関する情報が保持される。
【００２９】
よって本発明で複数個のエンティティから構成されるSGML文書を登録して対応関係データを生成する場合、登録対象文書の持つエンティティ構成に対応したノード集合を設定し、対応するエンティティの持つ属性を継承してその所有者名やアクセス権等の属性を各ノード集合毎に付与することができる。登録した文書に関して分担執筆や部分構造の共有を行う場合、分担や共有の単位となるノード集合の設定と該ノード集合に対する属性設定が必要になるが、本発明では対応するエンティティの持つ属性を継承するので、前記属性設定をユーザが手作業で行う必要がない。
【００３０】
また登録済み文書を再びテキスト形式のSGML文書として外部に取り出そうとした場合、前記従来技術では登録時に存在していたエンティティ構成に対応する複数のファイルに分割して文書データを取り出すことはできないが、本発明では登録時に存在していたエンティティ構成をそのまま保持しているので、そのエンティティ構成に対応する複数のファイルに分割して文書データを取り出すことができる。
【００３１】
従って本発明の文書管理システムを文書サーバとして使用し、該文書サーバにネットワークを介して接続したクライアントコンピュータで文書内容の表示や再利用を行うシステム構成をとった場合、クライアント側で必要とする部分的なテキストをエンティティ単位で取り出して処理することが可能で、毎回文書データ全体を取り出すことがないのでクライアント−サーバ間での転送データ量が減少して処理効率が向上する。
【００３２】
またクライアント側で文書内容の編集・更新を行うシステム構成をとった場合、登録済みSGML文書から特定のエンティティ部分だけを取り出して編集し、更新後のエンティティを再登録することにより文書論理構造を部分的に更新することができるので、複数人の担当者による大規模文書の共同管理・分担執筆が容易に行える。
【００３３】
更にエンティティ単位のテキストデータが失われてしまうことがないので、その内容と作成者を保証する為に文書を構成するエンティティ毎に電子署名データを付加して厳密な文書管理を行うことが可能である。
【００３４】
以上の様に本発明の構造化文書管理システムによれば、登録対象文書を構成する各エンティティと当該エンティティに対応する論理構造部分とを示す対応関係データを生成して複数のエンティティを管理するので、登録文書の持つ論理構造と実体構造とを相互に変換可能な形で対応付けて管理することが可能である。
【００３５】
【発明の実施の形態】
以下に構造化文書の実体構造と論理構造とを対応付けて管理する一実施形態の構造化文書管理システムについて説明する。
図１は本実施形態の文書管理サーバの概略構成を示す図である。図１に示す様に本実施形態の文書管理サーバは、文書構文解析処理部４２１と、内容データ抽出処理部４２２と、対応関係データ抽出処理部４２３と、内容データ更新処理部４２４と、部分的対応関係データ生成処理部４２５と、対応部分範囲決定処理部４２６と、論理構造編集処理部４２７と、編集結果データ生成処理部４２８と、対応内容データ更新処理部４２９と、更新対象検出処理部４３０と、対応関係データ更新処理部４３１とを有している。
【００３６】
文書構文解析処理部４２１は、登録対象文書の構文解析を行い、登録対象文書の実体構造を示すエンティティ構成表と、登録対象文書の論理構造を示す解析済みインスタンスデータとを有する構文解析結果データを生成する処理部である。
【００３７】
内容データ抽出処理部４２２は、前記生成した構文解析結果データを参照し、登録対象文書を構成するエンティティの内容データを読み出して文書空間データベース格納領域４１８に格納し、前記格納したエンティティのリソース名を当該エンティティのエンティティ識別子に対応付けて前記エンティティ構成表に設定する処理部である。
【００３８】
対応関係データ抽出処理部４２３は、登録対象文書を構成するエンティティと解析済みインスタンスデータにより得られる論理構造部分とを対応付けて登録対象文書の実体構造及び論理構造を示す対応関係データを生成する処理部である。
【００３９】
内容データ更新処理部４２４は、登録済み文書の実体構造及び論理構造を示す対応関係データから登録済み文書を構成する任意のエンティティを更新対象として選択して更新対象エンティティの内容データを更新する処理部である。
【００４０】
部分的対応関係データ生成処理部４２５は、前記更新対象エンティティの実体構造及び論理構造を示す部分的な対応関係データを生成する処理部である。対応部分範囲決定処理部４２６は、登録済み文書の対応関係データ中で前記更新対象エンティティに対応する部分範囲を求める処理部である。
【００４１】
論理構造編集処理部４２７は、登録済み文書の実体構造及び論理構造を示す対応関係データから登録済み文書の任意の論理構造を更新対象として選択して編集する処理部である。編集結果データ生成処理部４２８は、前記編集した論理構造の範囲内にあるエンティティの実体構造及び論理構造を示す部分的な対応関係データを文字列化して記述した編集結果エンティティデータを生成する処理部である。
【００４２】
対応内容データ更新処理部４２９は、前記生成した編集結果エンティティデータによって前記エンティティの内容データを置換する処理部である。更新対象検出処理部４３０は、登録済み文書の対応関係データ中で前記エンティティに対応する部分範囲を求める処理部である。対応関係データ更新処理部４３１は、前記求めた部分範囲の対応関係データを前記部分的な対応関係データによって置換して登録済み文書の対応関係データを更新する処理部である。
【００４３】
文書管理サーバを文書構文解析処理部４２１、内容データ抽出処理部４２２、対応関係データ抽出処理部４２３、内容データ更新処理部４２４、部分的対応関係データ生成処理部４２５、対応部分範囲決定処理部４２６、論理構造編集処理部４２７、編集結果データ生成処理部４２８、対応内容データ更新処理部４２９、更新対象検出処理部４３０及び対応関係データ更新処理部４３１として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する媒体はＣＤ−ＲＯＭ以外の他の媒体でも良い。
【００４４】
なお文書登録制御プログラム４１０は、文書登録処理全体を制御すると共に、登録対象文書の持つエンティティ構成に対応したノード集合を設定し、対応するエンティティの持つ属性を継承してその属性を各ノード集合毎に付与したり、登録対象文書を構成するエンティティに付加された電子署名を当該エンティティの内容データと共に登録する処理を行う。
【００４５】
また文書更新制御プログラム４１２は、登録済み文書の持つエンティティ構成に対応して設定されたノード集合の所有者名やアクセス権等の属性に応じてノード集合毎に更新対象へのアクセス制御を行い、登録済み文書を構成するエンティティ単位で編集対象を取り出して更新する処理や、複数の編集対象を別々に取り出して編集することにより構造化文書の編集を編集対象毎に並列に行う処理を制御し、更新後の編集対象を構成するエンティティに電子署名を付加する処理を行う。
【００４６】
図２は本実施形態の文書管理システムの全体構成を示す図である。図２に示す通り本実施形態の文書管理システムは、文書管理サーバ３０１、文書管理クライアント３０２、文書業務処理システム３０３、及びネットワーク３０４から構成される。
【００４７】
文書管理サーバ３０１は、管理対象文書の登録・格納、登録済み文書の構造及び内容データに対する参照及び更新、特定の属性または内容文字列を持つ文書の検索、登録済み文書の削除等、文書管理に関する主要な処理を実行する。
【００４８】
文書管理クライアント３０２は、文書管理サーバ３０１が管理する文書群を操作する為のGUI(Graphical User Interface)を提供し、ユーザからの指示に従って文書の登録、参照、更新、検索等の処理を行う為の指令及びデータをネットワーク３０４を介して文書管理サーバ３０１に転送して前記指令を実行させる。
【００４９】
業務処理システム３０３は、文書管理クライアント３０２と同様にユーザからの指示に従って指令及びデータを文書管理サーバ３０１に転送して該指令を実行させるが、一般的な文書管理用GUIではなく、特定の業務を実行する為の専用GUIをユーザに提供する。ネットワーク３０４は、局所ネットワーク（LAN:Local Area Network）または広域ネットワーク(WAN:Wide Area Network)であって、複数のコンピュータ装置を接続し、相互に指令及びデータを転送する手段を提供する。
【００５０】
なお図２には文書管理クライアント３０２及び業務処理システム３０３の２台のコンピュータを文書管理サーバ３０１に対するクライアントとして使用する構成例を示したが、クライアントは１台のみの構成とすることも、３台以上とする構成をとることもできる。またクライアントは文書管理クライアントだけであっても良く、業務処理システムだけであっても良い。
【００５１】
図２では文書管理クライアント３０２及び業務処理システム３０３から文書管理サーバ３０１に指令及びデータを転送する手段としてネットワーク３０４を使用するものとしたが、代わりにフロッピーディスク、光磁気ディスク、追記型光ディスク等の可搬型媒体を使用する構成をとることもでき、可搬型媒体とネットワーク３０４を併用する構成をとることもできる。或いはクライアントを文書管理サーバ３０１と同一のコンピュータ上で実行し、データ転送を行わない構成をとることもできる。
【００５２】
以下、本実施形態の主要な構成要素である文書管理サーバ３０１について説明する。図１に示す文書管理サーバ３０１は、ディスプレイ４０１、キーボード４０２、中央処理装置４０３、フロッピーディスクドライブ４０４、フロッピーディスク４０５、通信制御装置４０６、主メモリ４０７、磁気ディスク装置４０８、システムバス４０９から構成される。
【００５３】
ディスプレイ４０１は、本サーバにおける処理の実行状況等を表示する為に用いられる。キーボード４０２は、文書管理サーバ３０１の起動・終了等を指示するコマンドを入力する為に用いられる。中央処理装置４０３は、本サーバを構成する各種プログラムを実行する。フロッピーディスクドライブ４０４は、フロッピーディスク４０５に対するデータの読み書きの為に用いられる。
【００５４】
フロッピーディスク４０５は、登録対象文書等、他のシステムとの間でデータ交換を行う為に用いられる。通信制御装置４０６は、ネットワーク３０４を介して文書管理クライアント３０２及び業務処理システム３０３と通信し、指令及びデータの交換を行う為に用いられる。
【００５５】
主メモリ４０７は、本サーバにおける処理を実行する為の各種プログラム及び一時的なデータを保持する。磁気ディスク装置４０８は、登録された文書データ及び本サーバが文書管理用に使用する各種データを記憶する手段として用いられる。システムバス４０９は、これらの各種装置を相互に接続する。
【００５６】
主メモリ４０７中には、文書登録制御プログラム４１０、文書参照制御プログラム４１１、文書更新制御プログラム４１２、文書出力制御プログラム４１３、文書検索制御プログラム４１４、文書空間管理プログラム４１５、データベース管理システム４１６及びオペレーティングシステム４１７が保持される。磁気ディスク装置４０８中には、文書空間データベース格納領域４１８、プログラム格納領域４１９及びデータファイル格納領域４２０が確保される。
【００５７】
文書登録制御プログラム４１０は、文書記述言語SGMLを用いて記述された登録対象文書を、フロッピーディスク４０５、データファイル格納領域４２０、またはネットワーク３０４から読み込み、その構文解析を行い、登録対象文書の持つエンティティデータ、論理構造データ及びその両者の対応関係を文書空間データベース格納領域４１８に格納する。
【００５８】
文書参照制御プログラム４１１は、文書空間データベース格納領域４１８に格納された登録済み文書のエンティティデータ、論理構造データまたはその両方を読み出し、それらのデータを構成する情報の一部を抽出して要求元クライアントに転送する。
【００５９】
文書更新制御プログラム４１２は、文書空間データベース格納領域４１８に格納された登録済み文書のエンティティデータ、論理構造データまたはその両方に対して、そのデータ内容を更新する処理を行う。
【００６０】
文書出力制御プログラム４１３は、文書空間データベース格納領域４１８から登録済み文書のエンティティデータを読み出し、該文書を構成するエンティティを、フロッピーディスク４０５またはデータファイル格納領域４２０に出力するか、或いはネットワーク３０４を介して要求元クライアント（文書管理クライアント３０２または業務処理システム３０３）に転送する。
【００６１】
文書検索制御プログラム４１４は、要求元クライアントから受け取った検索条件式に従って文書空間データベース格納領域４１８に格納された登録済み文書群の検索を行い、検索結果データを要求元クライアントに転送する。
【００６２】
文書空間管理プログラム４１５は、ネットワーク３０４を介して要求元クライアントからの指令を受信し、該指令の種別に対応して文書登録制御プログラム４１０、文書参照制御プログラム４１１、文書更新制御プログラム４１２、文書出力制御プログラム４１３、または文書検索制御プログラム４１４を起動し、該指令の内容に従った処理を実行させる。また、登録済み文書群を分類整理する為のフォルダオブジェクトを生成して文書空間データベース格納領域４１８に格納する処理や、登録済み文書の一部を文書空間データベース格納領域４１８から削除する処理等、一部の処理については文書空間管理プログラム４１５自身が実行する。
【００６３】
データベース管理システム４１６は、文書空間データベース格納領域４１８に対するデータの格納、更新、削除、検索に関する全ての処理を制御する。文書空間データベース格納領域４１８にアクセスする全てのプログラムは、その全ての処理をデータベース管理システム４１６を介して行う。オペレーティングシステム４１７は、システムの起動・初期化、各種周辺装置との間のデータ転送等、コンピュータ上で本サーバを構成する各プログラムを実行する為の基本機能を提供する。
【００６４】
文書空間データベース格納領域４１８は、本サーバに登録された全ての文書に関するデータ、及び本サーバが文書管理を行う為に必要とする全ての関連データを格納するデータベースである。プログラム格納領域４１９は、本サーバを構成する全てのプログラムを格納しており、これらのプログラムはシステム起動時にオペレーティングシステム４１７によって読み出され、主メモリ４０７に転送される。データファイル格納領域４２０は、オペレーティングシステム４１７または本サーバ上で実行される各種ユーティリティプログラムが使用するデータファイルを格納する。
【００６５】
なお本実施形態ではデータ交換の為の可搬型媒体としてフロッピーディスク４０５を使用する構成としたが、光磁気ディスクや追記型光ディスク等の他種の可搬型媒体を利用する構成をとることもできる。また本実施形態では文書データ及び文書管理用データをデータベース中に格納する構成としたが、データベース管理システムを使用せず、これらのデータをファイルとしてデータファイル格納領域４２０に格納する構成をとることもできる。
【００６６】
次に本実施形態における文書管理サーバ３０１の基本動作手順についてPAD（Problem Analysis Diagram）を用いて説明する。
図３は本実施形態の文書管理サーバ３０１全体の動作を制御する文書空間管理プログラム４１５の概略処理手順を示すPAD図である。キーボード４０２からのサーバ起動コマンド等により文書空間管理プログラム４１５が起動されると、本プログラムはサーバとしてクライアントから指令を受信してはその処理を行うループに入る（ステップ５０１）。このループは、キーボード４０２からサーバの停止を指示するコマンドが入力されるまで継続する。
【００６７】
ステップ５０１のループは、クライアントからの指令を受信する処理（ステップ５０２）と、受信した指令の種別を判定し、該種別に対応する処理に分岐する処理（ステップ５０３）を繰り返す。
【００６８】
ステップ５０３では、受信した指令の種別を判定し、該指令の種別に応じてステップ５０４からステップ５１１までのいずれかの処理を選択して実行する。ここで、前記指令が新たな文書の登録を求める指令であった場合、文書登録制御プログラム４１０を実行して指定された文書を文書空間データベース格納領域４１８に格納する（ステップ５０４）。
【００６９】
また前記指令が特定の登録済み文書の持つ内容データへの参照を求める指令であった場合、文書参照制御プログラム４１１を実行して要求されたデータを文書空間データベース格納領域４１８から読み出し、該データを要求元クライアントに返信する（ステップ５０５）。
【００７０】
また前記指令が特定の登録済み文書の持つ内容データの更新を求める指令であった場合、文書更新制御プログラム４１２を実行して文書空間データベース格納領域４１８に格納された登録済み文書の内容データを更新する（ステップ５０６）。
【００７１】
また前記指令が特定の登録済み文書の一部または全体を外部に出力することを求める指令であった場合、文書出力制御プログラム４１３を実行して文書空間データベース格納領域４１８から登録済み文書の内容データを読み出し、前記指令中の指示に従って、該データをフロッピーディスク４０５またはデータファイル格納領域４２０に出力するか或いはネットワーク３０４を介して要求元クライアントに転送する（ステップ５０７）。
【００７２】
また前記指令が特定の検索条件式を満たす文書の集合を求める指令であった場合、文書検索制御プログラム４１４を実行して文書空間データベース格納領域４１８に格納された登録済み文書群の検索を行い、検索結果データを要求元クライアントに転送する（ステップ５０８）。
【００７３】
また前記指令が登録済み文書群を分類整理する為のフォルダオブジェクトの生成を求める指令であった場合、新たなフォルダオブジェクトを生成して文書空間データベース格納領域４１８に格納する（ステップ５０９）。
【００７４】
また前記指令が特定の文書の特定のフォルダオブジェクトへの関連付け、または特定の関連付けの削除を求める指令であった場合、要求された関連付けの追加または削除を行う（ステップ５１０）。
【００７５】
また前記指令が特定の登録済み文書または特定のフォルダオブジェクトを削除することを求める指令だった場合、文書空間データベース格納領域４１８から指定された文書またはフォルダオブジェクトを削除する（ステップ５１１）。
【００７６】
図４は本実施形態の文書登録制御プログラム４１０の概略処理手順を示すPAD図である。本プログラムは、文書の登録を求めるクライアントからの指令に対応して文書空間管理プログラム４１５によって呼び出される。以下に本実施形態における文書登録制御プログラム４１０の動作手順を説明する。
【００７７】
本プログラムは、文書空間管理プログラム４１５によって呼び出されると、まず登録対象文書を構成するエンティティの一覧を呼び出してパラメタとして入手する（ステップ６０１）。ここで該一覧には、登録対象文書を構成する各エンティティの内容データを保持しているリソースのリソース名と、登録対象文書が複数のエンティティから構成される場合にそのいずれが文書エンティティであるかを識別する情報を含んでいる。
【００７８】
エンティティの内容データの入手元となるリソースとしては、フロッピーディスク４０５またはデータファイル格納領域４２０上に格納されたデータファイル、ネットワーク３０４を介してアクセスできるネットワークリソース及び文書空間データベース格納領域４１８中に格納されている登録済みエンティティが使用できる。リソース名としては、リソースがデータファイルである場合にはそのパス名、ネットワーク上のリソースである場合にはそのネットワークアドレス、登録済みエンティティである場合には該エンティティを他の登録済みエンティティから区別して一意に識別するエンティティ識別子を指定する。
【００７９】
次に登録対象文書に対して該文書を全ての登録済み文書から区別して一意に識別する文書識別子を割り当て（ステップ６０２）、文書構文解析処理部４２１により登録対象文書の文書エンティティから出発してその構文解析を行い、構文解析結果データを生成する（ステップ６０３）。なおこの構文解析の過程で、登録対象文書を構成するエンティティの内、登録済みエンティティを除く全てのエンティティに対して、該エンティティを全ての登録済みエンティティから区別して一意に識別するエンティティ識別子を割り当てる。
【００８０】
次に内容データ抽出処理部４２２は、前記生成した構文解析結果データを参照して、登録対象文書を構成するエンティティの内、登録済みエンティティを除く全てのエンティティについて、ステップ６０５及びステップ６０６を繰り返し実行する（ステップ６０４）。ここでステップ６０５では処理対象となるエンティティの内容データを対応するリソースから読み出す。ステップ６０６では処理対象となるエンティティのエンティティ識別子とその内容データとの組を文書空間データベース格納領域４１８に格納してエンティティの登録を行う。
【００８１】
次にステップ６０７で対応関係データ抽出処理部４２３は、前記構文解析結果データを参照し、登録対象文書が持つ実体構造と論理構造との対応関係を抽出し、登録対象文書を構成する各エンティティと当該エンティティに対応する論理構造部分とを示す対応関係データを生成する。ステップ６０８では、登録対象文書に割り当てた文書識別子と前記対応関係データとの組を文書空間データベース格納領域４１８に格納して文書の登録を行い、処理を終了する。
【００８２】
図５は本実施形態の構文解析結果データのデータ構造を示す図である。図５において文書登録制御プログラム４１０が前記ステップ６０３で生成する構文解析結果データ７０１は、二つの主要な部分、すなわちエンティティ構成表７０２と解析済みインスタンスデータ７０３とからなる。
【００８３】
エンティティ構成表７０２は、登録対象文書を構成する全てのエンティティについて、そのエンティティ種別、エンティティ名、エンティティ識別子及びリソース名を表形式でまとめたデータである。ここで項目「エンティティ種別」は、そのエンティティが文書エンティティ(DOC)、テキストエンティティ(TEXT)または非SGMLデータエンティティ(NDATA)のいずれであるかを記号によって示している。項目「エンティティ名」は、登録対象文書中でそのエンティティを参照する為に用いられているエンティティ名を文字列として示している。但し、そのエンティティが文書エンティティであった場合、本項目は空欄となる。項目「エンティティ識別子」は、そのエンティティに割り当てられたエンティティ識別子を示している。項目「リソース名」は、そのエンティティの内容データを保持するリソースのリソース名を文字列として示している。但し、そのエンティティが登録済みエンティティであった場合、本項目は空欄となる。
【００８４】
解析済みインスタンスデータ７０３は、登録対象文書の文書インスタンスを構文解析していく過程で検出したイベントを、その出現順に従ってイベント種別とパラメタとの対応表の形でまとめたデータである。ここで、項目「イベント種別」は、そのイベントが要素の開始タグ(STAG)、終了タグ(ETAG)、内容を持たない要素の開始と終了を兼ねるタグ(ITAG)、解析済み文字列データ(PCDATA)、エンティティ参照(EREF)、エンティティ終了(EE)のいずれであるかを記号によって示している。項目「パラメタ」は、イベント種別に応じて決まる付加的なデータを示している。イベント種別が開始タグである場合、その開始タグを先頭位置とする要素の要素型名、及び該開始タグ内で指定された属性値（オプション）がパラメタとして示される。イベント種別が終了タグである場合、その終了タグを末尾位置とする要素の要素型名がパラメタとして示される。イベント種別が解析済み文字列データである場合、該文字列の内容がパラメタとして示される。イベント種別がエンティティ参照である場合、被参照エンティティのエンティティ名がパラメタとして示される。エンティティ終了イベントはパラメタを持たない。
【００８５】
図６は本実施形態のエンティティ構成表７０２の具体例を示す図である。図６では図１５に示したSGML文書を構文解析した結果として生成されるエンティティ構成表７０２の例を表している。図６における行８０１〜８０４が、それぞれ図１５に示した文書エンティティ１０１〜データエンティティ１０４に対応する。
【００８６】
図７は本実施形態の解析済みインスタンスデータ７０３の具体例を示す図である。図７では図１５に示したSGML文書を構文解析した結果として生成される解析済みインスタンスデータ７０３の例を表している。図７に示す通り、文書記述言語SGMLの構文に従って記述されたSGML文書は、前記ステップ６０３により、タグ、解析済み文字列データ、エンティティ参照等の出現を示すイベントの列に変換される。
【００８７】
文書登録制御プログラム４１０の対応関係データ抽出処理部４２３は、前記構文解析結果データの解析済みインスタンスデータ７０３を参照して登録対象文書が持つ論理構造を抽出すると共に、解析済みインスタンスデータ７０３中のエンティティ参照(EREF)とエンティティ構成表７０２中のエンティティ識別子とを対応付け、登録対象文書を構成する各エンティティのエンティティ識別子と当該エンティティに対応する論理構造部分とを木構造で表した対応関係データを生成する。
【００８８】
図８は本実施形態の対応関係データのデータ構造を示す図である。図８では文書登録制御プログラム４１０の対応関係データ抽出処理部４２３が生成する対応関係データのデータ構造を表している。この図では、図１５に示すSGML文書を登録対象文書として処理した場合に生成される対応関係データを例として示している。
【００８９】
図８に示す通り、対応関係データ１００１は木構造として表現される。図８において楕円形のノードは要素を表しており、ノード中の文字列はその要素の要素型を示している。また矩形のノードは内容データを表しており、ノード中の文字列は内容データの種別（解析済み文字列データPCDATA、または非SGMLデータNDATA）を示している。菱形のノードはエンティティ遷移を表しており、ノード中の文字列はエンティティ識別子を示している。
【００９０】
ここで、あるエンティティ遷移ノードを根とする部分木から、下位のエンティティ遷移ノードを根とする全ての部分木を除いた部分が、そのエンティティ遷移ノードに対応するエンティティに内容として含まれる部分になる。すなわち本実施形態の文書登録制御プログラム４１０が生成する対応関係データは、論理構造と実体構造（エンティティ構成）との対応関係を、エンティティ遷移ノードという形でその内部に含んでいる。図８の例では、鎖線で囲った部分範囲１００２が、エンティティE0002（図６に示すテキストエンティティ８０２）の内容に対応することになる。
【００９１】
図９は本実施形態の文書更新制御プログラム４１２の概略処理手順を示すPAD図である。本プログラムは、文書の更新を求めるクライアントからの指令に対応して、文書空間管理プログラム４１５によって呼び出される。以下に本実施形態における文書更新制御プログラム４１２の動作手順を説明する。
本プログラムは、文書空間管理プログラム４１５によって呼び出されると、まず更新対象として登録済み文書を構成するいずれかのエンティティの内容が指定されているのか、或いは登録済み文書の論理構造が指定されているのかを判定する（ステップ１１０１）。ここで更新対象としてエンティティが指定されている場合、ステップ１１０２及びステップ１１０３からなる処理に分岐する。また更新対象として論理構造が指定されている場合、ステップ１１０４及びステップ１１０５からなる処理に分岐し、分岐先から復帰した時点で処理を終了する。
ステップ１１０２では、呼び出し時に与えられたパラメタ（エンティティ識別子）を用いて、更新対象となる登録済みエンティティを選択する。次にステップ１１０３において、前記選択されたエンティティの内容データを更新する処理を行う。
ステップ１１０４では、呼び出し時に与えられたパラメタ（文書識別子）を用いて、更新対象となる論理構造を保持する登録済み文書を選択する。次にステップ１１０５において、前記選択された文書の持つ論理構造を更新する処理を行う。
【００９２】
図１０は本実施形態の選択されたエンティティの内容を更新する処理の手順を示すPAD図である。以下に図９におけるステップ１１０３、すなわち選択されたエンティティの内容を更新する処理について、その詳細を説明する。
【００９３】
図１０に示す様に被選択エンティティの更新を行う内容データ更新処理部４２４では、複数のユーザによって１個のエンティティが同時に更新されることを防ぐ為、まず更新対象エンティティに対してロックを設定する（ステップ１２０１）。次にロックの設定に成功したかどうかをチェックし（ステップ１２０２）、成功した場合にはステップ１２０３からステップ１２１１までの更新処理を実行する。失敗した場合には、既にロックが設定されていて更新ができない旨のエラーコードを返却して処理を終了する（ステップ１２１３）。
【００９４】
ステップ１２０３では、更新対象エンティティの内容データを文書空間データベース格納領域４１８から読み出す。次にステップ１２０４では、読み出した内容データを、外部プログラムを用いて編集可能な外部領域（フロッピーディスク４０５、データファイル格納領域４２０、またはネットワーク３０４を介して接続されたクライアント側のワーク領域等）に出力する。そして一旦処理を中断し、出力した内容データの外部プログラム（例えばSGMLエディタ）による編集の終了を待つ。外部プログラムによる編集処理が終了した旨の通知を受けると処理を再開し、ステップ１２０５に進む。ステップ１２０５では、更新後の内容データを外部領域から読み込み、該読み込んだ内容データによって更新対象エンティティの内容データを置換して文書空間データベース格納領域４１８に格納する。
【００９５】
次にステップ１２０６で部分的対応関係データ生成処理部４２５は、更新対象エンティティの種別を判定する。更新対象エンティティが文書エンティティまたはテキストエンティティである場合にはステップ１２０７及びステップ１２０８を実行し、それ以外の非SGMLデータエンティティである場合にはステップ１２０９を実行する。
【００９６】
ここでステップ１２０７では、更新対象エンティティの更新された内容データの構文解析を行い、前記更新対象エンティティのエンティティ構成及び解析済みインスタンスデータを示す構文解析結果データを生成する。ステップ１２０８では、該構文解析結果データを参照して前記更新対象エンティティを構成する各エンティティと解析済みインスタンスデータにより得られる論理構造部分とを対応付けて部分的な対応関係データを生成する。またステップ１２０９では、更新された内容データそのものを前記の部分的な対応関係データとして設定する。
【００９７】
次にステップ１２１０で対応部分範囲決定処理部４２６は、全ての登録済み文書の対応関係データに対する検索を行い、更新対象エンティティに対応する（更新対象エンティティのエンティティ識別子を保持する）全てのエンティティ遷移ノードを検出する。そして検出された全てのエンティティ遷移ノードに関して、ステップ１２１１を繰り返し実行する。ここでステップ１２１１で対応関係データ更新処理部４３１は、選択されたエンティティ遷移ノードの下位にある部分的な対応関係データをステップ１２０８またはステップ１２０９で設定された部分的な対応関係データによって置換し、これを文書空間データベース格納領域中に格納することによって、更新されたエンティティに対応する登録済み文書の対応関係データを更新する。最後にステップ１２１２において更新対象エンティティに設定したロックを解除して処理を終了する。
【００９８】
図１１は本実施形態の選択されたエンティティの内容を更新する処理の経過例を示す図である。図１１では図１０にその手順を示した選択されたエンティティの内容を更新する処理についてその具体的な経過の例を表しており、図１１では図１５に示したテキストエンティティ１０３の内容を外部領域に出力し、外部プログラムによって編集する場合について示している。
【００９９】
ここではテキストエンティティ１０３中の要素 note に含まれる内容文字列の一部をタグ<em>及び</em>で囲み、独立した要素 em に変更したものとする。この編集処理によってテキストエンティティ１０３の内容は編集結果エンティティデータ１３０１の様に更新される。このエンティティはテキストエンティティであるから、前記ステップ１２０７において構文解析が行われ、ステップ１２０８において部分的な対応関係データが生成される。この例の場合、生成される対応関係データは対応関係データ１３０２に示す構造を持つことになる。
【０１００】
次にステップ１２１０において、更新対象エンティティに対応するエンティティ遷移ノードが検索される。図１１に示す例の場合、登録された文書は図８に示した対応関係データ１００１を持つので、この木構造上では前記更新されたテキストエンティティ１０３（エンティティ識別子E0003）に対応するエンティティ遷移ノード２個（対応関係データ１００１中の着色部分の上端）が検出される。従ってステップ１２１１において、これらのエンティティ遷移ノードを根とする部分構造の置き換えが行われ、この文書の対応関係データは最終的に対応関係データ１３０３に示す様に更新される。
【０１０１】
図１２は本実施形態の選択された文書の論理構造を更新する処理の手順を示すPAD図である。以下に図９におけるステップ１１０５、すなわち選択された文書の対応関係データを更新する処理について、その詳細を説明する。
【０１０２】
図１２に示す様に被選択文書の論理構造の更新を行う論理構造編集処理部４２７では、まず編集範囲の選択を行う（ステップ１４０１）。編集範囲の選択は、編集しようとする文書の対応関係データの論理構造上で、任意のノードを指定することによって行う。指定されたノードを根とする部分木が編集可能な範囲となる。
【０１０３】
次にステップ１４０２からステップ１４０６までの処理では、選択された編集範囲に対応する全てのエンティティについて、複数ユーザによる重複更新を防ぐ為にロックを設定する。ここで選択範囲の内部に含まれるエンティティ遷移ノード、及び選択範囲より上位でかつ最も近い位置にあるエンティティ遷移ノードに対応するエンティティが、その選択範囲に対応するエンティティとなる。
【０１０４】
ステップ１４０３では、現在注目している特定のエンティティについて更新ロックを設定する。次にロックの設定に成功したかどうかをチェックし（ステップ１４０４）、失敗した場合には設定済みのロックを全て解除した上で（ステップ１４０５）、既にロックが設定されていて更新ができない旨のエラーコードを返却して処理を終了する（ステップ１４０６）。
【０１０５】
対応エンティティ全てへのロックの設定が成功した場合にはステップ１４０７に進む。ステップ１４０７ではGUI等を介したユーザからの指示に従い、対応関係データの論理構造に対する編集操作（下位ノードの追加、削除、文字列データの変更等）を行う。このとき、変更を加えた位置を含むエンティティには内容を変更したことを示すマークを付加しておく。
【０１０６】
編集操作の終了が指示されるとステップ１４０８に進む。ステップ１４０８では、編集操作の過程で更新マークが付加された全てのエンティティについてステップ１４０９からステップ１４１４までの処理を繰り返す。
【０１０７】
ステップ１４０９で編集結果データ生成処理部４２８は、現在注目しているエンティティに対応する範囲の部分的な対応関係データを入手し、これを一時記憶に格納する。ステップ１４１０では、ステップ１４０９で入手した部分的な対応関係データをSGMLの構文に従って文字列化して記述した編集結果エンティティデータの生成を行う。次にステップ１４１１で対応内容データ更新処理部４２９は、この編集結果エンティティデータによって注目エンティティの内容データを置換して文書空間データベース格納領域４１８に格納する。
【０１０８】
ステップ１４１２で更新対象検出処理部４３０は、全ての登録済み文書の対応関係データに対する検索を行い、更新された注目エンティティに対応する（注目エンティティのエンティティ識別子を保持する）全てのエンティティ遷移ノードを検出する。そして検出された全てのエンティティ遷移ノードに関してステップ１４１３及びステップ１４１４の処理を繰り返し実行する。
【０１０９】
ステップ１４１３で対応関係データ更新処理部４３１は、注目するエンティティ遷移ノードが、ステップ１４０７で論理構造の編集を行った範囲に対応するものであるかどうかを判定し、編集済みのものでない場合には、ステップ１４０９で入手した更新後の部分的な対応関係データのコピーを生成して、これによって注目するエンティティ遷移ノードを根とする部分木を置換する（ステップ１４１４）。
【０１１０】
ステップ１４０８における繰り返しが終了するとステップ１４１５に進み、変更が加えられた全ての文書について、その対応関係データを文書空間データベース格納領域４１８に格納する。最後に、エンティティ群に設定していたロックを全て解除し（ステップ１４１６）、処理を終了する。
【０１１１】
図１３は本実施形態の選択された文書の対応関係データを更新する処理の経過例を示す図である。図１３では図１２にその手順を示した選択された文書の対応関係データを更新する処理についてその具体的な経過の例を表しており、図１５に示したSGML文書の対応関係データを編集する場合を示している。
【０１１２】
対応関係データ１００１は、編集を行う前の論理構造であり、図８における対応関係データ１００１と同一である。ここでsec型要素１５０１を指定して編集範囲の選択を行ったとすると、本図に示す様にsec型要素１５０１を根とする部分木が編集可能範囲となる。その結果、編集範囲に含まれるエンティティ遷移ノードに対応するエンティティE0003、及び編集範囲の上位に位置し、かつ最も近い位置にあるエンティティ遷移ノードに対応するエンティティE0002では、編集範囲に対応するエンティティとしてロックが設定される。
【０１１３】
ロックの設定後編集操作が行われるが、ここではnote型要素１５０２の下位にある解析済み文字列データを分割し、その一部をem型要素とする構造編集が行われたものとする。この場合、更新後における文書全体の論理構造は、対応関係データ１５０３の様になる。編集操作が最終的にこれだけだったとすると、内容を変更したとしてマークを付加されるエンティティは、E0003だけとなる。そして、更新後の部分的な対応関係データから、該データをSGMLの構文に従って文字列化した編集結果エンティティデータが生成される。本図に示す例では、図１１に示す編集結果エンティティデータ１３０１と同一の文字列が編集結果エンティティデータとして得られたものとする。
【０１１４】
エンティティE0003の内容データが編集結果エンティティデータ１３０１によって置換され、該エンティティが更新された後、該エンティティに対応する全てのエンティティ遷移ノード（但し、構造編集を行った範囲に対応するものを除く）の下位構造が、構造編集後の部分的な対応関係データのコピーによって置換される。本図の例では、エンティティE0003に対応するエンティティ遷移ノードが文書中にもう一箇所含まれている為、この部分の構造の置換が行われ、最終的な更新後の対応関係データは図１１に示した対応関係データ１３０３と同一になる。
【０１１５】
以上に示した様に本実施形態における文書の更新処理では、文書を構成するエンティティをテキストとして編集した場合でも、文書の論理構造を直接構造編集した場合でも、実質的な編集内容が等価であれば最終的に論理構造とエンティティの内容データの間で整合性のとられた同一の結果が残される。なお本実施形態ではSGMLを用いて記述された構造化文書を登録対象文書として処理する構成をとったが、XMLやHTML等、他の文書記述言語を用いて記述された構造化文書を管理対象とする様に構成することもできる。
【０１１６】
図１４は本実施形態の文書登録制御プログラム４１０が生成する対応関係データの他のデータ構造を示す図である。この図では図１５に示すSGML文書を登録対象文書として処理した場合に生成される対応関係データを例として示している。以下に本実施形態の対応関係データの他の例について図面を用いて説明する。
【０１１７】
図１４に示す様に対応関係データ１６０１は、図８に示した対応関係データ１００１とは異なり、木構造中にエンティティ遷移ノードを含んでいない。独立したノードとしてエンティティ遷移ノードを保持する代わりに、対応関係データ１６０１では論理構造を構成する個々の要素ノード及び内容データノードが、それぞれ対応するエンティティのエンティティ識別子をプロパティとして保持している。
【０１１８】
全ての要素ノード及び内容データノードにエンティティ識別子を持たせる為、対応関係データ１６０１のデータ量は、前記の対応関係データ１００１の場合に比べて大きくなる。その代わり、図１２に示した選択された文書の論理構造を更新する処理において編集範囲に対応するエンティティを求める際に、ノードの木構造を上方に辿ってエンティティ遷移ノードを検索する必要がなく、編集範囲に含まれるノードがプロパティとして持つエンティティ識別子の集合を得るだけで良いので処理が簡略化され、処理効率も向上する。なお対応関係データ１６０１を用いた場合と対応関係データ１００１を用いた場合との間で機能的な差異は生じない。
【０１１９】
以上説明した様に本実施形態の構造化文書管理システムによれば、登録対象文書を構成する各エンティティと当該エンティティに対応する論理構造部分とを示す対応関係データを生成して複数のエンティティを管理するので、登録文書の持つ論理構造と実体構造とを相互に変換可能な形で対応付けて管理することが可能である。
【０１２０】
また本実施形態の構造化文書管理システムによれば、登録済み文書を構成するエンティティが元々持っていた属性を継承するので、属性設定を手作業で行うことなく登録前の構造化文書の各エンティティが持っていた属性に従って登録済み文書の各エンティティのアクセス制御を行うことが可能である。
【０１２１】
また本実施形態の構造化文書管理システムによれば、登録済み文書をエンティティ単位で部分的に取り出して処理するので、エンティティ取り出し時の転送データ量を減少させて処理効率を向上させることが可能である。
【０１２２】
また本実施形態の構造化文書管理システムによれば、登録済み文書から複数の編集対象をエンティティ単位で別々に取り出して編集を行うので、複数人の担当者による大規模文書の共同管理・分担執筆を容易に行うことが可能である。
【０１２３】
また本実施形態の構造化文書管理システムによれば、エンティティ単位のテキストデータが失われてしまうことがないので、その内容と作成者を保証する為に文書を構成するエンティティ毎に電子署名データを付加して厳密な文書管理を行うことが可能である。
【０１２４】
【発明の効果】
本発明によれば登録対象文書を構成する各エンティティと当該エンティティに対応する論理構造部分とを示す対応関係データを生成して複数のエンティティを管理するので、登録文書の持つ論理構造と実体構造とを相互に変換可能な形で対応付けて管理することが可能である。
【図面の簡単な説明】
【図１】本実施形態の文書管理サーバの概略構成を示す図である。
【図２】本実施形態の文書管理システムの全体構成を示す図である。
【図３】本実施形態の文書管理サーバ３０１全体の動作を制御する文書空間管理プログラム４１５の概略処理手順を示すPAD図である。
【図４】本実施形態の文書登録制御プログラム４１０の概略処理手順を示すPAD図である。
【図５】本実施形態の構文解析結果データのデータ構造を示す図である。
【図６】本実施形態のエンティティ構成表７０２の具体例を示す図である。
【図７】本実施形態の解析済みインスタンスデータ７０３の具体例を示す図である。
【図８】本実施形態の対応関係データのデータ構造を示す図である。
【図９】本実施形態の文書更新制御プログラム４１２の概略処理手順を示すPAD図である。
【図１０】本実施形態の選択されたエンティティの内容を更新する処理の手順を示すPAD図である。
【図１１】本実施形態の選択されたエンティティの内容を更新する処理の経過例を示す図である。
【図１２】本実施形態の選択された文書の論理構造を更新する処理の手順を示すPAD図である。
【図１３】本実施形態の選択された文書の対応関係データを更新する処理の経過例を示す図である。
【図１４】本実施形態の文書登録制御プログラム４１０が生成する対応関係データの他のデータ構造を示す図である。
【図１５】従来の文書記述言語SGMLによって記述された構造化文書の一例を示す図である。
【図１６】従来の図１５のSGML文書を解析して得られる論理構造の例を示す図である。
【符号の説明】
４０１…ディスプレイ、４０２…キーボード、４０３…中央処理装置、４０４…フロッピーディスクドライブ、４０５…フロッピーディスク、４０６…通信制御装置、４０７…主メモリ、４０８…磁気ディスク装置、４０９…システムバス、４１０…文書登録制御プログラム、４１１…文書参照制御プログラム、４１２…文書更新制御プログラム、４１３…文書出力制御プログラム、４１４…文書検索制御プログラム、４１５…文書空間管理プログラム、４１６…データベース管理システム、４１７…オペレーティングシステム、４１８…文書空間データベース格納領域、４１９…プログラム格納領域、４２０…データファイル格納領域、４２１…文書構文解析処理部、４２２…内容データ抽出処理部、４２３…対応関係データ抽出処理部、４２４…内容データ更新処理部、４２５…部分的対応関係データ生成処理部、４２６…対応部分範囲決定処理部、４２７…論理構造編集処理部、４２８…編集結果データ生成処理部、４２９…対応内容データ更新処理部、４３０…更新対象検出処理部、４３１…対応関係データ更新処理部、３０１…文書管理サーバ、３０２…文書管理クライアント、３０３…業務処理システム、３０４…ネットワーク、７０１…構文解析結果データ、７０２…エンティティ構成表、７０３…解析済みインスタンスデータ、８０１〜８０４…行、１００１…対応関係データ、１００２…部分範囲、１３０１…編集結果エンティティデータ、１３０２及び１３０３…対応関係データ、１５０１…sec型要素、１５０２…note型要素、１５０３…対応関係データ、１６０１…対応関係データ、１０１…文書エンティティ、１０２及び１０３…テキストエンティティ、１０４…データエンティティ、２０１…ノード集合、２０２…ノード集合、２０３及び２０４…ノード集合、２０５…ノード集合。
【図１】
0004141556.tif 000002
【図２】
0004141556.tif 000003
【図３】
0004141556.tif 000004
【図４】
0004141556.tif 000005
【図５】
0004141556.tif 000006
【図６】
0004141556.tif 000007
【図７】
0004141556.tif 000008
【図８】
0004141556.tif 000009
【図９】
0004141556.tif 000010
【図１０】
0004141556.tif 000011
【図１１】
0004141556.tif 000012
【図１２】
0004141556.tif 000013
【図１３】
0004141556.tif 000014
【図１４】
0004141556.tif 000015
【図１５】
0004141556.tif 000016
【図１６】
0004141556.tif 000017