(57)【特許請求の範囲】
【請求項１】
ノードと、一対のノード間を結合させるリンクとを含んで構成されるグラフ構造の構造化データを処理する装置において、
構造化データのノード情報及びリンク情報及び同一のノードを始点とするリンクの集合に含まれるリンクのリストであるリンク間関係を保持する構造管理手段と、
構造管理手段に保持された情報の内の編集対象となる構造化データを複写して保持するカレント構造管理手段と、
カレント構造管理手段に保持された構造化データを編集する編集手段と、
カレント構造管理手段に保持されて編集処理により編集された構造化データのリンク間関係を構造管理手段に新たに追加して保持させる登録手段と、
を備えたことを特徴とする構造化データ処理装置。
【請求項２】
前記編集手段はノードを追加する処理も行い、また、前記登録手段は追加されたノードを構造管理手段に保持させる処理も行うことを特徴とする請求項１に記載の構造化データ処理装置。
【請求項３】
カレント構造管理手段に保持させる構造化データを特定するリンク間関係を選択するための選択属性をリンク間関係に付属させ、
編集処理により編集されたリンク間関係に当該編集処理に応じた選択属性を付与する選択属性対応付け手段を、更に備えたことを特徴とする請求項１又は請求項２に記載の構造化データ処理装置。
【請求項４】
選択属性はバージョン情報であり、選択属性対応付け手段は編集処理に係る構造化データ中の他のリンク間関係に対してもバージョン情報を付与することを特徴とする請求項３に記載の構造化データ処理装置。
【請求項５】
構造化データを再構成させるための選択条件を入力する条件指定手段と、
入力された選択条件に対応する選択属性が付与されているリンク間関係を構造管理手段から選択するリンク集合選択手段と、
選択されたリンク間関係に基づいて構造化データを再構成するデータ構成手段と、
を更に備えたことを特徴とする請求項３又は請求項４に記載の構造化データ処理装置。
【請求項６】
リンク集合選択手段は、入力された選択条件に対応するリンク間関係が複数存在する場合には、予め設定された選択規則に従っていずれか１つのリンク間関係を選択し、
データ構成手段は当該リンク間関係に基づいて構造化データを再構成する、ことを特徴とする請求項５に記載の構造化データ処理装置。
【請求項７】
選択規則は特定の利用者情報が付与されているリンク間関係を優先的に選択するものである、ことを特徴とする請求項６に記載の構造化データ処理装置。
【請求項８】
選択規則は最新の日時情報が付与されているリンク間関係を優先的に選択するものである、ことを特徴とする請求項６に記載の構造化データ処理装置。
【請求項９】
選択規則は特定のバージョン情報が付与されているリンク間関係を優先的に選択するものである、ことを特徴とする請求項６に記載の構造化データ処理装置。
【請求項１０】
構造管理手段に保持されている各リンク間関係の候補を表示出力する表示出力手段と、
表示出力されたリンク間関係の候補の中からユーザにより選択されたリンク間関係に基づいてデータ構成手段により再構成された構造化データを表示出力するデータ出力手段と、
を更に備えたことを特徴とする請求項５に記載の構造化データ処理装置。
【請求項１１】
選択属性対応付け手段によりリンク間関係に選択属性が付与される毎に選択属性の内容を履歴情報として保持する履歴保持手段と、
保持された履歴情報の一覧を表示出力する履歴表示手段と、
を更に備えたことを特徴とする請求項３に記載の構造化データ処理装置。
【請求項１２】
木構造を成している構造化文書の直下の階層の構造との関連位置を表す参照単位を論理単位として保持する論理単位保持手段と、
構造化文書を構成する木構造において兄弟の関係にある全ての論理単位から成る論理単位グループを保持する論理単位グループ保持手段と、を備え、
前記参照単位は、該参照単位の直下に位置する少なくとも１つの論理単位グループの集合を表すものであり、更に、
前記論理単位グループ保持手段から編集対象として複写された論理単位グループで構成された構造化文書を編集する文書編集手段と、
該文書編集手段によって文書が編集されたことに基づいて、同じ参照単位で関連付けられている論理単位グループについて、対応する論理単位グループを新たに生成する論理単位グループ生成手段と、
前記論理単位グループ生成手段により生成された論理単位グループと当該論理単位グループに対応する編集前の論理単位グループの直上に位置する参照単位を関連付ける参照関連付手段と、
を備えたことを特徴とする文書処理装置。
【請求項１３】
前記参照関連付手段は、前記論理単位グループ生成手段によって生成された論理単位グループを、編集前の論理単位グループと同一の集合に追加することを特徴とする請求項１２に記載の文書処理装置。
【請求項１４】
木構造を成している構造化文書の内容の一部分である内容単位及び直下の階層の構造を表す参照単位を保持する論理単位保持手段と、
構造化文書を構成する木構造において兄弟の関係にある全ての内容単位あるいは参照単位からなる論理単位グループを保持する論理単位グループ保持手段と、を備え、
前記参照単位は、該参照単位の直下に位置する少なくとも１つの論理単位グループの集合を表すものであり、
前記論理単位グループ保持手段には、保持している論理単位グループから編集対象として複写された論理単位グループで構成された構造化文書が編集されたことに基づいて新たに生成された論理単位グループを、当該論理単位グループに対応する編集前の論理単位グループと同一の集合に追加して保持しており、更に、
前記論理単位グループと該論理単位グループを選択するための選択情報とを対応付ける選択情報対応付け手段と、
文書構造を構成するために前記選択情報を含む選択条件を指定する条件指定手段と、
前記条件指定手段によって指定された選択条件と前記選択情報対応付け手段によって対応付けられている選択情報に基づいて、前記論理単位グループ保持手段に保持されている論理単位グループを選択する論理単位グループ選択手段と、
前記論理単位グループ選択手段により選択された論理単位グループに基づいて文書を構成する文書構成手段と、を備えたことを特徴とする文書処理装置。
【請求項１５】
前記選択情報対応付け手段は、選択情報として文書のバージョン情報を前記論理単位グループ保持手段に保持された論理単位グループに対応付けることを特徴とする請求項１４に記載の文書処理装置。
【請求項１６】
前記選択情報対応付け手段は、選択情報として文書の更新日時情報を前記論理単位グループ保持手段に保持された論理単位グループに対応付けることを特徴とする請求項１４に記載の文書処理装置。
【請求項１７】
前記選択情報対応付け手段は、選択情報として文書の利用者情報を前記論理単位グループ保持手段に保持された論理単位グループに対応付けることを特徴とする請求項１４に記載の文書処理装置。
【請求項１８】
前記選択情報対応付け手段により前記論理単位グループに対応付けられる選択情報は、バージョン情報、更新日時情報、利用者情報であり、
前記条件指定手段により指定される選択条件は文書のバージョンと日時情報と利用者情報を含むものであり、
前記論理単位グループ選択手段は、前記条件指定手段により指定されたバージョン情報に対応する更新日時情報以降で、指定された日時情報以前の更新日時情報と対応付けられ、且つ、指定された利用者情報に一致する論理単位グループを検索する検索手段と、該検索手段による検索の結果、複数の論理単位グループが存在した場合にいずれか１つの該論理単位グループを選択する選択手段と、を有し、
前記論理単位グループ選択手段により選択された論理単位グループから構成された文書構造を表示する表示手段を有することを特徴とする請求項１４に記載の文書処理装置。
【請求項１９】
前記選択手段は、前記検索手段による検索の結果、論理単位グループが存在しなかった場合に、指定されたバージョン情報に一致する論理単位グループを選択することを特徴とする請求項１８に記載の文書処理装置。
【請求項２０】
論理単位保持手段と、論理単位グループ保持手段と、文書編集手段と、論理単位グループ生成手段と、選択情報対応付け手段と、参照関連付手段とを備えた文書処理装置が実施する文書処理方法であって、
前記論理単位保持手段は、木構造を成している構造化文書の内容の一部分である内容単位あるいは直下の階層の構造を表す参照単位を保持し、
前記論理単位グループ保持手段は、構造化文書を構成する木構造において兄弟の関係にある全ての内容単位あるいは参照単位から成る論理単位グループを保持しており、
前記参照単位は、該参照単位の直下に位置する一つ以上の論理単位グループの集合を表すものであり、
前記文書編集手段が、前記論理単位グループ保持手段から編集対象として選択された論理単位グループを複写して構成された構造化文書を編集し、
前記論理単位グループ生成手段が、該編集に対応する論理単位グループを新たに生成し、
前記選択情報対応付け手段が、編集対象の論理単位グループを選択するために入力された選択情報と、新たに生成された論理単位グループを関連付け、
前記参照関連付手段が、選択情報が関連付けられた新たな論理単位グループを前記指定した内容単位あるいは参照単位を含む論理単位グループの集合に追加することを特徴とする文書処理方法。
【請求項２１】
論理単位保持手段と、論理単位グループ保持手段と、論理単位グループ選択手段と、文書構成手段と、文書構造表示手段とを備えた文書処理装置が実施する文書処理方法であって、
前記論理単位保持手段は、木構造を成している構造化文書の内容の一部分である内容単位あるいは直下の階層の構造を表す参照単位を保持し、
前記論理単位グループ保持手段は、構造化文書を構成する木構造において兄弟の関係にある全ての内容単位あるいは参照単位から成る論理単位グループを保持しており、
前記参照単位は、該参照単位の直下に位置する一つ以上の論理単位グループの集合を表すものであり、
前記論理単位グループ保持手段には、保持している論理単位グループから編集対象として複写された論理単位グループで構成された構造化文書が編集されたことに基づいて新たに生成された論理単位グループを、当該論理単位グループに対応する編集前の論理単位グループと同一の集合に追加して保持しており、
前記論理単位グループには、当該論理単位グループを選択するための選択情報が対応付けられており、
論理単位グループ選択手段が、構造化文書を選択するために入力された選択条件と論理単位グループに対応付けられている選択情報とに基づいて、前記論理単位グループ保持手段に保持されている論理単位グループを選択し、
文書構成手段が、選択された論理単位グループより文書を構成し、
文書構造表示手段が、構成された文書を表示することを特徴とする文書処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、文書データ等と言ったグラフ構造を成す構造化データを作成、編集、保存等する処理装置及び方法に関し、特に、執筆者にデータ編集上の制約を与えずに自由に編集することを許しても、過去の構造化データの復元や共同執筆を支障無く行うことのできる構造化データ処理装置及び方法に関する。
【０００２】
【従来の技術】
一般に、ファイル等といった文書情報のまとまりに更新が繰り返された場合に、特定の条件に合致する過去の状態の文書を取り出すことを保証する技術はバージョン管理と呼ばれ、過去の文書の状態はバージョンと呼ばれる。このようなバージョン管理は過去の状態の文書を復元できるという効用に加え、複数の担当者による共同執筆作業を支援できる等の効用がある。
【０００３】
ここで、従来では、バージョン管理はファイル等の情報のまとまりを単位にして行われており、ファイルを共同編集するときには、複数の担当者が同じファイルを同時には編集できないように制限する等の管理が行われていた。
しかしながら、非常にサイズの大きな文書を執筆する場合や、複数の担当者で文書を執筆する場合には、章や節等といった部分単位で文書を編集する方が便利である。そこで、文書を構造化して部分毎のバージョンを管理して、各担当者で分担を決めて執筆するように取り決めたり、同一の部分を複数の担当者で同時に編集できないように制限を加えることによって、複数の担当者による共同執筆をが可能にした発明がなされている。
【０００４】
従来における構造化した文書のバージョン管理を、図８４〜図８９を参照して更に詳しく説明する。
文書の構造は順序付きの木構造として表現され、章や節等といった部分単位を表すノードが親子関係を示すリンクを用いて構造化され、この木構造の末端に内容（章や節等といった部分単位のデータ内容）を含んだノードが接続される。すなわち、図８４に示す文書構造の例では、ノードＡを文書ルートとすると、ノードＢは章、ノードＣ及びＤが節に該当し、末端のノード（ｕ）、（ｖ）、（ｘ）がテキスト等のデータ内容を含む内容部となる。
なお、章や節等といった部分単位は文書全体としての構造によって定義されているので、文書の全体構造が変化してしまうとバージョン管理の単位が安定しなくなってしまう。そこで、このような従来における文書構造のバージョン管理では、文書の全体構造を固定し、内容部についてバージョン管理行っている。
【０００５】
そして、新たな内容部を作成して既存の内容部と入れ替えるといった編集処理を行う場合には、図８５に示すように、新たな内容部（ｙ）を既存の内容部（ｘ）と入れ替えるとともに、古い内容部（ｘ）は元の位置に対応付けて記憶管理する。これによって、当該文書の過去の状態（すなわち、編集前の状態）を復元するときには、古い内容部（ｘ）を新しい内容部（ｙ）と再び入れ替えるだけで、所期の目的を達成することができる。
【０００６】
このようなバージョン管理では、上記した理由から文書の全体構造を変更した場合には、これを管理することができず、上記のように古い内容部を新しい内容部と入れ替えるだけでは過去のバージョンを復元をすることはできない。
例えば、図８５に示した元の文書に対して、図８６に示すように新たな部分単位の内容部（ｚ）を追加して対応する新たな部分構造（ノード）Ｅを文書構造に挿入した場合、図８７に示すように内容部分（ｘ）に係る部分構造（ノード）Ｄを削除した場合、図８８に示すように部分構造（ノード）Ｃと部分構造（ノード）Ｄとの順序を入れ替えた場合、図８９に示すように内容部分（ｘ）に係る部分構造（ノード）Ｄの位置を移動させた場合等においては、文書の全体構造が変更されるため、内容部を入れ換えるだけでは過去の状態の文書を復元をすることはできない。
【０００７】
なお、特開平６−３５９１４号公報には、図８５に示したような内容部のバージョン管理を利用して、同一の文書に対する共同執筆を支援する文書作成システムが記載されている。
この文書作成システムでは、複数の執筆担当者によって同じノードの内容部を編集したときに、それぞれの担当者が編集した内容部に対応させてバージョンノードを作成し、それぞれの内容部をバージョンノードとの対応付けで管理する。更に、それぞれのバージョンノードにはアクセス権を設定しておき、執筆担当者が文書構造中の内容部を編集する際には、バージョンノードに基づいて、その担当者に適合するアクセス権が設定されている内容部を提示してその編集を可能にしている。
【０００８】
また、特開平７−４４５６３号公報や特開平６−１３１３４３号公報には、
文書の構造をノードとリンクからなる木構造で表現し、文書内の互いに内容が異なる複数の部分について論理構造関係が同一の場合には、ノードを多重化することによりこれら部分の論理構造を複合して１つの複合文書構造として保持し、更に、それぞれの部分構造を区別するための属性を多重化したノードに付与しておくことにより、複数の木構造の中から必要な文書構造に対応する木構造を選択することができる多重文書処理システムが記載されている。
この多重文書処理システムによれば、文書構造を全体構造と内容に単純に分割するよりも柔軟に表現することができ、更に、必要に応じて複数の木構造の中から必要な文書構造に対応する木構造を選択することができる。
【０００９】
ここで、バージョン管理技術は、文書データの編集以外にも、ソフトウェア開発、ＣＡＤデータベースなど様々な分野で利用されている技術であり、一般のバージョン管理技術においても、それぞれの部品（すなわち、部分データ）がバージョンを持った複雑なデータの全体構造についてのバージョン管理は重要な課題である。
このようなバージョン管理に関する従来技術としては、例えば、下記のような種々な技術が知られている。
【００１０】
複雑な構造を持つＣＡＤデータベースのバージョン管理技術について網羅的に記述した"R.Katz, 'Toward a Unified Framework for Version Modeling in Engineering Databases', ACM Computing Surveys, vol.22, no.4, 1990"では、上述した全体構造のバージョンをコンフィギュレーションと呼んで、部品のバージョンとは別に管理する技術が示されている。この文献の中には様々なバージョン管理技術が示されているが、いずれもバージョン管理の目的は過去の状態を復元することである。そのための方法として、導出木を用いる方法とレイヤを用いる方法が示している。
導出木を用いる方法は、変更の履歴としてどのバージョンのものからどのバージョンが派生したかという関係で導出木（derivation tree）を管理し、その中から一つの状態を選択することによって、過去の状態を復元する。このように導出木を利用して、一つ前の状態からの差分だけを記録することによって、バージョン管理の実現に必要な記憶容量を軽減させることができる。なお、"Sten Minor & Boris Magnusson,  'A Model for Semi-(a)Synchronous Collaborative Editing, proceedings of ECSCW '93, pp. 219-231, 1993"では、導出木による全体構造のバージョン管理を文書編集に応用した例を示している。
【００１１】
レイヤによる方法では、変更を行ったときに、生成された部品や更新された部品をレイヤというまとまりとして保持し、適切にレイヤを重ね合わせることで過去に存在していた状態を表現できるようにする。重ね合わされた複数のレイヤ中に同じ部品のバージョンが含まれているときには、後から重ねたレイヤの部品を選択することによって、必要な時点での全体構造の状態を構成する部品のバージョンが選ばれる。 なお、"Goldstein, 'Layered Networks as a Tool for Software Development', proceedings of 7th International Conference on Artificial Intelligence, pp. 913-919, 1981"では、レイヤを用いた方法をソフトウェアのバージョン管理に利用した例を示している。
【００１２】
また、オブジェクト指向データベースのバージョン管理について記述した"Cellary, 'Consistency of Versions in Object-Oriented Databases', proceedings of International VLDB Conference, pp. 432-441, 1990"では、特定の全体構造に属する部品にバージョン名を対応づけることによって、指定したバージョンの全体構造の復元を容易にする手法を示している。
また、ハイパーテキストのバージョン管理について記述した"Osterbye, 'Structural and Cognitive Problems in Providing Version Control for Hypertext', Proceedings of ACM Conference on Hypertext (ECHT'92), pp33-42, 1992."では、ハイパーテキストに含まれる個々のノードのバージョンから、作成日時などの条件で適切なものを選択することによって、コンフィギュレーションを構成する手法を示している。
【００１３】
【発明が解決しようとする課題】
上記のように、従来のバージョン管理にあっては、文書の全体構造を固定化しておけば過去の文書のバージョンを復元することが可能であるが、実際の文書の編集においては、図８６〜図８９に示したように文書の全体構造の変更も内容部の変更に伴って行われる場合が珍しくはない。
また、実際の文書執筆の過程においては、下記に示す例（１）〜（３）のように、編集がなされた文書に対して、編集前の文書を復元させる必要が生ずる場合が多々ある。
【００１４】
（１）特定の日時における文書の取り出し
例えば、既に削除してしまった過去に書いた文書を取り出すために、日時を指定して、過去の時点で編集していた文書のバージョンを復元させる。
（２）特定の目的で使用した文書の取り出し
例えば、中間報告等、これまでの執筆過程で一時的にまとめて配布した文書のバージョンを復元させる。
（３）特定の人に更新された文書の取り出し
例えば、複数の担当者で執筆がなされているときに内容をチェックするために、特定の人による更新が行われる前のバージョンや、行われた後のバージョンを復元させる。
【００１５】
また、過去に存在したバージョンを復元することの必要性の他に、過去に存在しなかった文書の構造を取り出すことが必要になることがある。一般に仕事がどのように進行するかは予め決められないことが多く、進行に伴って予測していなかった様々な要求が現れるからである。そのため、あらかじめ担当者とマージの手順をきちんと決めて文書の執筆を進めても、途中でうまくゆかなることが多い。要求を満たすためには、それまでに作ってきた文書を当初想定していなかった状況に合わせて再構成する必要が生ずる。
例えば、複数人で一つの調査報告書を書いているときに、現在執筆中の最新報告書の章立てではなく過去に別の目的で作った報告書の章立てに、他のメンバーの書いた最新の情報を取り入れて文書を作る必要が生じた場合、取り出されなければならない文書構造は、過去に存在したものではなく新しい目的のために過去の部品から合成したものになる。
【００１６】
しかしながら、従来のバージョン管理にあっては、文書の全体構造を固定化しておくことを前提として過去の文書の復元が可能となるものであるため、上記のような実際の文書処理作業に即した復元処理を行うことができなかった。
なお、内容部及び文書の全体構造の変更を自由に行った場合であっても、文書の全体構造と内容部との両方のバージョンを指定するようにすれば、過去の文書構造を復元を実現することが可能であるが、このためには、利用者は文書の全体構造の変更過程の全容を把握しておかなければならないため、利用者に非常に困難且つ煩雑な作業を強いることになって実用的ではない。
【００１７】
更に言えば、実際の文書執筆の過程では、自分の担当している内容部の変更の影響が他の内容部の変更につながることも多いので、自分の担当範囲以外の内容部についても一貫して変更できる方が望ましい。すなわち、他の担当者によって編集中の内容部を同時に編集することや、他の担当者に断りなく文書の全体構造を変更することも、実際の文書執筆の過程では必要となることがある。
このように各担当者が自由に編集等を行った場合にあっても、各担当者毎の過去の文書を復元できれば支障はないが、従来のバージョン管理にあっては、文書の全体構造を固定化しておくことを前提として過去の文書の復元が可能となるものであるため、各担当者は、常に編集上の制約を守らなければならず、執筆作業を煩わしいものにしていた。
【００１８】
なお、上記した多重文書処理システム（特開平７−４４５６３号公報、特開平６−１３１３４３号公報）にあっては、ノードに付与された属性を指定することにより担当者毎の過去の文書を復元することも可能であるが、いずれのノードをどのように多重化し、また、これらのノードをどのような区別の仕方をするかについては、全て利用者に任されているため、利用者は極めて煩雑な操作を強いられることとなる。
更に言えば、共同執筆や或る時点でのバージョンの復元に当該多重文書処理システムを利用することを考えると、複数の担当者が作成した部分的に内容が異なる複数の文書を管理する能力を持っているが、実際に共同執筆や必要なバージョンの復元を可能にするためには、ノードの多重化のタイミングやそのときに与える属性について煩雑な取り決めが必要になる。したがって、実際の利用に際しては極めて煩雑な操作や知識が必要とされ、当該多重文書処理システムは実質的にはバージョンの復元や共同執筆を支援するための手段とは言えなかった。
【００１９】
また、従来のバージョン管理技術は、本質的に過去に存在していた構造の中から必要なものを選択する技術であるため、利用者の指示にしたがって当初想定していなかった新しい状況に応じた適切な構造を取り出すことはできなかった。例えば、導出木を用いる方法では、取り出せる構造は導出木のノードとして表される過去の状態だけであり、また、"Cellary"の方法では、過去に存在したバージョンに名前を付けるので過去に存在した構造しか取り出せない。
また、レイヤによる方法は、レイヤの順序を変えることで過去になかった構造も作り出せるが、取り出したい構造が取り出せるか、また、取り出すためにどのようにレイヤの順序を決めればよいのかを知ることができない。したがって、新しい状況に対応するための適切な構造を利用者が指示して取り出すことはできない。また、"Osterbye"の方法も、適切な条件を与えれば必要な構造を取り出せる可能性を示しているが、実際にどのような条件を与えればよいのかは示していない。したがって、新しい状況に対応するための適切な構造を利用者が指示して取り出すことはできない。
【００２０】
本発明は、上記従来の事情に鑑みなされたもので、文書データ等のグラフ構造をなす構造化データについて、利用者に自由に編集をさせても、過去のデータ構造の復元や新しい状況に合わせた適切なデータ構造の作成を可能ならしめることを目的とする。
更に具体的に言えば、本発明は、執筆者に編集上の制約を与えずに文書を自由に編集させても、過去の文書の復元や共同執筆を支障無く実現させることを目的とする。また、本発明は、文書の全体構造が変更された場合にあっても、必要な過去の文書バージョンを支障無く復元できる構造化文書を構成することを目的とする。また、本発明は、利用者による簡易な指定操作によって、適切な過去の文書バージョンを復元させることを目的とする。また、本発明は、利用者による簡易な指定操作によって、過去に作ってきた文書を元にして、当初想定していなかった新しい状況に合わせた適切な文書を作り出すことを目的とする。
【００２１】
【課題を解決するための手段】
本発明の構造化データ処理装置では、ノード保持手段にグラフ構造を成している構造化データのノード情報を保持し、リンク保持手段に構造化データのノード間の関連情報を表すリンク情報を保持し、リンク間関係保持手段に同一のノードを始点とする複数のリンクの内の同一の編集処理に係るリンクを集合として保持するとともに各集合中の含まれるリンク間の位置関係情報を保持している。そして、編集対象となる構造化データは、リンク関係保持手段に保持されたリンク集合中のいずれか１つの集合を特定することにより、ノード保持手段及びリンク保持手段に保持された情報に基づいて特定されてカレント構造管理管理手段で管理されており、この特定された構造化データを編集手段により編集処理を行う。そして、編集処理によりリンクに変更が加えられたときには、登録手段が変更されたリンクを含むリンク集合を生成してリンク間関係保持手段に保持させる。
【００２２】
なお、前記編集手段はノードを追加する処理も行い、また、前記登録手段は追加されたノードをノード保持手段に保持させる処理も行う。
また、編集処理に係る情報として選択属性を編集処理により変更されたリンク集合に付与する選択属性対応付け手段を更に備えており、特に選択属性としてバージョン情報を付与するときには、選択属性対応付け手段は編集処理に係る構造化データ中の他のリンクに対してもバージョン情報を付与する。
【００２３】
また、本発明の構造化データ処理装置では、条件入力手段から構造化データを再構成させるための選択条件を入力すると、リンク集合選択手段が入力された選択条件に対応する選択属性が付与されているリンク情報をリンク間関係保持手段から選択し、データ構成手段が選択されたリンク集合に基づいて構造化データを再構成する。
なお、リンク集合選択手段は、入力された選択条件に対応するリンク集合が複数存在する場合には、利用者情報を優先させる、日時情報を優先させる、バージョン情報を優先させる等といった、予め設定された選択規則に従っていずれか１つのリンク集合を選択し、データ構成手段は当該リンク集合に基づいて構造化データを再構成する。
【００２４】
ここで、本発明を木構造を成している構造化文書データの処理に適用した場合には、本発明は下記のような文書処理装置又は文書処理方法として実現される。なお、以下の記載において、論理単位はノードとリンクとの少なくともいずれか一方を含むデータ構造中の単位（部分データ）に該当する。
【００２５】
本発明の文書処理装置では、論理単位保持手段に木構造を成している構造化文書の内容の一部分である内容単位又は直下の階層の構造との関連位置を表す参照単位の少なくともいずれか一方を論理単位として保持させ、論理単位グループ保持手段に構造化文書を構成する木構造において兄弟の関係にある全ての論理単位から成る論理単位のグループ（集合）を保持させる。なお、参照単位は、該参照単位の直下に位置する少なくとも１つの論理単位グループの集合を表すものであり、参照単位で示された論理単位グループによって文書全体が構成される。また、兄弟の関係とは、同じ論理単位（親）を直上にもつ論理単位同士の関係をいう。
【００２６】
更に、本文書処理装置では、文書編集手段によって文書構造を編集すると、論理単位グループ生成手段が当該文書編集に対応する論理単位グループを新たに生成し、参照関連付手段が新たに生成された論理単位グループと所定の参照単位を関連付ける。この結果、新たに生成された論理単位グループは既存の構造化文書中に組み入れられ、文書編集に応じた構造化文書が作成される。
また、新たに生成された論理単位グループは、対応する編集前の論理単位グループを同一の集合に追加されて構造化文書中に組み入れられ、これら論理単位グループは同じ階層の集合にまとまられて論理単位グループ保持手段に保持される。
【００２７】
また、本発明の文書処理装置では、更に、選択情報対応付け手段によって論理単位グループと該論理単位グループを選択するための選択情報とを対応付け、条件指定手段によって文書構造を構成するために前記選択情報を含む選択条件を指定すると、選択情報対応付け手段によって対応付けられている選択情報に基づいて、論理単位グループ選択手段が論理単位グループ保持手段に保持されている論理単位グループを選択する。そして、文書構成手段が論理単位グループ選択手段により選択された論理単位グループに基づいて文書を構成する。
【００２８】
この選択情報としては、例えば、文書のバージョン情報、文書の更新日時、文書の利用者情報等が用いられ、これら選択情報が選択情報対応付け手段によって論理単位グループ保持手段に保持されている論理単位グループに対応付けられる。
したがって、選択情報に基づいて構成された文書は指定された文書のバージョン情報、文書の更新日時、文書の利用者情報等に応じたものであり、過去の文書バージョンがこれら選択情報に基づいて復元される。
【００２９】
また、本発明の文書処理装置では、更に、選択情報対応付け手段により論理単位グループに対応付けられる選択情報を、バージョン情報、更新日時情報、利用者情報とし、条件指定手段により指定される選択条件は文書のバージョンと日時情報と利用者情報を含むものとする、そして、論理単位グループ選択手段に備えられた検索手段によって、条件指定手段により指定されたバージョン情報に一致する論理単位グループに対応付けられた更新日時情報以降で、指定された日時情報以前の更新日時情報と対応付けられ、且つ、指定された利用者情報に一致する論理単位グループを検索し、更に、論理単位グループ選択手段に備えられた選択手段によって、検索手段による検索結果で複数の論理単位グループが存在した場合には、いずれか１つの論理単位グループを選択する。そして、この選択された論理単位グループを表示手段が表示し、利用者に対応し且つ指定された日時を基準とした最新のバージョンの文書が検索されて表示される。
【００３０】
また、本発明の文書処理方法では、構造化文書の内容の一部分である内容単位又は下位階層の構造を表す参照単位の中から編集対象を指定し、この指定した内容単位又は参照単位を編集すると、編集に対応して、構造化文書を構成する木構造において兄弟の関係にある全ての内容単位あるいは参照単位から成る論理単位グループが生成される。そして、新たに生成された論理単位グループを選択するための選択情報が入力されると、入力された選択情報と新たに生成された論理単位グループとを関連付け、該論理単位グループを前記指定した内容単位あるいは参照単位を含む論理単位グループの集合に追加する。したがって、新たに生成された論理単位グループは既存の構造化文書中に組み入れられ、文書編集に応じた構造化文書が作成される。
【００３１】
また、本発明の文書処理方法では、文書の内容の一部分である内容単位と下位階層の構造を表す参照単位を有する構造化文書を選択するための選択条件を入力すると、構造化文書を構成する木構造において兄弟の関係にある全ての内容単位又は参照単位からなる論理単位グループの中から、入力された選択条件と論理単位グループに対応付けられている選択情報とに基づいて論理単位グループが選択され、選択された論理単位グループより文書が構成されて表示される。したがって、バージョン情報、更新日時情報、利用者情報等といった選択情報を含む選択条件を入力することによって、当該選択情報に対応する文書が構成されて表示される。
【００３２】
すなわち、本発明によれば、文書の全体構造と部分構造について区別なく適用できるバージョン管理を可能にし、文書の内容及び構造に自由に変更を加えても、必要なバージョンの文書を取り出すことが可能となっている。換言すれば、本発明では、文書の構造を、全体構造と部分構造のバージョンを同等に管理できるデータ構造として、文書データとしては文書の構成要素の全てのバージョンを含んだものとして、この中から適切な抽出条件によって抽出した部分構造を組み合わせて文書全体を構成する。
【００３３】
また、本発明によれば、共同執筆において、それぞれの担当者が与えた条件に適合するバージョンの文書を一貫して編集することが可能化し、各担当者が混乱することなく編集処理を行うことが可能になる。すなわち、本発明では、バージョン指定情報と、利用者指定情報と、日時指定情報とを組み合わせて、共同執筆者が編集の対象とするべきバージョンを取り出すための条件を定義してあり、各担当者の執筆作業の際に、対象としている文書部分にこれらの情報を関連付けておくことにより、文書を自由に編集しても、これら情報に基づいて文書を構成することにより各執筆者にとって編集すべきバージョンの文書が復元される。
【００３４】
【発明の実施の形態】
本発明の一実施例に係る文書処理装置及び方法を説明するに当たって、まず、本実施例における構造化文書の構成及びバージョン管理を図３〜図８を参照して説明する。
なお、本実施例においては、請求項に記載した、木構造を成している構造化文書の一部分である内容単位は内容部として、構造化文書の下層の構造部分との関連位置を示す参照単位はアンカーとして、実現され、更に、これら内容部とアンカーとの少なくともいずれか一方を論理単位とし、木構造の同じ階層に位置する論理単位から成る論理単位グループはストリームとして、論理単位グループを選択するための選択情報はストリーム属性として実現される。
【００３５】
本実施例では、ストリームに基づく木構造の構造化文書を利用しており、ストリーム単位でバージョンの管理を行うことにより文書の全体構造と部分構造を統一的に扱えるようにして、文書の全体構造と内容部とのバージョンを同等の方式によって管理することを可能にしている。すなわち、本実施例では、文書内容の変更、文書内容や文書の部分構造の挿入、文書内容や文書の部分構造の削除、文書内容や文書の部分構造の順序の変更、文書内容や文書の部分構造の移動、等といった一般的な文書構造の編集に係る基本操作と、適切な内容部やストリームの生成の操作を組み合わせることによって、任意の文書構造の生成、変更、復元等が可能になっている。
【００３６】
図３に示す文書構造の例では、ノードＡを文書ルートのアンカーとすると、例えば、アンカーＢ及び内容部（ｕ）を含むストリームａが章、アンカーＣ及びＤを含むストリームｂが節、内容部（ｖ）と（ｘ）を含むそれぞれのストリームｃ、ｄが項に該当することとなる。
そして、新たな内容部を作成して既存の内容部と入れ替えるといった編集処理を行う場合には、例えば図４〜図８に示すようなストリーム単位での処理を行って文書の内容部及び全体構造を変更する。
【００３７】
まず、図３に示した元の文書に対して内容部を変更する場合には、図４に示すように、新たな内容部（ｙ）を含むストリームｄ２を作り、既存の内容部（ｘ）を含むストリームｄ１と新たなストリームｄ２とを入れ替えるとともに、古いストリームｄ１と新しいストリームｄ２とをアンカーＤが参照する集合として記憶管理する。
【００３８】
また、図３に示した元の文書に対して新たな部分構造を挿入する場合には、図５に示すように、アンカーＣ及びＤを含む既存のストリームｂ１に対して更にアンカーＥを含む新たなストリームｂ２を作るとともに、内容部（ｚ）を含んだ新たなストリームｅを作り、新たなストリームｂ２を既存のストリームｂ１と入れ替えるとともに、新たなストリームｂ２の各アンカーＣ、Ｄ、Ｅによってそれぞれストリームｃ、ｄ、ｅを参照させる。なお、この場合にあっても、同一のアンカーＢで参照される同じ階層のストリームｂ１、ｂ２はアンカーＢが参照する集合として記憶管理する。
【００３９】
また、図３に示した元の文書に対して既存の部分構造Ｄを削除する場合には、図６に示すように、アンカーＣ及びＤを含む既存のストリームｂ１に対してアンカーＤを削除した新たなストリームｂ３を作り、既存のストリームｂ１と新たなストリームｄ３とを入れ替えるとともに、古いストリームｂ１と新しいストリームｂ３とをアンカーＢが参照する集合として記憶管理する。また、新たなストリームｂ３のアンカーＣでストリームｃを参照させるとともに、ストリームｄを古いストリームｂ１のアンカーＤによって参照されるストリームとして記憶管理する。
【００４０】
また、図３に示した元の文書に対して部分構造Ｃ、Ｄの順序を入れ替える場合には、図７に示すように、アンカーＣ及びＤを含む既存のストリームｂ１に対してアンカーＣとＤの順序を入れ替えた新たなストリームｂ４を作り、既存のストリームｂ１と新たなストリームｄ４とを入れ替えるとともに、古いストリームｂ１と新しいストリームｂ４とをアンカーＢが参照する集合として記憶管理する。
【００４１】
また、図３に示した元の文書に対して部分構造Ｄを移動させる場合には、図８に示すように、アンカーＣ及びＤを含む既存のストリームｂ１に対してアンカーＤを削除した新たなストリームｂ３を作り、既存のストリームｂ１と新たなストリームｄ３とを入れ替えるとともに、内容部（ｕ）及びアンカーＢを含む既存のストリームａ１に対して更にアンカーＤを含ませた新たなストリームａ２を作り、既存のストリームａ１と新たなストリームａ２とを入れ替え、アンカーＤにはそのままストリームｄを参照させる。なお、この場合にあっても、同一のアンカーＡで参照される全てのストリームａ１、ａ２はアンカーＡが参照する集合として記憶管理し、同一のアンカーＢで参照される全てのストリームｂ１、ｂ３はアンカーＢが参照する集合として記憶管理する。
【００４２】
上記のように、編集処理されたストリームは編集前のストリームと同一の集合として記憶され、これら集合化されたストリームは同一のアンカーによって参照される。したがって、後述するように、アンカーで示される集合の内から所定の条件に適合するストリームを選択し、これらストリームによって文書を構成することにより、編集処理によって文書の全体構成を変更した場合にあっても、編集前の過去の文書を復元することができる。
【００４３】
このような文書処理を実行する本実施例の文書処理装置は、図１に示す構成を有している。
半導体メモリや磁気記憶装置等から構成されたメモリ１には、論理単位保持手段２、論理単位グループ保持手段３、選択情報対応付け手段４が構成されており、これら手段２〜４によって構造化文書に関する情報を記憶管理する。
論理単位保持手段２はアンカー又は内容部の少なくともいずれか一方を含む論理単位を保持し、論理単位グループ保持手段３は論理単位から成るストリームを保持する。
【００４４】
選択情報対応付け手段４は、論理単位グループ保持手段３に保持されているストリームとストリームを選択するためのストリーム属性とを対応付けており、これによって、ストリーム属性を指定することにより、論理単位グループ保持手段３から対応するストリームを選択することが可能となっている。
したがって、構造化文書は図２に示すように各ストリーム毎にストリーム属性を対応付けたデータ構造としてメモリ１に格納されており、本実施例における以下の説明では、これらストリームとストリーム属性との組をストリームセットとして定義する。また、ストリームセットは、同一のアンカーで参照され且つ文書構造中の同じ階層に位置するストリームとストリーム属性との組を複数個包含する場合もあり、この場合にはストリームセットは複数のストリームを包含した集合となる。また、文書構造の最上位のノードはルートアンカーであり、このルートアンカーから下位のストリームセットへ、当該ストリームセットに含まれているアンカーから更に下位のストリームセットへといったように、これらストリームセットはアンカーによる参照によって木構造化されている。
【００４５】
文書編集手段５は、キーボードやマウス等といった入力手段からの利用者による指示に基づいて、メモリ１に保持されている構造化文書に編集処理を施し、図４〜図８に示したような内容部や部分構造（ストリーム）に対する変更処理を行う。
論理単位グループ生成手段６は、文書編集手段５によって編集処理がなされたことに基づいて対応する新たなストリームを生成する処理を行い、例えば図４に示したように、内容部（ｘ）を内容部（ｙ）に変更した場合には、内容部（ｙ）を含む新たなストリームｄ２を生成する。
【００４６】
参照関連付け手段７は論理単位グループ生成手段６によって新たに生成されたストリームを編集対象となった元のストリームと同一の集合に追加して論理単位グループ保持手段３に保持させる処理を行い、例えば図４に示したように、既存のストリームｄ１に対して新たなストリームｄ２が生成された場合には、当該ストリームｄ２をストリームｄ１と同じ集合（ストリームセット）に追加する。
【００４７】
条件指定手段８は、利用者が操作するキーボードやマウス等の入力手段を有し、ストリーム属性を含む選択条件が入力されるとこれを論理単位グループ選択手段９へ出力する。なお、本実施例では文書のバージョン情報、文書の更新日時情報、文書の利用者情報等がストリーム属性として設定され、このようなストリーム属性を含む選択条件が論理単位グループ選択手段９に入力される。
論理単位グループ選択手段９は、条件指定手段８から入力された選択条件に基づいて論理単位グループ保持手段３から選択条件に適合するストリーム選択する処理を行い、この選択処理を行うために検索手段１０と選択手段１１とを有している。
【００４８】
検索手段１０は論理単位グループ保持手段３に保持されているストリーム中に選択条件に適合するストリームが存在するか否かを検索処理し、選択手段１１はこの検索によって適合するストリームが存在するときには当該ストリームを選択する処理を行う。例えば、選択条件として文書のバージョンと日時情報と利用者情報が指定された場合、検索手段１０によって、バージョン情報に対応する更新日時情報以降で、指定された日時情報以前の更新日時情報と対応付けられ、且つ、指定された利用者情報に一致するストリームを検索し、更に、選択手段１１によって、この選択条件に適合するストリームを選択する。
なお、選択手段１１は検索手段１０による検索によって、上記のように選択条件に含まれる全ての属性に適合するストリームが存在しない場合には、この属性の内からバージョン情報に一致するストリームを選択する。
【００４９】
文書構成手段１２は論理単位グループ選択手段９によって選択されたストリームに基づいて文書を構成する処理を行い、文書構造表示手段１３は文書構成手段１２によって構成された文書をディスプレイ１４に表示させる処理を行う。
未表示情報表示手段１５は、文書構造表示手段１３によって文書の構成部分として表示されていない未表示のストリームをマーカとしてディスプレイ１４に表示させる処理を行う。すなわち、論理単位グループ選択手段９によって選択されたストリームを含むストリームセットが他のストリームを含んでいる場合には、当該他のストリームを後述（図１７）するようにマーカ化した候補として、文書構成手段１２によって構成された文書とともにディスプレイ１４に表示する。
【００５０】
論理単位グループ指定手段１６は、キーボードやマウス等の入力手段を有し、利用者からの入力に基づいて未表情報表示手段１５によって表示されたマーカを指定する処理を行う。
論理単位グループ再選択手段１７は、論理単位グループ指定手段１６によってマーカを指定したことに基づいて、論理単位グループ選択手段９に、当該指定されたマーカに対応するストリームと論理単位グループ選択手段９で既に選択されているストリームとを入れ替える処理を行わせる。すなわち、ディスプレイ１４に或るストリームの内容部（テキスト）が文書の構成部分として表示されている場合、マーカを選択することによって、他のストリームの内容部（テキスト）が入れ替えて表示される。また、入れ替えられたストリーム間でアンカーの数や位置等といったアンカーに係る構成が異なる場合には、表示されている文書の全体構成も変更される。
【００５１】
ここで、上記した論理単位グループ選択手段９が行う選択条件に基づくストリームの選択処理を図９を参照して更に詳しく説明する。
なお、図９に示す例では、各ストリームの属性として、”Ｕｓｕｉ”、”Ｓａｔｏ”、”Ｔａｎｉ”といった利用者名からなる利用者情報と、更新日時情報と、バージョン情報とが対応付けられており、入力される選択条件には、文書を参照して処理を行うための基準日時（基準日時情報）と、基準となるバージョン情報（基準バージョン情報）と、利用者情報と、が含まれている。また、縦軸の日時に沿って利用者情報毎のストリーム（１）〜（５）を示してある。
【００５２】
この例では、利用者の”Ｕｓｕｉ”さんが参照日時として図中に点線で示した時点で実際に文書を参照する場合を考える。
まず、選択条件として何も指定しない場合には、参照日時を基準として最新のストリーム（５）が選択される。
また、”本人”（すなわち、”Ｕｓｕｉ”）とした利用者情報のみを指定した場合には、ストリーム属性が”Ｕｓｕｉ”である最新のストリーム（１）が選択される。
また、”Ｓａｔｏ”とした利用者情報のみを指定した場合には、ストリーム属性が”Ｓａｔｏ”である最新のストリーム（５）が選択される。
また、図中に示す基準日時のみを指定した場合には、ストリーム属性の更新日時が基準日時までの最新のストリーム（４）が選択される。
【００５３】
また、基準日時として図示された日時を指定し、且つ、利用者情報として”Ｓａｔｏ”を指定した場合には、ストリーム属性が”Ｓａｔｏ”で且つ更新日時が基準日時までで最新のストリーム（３）が選択される。
また、図示された基準バージョンのみを指定した場合には、基準バージョン以降の最新のバージョン（５）が選択される。
また、図示された基準バージョンと基準日時として図示された日時を指定した場合には、基準バージョン以降で、基準日時までで最新のストリーム（４）が選択される。
【００５４】
また、図示された基準バージョンと基準日時として”最初”を指定した場合には、基準バージョン以降で、最初のストリーム（２）が選択される。
また、図示された基準バージョンと、利用者情報として”本人”を指定した場合には、基準バージョン以降にはストリーム属性が”Ｕｓｕｉ”であるストリームがないため、基準バージョンのストリーム（２）が選択される。
このように、ストリーム属性に基づいて、条件指定手段８から指定された選択条件に適合するストリームが選択され、当該ストリームに基づいて文書構成手段１２によって文書が構成される。
【００５５】
次に、上記構成の文書処理装置によって実施される文書編集処理の概要を図１０〜図３６に示す具体例を用いて説明する。なお、以下の説明によって、上記した各構成手段による機能も更に明確化されることとなる。
この具体例では、図１０に示す編集課程によってＳａｔｏさんとＴａｎｉさんが「発明説明書」という名前の文書を共同で執筆している。なお、個々の編集作業の開始から終了までをセッションと称し、開始は文書編集ツールで文書を開くことによって行われ、終了は文書を閉じることによって行われる。
【００５６】
図１０では、横軸に時間をとり、１〜７の各セッションは担当者”Ｓａｔｏ”、”Ｔａｎｉ”に対応する水平方向の線分で示される。また、各線分の後端の黒い三角形は文書の保存が行われた時点を示しており、また、保存のマークからの垂直方向の線でバージョンの名前を定義したことを示してある。例えば、セッション４では、１９９５年１月４日に文書を保存し、この際に「中間報告」という名前のバージョンを定義していることを示している。
なお、この具体例では、それぞれのセッションは、時間が重ならないようにしているが、これは説明を無用に複雑にしないためであり、本発明はセッションの時間が重なっても何らの支障を生じるものではない。
【００５７】
利用者Ｓａｔｏさんが新しく文書「発明説明書」を作成して保存するセッション１について、図１１〜図１５を参照して説明する。
まず、図１１に示すように、１９９５年１月１日の１５：００に、Ｓａｔｏさんが文書編集手段５の文書エディタを起動すると、ディスプレイ１４に図に示す対話ツールが表示されて新規文書名の入力を利用者に促す。これに対して、Ｓａｔｏさんが文書ルート名として「発明説明書」を入力し、設定完了を指示する「ｏｋ」ボタンをクリックすると、文書の抽出を開始するルートアンカーの名前が設定される。なお、このルートアンカーは文書を構成するストリームセットを参照するものである。
【００５８】
次いで、図１２に示すように、文書エディタが抽出した文書構造をディスプレイ１４に表示する。この文書構造の表示は、アンカーの位置を示す白い三角形のマーカと、アンカー名と、アンカーの参照するストリームの内容部とを表示することにより行われる。なお、アンカーの位置を示すマーカのインデントの深さは、文書構造中におけるストリームの階層の深さを示しており、下層のストリームを参照するアンカーになる程、マーカの表示される位置は図中の右方向となる。
【００５９】
すなわち、「発明説明書」という名称のルートアンカーで参照されるストリームに未だ内容部（テキスト内容）が未だ含まれていないときには、図１２（１）に示すように、ルートアンカー名称「発明説明書」が表示され、当該ルートアンカーが参照する空のストリームが図中に点線で示す領域として表示される。
そして、Ｓａｔｏさんが編集作業を行って、ルートアンカーが参照するストリームに内容部（ｕ）としてテキストを記述すると、このテキスト内容が図１２（２）に示すように上記の領域内に表示される。この編集の結果、論理単位グループ生成手段６によって、図１３に示すように、新しく作成された内容部（ｕ）だけからなるストリームａが生成され、このストリームａがルートアンカーＡによって参照された文書構造が構成される。
【００６０】
次いで、編集処理を終了して、１９９５年１月１日の２０：００に、Ｓａｔｏさんが図１２に示す文書エディタの「ｓａｖｅ」ボタンをクリックし、文書を保存する指示を入力すると、ディスプレイ１４には図１４に示す対話ツールが表示されて保存時の指定を促す。これに対して、この例では、Ｓａｔｏさんは何も設定することなく、「ｏｋ」ボタンをクリックして作成した文書の保存処理を指示する。なお、この対話ツールには文書ルートとしてルートアンカー名「発明説明書」は表示されている。
【００６１】
この保存処理の結果、メモリ１には、図１５に示す文書構造が格納される。すなわち、この文書構造には、ルートアンカーＡ、ルートアンカーＡで参照されるストリームセットａ、ストリームセットに含まれるストリームａ１、ストリームａ１に含まれる内容部（ｕ）が新しく生成され、ストリームａ１にはストリーム属性として、編集した利用者の情報である”Ｓａｔｏ”、データを保存（更新）した日時である「１９９５．１．１  ２０：００」が選択情報対応付け手段４によって対応付けられる。
【００６２】
次に、図１０に示したセッション２においては、Ｓａｔｏさんが自分がセッション１で作成した文書「発明説明書」に編集を加え、編集結果をメモリ１に保存する。
まず、図１６（１）に示すようにディスプレイ１４には文書フォルダが表示されており、１９９５年１月２日の１５：００に、Ｓａｔｏさんが文書フォルダの「発明説明書」アイコンをダブルクリックして選択すると、文書編集手段５の文書エディタが起動される。この結果、ディスプレイ１４には図１６（２）に示す抽出条件設定ツールが表示され、抽出条件の設定を促す。これに対して、Ｓａｔｏさんが条件指定手段８から利用者情報として本人を表す変数「％本人」を入力し、設定完了を指示する「ｏｋ」ボタンをクリックすると、編集処理が開始される。なお、「％本人」「％最初」等の「％」記号は、文書抽出を開始する時に、システムが値を計算して設定する変数であることを示している。
【００６３】
上記の設定は、本人が更新した最新の構成部分（ストリーム）を含む文書を抽出して編集対象とすることを示しており、図１７（１）に示すように、文書エディタが文書エディタは、セッション１で保存したときの文書構造をメモリ１から抽出してディスプレイ１４に表示する。
次いで、Ｓａｔｏさんが文書の編集作業として、図１７（１）に示すようにルートアンカーである「発明説明書」が参照するストリームに、アンカーとして「請求項」を追加し、更に、アンカー「請求項」が参照するストリームに内容部（ｖ）としてテキストを記述すると、このテキスト内容が図１７（２）に示すようにアンカー「請求項」が参照する領域内に表示される。
【００６４】
この編集の結果、図１８に示すように、論理単位グループ生成手段６によって、ルートアンカーＡによって参照されて内容部（ｕ）とアンカーＢとを含む新たなストリームａ２が生成されるとともに、アンカーＢによって参照されて内容部（ｖ）を含む新たなストリームｂ１が生成される。
なお、図１７に示すように、文書エディタ中には未表示情報表示手段１５によって候補マーカＭａが表示され、アンカーＡが参照するストリームセットにはディスプレイ表示されているストリームの他に、他のストリームが候補として存在することを示している。この場合、アンカーＡが参照するストリームの候補にはａ１とａ２とがあり、一方のストリームについてディスプレイ表示されているときには、他方のストリームはマーカＭａによってディスプレイ表示される。
【００６５】
次いで、編集処理を終了して、１９９５年１月２日の２０：００に、Ｓａｔｏさんが図１７に示す文書エディタの「ｓａｖｅ」ボタンをクリックし、文書を保存する指示を入力すると、ディスプレイ１４には図１４に示したと同様な対話ツールが表示されて保存時の指定を促す。これに対して、Ｓａｔｏさんがセッション１のときと同様にして文書の保存処理を指示すると、メモリ１には、図１９に示す文書構造が格納される。
【００６６】
すなわち、この文書構造には、ルートアンカーＡ、ルートアンカーＡで参照されるストリームセットａ、ストリームセットａに含まれるストリームａ１及びａ２、アンカーＢによって参照されるストリームセットｂ、ストリームセットｂに含まれるストリームｂ１、が含まれ、更に、ストリームａ１には利用者情報の”Ｓａｔｏ”、データ保存（更新）日時情報の「１９９５．１．１  ２０：００」といったストリーム属性、ストリームａ２には利用者情報の”Ｓａｔｏ”、データ保存（更新）日時情報の「１９９５．１．２  ２０：００」といったストリーム属性、ストリームｂ１には利用者情報の”Ｓａｔｏ”、データ保存（更新）日時情報の「１９９５．１．２  ２０：００」といったストリーム属性、が選択情報対応付け手段４によって対応付けられる。
【００６７】
次に、図１０に示したセッション３においては、Ｓａｔｏさんが自分がセッション２で編集した文書「発明説明書」に更に編集を加え、編集結果をメモリ１に保存する。
まず、１９９５年１月３日の１５：００に、セッション２と同様にしてＳａｔｏさんが文書「発明説明書」の編集を開始すると、文書エディタはセッション２で保存したときの文書構造をメモリ１から抽出して図２０（１）に示すようにディスプレイ１４に表示する。
【００６８】
これに対して、Ｓａｔｏさんが、文書の編集作業として、図２０（１）に示すように請求項の欄に項目２を追加すると、論理単位グループ生成手段６が請求項のアンカーＢが参照するストリームとして、項目１のアンカーＣと項目２のアンカーＤを含むストリームを作成する。そして、図２０（２）に示すように、この項目２にテキストを記述すると、このテキストからなる内容部（ｘ）がアンカーＤによって参照される新たなストリームとして論理単位グループ生成手段６によって生成される。
【００６９】
したがって、文書エディタ内には図２１に示すように、ルートアンカーＡによって参照されて内容部（ｕ）とアンカーＢとを含むストリームａ２と、アンカーＢによって参照されてアンカーＣとＤとを含むストリームｂ２と、アンカーＣによって参照されて内容部（ｖ）を含むストリームｃ１と、アンカーＤによって参照されて内容部（ｘ）を含むストリームｄ１と、が生成される。
なお、上記の編集処理によってアンカーＢが参照するストリームが複数の候補となるので、図２０に示すように、これらストリームｂ１、ｂ２の内の未表示のストリームを示すマーカＭｂがディスプレイ表示される。
【００７０】
次いで、編集処理を終了して、１９９５年１月３日の２０：００に、Ｓａｔｏさんがセッション２と同様にして文書を保存する指示を入力すると、メモリ１には図２２に示す文書構造が格納される。
すなわち、この文書構造には、図１９に示した構造に対して、ストリームセットｂにアンカーＣとＤを含むストリームｂ２が追加され、更に、アンカーＣで参照されるストリームセットｃ、ストリームセットｃに含まれる内容部（ｖ）を有したストリームｃ１、アンカーＤで参照されるストリームセットｄ、ストリームセットｄに含まれる内容部（ｘ）を有したストリームｄ１、が追加される。更に、この文書構造の新たに追加されたストリームｂ２、ｃ１、ｄ１に対しては、利用者情報の”Ｓａｔｏ”、データ保存（更新）日時情報の「１９９５．１．３  ２０：００」といったストリーム属性が選択情報対応付け手段４によってそれぞれ対応付けられる。
【００７１】
次に、図１０に示したセッション４においては、Ｓａｔｏさんが作成した文書「発明説明書」にＴａｎｉさんが編集を加え、その編集結果を「中間報告」バージョンとして保存する。
まず、１９９５年１月４日の１０：００にＴａｎｉさんがセッション２と同様にして編集を開始すると、図２３に示すように抽出条件設定ツールがディスプレイ１４に表示される。これに対して、Ｔａｎｉさんは設定条件として何も指定せずに「ｏｋ」ボタンをクリックして、図２４に示すような文書エディタをディスプレイ表示させて編集を実行する。
なお、このように何も条件を設定せずに編集を開始すると、利用者に関わらず最新の文書がメモリ１から抽出されて編集対象となる。また、ここで、Ｔａｎｉさんはこれまでに、文書の更新を行っていないので、Ｓａｔｏさんのように利用者条件として条件指定手段８から「％本人」を指示すると、文書として何も抽出されないことになる。
【００７２】
図２４に示すように、文書エディタはセッション３で保存したときの文書構造を抽出してディスプレイ表示しており、Ｔａｎｉさんが編集作業として、図に示すように請求項のアンカーＢが参照するストリームとして、項目１と項目２の間に項目１．５を追加する。
この編集の結果、図２５に示すように、論理単位グループ生成手段６によって、アンカーＢによって参照されてアンカーＣ、Ｄ、Ｅを含む新たなストリームｂ３、アンカーＥによって参照される項目１．５の内容部（ｚ）を含む新たなストリームｅ１が生成される。
【００７３】
次いで、編集処理を終了して、１９９５年１月４日の１５：００に、Ｔａｎｉさんが文書エディタの「ｓａｖｅ」ボタンをクリックし、文書を保存する指示を入力すると、ディスプレイ１４には図２６に示す対話ツールが表示されて保存時の指定を促す。これに対して、Ｔａｎｉさんはバージョン情報として「中間報告」を設定して、「ｏｋ」ボタンをクリックして作成した文書の保存処理を指示する。
【００７４】
この保存処理の結果、メモリ１には、図２７に示す文書構造が格納される。すなわち、図２２に示したセッション３での文書構造に対して、アンカーＢで参照されるストリームセットｂにアンカーＣ、Ｄ、Ｅを含む新たなストリームｂ３が追加され、更に、アンカーＥによって参照されるストリームセットｅ、及び、ストリームセットｅに含まれる新たなストリームｅ１、が追加される。
なお、この編集処理によって生成されたストリームｂ３、ｅ１には、ストリーム属性として、編集した利用者の情報である”Ｔａｎｉ”、データを保存（更新）した日時である「１９９５．１．４  １５：００」、バージョン情報である「中間報告」が選択情報対応付け手段４によって対応付けられる。また、この編集処理に関わったストリームａ２、ｃ１、ｄ１のストリーム属性にも、選択情報対応付け手段４によってバージョン情報の「中間報告」が追加して対応付けられる。
【００７５】
次に、図１０に示したセッション５においては、Ｓａｔｏさんが自分が編集した文書「発明説明書」に更に編集を加え、編集結果を保存する。なお、この編集開始時にはセッション４でＴａｎｉさんによる変更が加えられているが、抽出条件の設定により、自分が編集して保存した状態の文書について編集を再開する。すなわち、セッション２と同様にして１９９５年１月４日の１５：００に文書エディタ起動する。そしてこの際に、条件指定手段８から入力する抽出条件設定ツールの指定を「％本人」とすることによって、論理単位グループ選択手段９は請求項のアンカーＢが参照するストリームとして、Ｔａｎｉさんが作成したｂ３ではなく、Ｓａｔｏさんの作成したｂ２を選択し、セッション３でＳａｔｏさんが保存した状態の文書構造を図２８（１）に示すように文書エディタで表示する。
【００７６】
なお、この場合の候補マーカＭｂは反転表示され、これによって、請求項のアンカーＢが現在参照しているストリームの候補により新しいストリームがあることを示す。
そして、Ｓａｔｏさんが編集作業として、図２８（２）に示すように、項目２の内容部（ｘ）を内容部（ｙ）に書き換えると、図２９に示すように、論理単位グループ生成手段６が項目２ののアンカーＤが参照するストリームとして、内容部（ｘ）を内容部（ｙ）に書き換えたストリームｄ２を新たに生成する。
【００７７】
次いで、１９９５年１月４日の２０：００にＳａｔｏさんがセッション１と同様にして文書を保存すると、メモリ１には図３０に示す文書構造が格納される。すなわち、図２７に示したセッション４での文書構造に対して、アンカーＤで参照されるストリームセットｄに内容部（ｙ）を含む新たなストリームｄ２が追加され、更に、このストリームｄ２にはストリーム属性として、編集した利用者の情報である”Ｓａｔｏ”、データを保存（更新）した日時である「１９９５．１．４  ２０：００」、が選択情報対応付け手段４によって対応付けられる。
【００７８】
次に、図１０に示したセッション６においては、Ｔａｎｉさんが自分が編集を加えて保存した文書「発明説明書」の「中間報告」バージョンと、その後、自分以外の執筆者によって加えられた編集の結果を参照する。
１９９５年１月５日の１０：００に、Ｔａｎｉさんが文書「発明説明書」の編集を開始し、セッション２と同様にして、文書フォルダのアイコンを選択してダブルクリックすることで、文書エディタを起動する。この時、図３１（１）に示す抽出条件設定ツールによって、文書の抽出条件の設定が促され、これに対して、Ｔａｎｉさんがバージョン情報として「中間報告」、利用者情報として「％本人」を指定する。この指定によって「中間報告」として指定したバージョンに、Ｔａｎｉさんにより更新された構成要素（ストリーム）から成る文書がメモリ１から抽出されて編集対象となる。
【００７９】
すなわち、論理単位グループ選択手段９が条件指定手段８から入力された条件に従って、「中間報告」を属性に含むストリームを検索し、Ｔａｎｉさんの作成した最新のストリームを選択する。ここで、Ｔａｎｉさんがセッション４でバージョンを設定後、Ｓａｔｏさんは編集を行っているが、Ｔａｎｉさんは編集を行っていないため、項目２のアンカーＤが参照するストリームとして、Ｓａｔｏさんの作成した最新のストリームｄ２ではなく、「中間報告」を設定した時点でのストリームｄ１が選択される。
この結果、図３２（１）に示すように、文書エディタにはＴａｎｉさんがセッション４で保存した「中間報告」の文書構造（図２４）が表示される。なお、項目２のアンカーＤに対応する候補マーカＭｄは反転表示されて、Ｓａｔｏさんによって作成されたより新しいストリームの候補があることを示している。
【００８０】
ここで、文書エディタの「ｆｉｌｔｅｒ」ボタンをクリックすることによって、抽出条件設定ツールを再び呼び出すことができ、この呼び出したツールで条件を変更すると、新しい条件で文書構造が再抽出される。したがって、Ｔａｎｉさんが図３１（２）に示すように、抽出条件として「％本人」を除いた指定を行うと、この指定によって、より新しいストリームが利用者の区別なく選択される。この結果、項目２のアンカーＤが参照するストリームとして、Ｓａｔｏさんが作成した最新のストリームｄ２が選択され、図３２（２）に示す文書が文書エディタに表示される。
【００８１】
したがって、図３１（１）に示した最初の条件の指定では、エディタ内には図３３（１）に示す文書構造が取り出され、図３１（２）に示した条件の変更後は、図３３（２）に示す文書構造が取り出される。すなわち、図３３（１）に示す文書構造ではアンカーＤが内容部（ｘ）を含むストリームｄ１を参照するが、図３３（２）に示す文書構造ではアンカーＤが内容部（ｙ）を含むストリームｄ２を参照する。
なお、セッション６ではＴａｎｉさんは編集を終了するが、文書は保存せず、メモリ１に格納される文書構造は図３０に示した構造のままである。
【００８２】
次に、図１０に示したセッション７においては、Ｓａｔｏさんが自分が編集を行ってきた文書「発明説明書」について、自分以外の執筆者による編集の結果を反映させたものを「最終報告」バージョンとして保存する。
セッション７では、１９９５年１月５日の１５：００に、Ｓａｔｏさんがセッション２と同様にして文書エディタを起動させ、文書「発明説明書」の編集を開始する。
【００８３】
文書エディタは、図３４に示すように、セッション５でＳａｔｏさんが保存したときの文書構造をメモリ１から抽出してディスプレイ表示する。
この文書エディタには請求項のアンカーＢが参照するストリームに、未選択のより新しい候補があることが候補マーカＭｂによって示されている。この候補マーカＭｂをクリックすると、候補のストリームｂ１、ｂ２、ｂ３がメニュウＫとして表示され、このメニュウＫから論理単位グループ指定手段１６でストリームを選択すると、論理単位グループ再選択手段１７によって選択されたストリームが現在参照中のストリームと置き換えられ、更に、置き換えられたストリームより下位の構造は抽出条件に従って再構成される。
【００８４】
したがって、Ｓａｔｏさんが候補メニュウＫから最新のストリームｂ３を選択することによって、セッション５で作成したと同じ文書を編集対象とできる。
このセッション７の編集処理では、文書エディタ内で、図２９に示したセッション５での文書構造が図３３（２）に示した構造に変更される。そして、１９９５年１月５日の２０：００に、Ｓａｔｏさんが文書を保存する指示を行うと、図３５に示す対話ツールがディスプレイ表示されて、保存時の条件設定を促す。これに対して、Ｓａｔｏさんがバージョン情報として「最終報告」を指定して保存を行うと、メモリ１には図３６に示すように編集処理が加えられた文書構造が格納される。すなわち、図３０に示したセッション５での文書構造に対して、保存処理時に参照していたストリームａ２、ｂ３、ｃ１、ｄ２、ｅ１の属性に、選択情報対応付け手段４によってバージョン情報の「最終報告」が追加して対応付けられる。
【００８５】
次に、文書をメモリ１から抽出してディスプレイ１４に表示する処理を図３７〜図４０に示すフローチャートを参照して更に詳しく説明する。
図３７に示すように、まず、利用者による条件指定手段８からの指示に従って論理単位グループ選択手段９がメモリ１からルートアンカーを選択し（ステップＳ１）、引き続いて、指定されたルートアンカーの下位の階層に位置する構造をメモリ１から抽出して文書をディスプレイ１４に表示する処理を行う（ステップＳ２）。
【００８６】
このステップＳ２での下位構造抽出表示処理は図３８に示す手順でなされる。まず、文書構成手段１２が抽出中の文書構造にルートアンカーを組み入れ（ステップＳ１１）、文書構造表示手段１３がこのルートアンカー名を表示した文書エディタをディスプレイ１４の画面に表示する（ステップＳ１２）。
次いで、ルートアンカーが参照しているストリームセットを論理単位グループ選択手段９がメモリ１から選択し（ステップＳ１３）、このストリームセットから、利用者によって条件指定手段８から指示された条件に適合する属性のストリームを選択する（ステップＳ１４）。
【００８７】
次いで、選択されたストリームを文書構成手段１２が抽出中の文書構造に組み入れ（ステップＳ１５）、文書構造表示手段１３がこのストリーム（内容部）をディスプレイ１４の画面に表示されている文書エディタ中に表示する（ステップＳ１６）。
次いで、未表示情報表示手段１５が選択されたストリームが上記のストリームセット内の唯一のストリームかを判断し（ステップＳ１７）、ストリームセット内に他のストリームが無いときには処理を終了する。なお、ストリームに含まれるアンカーが下位の階層のストリームセットを参照している場合には、これらストリームセット及びストリームについて上記と同様な選択表示処理が繰り返し行われる。
【００８８】
一方、選択されたストリームの他にストリームセット内に他のストリームが存在する場合には、未表示情報表示手段１５が当該他のストリームは選択したストリームより新しいストリームであるかをそのストリーム属性から判断し（ステップＳ１８）、より新しいストリームである場合には当該ストリームを表す候補マークをディスプレイ１４上の文書エディタ中に反転表示する一方（ステップＳ１９）、新しいストリームでない場合には当該ストリームを表す候補マークをディスプレイ１４上の文書エディタ中に非反転で表示する（ステップＳ２０）。
【００８９】
ここで、上記のストリーム表示処理（ステップＳ１６）を更に詳しく説明すると、当該処理は図３９に示す手順で実行される。
まず、選択されたストリームが空のストリームであるかを判断し（ステップＳ３１）、内容部やアンカーといった論理単位を含まない空のストリームである場合にはそのまま処理を終了する。一方、ストリームに論理単位が含まれている場合には、これら論理単位の内の未処理のものを１つ選択し（ステップＳ３２）、当該選択した論理単位がアンカーであるかを判断する（ステップＳ３３）。
【００９０】
この判断の結果、アンカーである場合には図３８に示した下位構造抽出表示処理を行ってアンカーで参照されている下位構造の表示を行う一方（ステップＳ３４）、内容部である場合には当該内容部を表示処理する（ステップＳ３５）。
そして、選択されたストリーム中の全ての論理単位について上記の処理が終了したかを判断し（ステップＳ３６）、終了していない場合にはステップＳ３２以降の処理を繰り返し行い、終了している場合には当該ストリーム表示処理を終了する。
【００９１】
また、上記のストリーム選択処理（ステップＳ１４）を更に詳しく説明すると、当該処理は図４０に示す手順で実行される。
まず、ストリームセット中の全てのストリームを候補リストにし（ステップＳ４１）、条件指定手段８から入力された条件にバージョン情報の指定があるかを判断する（ステップＳ４２）。
この判断の結果、バージョン指定がある場合には、候補リスト中のストリムから条件に適合する属性を有したストリームを探し、このストリームを一旦基準ストリームとして設定する（ステップＳ４３）。
【００９２】
次いで、条件指定手段８から入力された条件に基準日時情報の指定があるかを判断し（ステップＳ４４）、日時指定がある場合には、指定された日時より新しい日時が属性に設定されているストリームを候補リストから削除する（ステップＳ４５）。すなわち、利用者が処理対象としている日時以降に編集処理されたストリームを除外する。
次いで、条件指定手段８から入力された条件に利用者情報の指定があるかを判断し（ステップＳ４６）、利用者の指定がある場合には、指定された利用者情報が属性に設定されていないストリームを候補リストから削除する（ステップＳ４７）。すなわち、利用者が処理対象としている自己の編集に係るストリーム以外を除外する。
【００９３】
次いで、基準ストリームが選択されているかを判断し（ステップＳ４８）、選択されている場合には、基準ストリームよりも古いストリームを候補リストから削除し（ステップＳ４９）、候補リストが空となっていないことを確認して（ステップＳ５０）、基準ストリームを条件指定手段８から入力された条件に適合するストリームとして選択する（ステップＳ５４）。
一方、上記の判断の結果、候補リスト中に基準ストリームが残存していない場合には、候補リストが空となってしまっているかを判断し（ステップＳ５２）、空となっている場合には、いずれのストリームの選択されないことを示すために、空のストリームを選択されたストリームとする（ステップＳ５３）。
【００９４】
また、上記の判断において、基準ストリームが選択されておらず、候補リストは基準ストリームが空ではない場合（ステップＳ５２）又は候補リストから基準ストリームより古いストリームを削除しても空ではない場合（ステップＳ５０）には、候補リスト中の最新のストリームを選択されたストリームとする（ステップＳ５４）。
したがって、ストリーム属性に基づいて、条件指定手段８から入力された条件に適合するストリームが選択される。
【００９５】
次に、利用者が文書エディタ中に表示された候補マーカＭａ、Ｍｂ、・・・を選択することによって、ストリームを置き換えた文書をメモリ１から抽出してディスプレイ１４に表示する処理を、図４１に示すフローチャートを参照して更に詳しく説明する。
まず、論理単位グループ指示手段１６によって利用者が候補マーカを指示すると、未表示情報表示手段１５が指示されたストリームが属するストリームセットをメモリ１に格納されている文書構造から選択し（ステップＳ６１）、選択したストリームセット中の各ストリームを候補メニュＫとして文書エディタ中に表示する（ステップＳ６２）。
【００９６】
そして、利用者が論理単位グループ指示手段１６によって指示して、候補メニュＫ中の現在選択表示されているストリームとは別のストリームを選択したかを判断し（ステップＳ６３）、別のストリームを選択した場合には、現在文書エディタで表示しているストリームの下位階層の構造を論理単位グループ再選択手段１７が破棄し（ステップＳ６４）、更に、再選択されたストリームを破棄したストリームと入れ替える（ステップＳ６５）。
そして、この入れ替えられたストリームから成る文書を文書構成手段１２が構成し、当該文書を表示手段１３が文書エディタ中の表示し直して処理を終了する（ステップＳ６６）。
【００９７】
次に、編集処理した文書をメモリ１に保存する処理を図４２に示すフローチャートを参照して更に詳しく説明する。
まず、文書編集手段５によって文書エディタで編集した文書構造のルートアンカーがメモリ１に格納されている文書構造中のルートアンカーリストに含まれているかを判断する（ステップＳ７１）。この結果、ルートアンカーリストにない場合には、編集された文書は全く新規な文書であるので、当該文書構造のルートアンカーを参照関連付手段７がルートアンカーリストに追加する（ステップＳ７２）。
【００９８】
次いで、文書エディタで生成された内容部を参照関連付手段７が所定のストリームに関連付け（ステップＳ７３）、生成されたストリームを集めて（ステップＳ７４）、以下の処理が未だなされていないストリームを選択する（ステップＳ７５）。
次いで、未処理のストリームが対応するストリームセットをメモリ１に格納されている文書構造中から探し（ステップＳ７６）、対応するストリームセットがある場合には（ステップＳ７７）、当該ストリームセットに未処理のストリームを追加する（ステップＳ７９）。一方、対応するストリームセットがない場合には、新たなストリームセットを文書構造中の追加して（ステップＳ７８）、当該ストリームセットに未処理のストリームを追加する（ステップＳ７９）。
【００９９】
そして、ストリームセットに追加したストリームに対して、日時や利用者といった属性を選択情報対応付け手段４が設定する（ステップＳ８０）。
上記の一連の処理は、生成された全てのストリームについて繰り返し行われ（ステップＳ８１）、この後に、ストリーム属性としてのバージョン情報の設定処理が行われる。すなわち、編集保存処理においてバージョン情報の設定がなされているかを判断し（ステップＳ８２）、設定がなされている場合には、メモリ１に格納されている文書構造中の全てのストリームを集めて（ステップＳ８３）、以下の処理を行っていない未処理のストリームを順次選択する（ステップＳ８４）。
【０１００】
そして、選択したストリームが属するストリームセットを文書構造中から探し（ステップＳ８５）、当該ストリームセット中の選択したストリームの属性にバージョン情報を追加する（ステップＳ８６）。そして、上記ステップＳ８４以降の処理を全てのストリームについて終了したところで、文書保存処理を終了する（ステップＳ８７）。
したがって、編集処理で生成されたストリームを保存するに際して、当該ストリームは編集前のストリームと同一のストリームセットに追加され、また、保存処理に際して設定された属性がストリームに対応付けられる。
【０１０１】
なお、上記の実施例で採用したアルゴリズムは、ルートアンカーから順にアンカーに出会ったときに、参照しているストリームセットから選択条件に適合するストリームの選択を逐次行って文書を生成するものであるが、これ以外にも、文書構造に含まれるストリームセットの全てから選択条件に適合する全てのストリームを選択した後で、これら選択したストリームを組み立てて文書を生成するようにしてもよい。
また、上記の実施例では、文書エディタの起動時に抽出条件を必ず指定しておくようにしているが、特に指示のないときには、前回の指定と同じにする、或いは、デフォルトの条件にするようにしてもよい。この場合、複数の担当者で自分の編集を一貫して行えることを最も重視するならば、デフォルトの条件は利用者指定を「％本人」にしておけばよい。また、最新の文書の編集を行えることを最も重視するならば、デフォルトの条件は何も指定しないようにすればよい。
【０１０２】
また、上記の実施例では編集処理に際して文書構造中に新しいバージョンを追加するようにしたが、参照処理を行っただけでも、新しいバージョンを追加するようにしてもよい。このようにすれば、参照処理を行った時点での文書構造を取り出すことが可能になる。
【０１０３】
また、上記の本実施例におけるストリームの選択手順ではバージョンを指定した日時よりも基準日時が新しいことを前提としているが、基準日時とバージョン日時が逆転した場合には以下のような方法を採ることにより支障なくストリームを選択処理することができる。
（１）基準日時よりもバージョンの指定を優先する。
（２）バージョンを指定した日時よりも前の基準日時を指定できないようにする。なお、ストリーム属性ではバージョンを指定した日時は記録されないため、このためには、バージョンを指定した日時を記録する手段が必要である。
【０１０４】
また、上記の実施例ではバージョンを指定した場合にストリーム属性にバージョン情報を追加するようにしたが、この代わりに、新しいストリームとして追加するようにしてもよい。また、バージョンの指定は、利用者が明示的に行っているが、例えば、プリント時等に自動的にバージョンを記録してもよい。
また、上記の実施例では、「請求項」等のアンカー名はアンカーを含むストリームに対応付けて管理されている。したがって、アンカーの名前が変更されることによっても、新しいストリームが生成されるが、この他にもストリームとは独立にアンカー名を管理したり、参照しているストリームの名前として管理するようにしてもかまわない。
【０１０５】
また、上記の実施例では論理単位グループとしてストリームという単位で文書の構造を表現するモデルを採用したが、本発明はこの文書構造の表現方法に限定されるものではなく、従来技術で示したようなノードとリンクからなる木構造による文書構造に本発明を適用することもできる。なお、ノードとリンクによる文書構造においては、本発明の論理単位グループに対応するのは１つのノードを起点とするリンク集合である。要は、本発明は、このリンク集合やストリームといった単位をバージョン管理の対象として、編集処理毎に複製、保存、属性設定等を適切に行う手段を与えていることに特徴がある。
【０１０６】
例えば、従来技術である特開平６−３５９１４号公報に記載された発明を拡張して本発明の機能を提供するためには、次のようにすればよい。末端ではないノードについて下位ノードへのリンク列をノードの内容として扱うことにし、そのノードに対応するバージョンノードのそれぞれが、異なるリンク列を持つようにする。このように拡張すると、下位ノードを本発明における参照単位、下位ノードへのリンク列を論理単位グループとして扱えるようになる。
【０１０７】
更に言えば、本発明では、従来例として説明した多重文書処理システム（特開平７−４４５６３号公報、特開平６−１３１３４３号公報）に示されているデータ構造を文書構造として採用することも可能であり、当該データ構造において本発明の論理単位グループに対応するものは、ノードが保持する子ノードポインタの集合となる。
なお、当該多重文書処理システムではノードを多重化する手段を提供しているが、これに加えて、本発明は編集時に子ノードポインタ集合を多重化する手段を有している。すなわち、本発明では、編集を行った際にノードを多重化するだけでなく、その子ノードポインタの集合を複製、保存、属性設定を行う手段を有している。具体的には、文書の更新が生じたときに、自動的に子ノードポインタ集合を複製して管理するとともに、その属性値として日時、利用者、バージョン名を指定できるようにしている。このような処理を利用者が手作業で行うのであれば、編集作業が極めて複雑なものとなることはいうまでもなく、本発明の本質は、この複雑な処理を計算機によって自動的且つ適切に実行することによって、複数の担当者による執筆作業における負担を大幅に軽減することにある。
【０１０８】
また、上記の実施例では、文書構造を内容部のテキスト表示と一緒に表示する例を示したが、図４３、４４に示すように、テキスト内容を表示せずに構造だけを表示するようにしてもよい。
すなわち、図４３では、アンカーを矩形、ストリームを矢印として表示しており、他のストリームの候補があるかどうかは、ストリームを示す矢印を候補の数だけ表示することで示される。また、図４４では、ストリームを参照するアンカーの木構造として表示しており、ストリームに他の候補があるかどうかは、アンカーを示す図形の右肩に候補の数だけ影をつけることで示される。
【０１０９】
次に、本発明に係る構造化データ処理装置の一実施例を説明する。なお、上記した文書処理装置と比較すると、内容単位はノード、参照単位はリンク、論理単位グループは同一の編集処理に係る（すなわち、兄弟の関係にある）リンクの集合に該当する。また、本実施例についての以下の説明では、過去に存在していなかった構造を生成する例も示す。
【０１１０】
ここで、まず、本実施例が処理の対象としている構造化データのバリエーションについて説明しておく。
図４５〜図４７には、ノード、リンク、リンク間関係、文書内容、属性マッピング、選択属性についてのデータ保持方法のバリエーションを示してあり、ノードとリンクからなる従来技術のデータ構造と本質的に異なる点は、同じノードを始点とする複数のリンク間関係を保持し、それぞれに属性情報をマッピングすることによって、リンク間関係を管理することにある。いずれのバリエーションにおいても、これらの構造を表現するために必要な情報が管理されていることが本発明の構成上重要な要件である。
【０１１１】
図４５は、リンク間関係の実現方法のバリエーションを示している。同図（ａ）に示す構造はノードの記述中にそれを始点とする複数のリンク間関係を保持する構成であり、この構造では、リンク間関係は共通の始点ノードを規定する必要がないので、終点ノードへの参照ポインタのリストとして実現できる。なお、本実施例では後述するように、編集対象としてカレント構造管理手段２１に保持されるカレント構造を表現するためにこの構成を採用している。
また、同図（ｂ）に示す構造はリンク間関係が始点ノードと終点ノードへの参照ポインタのリストとして表現されており、同図（ｃ）に示す構造は共通の始点ノードを持つリンク間関係の集合をリンク間関係セットとして保持し、そこから始点ノードを参照するようになっている。なお、本実施例では後述するように、ハイパー構造管理手段２０に保持されるハイパー構造を表現するために、同図（ｃ）に示す構成を採用している。
【０１１２】
図４６は、属性マッピングの実現方法のバリエーションを示している。同図（ａ）に示す構造では、リンク間関係の記述が後述する選択属性を含んでいる。また、同図（ｂ）に示す構造ではリンク間関係セットが各リンク間関係に選択属性をマッピングしており、同図（ｃ）に示す構造では属性値の管理手段が選択属性をリンク間関係にマッピングしている。なお、本実施例では、同図（ａ）に示す構造を採用している。
図４７は、ノードによる文書内容の保持方法のバリエーションを示している。同図（ａ）に示す構造はノード中に内容を記述する構成であり、同図（ｂ）に示す構造はリンク間関係の記述が内容を記述する構成であり、同図（ｃ）に示す構造は文書内容の管理手段で管理されている内容を参照する構成である。なお、本実施例では同図（ｂ）の構成を採用している。
【０１１３】
次いで、図４８には本実施例に係る構造化データ処理装置の構成を示してあり、本装置によって上記構成の構造化データを処理する。
構造化データ処理装置には、ハイパー構造管理手段２０、カレント構造管理手段２１、編集手段２２、登録指示手段２３、登録手段２４、履歴管理手段２５、履歴表示手段２６、抽出手段２７、抽出指示手段２８、ルート選択手段２９が備えられている。
【０１１４】
ハイパー構造管理手段２０はグラフ構造を成している構造化データをメモリに保持して管理しており、この構造化データはノード、リンク、リンク間関係、選択属性、属性マッピングによって構成されている。
ノードは構造化データを構成する最小単位であり、文書データを構造化した本実施例では、ノードは文書内容であるテキスト情報を保持している。なお、ノードをリンクで結合した木構造が、文書を表すカレント構造である。
リンクは二つのノード間の結合関係を表す単位であり、リンクは始点となるノードと終点となるノードの組として定義される。なお、本実施例では、リンクはリンク間関係を記述する”LinkList”の記述に含まれる。また、このハイパー構造管理手段２０は、請求項に言うノード保持手段、リンク保持手段及びリンク関係保持手段を構成している。
【０１１５】
リンク間関係は同じノードを始点とするリンクの集合に対する関係を記述しており、この集合に含まれるリンクのリストと各リンクの位置を規定する。なお、本実施例では、リンク集合は順序を規定されている。
選択属性は上記実施例の選択情報に対応した情報であり、同じノードを始点とする一つ以上のリンク間関係の中からリンク間関係を選択するための属性情報である。なお、本実施例では、作成日時、作成者名、バージョン名のリストを、選択属性として用いている。
属性マッピングは選択属性をリンク間関係に関連付ける記述であり、本実施例では、リンク間関係を記述する”LinkList”が属性情報を保持する。
【０１１６】
カレント構造管理手段２１はノード、リンク、リンク間関係から成る木構造（グラフ構造の一種）で表現されるドキュメント構造データをメモリに保持して管理しており、このドキュメント構造が編集処理の対象となる。なお、本実施例では、リンク間関係およびリンクの記述はノードを記述する”Node”の記述中に含まれる。
編集手段２２は、ユーザの指示に従ってドキュメント構造に含まれるノード、リンク、リンク間関係についての生成、更新、削除等といった編集処理を行い、候補表示手段３０、候補指示手段３１、交換手段３２を有している。候補表示手段３０は同じノードを始点とするリンク間関係をディスプレイ画面に表示する手段であり、本実施例では、ユーザが選択したノードを始点とするリンク間関係を表示する。候補指示手段３１は、ユーザの指示に従って候補表示手段３０によって表示されたリンク間関係の中からいずれか一つ選択する手段である。交換手段３２は、選択されているリンク間関係をユーザに指示されたリンク間関係に変更する手段である。
【０１１７】
登録指示手段２３はカレント構造管理手段２１に保持されているドキュメント構造をハイパー構造管理手段２０に登録させるための指示を、ユーザから受け取る手段であり、登録手段２４は当該指示に従ってドキュメント構造をハイパー構造に登録する。なお、登録はカレント構造中のノード、リンク間関係をハイパー構造中に格納し、適切な属性情報マッピングを行うことである。
履歴管理手段２５はカレント構造の登録履歴を管理する手段であり、カレント構造管理手段２１に保持されているドキュメント構造をハイパー構造管理手段２０に登録させる毎に登録履歴を記録して管理する。なお、本実施例では、登録日時、登録者名、登録時に設定したバージョン名の組をセッションとして記録する。
履歴表示手段２６は履歴管理手段２５で管理されているセッションの情報をディスプレイ画面に一覧として表示する手段である。
【０１１８】
抽出手段２７は、ユーザからの指示に従って選択されたリンク間関係を用いてハイパー構造管理手段２０からドキュメント構造を抽出し、当該ドキュメント構造をカレント構造管理手段２１へ保持させる手段であり、検索手段３３と選択手段３４とを有している。検索手段３３は、同じノードを始点とするリンク間関係の中から、ユーザから指示された検索条件を満たすリンク間関係を検索する手段であり、選択手段３４は、検索したリンク間関係の中から、ユーザから指示された選択規則に従って１つのリンク間関係を選択する手段である。
【０１１９】
抽出指示手段２８はユーザから抽出条件の指示を受け取る手段であり、検索条件指示手段３５と選択規則指示手段３６とを有している。なお、本実施例では、抽出条件としては選択条件と選択規則の二つが指示可能である。検索条件指示手段３５はユーザから選択条件（すなわち、検索条件）の指示を受け取る手段であり、本実施例では、選択条件は日時、バージョン名、執筆者名を含んでいる。選択規則指示手段３６はユーザから選択規則の指示を受け取る手段であり、本実施例では、選択規則はユーザ優先、日時優先、バージョン名優先のいずれかである。
【０１２０】
ルート選択手段２９は、カレント構造のルートとなるノードをハイパー構造管理手段２０に保持されているハイパー構造中から選択する手段であり、本実施例では、ルートノードを起点としてリンク間関係を順次選択することで、カレント構造管理手段２１に保持されるカレント構造を生成している。
なお、上記した各機能手段２０〜３６は、本実施例ではプロセッサが所定の制御プログラムを実行することにより構成されている。
【０１２１】
ここで、上記した抽出指示手段２８、履歴表示手段２６、編集手段２２は、ユーザに対して情報を提示し或いはユーザが指示や情報等を入力するためのインタフェース画面を表示出力する機能を有している。
抽出指示手段２８は図４９に示すようなディスプレイ画面を表示出力し、この画面には次のような各機能部が設定されている。
ルートノード名入力部４０はハイパー構造管理手段２０から抽出する文書データのルートとなるノード名を入力するためのエリアであり、検索条件入力部４１は選択条件を入力するためのエリアである。この検索条件入力部４１には上記した選択条件を入力するために、現在使用しているユーザの名前を入力するためのエリアであるユーザ名部４２、抽出したい文書データの状態があった日時を入力するためのエリアである日時部４３及び４４、抽出したい文書のバージョン名を入力するためのエリアであるバージョン名部４５が設けられている。
【０１２２】
選択規則入力部４６はユーザが選択規則のいずれかを指定するエリアであり、ユーザ優先（ＵＳＥＲ）を選択すると選択手段３４が選択条件を満たすものから指定されたユーザに一致するものを優先的に選択する処理を行い、日時優先（ＤＡＴＥ）を選択すると選択手段３４が選択条件を満たすものから指定日時を基準として生成日時が最も新しいものを優先的に選択する処理を行い、バージョン名優先（ＶＥＲＳＩＯＮ）を選択すると選択手段３４が選択条件を満たすものから指定されたバージョン名を含むものを優先的に選択する処理を行う。
また、執筆者選択部４７はユーザが選択条件の一部としてユーザ以外の執筆者を選択することができるエリアである。
【０１２３】
また、操作ボタン部４８には”ｅｘｔｒａｃｔ”ボタンと”ｈｉｓｔｏｒｙ”ボタンとが設けられている。”ｅｘｔｒａｃｔ”ボタンを選択すると、指示されたルートノードを始点として選択条件と選択規則に基づいて文書データをハイパー構造管理手段２０から抽出する処理が開始され、これと同時に履歴管理手段２５が起動される。また、”ｈｉｓｔｏｒｙ”ボタンを選択すると、履歴表示手段２６が起動されて、それまでに行われた文書の登録履歴が画面に表示される。
図５０には、履歴表示手段２６が画面表示する登録履歴の例を示してあり、一覧表示された各履歴（すなわち、各行）に一回の登録処理に関する情報として、日時、ユーザ名、バージョン名が表示される。
【０１２４】
編集手段２２は図５１に示すようなディスプレイ画面を表示出力し、この画面には上記の”ｅｘｔｒａｃｔ”ボタンの選択によって生成されて表示出力される。この画面には、文書構造編集ウィンドウ５０、文書内容編集ウィンドウ５１、候補選択ウィンドウ５２、編集ボタン５３、抽出条件表示部５４が設けられている。
文書構造編集ウィンドウ５０は抽出手段２７によって抽出された文書データの構造を表示し、ユーザはポインティングデバイスによって文書構造に含まれるノードを選択することができる。
【０１２５】
文書内容編集ウィンドウ５１は、文書構造編集ウィンドウ５０で選択されたノードの内容を表示し、ユーザは表示しているテキスト内容を編集することによって、選択されたノードの内容を更新することができる。
候補選択ウィンドウ５２は選択したノードを始点とするリンクリストの候補を表示し、現在選択されているリンクリストを反転して示す。このウインドウ５２において、ユーザはポインティングデバイスによって、他のリンクリストを選択して現在選択しているものと入れ換えることができる。
【０１２６】
編集ボタン５３には次の各ボタンが設けられており、ユーザはこれらボタンを用いて文書の編集と保存を行わせることができる。”ａｄｄ  ｃｈｉｌｄ”ボタンを選択すると現在選択されているノードの子ノードが生成され、”ａｄｄ  ｂｒｏｔｈｅｒ”ボタンを選択すると現在選択しているノードの兄弟ノードが生成され、”ｍｏｖｅ  ｄｏｗｎ”ボタンを選択すると現在選択しているノードが同じレベルでより後に移動され、”ｍｏｖｅ  ｕｐ”ボタンを選択すると現在選択しているノードが同じレベルでより前に移動され、”ｍｏｖｅ  ｌｅｆｔ”ボタンを選択すると現在選択しているノードのレベルが一段上げられ、”ｍｏｖｅ  ｒｉｇｈｔ”ボタンを選択すると現在選択しているノードのレベルが一段下げられ、”ｍｏｖｅ  ｎｏｄｅ”ボタンを選択すると現在選択しているノードが削除され、”ｓａｖｅ”ボタンを選択するとカレント構造管理手段２１が保持しているドキュメントがハイパー構造管理手段２０が保持しているハイパー構造中に保存され、”ｃｌｏｓｅ”ボタンを選択すると全体のウィンドウを閉じられて編集処理が完了する。
また、抽出条件表示部５４にはカレント構造を抽出するための条件として指定された選択条件および選択規則が表示される。
【０１２７】
次に、本実施例に係る構造化データの処理を、図５２に示す例を用いてより具体的に説明する。
まず、図５２には、３名の執筆者、Peter、David、Wickyによる文書の編集活動の履歴を示してあり、図中の横軸は時間の経過を、縦軸は担当者を示している。また、同図中の（ａ）〜（ｅ）は、その縦軸の位置に対応する執筆者によって、横軸の位置に対応する日時において、ハイパー構造管理手段２０へ保存（登録）された文書データの構造を示している。
なお、図５３は、編集の履歴を従来技術である導出木によって示したものであり、図中の矢印は導出関係を表しており、導出関係とは始点に位置する文書構造から終点に位置する文書構造が作られたことを意味する。このような導出関係は、導出木とよばれる各時点での文書の状態をノードとする木構造を構成する。
【０１２８】
図５２では文書構造の木構造はインデントされたテキストによって示しており、図５４では（ａ）〜（ｃ）の表している木構造を表現したデータ構造を示している。図５５〜図５７は、（ａ）〜（ｃ）の文書構造の保存が行われたときのハイパー構造の状態を示している。
この例は、 ”WriteAtWill”という製品のマニュアルをPeter、David、Wickyの３人で執筆している例である。以下順を追って作業の経緯を説明する。
【０１２９】
まず、（Ａｕｇ  １）において、 Peterが”WriteAtWill”のマニュアルを書き始め、この最初の状態である文書データ（ａ）を”PC version”という名前で保存した。次いで、（Ａｕｇ  ２）に、ＤＯＳとＷＩＮとの２つのＯＳ用の記述が必要になったので、文書データ（ａ）の章立てをＤＯＳとＷＩＮとに分けた文書データ（ｂ）を作成し、名前を付けずに保存した。
その後、２つの異なるマニュアルをそれぞれ別の担当者で執筆することが決まり、それぞれDavidとWickyとに担当が割り当てられた。そして、（Ａｕｇ  ３）に、Davidが文書データ（ａ）の中からＤＯＳ用の記述を取り出して加筆した文書データ（ｃ）を作成し、”DOS version”という名前で保存した。更に、（Ａｕｇ  ４）に、Wickyが文書データ（ｂ）の中からＷＩＮ用の記述を取り出して加筆した文書データ（ｅ）を作成し、”WIN version”という名前で保存した。そして、（Ａｕｇ  ５）に、Davidが文書データ（ｃ）にさらに加筆した文書データ（ｄ）を作成し、名前を付けずに保存した。
【０１３０】
このような場合において、本実施例では過去に存在していなかった文書データを生成することができる。すなわち、本発明は、従来技術のように過去に存在していた文書のバージョンが復元できるだけでなく、存在していなかった文書の構造を取り出せる。
図５８の文書データ（ｇ）及び（ｆ）は、図５３に示した導出木上にはない文書データである。
この文書データ（ｇ）の構造は、Wickyの（Ａｕｇ  ４）の構造の内の”INTRO”以下の部分をDavidが（Ａｕｇ  ３）に加筆したものに置き換えて得られる構造である。すなわち、文書データ（ｇ）は、Wickyにとっては自分の書いた部分はそのままにして、他の執筆者の書いた最新の情報を反映させたものである。
また、文書データ（ｆ）は、Peterが（Ａｕｇ  ２）に定義した全体の枠組みの中に、他の執筆者の書いた最新の情報を組み込んだものである。
したがって、本発明では、このような過去に存在せず、また、予定もしていなかった新しい文書構造を、過去に作られた文書の部分を利用して簡単に取り出すことが可能となっている。
【０１３１】
ここで、（Ａｕｇ  ６）の時点で文書を編集するときの選択条件と抽出結果のバリエーションを示す図５９〜図７４を参照して、文書抽出の処理をより具体的に説明する。
図５９には履歴表示手段２６で表示される（Ａｕｇ  ６）以前に行われた文書保存の履歴を示してあり、図６０にはDavidによって指定された選択条件を示してある。図６０に示す画面上において、ルートノード名入力部４０にはルートノードの名前としてマニュアルのタイトルである”WAW Manual”が入力指定され、ユーザ名入力部４２にはユーザの名前として”David”が入力指定され、日時入力部４３にはいつまでに作成された内容を探索するかを示す日時の情報として日付”Aug/06/96”及び時間”19:03”が入力指定され、バージョン名入力部４５には検索を開始する起点となるバージョンを示すバージョン名として”DOS version”が入力指定されている。
【０１３２】
なお、ユーザ以外のどの執筆者が作成した内容を探索するかを指定する執筆者選択部４７には、この例では、誰も指定していないのでユーザであるDavidが作成した文書内容が検索される。
また、この例では、選択規則入力部４６で”USER”が選択されており、自分で作成した内容を優先して選択することが指示されている。
【０１３３】
図６１には、図６０に示した条件によってハイパー構造管理部２０から文書データを抽出した結果を示してある。なお、この例では、図５２に示した文書データ（ｄ）が抽出されている。
また、図６０に示した条件を変更して、図６２に示すように日時入力部４３の条件を”Aug/03/96”に指定すると、（Ａｕｇ  ３）までで最新の内容を反映した文書データの抽出が指示される。この結果、図６３に示すような文書構造がハイパー構造管理部２０から抽出されて画面表示される。なお、この抽出された文書データは、この例では、図５２に示した文書データ（ｃ）である。
【０１３４】
また、図６０に示した条件を変更して、図６４に示すようにユーザ入力部４２の指定を”Wicky”とし、バージョン名入力部４５の指定をバージョン名”WIN version”とすると、図６５に示すような文書構造がハイパー構造管理部２０から抽出されて画面表示される。なお、この抽出された文書データは、この例では、図５２に示した文書データ（ｅ）である。
また、図６４に示した条件を変更して、図６６に示すように選択規則入力部４６の指定を”DATE”にし、さらに、執筆者選択部４７の指定を他の執筆者としてDavidとWickyを加えるように指定すると、図６７に示すような文書構造がハイパー構造管理部２０から抽出されて画面表示される。なお、この抽出された文書データは、この例では、図５８に示した文書データ（ｇ）であり、図５２に示した導出木の中には存在しない、従来技術では選択できなかったデータ構造が抽出されている。
【０１３５】
また、図６８に示すようにユーザ名入力部４２の指定を”Peter”にし、さらにバージョン名入力４１の指定を”PC version”に変更すると、図６９に示すような文書構造がハイパー構造管理部２０から抽出されて画面表示される。なお、この抽出された文書データは、この例では、図５２に示した文書データ（ｂ）である。
また、図６８に示した条件を変更して、図７０に示すように選択規則入力部４６の指定を”VERSION”とすると、図７１に示すような文書構造がハイパー構造管理部２０から抽出されて画面表示される。なお、この抽出された文書データは、この例では、図５２に示した文書データ（ａ）である。
【０１３６】
また、図６８に示した条件を変更して、図７２に示すように、執筆者選択部４７の指定を他の執筆者としてDavidとWickyを加えるように指定すると、図７３に示すような文書構造がハイパー構造管理部２０から抽出されて画面表示される。なお、この抽出された文書データは、この例では、図５８に示した文書データ（ｇ）であり、図５２に示した導出木の中には存在しない、従来技術では選択できなかったデータ構造が抽出されている。
ここで、図７３に示す画面では、さらに最上位のレベルで入れ換え可能なリンクリストの候補が候補選択ウインドウ５２に表示され、また、現状の選択状況が反転表示されている。この例では、４つの選択肢の中からWickyの作成した、”Win version”のバージョン名のリンクリストが選択されていることを反転表示で示している。
【０１３７】
また、図７４には、図７３において選択肢として示されているリンクリストから過去にPeterが作成したものを選択し、現状のものと入れ換える指示を行った状態を示してある。この結果、図５８における文書データ（ｆ）の構造が抽出され、図５２に示した導出木の中には存在しない、従来技術では選択できなかったデータ構造が抽出される。
【０１３８】
次に、本実施例のデータ構造とアルゴリズムについて説明する。
本実施例は”Windows95”(登録商標)上で、”Java”(登録商標)言語によって実現されている。”Java”はオブジェクト指向言語であり、オブジェクトと呼ばれるデータ構造と、そのオブジェクトが受け付け実行するメソッドと呼ばれる手続きを、クラスの定義として記述する。
以下に示すプログラムリストは、本実施例を実現しているJavaプログラムから主要な部分を抜粋、簡略化したものであり、このプログラムリストを参照しながらデータ構造とアルゴリズムを説明する。なお、データ構造は図７５に示す。
【０１３９】
0003783301.tif 000002
【０１４０】
0003783301.tif 000003
【０１４１】
0003783301.tif 000004
【０１４２】
0003783301.tif 000005
【０１４３】
0003783301.tif 000006
【０１４４】
0003783301.tif 000007
【０１４５】
0003783301.tif 000008
【０１４６】
0003783301.tif 000009
【０１４７】
0003783301.tif 000010
【０１４８】
0003783301.tif 000011
【０１４９】
0003783301.tif 000012
【０１５０】
0003783301.tif 000013
【０１５１】
0003783301.tif 000014
【０１５２】
0003783301.tif 000015
【０１５３】
0003783301.tif 000016
【０１５４】
0003783301.tif 000017
【０１５５】
0003783301.tif 000018
【０１５６】
0003783301.tif 000019
【０１５７】
0003783301.tif 000020
【０１５８】
0003783301.tif 000021
【０１５９】
0003783301.tif 000022
【０１６０】
0003783301.tif 000023
【０１６１】
0003783301.tif 000024
【０１６２】
0003783301.tif 000025
【０１６３】
0003783301.tif 000026
【０１６４】
0003783301.tif 000027
【０１６５】
0003783301.tif 000028
【０１６６】
0003783301.tif 000029
【０１６７】
0003783301.tif 000030
【０１６８】
0003783301.tif 000031
【０１６９】
また、図７５には、本実施例の主要な構成要素のデータ構造を示してある。同図（ａ）に示すカレント構造は、本実施例では、編集対象の文書を表現するデータ構造であり、このカレント構造をノード記述”Node”からなる木構造の形で表現している。この”Node”のデータ構造は上記したリストの６５行目から６８行目までが対応するオブジェクトの定義であり、次の記述を含んでいる。
”contents”は文書内容を有しており、本実施例では文字列である。”links”は１つ以上の”Node”への参照のリストを有しており、このリストはこの”Node”を始点とするリンクの集合と順序関係を定めるリンク間関係記述である。”nodeID”はノードの識別子を有しており、この値によってノードが同一であるかどうかが判断される。
【０１７０】
図７５（ｂ）に示すハイパー構造は、ハイパー構造管理手段２０で保持管理される構造化データであり、本実施例では、このハイパー構造を”LinkList”、”LinkListHolder”によって構造化された”Node”のネットワーク構造の形で表現している。文書データの構造は、”Node”の”links”による他の”Node”への参照を用いて構成されるが、ハイパー構造中では”LinkList”と”LinkListHolder”からの参照によって構成される。このハイパー構造は次の記述を含んでいる。
”LinkList”は、同じノードを始点とするリンクの集合とその間の関係を記述するリンク間関係記述であり、さらに、このリンク間関係記述に対応づける選択属性も管理する。なお、上記したリストの７０行目から７５行目までが対応するオブジェクトの定義である。
【０１７１】
また、”sourceNodeContents”はリンクの始点となるノードの文書内容を有しており、”links”はリンクの終点となるNodeへの参照のリストを有している。また、”regDate”は選択属性である作成日時を有し、”regUser”は選択属性である作成者名を有し、”versions”は選択属性であるバージョン名のリストを有している。
”LinkListHolder”は、同じNodeを始点とするLinkListの集合を保持しており、上記したリストの１行目から３行目までが対応するオブジェクトの定義である。また、”sourceNode”は始点となるNodeを参照し、”linkListSet”は同じNodeを始点とするLinkListの集合を有している。
【０１７２】
ハイパー構造管理手段２０が保持管理するデータ構造は、図７５（ｃ）に示してあり、本実施例では、ハイパー構造管理手段は”HyperStructureManager”というオブジェクトとして実現されている。”HyperStructureManager”は以下の情報を管理しており、上記したリストの６５行目から６８行目までが対応するオブジェクトの定義である。
”LinkListHolderSet”は”LinkListHolder”の集合を有し、”regVersions”はカレント構造の登録時に登録されたすべてのバージョン名のリストを有し、”regAuthors”はこの構造を編集できる執筆者の名前のリストを有し、”sessionHistory”はこの構造に対して行った文書登録操作の履歴情報を有している。
【０１７３】
次に、上記したリストを参照して本実施例のアルゴリズムを説明する。
”HyperStructureManager”のメソッドは、上記リストの１４０行目から１５０目に対応する”extractDocument”、１５１行目から１６１行目に対応する”extractTree”、１０９行目から１１９行目に対応する”saveDocument”、１２０行目から１３８行目に対応する”saveTree”を有している。
”extractDocument”はルートとして指示されたノードを起点にして、カレント構造管理手段２１に保持するカレント構造をハイパー構造管理手段２０に保持されたハイパー構造から抽出する処理を行う。この抽出処理では、ルートから開始して、下位に位置するノードについて下位構造を順次抽出するメソッド”extractTree”を呼び出すことによって木構造を抽出する。
【０１７４】
また、”extractTree”は、指定されたノードを起点としてデータ構造を抽出する処理を行い、指定されたノードを始点とするリンクリストホルダーから抽出条件を満たすリンクリストを選択し、その内容を持つノードを生成し、さらにその参照先のノードについて”extractTree”を再帰的に実行する。
”saveDocument”は、ルートノードによって代表されるカレント構造をハイパー構造に登録する処理を行い、ルートノードが参照する下位のノードについて、下位構造を登録するメソッド”saveTree”を呼び出すことによって、木構造全体を登録する。
”saveTree”は、指定されたノードの下位構造をハイパー構造に登録する処理を行い、指定されたノードを始点とするリンクリストホルダーにノードが保持するリンクリストに一致するものがなければ、リンクリストを追加し、さらにその下位ノードについて”saveTree”を再帰的に実行する。
【０１７５】
次に、”LinkListHolder”のメソッドは、上記リストの４行目から２３行目に対応する”registerLinks”、２４行目から６４行目に対応する”selectLinks”を有している。
”registerLinks”は、指定されたカレント構造中のノードが持つリンクのリストを追加する処理を行い、追加対象のリンクリストと一致するものがすでに登録されているかを調べ、登録されていなければ、新しいリンクリストとして追加する。なお、すでに登録されていて、かつ、バージョン名が指定されているときには、バージョン名の設定を行う。
”selectLinks”は、保持しているリンクリストの中から選択条件を満たすリンクリストをすべて検索し、その中から選択規則に従ってリンクリストを１つ選択する処理を行う。
【０１７６】
次に、”LinkList”のメソッドは、上記したリストの７６行目から８５行目に対応する”isLinksFor”と、８６行目から１０３行目に対応する”satisfies”を有している。
”isLinksFor”は、カレント構造中のノードの持つリンクのリストと一致するかどうかを判断する処理を行い、ノードの文書内容と順序も含めたリンクの集合が一致するときに”True”を返す。
”satisfies”は、選択条件を満たすかどうかを判断する処理を行い、指定された日時を含んでそれ以前に作成されたもので、指定されたバージョン名を含んでいるか、または、指定された執筆者によって作成されたものであれば”True”を返す。
【０１７７】
上記のアルゴリズムにより、抽出指示手段２８から指定された選択条件及び選択規則に従って、該当する文書構造が抽出手段２７によってハイパー構造管理手段２０から抽出され、抽出された文書構造が編集手段２２による編集処理の対象としてカレント管理手段２１に保持される。
また、編集処理がなされた文書構造は登録手段２４によってハイパー構造管理手段２０へ登録され、この登録処理に際して履歴情報が履歴管理手段２５によって登録される。
【０１７８】
次に、本発明の構造化データ処理装置を図形の編集に適用した他の一実施例を説明する。なお、本実施例の構成、データ構造、アルゴリズムは、本質的に上記した構造化データ処理装置の実施例と同じであるので、重複する説明は割愛する。
図７６には、図形の編集過程の一例を示してあり、横軸に日時を、縦軸に執筆者名を示し、図中の（ａ）（ｂ）（ｃ）で示す図形が、縦軸の位置に対応する執筆者による編集結果として横軸の位置に対応する日時にハイパー構造管理手段２０に保存されたことを示している。
また、この例では、（Ａｕｇ  １）にPeterが（ａ）に示す図形を作成し、保存した。そして、（Ａｕｇ  ２）にDavidが（ｂ）に示すように、（ａ）に含まれる図形要素である文字列”蓄積部”の部分をデータベースの概念図を含むように変更し、保存した。さらに、（Ａｕｇ  ３）にPeterが（ｃ）に示すように、（ａ）に新しい図形要素である文字列”計算部”を加えて保存した。
【０１７９】
図７７には、上記の（ａ）（ｂ）（ｃ）それぞれのデータ構造を示してあり、上記した実施例と異なる点は、文書内容として図形要素を持ち、リンク間関係が図形要素中の参照位置として二次元位置を規定していることである。
それぞれの図（ａ）（ｂ）（ｃ）で、（１）はデータの論理的な構造を図示したものであり、（２）は文書内容であると同時にリンク間の関係を記述するために使われている図形要素との関係を含めて図示したものである。
また、図７８の（ａ）には、ハイパー楮管理手段２０に保持されるハイパー構造中のデータ構造を示してある。また、同図の（ｂ）には選択条件を示してあり、当該選択条件を指示することによって、図７９の（ａ）（ｂ）（ｃ）に示す図形がカレント構造として抽出されてカレント構造管理手段２１に保持される。なお、ここに示す抽出されたデータ構造は、PeterとDavidの両者の編集の最新状態を取り込んだものであり、過去には存在しなかった構造である。
【０１８０】
次に、本発明の構造化データ処理装置をハイパーテキストの検索に適用した更に他の一実施例を説明する。なお、本実施例では、編集ではなく、検索履歴として生成される木構造を処理の対象にする点が異なるが、本質的なデータ構造やアルゴリズムは上記した実施例と同じである。
【０１８１】
図８０には、ある調査のために、Peterが（Ａｕｇ  １）に行ったネットワーク検索の一例を示してある。
すなわち、まず、http://AAA.htmlというアドレスのページを開いて、そこから関連するページBBBへのアンカーを選択してジャンプした。この結果、http://BBB.htmlというアドレスのページが開き、さらに、そこから関連するページDDDへのアンカーを選択してジャンプした。この結果、http://DDD.htmlというアドレスのページが開き、さらに、そこから前のページに戻る指示をした。この結果、http://BBB.htmlというアドレスのページが開き、さらに、そこから関連するページEEEへのアンカーを選択してジャンプし、その結果として、http://EEE.htmlというアドレスのページが開いた。
【０１８２】
図８１には、同じ目的の調査のために、Davidが（Ａｕｇ  ２）に行ったネットワーク検索の一例を示してある。
すなわち、まず、http://AAA.htmlというアドレスのページを開いて、そこから関連するページBBBへのアンカーを選択してジャンプした。この結果、http://DDD.htmlというアドレスのページが開き、さらに、そこから前のページに戻る指示をした。この結果、http://BBB.htmlというアドレスのページが開き、さらに、そこから関連するページCCCへのアンカーを選択してジャンプした。この結果、http://CCC.htmlというアドレスのページが開き、 さらに、そこから関連するページFFFへのアンカーを選択してジャンプした。この結果、http://FFF.htmlというアドレスのページが開き、さらに、そこから前のページに戻る指示をした。この結果、http://CCC.htmlというアドレスのページが開き、さらに、そこから関連するページGGGへのアンカーを選択してジャンプし、この結果として、http://GGG.htmlというアドレスのページが開いた。
【０１８３】
図８２の（ａ）（ｂ）には、上記したそれぞれの検索の履歴を木構造として表現してある。検索を開始したノードをルートにして、検索に利用したリンクだけを選択することによって、検索したデータ空間を表す木構造が生成される。なお、ハイパーテキストの検索履歴からこのような木構造を得るアルゴリズムとしては、特開平６−２５９３１２号公報に記載されている従来技術を採用している。
なお、同図の（ｃ）には、検索の履歴の構造をカレント構造として、ハイパー構造に登録した結果を示してある。
なお、本実施例では、ハイパー構造は、WWWなどの分散したネットワーク構造の複数の部分構造を組み合わせて得られるものである。ハイパー構造は、検索を実行するクライアントのための情報として、ローカルに保持されるようにしてもよいし、ネットワークを維持している無数のサーバに分散して保持されるようにしてもよい。
【０１８４】
図８３の（ａ）には、ハイパー構造管理手段２０からカレント構造を抽出するために指定した選択条件を示してあり、同図の（ｂ）には、抽出されたカレント構造を示してある。
この抽出されたカレント構造は、PeterとDavidの行った調査をマージした調査全体の検索空間を表わす過去に存在しなかった構造である。
【０１８５】
なお、本発明は、上記した実施例以外に、例えば、部品のバージョンと全体構造のバージョンの両方を管理し、柔軟に組み合わせることに意味のあるような様々なアプリケーションに適用することもできる。
また、本発明を適用することによって、それぞれの視点で書かれた新しい情報を制約なく反映させることができ、また、過去の情報構造の断片を生かして新しい状況に合わせた構造を生成することができる。例えば、分散した環境での電子メールや電子掲示板での意見交換に適用することによって、過去の議論の復元や、過去の議論の断片から新しい情報の構造を構築することができる。
【０１８６】
また、書いた人がお互いを知らないほど多数の文書を管理するシステムに適用することによって、コメントや修正によって直接文面を修正しても支障が起こらず、さらに、新しい文書を合成する機能を持つ文書データベースを実現することができる。
また、電子メールなどの流れの構造や組織の構造などの管理に本発明を適用することによって、過去の仕事の依頼の流れの復元や、それを用いた業務の分析や設計を行う機能を実現することができる。
また、担当者が複数いるときばかりでなく、一人で文書を編集するシステムに適用した場合でも、当初想定していなかった目的のために、それまでに作ってきた文書から適切な部分を抜き出して必要な文書に再構成する機能を実現することができる。
【０１８７】
【発明の効果】
以上説明したように、本発明に係る構造化データ処理装置によると、ノード及びリンクから構成されたグラフ構造の構造化データについて、リンク間関係保持手段に同一のノードを始点とする複数のリンクの内の同一の編集処理に係るリンクを集合として保持させるとともに各集合中に含まれるリンク間の位置関係情報を保持させるようにしたため、文書データ等のグラフ構造をなす構造化データについて、利用者に自由に編集をさせても、過去のデータ構造の復元や新しい状況に合わせた適切なデータ構造の作成を実現することができる。
また、本発明は、利用者による簡易な指定操作によって、過去に作ってきたデータを元にして、当初想定していなかった新しい状況に合わせた適切な構造化データを作り出すことを実現することができる。
【０１８８】
特に、本発明に係る文書処理装置及び方法によると、論理単位を含む論理単位グループに階層構造によって文書構造を構成し、編集処理に際しては新たな論理単位グループを生成して元の論理単位グループと同一の集合として保持するようにしたため、文書の全体構造を編集によって変更した場合にあっても、編集前の構造で文書を復元させることができる。したがって、執筆者に編集上の制約を与えずに文書を自由に編集させても過去の文書を支障無く復元することができ、共同執筆を支障無く実現させることができる。
また、本発明に係る文書処理装置及び方法によると、各論理単位グループに選択情報を対応付けるようにしたため、利用者が選択情報を含む選択条件を指定するといった簡易な操作によって、適合する過去の文書バージョンを復元させることができ、任意のバージョンの文書について参照や編集処理を容易に行うことができる。
【図面の簡単な説明】
【図１】  本発明の一実施例に係る文書処理装置の構成図である。
【図２】  ストリームセットの構成を示す概念図である。
【図３】  文書構造の一例を示す概念図である。
【図４】  内容部が変更された文書構造の一例を示す概念図である。
【図５】  部分構造が挿入された文書構造の一例を示す概念図である。
【図６】  部分構造が削除された文書構造の一例を示す概念図である。
【図７】  部分構造の順所が入れ替えられた文書構造の一例を示す概念図である。
【図８】  部分構造が移動された文書構造の一例を示す概念図である。
【図９】  ストリーム選択の原理を説明する概念図である。
【図１０】  文書の編集セッションの一例を示す図である。
【図１１】  セッション１において起動された文書エディタを示す図である。
【図１２】  セッション１において編集作業中の文書エディタを示す図である。
【図１３】  セッション１において生成された文書構造の一例を示す図である。
【図１４】  セッション１において保存処理のツールを示す図である。
【図１５】  セッション１においてメモリに格納された文書構造の一例を示す図である。
【図１６】  セッション２において文書フォルダ及び抽出条件設定ツールを示す図である。
【図１７】  セッション２において編集作業中の文書エディタを示す図である。
【図１８】  セッション２において生成された文書構造の一例を示す図である。
【図１９】  セッション２においてメモリに格納された文書構造の一例を示す図である。
【図２０】  セッション３において編集作業中の文書エディタを示す図である。
【図２１】  セッション３において生成された文書構造の一例を示す図である。
【図２２】  セッション３においてメモリに格納された文書構造の一例を示す図である。
【図２３】  セッション４において起動された抽出条件設定ツールを示す図である。
【図２４】  セッション４において編集作業中の文書エディタを示す図である。
【図２５】  セッション４において生成された文書構造の一例を示す図である。
【図２６】  セッション４において保存処理のツールを示す図である。
【図２７】  セッション４においてメモリに格納された文書構造の一例を示す図である。
【図２８】  セッション５において編集作業中の文書エディタを示す図である。
【図２９】  セッション５において生成された文書構造の一例を示す図である。
【図３０】  セッション５においてメモリに格納された文書構造の一例を示す図である。
【図３１】  セッション６において起動された抽出条件設定ツールを示す図である。
【図３２】  セッション６において参照作業中の文書エディタを示す図である。
【図３３】  セッション６において生成された文書構造の一例を示す図である。
【図３４】  セッション７において編集作業中の文書エディタを示す図である。
【図３５】  セッション７において保存処理のツールを示す図である。
【図３６】  セッション７においてメモリに格納された文書構造の一例を示す図である。
【図３７】  文書抽出表示処理の手順の一例を示すフローチャートである。
【図３８】  下位構造抽出表示処理の手順の一例を示すフローチャートである。
【図３９】  ストリーム表示処理の手順の一例を示すフローチャートである。
【図４０】  ストリーム選択処理の手順の一例を示すフローチャートである。
【図４１】  文書再選択表示処理の手順の一例を示すフローチャートである。
【図４２】  文書保存処理の手順の一例を示すフローチャートである。
【図４３】  文書構造の表示形態の他の一例を示す図である。
【図４４】  文書構造の表示形態の更に他の一例を示す図である。
【図４５】  本発明の構造化データ処理に係るデータ構造のバリエーションを示す概念図である。
【図４６】  本発明の構造化データ処理に係るデータ構造のバリエーションを示す概念図である。
【図４７】  本発明の構造化データ処理に係るデータ構造のバリエーションを示す概念図である。
【図４８】  本発明に係る構造化データ処理装置の一実施例を示す構成図である。
【図４９】  抽出指示手段の画面表示の一例を示す図である。
【図５０】  履歴表示手段の画面表示の一例を示す図である。
【図５１】  編集手段の画面表示の一例を示す図である。
【図５２】  編集履歴の一例を示す図である。
【図５３】  導出木構造の一例を示す図である。
【図５４】  編集中の文書データ構造の一例を示す図である。
【図５５】  ハイパー構造のデータ構造の一例を示す図である。
【図５６】  ハイパー構造のデータ構造の一例を示す図である。
【図５７】  ハイパー構造のデータ構造の一例を示す図である。
【図５８】  新たに生成される文書データの一例を示す図である。
【図５９】  履歴表示手段の画面表示の一例を示す図である。
【図６０】  抽出指示手段の画面表示の一例を示す図である。
【図６１】  編集手段の画面表示の一例を示す図である。
【図６２】  抽出指示手段の画面表示の一例を示す図である。
【図６３】  編集手段の画面表示の一例を示す図である。
【図６４】  抽出指示手段の画面表示の一例を示す図である。
【図６５】  編集手段の画面表示の一例を示す図である。
【図６６】  抽出指示手段の画面表示の一例を示す図である。
【図６７】  編集手段の画面表示の一例を示す図である。
【図６８】  抽出指示手段の画面表示の一例を示す図である。
【図６９】  編集手段の画面表示の一例を示す図である。
【図７０】  抽出指示手段の画面表示の一例を示す図である。
【図７１】  編集手段の画面表示の一例を示す図である。
【図７２】  抽出指示手段の画面表示の一例を示す図である。
【図７３】  編集手段の画面表示の一例を示す図である。
【図７４】  編集手段の画面表示の一例を示す図である。
【図７５】  カレント構造及びハイパー構造のデータ構造の一例を示す図である。
【図７６】  本発明の他の一実施例に係る図形の編集過程を示す図である。
【図７７】  図形編集によるデータ構造の一例を示す図である。
【図７８】  ハイパー構造のデータ構造の一例を示す図である。
【図７９】  抽出された図形データ構造の一例を示す図である。
【図８０】  本発明の更に他の一実施例に係るハイパーテキストの編集過程の一例を示す図である。
【図８１】  本発明の更に他の一実施例に係るハイパーテキストの編集過程の他の一例を示す図である。
【図８２】  ハイパーテキストの履歴の一例を示す図である。
【図８３】  ハイパーテキストの抽出処理を説明する図である。
【図８４】  従来例に係る文書構造を示す概念図である。
【図８５】  内容部が変更された従来例の文書構造を示す概念図である。
【図８６】  部分構造が挿入された従来例の文書構造を示す概念図である。
【図８７】  部分構造が削除された従来例の文書構造を示す概念図である。
【図８８】  部分構造の順所が入れ替えられた従来例の文書構造を示す概念図である。
【図８９】  部分構造が移動された従来例の文書構造を示す概念図である。
【符号の説明】
１・・・メモリ、  ２・・・論理単位保持手段、
３・・・論理単位グループ保持手段、  ４・・・選択情報対応付け手段、
５・・・文書編集手段、  ６・・・論理単位グループ生成手段、
７・・・参照関連付手段、  ８・・・条件指定手段、
９・・・論理単位グループ選択手段、  １２・・・文書構成手段、
１３・・・文書構造表示手段、  １４・・・ディスプレイ、
１５・・・未表示情報表示手段、  １６・・・論理単位グループ指定手段、
１７・・・論理単位グループ再選択手段、  ２０・・・ハイパー構造管理手段、
２１・・・カレント構造管理手段、  ２２・・・編集手段、
２４・・・登録手段、  ２５・・・履歴管理手段、  ２７・・・抽出手段、
２８・・・抽出指示手段、  ３３・・・検索手段、  ３４・・・選択手段、
３５・・・検索条件指示手段、  ３６・・・選択規則指示手段、
【図１】
0003783301.tif 000032
【図２】
0003783301.tif 000033
【図３】
0003783301.tif 000034
【図４】
0003783301.tif 000035
【図５】
0003783301.tif 000036
【図６】
0003783301.tif 000037
【図７】
0003783301.tif 000038
【図８】
0003783301.tif 000039
【図９】
0003783301.tif 000040
【図１０】
0003783301.tif 000041
【図１１】
0003783301.tif 000042
【図１２】
0003783301.tif 000043
【図１３】
0003783301.tif 000044
【図１４】
0003783301.tif 000045
【図１５】
0003783301.tif 000046
【図１６】
0003783301.tif 000047
【図１７】
0003783301.tif 000048
【図１８】
0003783301.tif 000049
【図１９】
0003783301.tif 000050
【図２０】
0003783301.tif 000051
【図２１】
0003783301.tif 000052
【図２２】
0003783301.tif 000053
【図２３】
0003783301.tif 000054
【図２４】
0003783301.tif 000055
【図２５】
0003783301.tif 000056
【図２６】
0003783301.tif 000057
【図２７】
0003783301.tif 000058
【図２８】
0003783301.tif 000059
【図２９】
0003783301.tif 000060
【図３０】
0003783301.tif 000061
【図３１】
0003783301.tif 000062
【図３２】
0003783301.tif 000063
【図３３】
0003783301.tif 000064
【図３４】
0003783301.tif 000065
【図３５】
0003783301.tif 000066
【図３６】
0003783301.tif 000067
【図３７】
0003783301.tif 000068
【図３８】
0003783301.tif 000069
【図３９】
0003783301.tif 000070
【図４１】
0003783301.tif 000071
【図４０】
0003783301.tif 000072
【図４２】
0003783301.tif 000073
【図４３】
0003783301.tif 000074
【図４４】
0003783301.tif 000075
【図４５】
0003783301.tif 000076
【図４６】
0003783301.tif 000077
【図４７】
0003783301.tif 000078
【図４８】
0003783301.tif 000079
【図４９】
0003783301.tif 000080
【図５０】
0003783301.tif 000081
【図５１】
0003783301.tif 000082
【図５２】
0003783301.tif 000083
【図５３】
0003783301.tif 000084
【図５４】
0003783301.tif 000085
【図５５】
0003783301.tif 000086
【図５６】
0003783301.tif 000087
【図５７】
0003783301.tif 000088
【図５８】
0003783301.tif 000089
【図５９】
0003783301.tif 000090
【図６０】
0003783301.tif 000091
【図６２】
0003783301.tif 000092
【図６１】
0003783301.tif 000093
【図６３】
0003783301.tif 000094
【図６４】
0003783301.tif 000095
【図６６】
0003783301.tif 000096
【図６５】
0003783301.tif 000097
【図６７】
0003783301.tif 000098
【図６８】
0003783301.tif 000099
【図７０】
0003783301.tif 000100
【図６９】
0003783301.tif 000101
【図７１】
0003783301.tif 000102
【図７２】
0003783301.tif 000103
【図７３】
0003783301.tif 000104
【図７４】
0003783301.tif 000105
【図７５】
0003783301.tif 000106
【図７６】
0003783301.tif 000107
【図７７】
0003783301.tif 000108
【図７８】
0003783301.tif 000109
【図７９】
0003783301.tif 000110
【図８０】
0003783301.tif 000111
【図８１】
0003783301.tif 000112
【図８２】
0003783301.tif 000113
【図８３】
0003783301.tif 000114
【図８４】
0003783301.tif 000115
【図８５】
0003783301.tif 000116
【図８６】
0003783301.tif 000117
【図８７】
0003783301.tif 000118
【図８８】
0003783301.tif 000119
【図８９】
0003783301.tif 000120