JP4045399B2 - 構造化文書管理装置及び構造化文書管理方法 - Google Patents
構造化文書管理装置及び構造化文書管理方法 Download PDFInfo
- Publication number
- JP4045399B2 JP4045399B2 JP2001254400A JP2001254400A JP4045399B2 JP 4045399 B2 JP4045399 B2 JP 4045399B2 JP 2001254400 A JP2001254400 A JP 2001254400A JP 2001254400 A JP2001254400 A JP 2001254400A JP 4045399 B2 JP4045399 B2 JP 4045399B2
- Authority
- JP
- Japan
- Prior art keywords
- information
- structured document
- unit
- document
- editing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/86—Mapping to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/123—Storage facilities
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99948—Application of database or data structure, e.g. distributed, multimedia, or image
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99952—Coherency, e.g. same view to multiple users
- Y10S707/99953—Recoverability
Description
【発明の属する技術分野】
本発明は、構造化された文書を、検索、編集可能に管理する構造化文書管理装置及び構造化文書管理方法に関するものである。
【0002】
【従来の技術】
従来より、XMLなどの構造化文書をデータベース化し、内容や文書構造での検索や、部分的な再利用などの利用に供している。特に数ページ程度の小さな文書では、各文書をファイルとして保存しておいて文字列検索を行うだけでも十分利用できるが、大規模な文書になると、文書中の部分構造の検索や構造を構成する要素に付された属性情報の検索など、文書構造を利用した検索が有用である。また、部分構造をそのまま再利用したり、部分構造ごとの編集といったことも行われる。部分構造ごとの編集を行う場合、複数人が文書中のそれぞれの担当部分を編集してゆくといった共同編集環境の提供も考えられている。このような構造化文書の編集及び利用に対する各種の機能を提供するためにも、構造化文書をデータベース化しておくことが重要となる。
【0003】
構造化文書をデータベース化する一つの方法として、例えば既存のリレーショナルデータベースを利用し、文書構造の各要素をそれぞれレコードとして構成する方法がある。この場合、レコード中のフィールドを用いて親子の関係を記述して文書構造を実現することになる。また、フィールド中には各種の属性情報を展開しておくことができる。リレーショナルデータベースでは、フィールドにより検索が可能であるため、フィールドを特定すれば属性情報やテキストなどの検索を高速に行うことができる。その反面、文書構造を検索してゆこうとすると、各要素の親子関係を示すフィールドを順にたぐってゆく必要があり、親または子の要素を参照するたびに新たなレコードを取得しなければならないためにデータベースへのアクセスが発生する。そのため、リレーショナルデータベースを利用して構造化文書をデータベース化した場合、文書構造の検索に非常に時間がかかり、効率が悪いという問題があった。
【0004】
一方、文書構造をツリー構造とみなし、リンクドリストで表現することもできる。リンクドリストなどメモリ上に置くデータ構造をオブジェクトオリエンテッドデータベースによって永続化し、必要に応じてメモリに展開し、文書構造の検索などを行う方法も存在する。この場合、文書構造の検索は容易であり、しかも高速に行うことができる。しかし、各要素の属性情報や末端の要素に付加される内容等の情報は、各要素の親子関係を示す情報ともに保存しておくことになる。そのため、これらの情報を検索する際には、それぞれの要素ごとに付加されている情報を参照しながら文書構造をたぐってゆかなければならい。そのため、属性情報や内容による検索は非常に効率が悪く、時間がかかってしまう。
【0005】
さらにいずれの場合にも、部分的に文書を編集した場合、要素間の親子関係の変化が文書全体の先祖・子孫の関係に影響することがあり、従って多くのインデクスの書き換えが発生するため、上述のように大規模な文書を複数人が共同して編集作業を行うような環境では編集に対する応答に長時間を要していた。特に文書構造をツリー構造やリンクドリストなどバイナリ形式のインデクスで保持する構成では、構造の変更はインデクス全体を再構築する必要があり、このような用途に利用することはできなかった。
【0006】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、構造化された文書を管理するとともに、属性情報及び文書構造のいずれによる検索も高速に行うことができ、また編集に対する更新を高速化して複数人により共同編集を可能とし、さらに更新された文書の版管理を容易に行うことができる構造化文書管理装置及び構造化文書管理方法を提供することを目的とするものである。
【0007】
【課題を解決するための手段】
本発明は、構造化文書を管理する構造化文書管理装置及び構造化文書管理方法において、構造化文書中の各要素の属性情報及び内容情報を要素情報として、リレーショナルデータベースのレコードとして管理し、また、各要素間の親子関係を並べたデータをバイナリ形式の構造情報として、リレーショナルデータベースのレコードとして管理し、あらかじめ保持されている構造化文書に対して編集を行った後の構造化文書が入力されたとき、編集前の構造化文書と編集後の構造化文書の間で要素ごとに対応させて差分を解析し、解析された差分について要素情報を登録するとともに、差分を含む構造情報を生成して登録することを特徴とするものである。
【0008】
このような構成によって、例えば属性情報に対する検索はリレーショナルデータベースにおけるフィールドの検索によって高速に行うことができ、また構造の検索はバイナリ形式の構造情報をメモリ上で検索することができるので高速に行うことができる。なお、バイナリ形式の構造情報についてもリレーショナルデータベースで管理するので、構造化文書のすべての情報をリレーショナルデータベースで一元管理することが可能になる。また、編集された差分だけが蓄積されてゆき、少ない容量で版を管理することが可能となる。
【0009】
また本発明では、入力された構造化文書の構造を設定されたタグあるいは属性を有する要素あるいは構造の深さに基づき分割して複数の部分構造に分解し、部分構造間の親子関係を部分構造ごとに並べたデータをバイナリ形式のグローバル構造情報として保持するとともに、分解された部分構造ごとに各要素情報及び構造情報を保持するように構成することができる。これによって、例えば構造が変更されるような編集が行われてもその編集の影響を1ないし数個の部分構造内の要素情報及び構造情報の変更にとどめることができる。例えば複数人によって共同して文書の編集を行っている場合、各人に異なる部分構造の編集を割り当てておけば、各人がそれぞれ編集結果による更新を行っても、他の人の部分構造に影響を与えずに更新することができ、共同編集環境を提供することができる。
【0010】
また、例えば削除された要素については、削除された要素に対応するレコードに編集前のバージョン情報を付与するとともに、該バージョン情報に対する索引を生成させるように構成することができる。これによって、バージョン情報が設定されていない要素を取り出せば、最新の構造化文書を構成する要素を容易に検索することができ、版管理を行いながら、最新の構造化文書を容易にかつ高速に取り出すことができる。
【0011】
【発明の実施の形態】
図1は、本発明の実施の一形態を示すブロック図である。図中、1は文書入力部、2はファイル管理部、3はディスパッチャ、4は検索部、5は文書処理部、6は文書解析部、7は文書分解部、8は編集単位処理部、9は文書解析部、10は差分解析部、11は要素情報登録部、12は構造情報登録部、13はリレーショナルデータベースである。文書入力部1は、構造化文書をファイル管理部2に対して入力する。このとき、ここでは分解前の構造化文書であるか、分解された部分構造であるかを示すコンテントタイプも入力するものとする。また文書入力部1は、ファイル管理部2の検索部4に対して構造化文書あるいは構造化文書の部分構造の取り出しを要求し、これらを受け取る。受け取った構造化文書あるいはその部分構造に対して編集を行った結果を再びファイル管理部2に対して入力することができる。このほか、構造化文書に対する各種の検索などを要求することも可能である。
【0012】
ファイル管理部2は、文書入力部1との間で構造化文書あるいはその部分構造の受け渡しを行う。ファイル管理部2は、ディスパッチャ3及び検索部4を有している。ディスパッチャ3は、文書入力部1から渡される構造化文書あるいはその部分構造を受け取り、そのコンテントタイプに従って、部分構造への分解前の構造化文書の場合には、その構造化文書を文書処理部5に渡す。また、分解された部分構造を受け取った場合には、その部分構造を編集単位処理部8へ渡す。さらに、文書処理部5で分解された部分構造を受け取って編集単位処理部8へ渡す。検索部4は、文書入力部1から要求された構造化文書あるいはその部分構造をリレーショナルデータベース13から取り出し、文書入力部1へ渡す。
【0013】
文書処理部5は、ファイル管理部2のディスパッチャ3から渡される構造化文書を解析して、部分構造に分解する。文書処理部5は、構造化文書を解析する文書解析部6と、リレーショナルデータベース13から読み込んだ設定に従って構造化文書を複数の部分構造に分解する文書分解部7を有している。大規模な構造化文書では、分解された部分構造が編集単位となる。分解された部分構造には部分構造であることを示すコンテントタイプが付加され、ファイル管理部2に入力される。また、部分構造間の関係をバイナリ形式のグローバル構造情報として、リレーショナルデータベース13に登録する。
【0014】
編集単位処理部8は、ファイル管理部2から渡される部分構造をリレーショナルデータベース13に格納する。このとき、編集された部分構造については編集前の部分構造との差分をリレーショナルデータベース13に格納し、版管理の利用に供する。編集単位処理部8は、文書解析部9、差分解析部10、要素情報登録部11、構造情報登録部12を有している。文書解析部9は、ファイル管理部2から渡された部分構造を解析する。差分解析部10は、文書解析部9による解析結果に従い、リレーショナルデータベース13に保持されている編集前の部分構造と編集後の部分構造の差分を抽出してリレーショナルデータベース13への登録対象とする。なお、新規の構造化文書の部分構造である場合には、部分構造全体をリレーショナルデータベース13への登録対象とする。
【0015】
要素情報登録部11は、新規の登録の場合には、部分構造中の各要素について、それぞれの属性情報や内容をフィールド値とするレコードをリレーショナルデータベース13に登録する。また、差分の要素の場合には、追加される要素については新規の登録を行い、変更及び削除されたことが判明した要素については、変更及び削除前のレコードに対して編集直前の時点でのバージョン情報を付与するとともに、そのバージョン情報に対する索引を生成し、リレーショナルデータベース13に格納する。これによって、バージョン情報が付加されていないレコードが最新のバージョンのレコードとなり、最新の構造化文書を参照する際には検索が容易となる。また、以前のバージョンの構造化文書を参照する際には、所望のバージョンの索引を参照して各要素を検索すればよい。
【0016】
構造情報登録部12は、ファイル管理部2から渡された部分構造について、各要素間の関係をバイナリ形式の構造情報として生成し、リレーショナルデータベース13に登録する。なお、部分構造に対して編集が行われた場合には、その部分構造の構造情報を再構築し、新たに登録する。以前のバージョンの構造化文書を参照する際には、当該バージョンにおいて生成された構造情報を参照することになる。構造情報は、このように編集が行われると再構築が必要となるが、分解された部分構造ごとに行うので、他の部分構造には影響を与えずに更新することが可能である。また高速に構造情報の再構築を行うことができる。
【0017】
リレーショナルデータベース13は、一般的なリレーショナルデータベースであり、構造化文書の各要素の要素情報と、部分構造間の関係を示すグローバル構造情報と、部分構造内の各要素間の関係を示す構造情報をそれぞれレコードとして格納し、これらの情報によって構造化文書を保持する。
【0018】
次に、上述の本発明の実施の一形態における概括的な動作の一例を説明する。図2は、構造化文書の構造の一例の説明図、図3は、グローバル構造情報及び要素情報と構造情報の一例の説明図である。ここでは図2(A)に示すように3階層の構造化文書が入力される場合を考える。このような部分構造への分解は、指定されたタグあるいは属性によるか、あるいは構造の深さによって自動的に行う。本実施の形態では前者の方法を採っている。各要素を○印で示しており、数字は各要素を特定するシーケンス番号(SNo)である。
【0019】
文書入力部1から図2(A)に示すような構造化文書(及びコンテントタイプ)が入力されると、ディスパッチャ3は、入力された構造化文書のコンテントタイプに応じ、ここでは文書処理部5へ入力された構造化文書を渡す。
【0020】
文書処理部5では、文書解析部6で構造化文書を解析し、文書分解部7でリレーショナルデータベース13から読み込んだ設定に従い、文書を複数の部分構造に分解する。例えば図2(A)において三角形で示した部分ごとに構造化文書を分解する。これによって図2(B)に示すように3つの部分構造となる。分解された部分構造は、再びファイル管理部2のディスパッチャ3に渡される。
【0021】
このように部分構造への分解を行ったときに、各部分構造の関係を示すグローバル構造情報をバイナリ形式で生成してリレーショナルデータベース13に格納する。図2(B)に示すように分解した3つの部分構造にそれぞれグローバルID(GIDと略す)として0,1,2と振り、構造を示す情報として、説明を簡単にするため親のGIDを保持するとすれば、図3(A)に示すようなそれぞれの部分構造の親のGIDを並べたデータが得られる。このようなメモリイメージをそのままリレーショナルデータベース13のレコード中のフィールドとして埋め込み、ここでは文書を一意に特定するための文書IDとともにリレーショナルデータベース13に格納する。
【0022】
なお、部分構造へ分解する際に、下位の部分構造の頂点の要素が、その上位の部分構造にも含まれることになる。例えば図2に示した例では、SNoが2、5の要素については複数の部分構造にまたがる。このような場合には、上位の部分構造にダミーの要素を付加しておく。この例ではGIDが0の部分構造に、SNoが2の要素の代わりにSNo9の要素を、SNoが5の要素の代わりにSNo10の要素を仮想的に付加している。
【0023】
文書分解部7で分解された部分構造を受け取ったディスパッチャ3では、今度は部分構造を編集単位処理部8に渡す。編集単位処理部8では、文書解析部9で部分構造を解析し、差分解析部10に渡す。ここでは新規の構造化文書であるので、差分解析部10は部分構造を要素情報登録部11及び構造情報登録部12に渡す。
【0024】
要素情報登録部11では、部分構造中のそれぞれの要素に関する情報を要素情報としてリレーショナルデータベース13に登録する。例えば図2(B)に示したGIDが‘2’の部分構造の場合、‘5’〜‘8’として示した各要素の情報をリレーショナルデータベース13に登録することになる。図3(B)に要素情報の一例を示しており、この例では各要素を特定するSNoとともに、部分構造中で要素を特定するローカルナンバ(LNo)、要素名、属性値、削除バージョン、追加バージョンをフィールド値としている。もちろん、フィールドの構成は任意である。この要素情報では各要素間の親子関係などは含まれていないが、例えば属性値の検索など、フィールド値による高速な検索が可能である。また、後述する構造情報とは、例えばLNoやSNoによって対応づけることができる。
【0025】
構造情報登録部12では、部分構造中の各要素間の関係を示す構造情報をバイナリ形式で生成する。バイナリ形式の構造情報は、どのようなデータ構造であってもよいが、図3(C)に示す例では、それぞれの要素の親のLNoを並べたデータとして構成している。さらにここでは、このような構造情報のメモリイメージをそのままリレーショナルデータベース13のレコード中のフィールドとして埋め込み、さらに部分構造を一意に特定するためのクラスタIDとともにリレーショナルデータベース13に格納する。クラスタIDは図3(D)に示すようなバージョンテーブルによってGIDとリンクされる。後述するように、編集などによって構造情報を再構築した場合にも、別のクラスタIDを利用してGIDとリンクさせることによってグローバル構造情報の変更を防いでいる。
【0026】
なお、図3(B)、(C)には、GIDが2の部分構造における要素情報及び構造情報のみを示しているが、同様の要素情報及び構造情報がGID0,1についても作成され、リレーショナルデータベース13に登録される。
【0027】
リレーショナルデータベース13に登録されている構造化文書を編集する際には、それぞれの部分構造が編集単位となる。部分構造の取り出しをファイル管理部2に要求することによって、検索部4が編集すべき部分構造をリレーショナルデータベース13から読み出して出力する。そして、部分構造の編集後、再びファイル管理部2に入力する。
【0028】
ファイル管理部2に入力された編集後の部分構造(及びコンテントタイプ)は、ディスパッチャ3によって編集単位処理部8へ送られる。編集単位処理部8では、文書解析部9で部分構造を解析し、差分解析部10に渡す。差分解析部10では、リレーショナルデータベース13に登録されている編集前の部分構造と文書解析部9から受け取った編集後の部分構造を比較し、その差分を抽出する。要素の編集としては、内容や属性値の変更の他、新たな追加、あるいは要素の削除などがある。要素情報登録部11では、新たに追加された要素については、要素情報をリレーショナルデータベース13に登録する。このとき、追加時のバージョン情報を付加してもよい。また、削除された要素については、当該要素に対応する要素情報に削除されたバージョン情報を付加する。変更の場合には、編集前の要素情報を削除、編集後の要素情報を追加する処理を行えばよい。
【0029】
図4は、部分構造の編集後の要素情報の一例の説明図である。図2(B)にGID2として示す部分構造について、図4(A)に示すようにSNo7の要素が変更された場合、編集後の要素をSNo11として追加し、編集前のSNo7を削除する。すなわち、図4(B)に示すようにSNo7の要素情報の削除バージョンに編集前のバージョン番号を付加し、SNo11の要素情報の追加バージョンに現在のバージョン番号を付加する。また、図4(C)に示すように、クラスタIDとGID、バージョン情報を対応づけたバージョンテーブルを索引として作成しておく。このバージョンテーブルによって、グローバル構造情報中の各部分構造の情報と、それぞれのバージョンで変化してゆく部分構造内の情報とをリンクさせる。
【0030】
このように差分のみを登録してゆくことによって、リレーショナルデータベース13のデータ量の増大を抑えることができる。また、削除された要素情報に削除バージョンを付加してゆくことによって、最新版の構造化文書(あるいは部分構造)を取り出す際には、削除バージョンが付加されていない要素情報を取り出せばよい。これによって、容易に、しかも高速に最新版の構造化文書を取り出すことができる。
【0031】
部分構造に対する編集が行われた場合、要素情報の更新だけでなく、構造情報の更新も必要となる。構造情報の更新は、構造情報登録部12において部分構造全体の構造情報の再構築を行う。この場合、再構築する構造情報は部分構造の範囲内だけでよく、構造化文書全体の構造情報を再構築する場合に比べて格段に少ない処理で済み、高速に実行することができる。また、他の部分構造に影響しないので、他の部分構造を他人が編集中であっても全く問題なく更新の処理を行うことができる。
【0032】
なお、図3,図4に示したグローバル構造情報、要素情報、構造情報のデータ構造は一例であり、リレーショナルデータベース13の設計時に任意に取り決めておくことができる。例えば以下に示す具体例においては、図3,図4に示したデータ構造とは一部異なるデータ構造を用いている。
【0033】
以下、具体例を用いながら上述の動作についてさらに詳細に説明してゆく。図5は、具体例におけるデータ構造の一例の説明図である。以下に説明する具体例では、図5に示すようなデータ構造を用いてグローバル構造情報、要素情報、構造情報をリレーショナルデータベース13に登録し、利用する。
【0034】
まずグローバル構造情報は、図5(A)に示すように、それぞれの部分構造ごとに、最大GID、親GID、親の接続ID、編集単位IDなどの情報を有し、これらの部分構造ごとのデータをGIDの順に並べて構成されている。GIDは、ルートノードから深さ優先、左優先で探索される部分構造に対して順に振られたIDである。このGIDの振り方は、後述する部分構造内の構造情報において各要素に振るノードオーダーと同様であり、後述するノードオーダーの振り方の説明によりGIDの振り方の説明に代える。最大GIDは、当該部分構造よりも下位の部分構造のGIDのうち最大のGIDである。深さ優先でGIDを振っているので、当該部分構造の下位の部分構造には、当該部分構造のGIDから最大GIDまでのGIDが振られている。また、最大GIDよりも大きいGIDは、当該部分構造の下位には存在しないことが保証されている。親GIDは、当該部分構造の親となる部分構造のGIDである。親の接続IDは、例えば図2(B)に示す例ではGIDが1の部分構造は、GIDが0の部分構造において仮想的に付加した要素のうちのいずれに接続されるかを示すものである。編集単位IDは、当該部分構造をシステム全体で一意に識別するためのIDである。これらの情報がGIDの数だけ並べられ、そのようなデータをバイナリ形式でレコード中の1つのフィールド値とする。このレコードは、そのほかに文書IDなどのフィールドを有し、文書中の部分構造間の関係がリレーショナルデータベース13に保持される。具体的には、グローバル構造情報は、バイナリ形式のデータのままバイナリを格納できるデータ型であるBLOB(Binary Large OBject)型データとして、文書IDと対応づけてリレーショナルデータベース13に登録することができる。
【0035】
要素情報は、図5(B)に示すように、ノードテーブル、属性テーブル、テキストテーブルによって構成される。要素のうち、リーフとなる要素についてはテキストテーブルの情報を持ち、その他の要素についてはノードテーブル及び属性テーブルの情報を持つことになる。例えばノードテーブルと属性テーブルを一つのテーブルにするなど、変形は任意である。
【0036】
ノードテーブルは、上述のSNo、LNo、編集単位ID、要素名、文書ID、追加バージョン情報、削除バージョン情報、マウントポイント数などのフィールドを有している。SNoはシステム全体において一意に要素に振られたIDである。LNoは、部分構造内で一意に要素に振られたIDである。このLNoは、文書構造とは無関係である。編集単位IDは、当該要素を含んでいる部分構造を特定するIDである。要素名は、文書中の要素の名前である。文書IDは、当該要素を含んでいる文書を特定するIDである。追加バージョン情報は、当該要素が追加されたバージョンを示す情報である。新規に文書が登録された時点では1となる。削除バージョン情報は、当該要素が削除される直前のバージョンを示す情報である。新規に文書が登録された時点ではNULLであり、例えば最初の更新で削除されれば1となる。マウントポイント数は、当該要素の下位(子孫)に接続されるマウントポイントの数を示す。マウントポイントとは、例えば図2(B)に示すGIDが0の部分構造のように、仮想的な設けられた要素であり、SNoが1の要素ではマウントポイント数は2となる。また属性テーブルは、SNo、属性名、属性値などのフィールドを有している。SNoはノードテーブルと同様である。属性名は当該要素の属性に付された名前であり、その値が属性値として格納される。
【0037】
テキストテーブルは、SNo、LNo、編集単位ID、要素値、文書ID、追加バージョン情報、削除バージョン情報などのフィールドを有している。要素値には、リーフとなる要素が有している文書内容が格納される。また、例えば図2(B)に示す例においてGIDが0の部分構造に仮想的に付加した要素は、その部分構造においてはリーフとなる要素である。この場合には、要素値として接続IDが格納される。他のフィールドについては上述の通りである。
【0038】
構造情報は、図5(C)に示すように、部分構造内の各要素ごとにLNo、ノードオーダー、最大ノードオーダーなどのデータが並べられている。LNoは上述の通りである。ノードオーダーは、部分構造内のルートとなる要素から深さ優先、左優先で探索される要素に対して順に振られたIDである。最大ノードオーダーは、部分構造中で当該要素よりも下位の要素のノードオーダーのうち最大のノードオーダーである。深さ優先でノードオーダーを振っているので、当該要素の下位の要素には、当該要素のノードオーダーから最大ノードオーダーまでのIDが振られている。また、最大ノードオーダーよりも大きいIDは、当該要素の下位には存在しないことが保証されている。これらの情報が部分構造内に存在する要素の数(仮想的に設けた要素も含めて)だけ並べられ、そのようなデータをバイナリ形式でレコード中の1つのフィールド値とする。このレコードは、そのほかにクラスタIDなどのフィールドを有し、文書中の部分構造間の関係がバイナリ形式のファイルとしてリレーショナルデータベース13に保持される。なお、クラスタIDは、上述の編集単位IDと同様に部分構造を特定するIDであるが、構造情報は文書の編集などにより版が変わったときに再構築されるので、版が変わるごとに新たなクラスタIDが付与される。
【0039】
バージョンテーブルは、図5(D)に示すように、クラスタID、編集単位ID、バージョン情報、文書IDなどによって構成されている。このバージョンテーブルによって、グローバル構造情報において部分構造に付した編集単位IDと、バージョンごとに異なる部分構造内の文書構造を示す構造情報とを結びつけている。なお、別途、各文書について最新のバージョンを示す情報が保持されており、最新の文書を取り出す際にはその最新バージョン情報からバージョンテーブルを検索することによって、各部分構造についての最新の構造情報を得ることができる。なお、属性情報については、上述のように削除バージョン情報がNULLのレコードを取り出せば、最新の要素情報を取り出すことができる。
【0040】
図6は、入力される構造化文書の具体例の説明図である。ここでは、XMLによって記述された、図6(A)に示すような構造化文書が文書入力部1から入力されるものとする。この構造化文書の文書構造をツリー表現すると図6(B)に示すようになる。なお、図6(B)において○は要素を示し、内部の数字はSNoを示している。
【0041】
このような構造化文書が文書入力部1から入力されると、ディスパッチャ3は、入力された構造化文書を文書処理部5へ渡す。文書処理部5では、文書解析部6で構造化文書を解析し、文書分解部7でリレーショナルデータベース13から読み込んだ設定に従い、文書を複数の部分構造に分解する。ここではPART、CHAPTERで分解することとする。
【0042】
図7〜図9は、分解された部分構造ごとの文書の具体例の説明図である。各図において、分解された文書の記述を(A)として示し、分解された部分構造のツリー表現を(B)として示している。以下の説明では図7に示す部分構造を編集単位ID=0、図8に示す部分構造を編集単位ID=1、図9に示す部分構造を編集単位ID=2とする。また、この編集単位IDとは別に、各部分構造にはGIDが振られる。ここでは、図7に示す部分構造にGID=0、図8に示す部分構造にGID=1、図9に示す部分構造にGID=2を振るものとする。
【0043】
図7に示す部分構造では、部分構造への分解の際に、図6(B)に示すSNo=3の要素に対応する仮想的な要素(SNo=12)を付加している。図7(A)に示す文書の記述では、分解により他の部分構造に移した記述の部分を“&E001;”という記述に置き換えている。これが接続IDとなる。図8に示す部分構造についても同様であり、図6(B)に示すSNo=6の要素に対応する仮想的な要素(SNo=14)を付加している。図8(A)に示す文書の記述では、分解により他の部分構造に移した記述の部分を“&E002;”という接続IDに置き換えている。
【0044】
図10は、グローバル構造情報の具体例の説明図である。上述のように構造化文書を部分構造に分解すると、その時点で各部分構造間の関係がわかる。各部分構造間のツリー表現を図10(B)に示している。図10(B)において、各部分構造を三角形で表している。三角形の中の数字はGIDである。
【0045】
この部分構造間の関係をグローバル構造情報としてリレーショナルデータベース13に登録する。この具体例では、グローバル構造情報は例えば図10(A)に示すようになる。なお、GID=1の部分構造は、GID=0の部分構造中の仮想的に設けた要素(SNo=12)に接続されるので、その接続ID(“&E001;”)のうちの数値部分のみを親の接続IDとしてグローバル構造情報中に含めている。GID=2の部分構造についても同様であり、親の接続IDとしてGID=1の部分構造中の仮想的に設けた要素(SNo=14)の接続ID(“&E002;”)のうちの数値部分のみを親の接続IDとしてグローバル構造情報中に含めている。
【0046】
このようなグローバル構造情報は、例えば上述のようにバイナリ形式のデータのままバイナリを格納できるデータ型であるBLOB型データとして、文書IDと対応づけてリレーショナルデータベース13に登録する。また、図7(A)、図8(A)、図9(A)に示した、分解された部分構造の記述は、再びファイル管理部2に戻される。ファイル管理部2のディスパッチャ3は、これらの分解された部分構造の記述を編集単位処理部8に渡す。編集単位処理部8では、文書解析部9で各部分構造の記述を解析し、差分解析部10に渡す。差分解析部10では、新規の構造化文書であるので、文書解析部9による部分構造の解析結果を要素情報登録部11及び構造情報登録部12に渡す。
【0047】
要素情報登録部11では、各部分構造の記述から、要素情報を生成する。図5(B)に示した要素情報のデータ構造に従い、リーフに対応する要素(仮想的に付加した要素を含む)についてはテキストテーブルを生成し、それ以外の要素についてはノードテーブル及び属性テーブルを生成する。図11、図12は、要素情報の具体例の説明図である。図11(A)はノードテーブル、図11(B)は属性テーブル、図12はテキストテーブルを示している。SNoは、図7〜図9では説明のためにすでに振られているが、実際には編集単位処理部8に各部分構造の記述が入力されて解析することによって、要素の出現順に振られる。LNoについても、各部分構造内で文書構造には関係なく振られる。追加バージョンには、新規登録時には1が格納される。また削除バージョンには、新規登録時には‘NULL’が格納される。マウントポイント数には、仮想的な要素(SNo=12,14)が下位に接続されているSNo=0,3の要素について‘1’となり、他の要素については0となる。このような要素情報がリレーショナルデータベース13に登録される。
【0048】
構造情報登録部12では、部分構造中の各要素間の関係を示す構造情報をバイナリ形式で生成する。図5(C)に示した構造情報のデータ構造に従い、それぞれの要素のLNo、ノードオーダー、最大ノードオーダーを求めて格納してゆく。図13は、構造情報を生成する処理の一例を示すフローチャートである。ここではXMLのタグ及びテキストが順次切り出され、そのたびにそれぞれの処理を行うものとし、またLNoについても別途付与されるものとして説明する。なお、処理を進めるためにLNo及びインデックスの値を格納するためのスタックを用いる。
【0049】
S21において、初期設定としてインデックスを0にセットしておく。S22において、タグまたはテキストの切出を検知し、LNoを取得する。S23において、タグまたはテキストが存在していたか否かを判定し、タグまたはテキストを切り出すことができず、部分構造の記述が終了していればこの処理を終了する。
【0050】
S24において、切り出された要素がテキストか否かを判断し、切り出された要素がタグであればさらにS25において開始タグか終了タグかを判定する。切り出された要素が開始タグの場合には、S26において、S22で取得したLNoと現在のインデックスをスタックに積む。そしてS27において、インデックスの値を1だけ増加させる。
【0051】
切り出された要素がテキストの場合には、S28において、現在のインデックスの値をノードオーダー及び最大ノードオーダーとし、S22で取得したLNoに対応する構造情報の位置に、LNo、ノードオーダー、最大ノードオーダーを格納する。
【0052】
切り出された要素が終了タグの場合には、S29において、スタックからLNo及びインデックスを取り出し、S30において、ノードオーダーとしてスタックから取り出したインデックスの値、最大ノードオーダーとして現在のインデックスの値をセットし、スタックから取り出したLNoに対応する構造情報の位置に、LNo、ノードオーダー、最大ノードオーダーを格納する。
【0053】
このような処理を行うと、ノードオーダーとして、それぞれの要素には深さ優先、左優先で探索された順に番号付けが行われる。図14は、編集単位IDが2の部分構造における構造情報生成過程の一例の説明図である。図11(A)、(C)に示したように、各要素にはLNoが振られている。このLNoは文書構造とは関係なく振られている。図9(A)に示すような編集単位IDが2のXMLによる記述をもとに、図13に示した処理を実行する。なお、図14において矩形で囲んだ3つ組の数値は、左からLNo、ノードオーダー、最大ノードオーダーである。
【0054】
LNo=0,1,2についてはLNoとそのときのインデックス(0,1,2)がスタックに積まれる。LNo=5のリーフノードの要素において、LNo=5、ノードオーダー=3、最大ノードオーダー=3が構造情報として格納される。スタックからLNo=2とインデックス=2が取り出され、LNo=2、ノードオーダー=2、最大ノードオーダー=3が構造情報として格納される。さらにスタックからLNo=1とインデックス=1が取り出され、LNo=1、ノードオーダー=1、最大ノードオーダー=3が構造情報として格納される。
【0055】
次にLNo=3,4についてはスタックに当該LNoとインデックス=4,5が積まれる。LNo=6のリーフノードの要素において、LNo=6、ノードオーダー=6、最大ノードオーダー=6が構造情報として格納される。スタックからLNo=4とインデックス=5が取り出され、LNo=4、ノードオーダー=5、最大ノードオーダー=6が構造情報として格納される。さらにスタックからLNo=3とインデックス=4が取り出され、LNo=3、ノードオーダー=4、最大ノードオーダー=6が構造情報として格納される。さらにまた、スタックからLNo=0とインデックス=0が取り出され、LNo=0、ノードオーダー=0、最大ノードオーダー=6が構造情報として格納される。
【0056】
図15は、構造情報の具体例の説明図である。上述のような処理によって、各部分構造ごとに図15(A)〜(C)に示すような構造情報が得られる。特に編集単位IDが2の部分構造においては、図14を用いて詳述したような処理によって、図15(C)に示すような構造情報が得られることになる。図15では構造情報をテーブル形式で表現しているが、これらのデータはバイナリ形式でいわゆるBLOB型のデータとして扱い、クラスタIDが付されてリレーショナルデータベース13に登録される。
【0057】
図16は、バージョンテーブルの具体例の説明図である。バージョンテーブルでは、バージョンごとに各編集単位IDとクラスタIDとを対応づける。この時点では新規の登録のため、図16に示すように、各部分構造ごとにバージョン情報が1の3つのレコードが生成され、リレーショナルデータベース13に登録される。
【0058】
以上説明したようにして、図6に示した構造化文書は、図7に示したように部分構造に分割され、部分構造の間の関係を示すグローバル構造情報と、各要素の情報を格納した要素情報と、部分構造内の各要素間の関係を示す構造情報、それに編集時に備えてバージョンテーブルが生成され、リレーショナルデータベース13に登録される。
【0059】
次に、構造化文書の編集を行った場合の動作の具体例について説明してゆく。編集作業は部分構造ごとに行われるものとする。例えば検索部4に対して編集単位IDを指定することによってリレーショナルデータベース13に登録されている編集単位IDに対応する要素情報及び構造情報を取り出し、例えばXML形式に変換して編集作業者に提供する。編集作業者は、取り出した部分構造に対する編集作業を行い、編集後の部分構造をファイル管理部2に再び入力する。
【0060】
図17は、編集後の文書内容の具体例の説明図である。ここでは図8(A)に示した編集単位IDが1の部分構造に対して編集を行ったものとする。図8(A)と同様の編集前の記述を図17(A)に示している。この編集前の記述を、図17(B)に示すように編集したとする。タグ“TITLE”の属性値と、タイトル名を示すテキストが変更されている。
【0061】
図17(B)に示す編集後の部分構造の記述がファイル管理部2に入力されると、ディスパッチャ3はその記述を編集単位処理部8に渡す。渡された編集後の部分構造の記述は、文書解析部9で解析され、差分解析部10に渡される。そして差分解析部10において、編集前の部分構造と編集後の部分構造の各要素について対応付けを行い、挿入された要素と削除された要素を差分として抽出し、要素情報登録部11及び構造情報登録部12に要素情報及び構造情報、バージョンテーブルの修正を行わせる。
【0062】
図18は、差分解析部10における差分管理処理の一例を示すフローチャートである。ここでは、文書解析部9においてタグあるいはテキストが1つずつ切り出されて差分解析部10に渡されるものとする。S41において、文書解析部9において切り出されたタグあるいはテキストを取得する。なお、記述が終了していてタグあるいはテキストが取得できなかった場合には、S42においてこれを検出する。
【0063】
S41でタグまたはテキストを取得したら、そのタグまたはテキストが、対応する編集前のバージョンのタグまたはテキストとして存在しているか否かをS43で検索する。このとき、例えばタグ及びテキストからハッシュコードを求め、得られたハッシュコードをもとに検索を行うことによって、検索を高速化することができる。
【0064】
S44において、S41で取得したタグまたはテキストが編集前の旧バージョンに存在したか否かを判定する。編集前の旧バージョンに存在していた場合には、そのタグまたはテキストは編集されていないものとし、S45において、編集前の旧バージョンの当該タグまたはテキストをチェックしておく。これによって二重の対応付けを防止するとともに、削除されたタグ及びテキストの抽出に利用することができる。チェック後、S41へ戻って次のタグまたはテキストの処理を続ける。
【0065】
S41で取得したタグまたはテキストが編集前の旧バージョンに存在していないとS44で判定された場合には、S46において、S41で取得したタグまたはテキストは新規に挿入されたものとして挿入処理を行う。挿入処理は、新たに要素情報を生成して登録することによって行われる。このとき、追加バージョン情報として新たなバージョンの情報を登録する。挿入処理後、S41へ戻って次のタグまたはテキストの処理を続ける。
【0066】
入力された編集後の部分構造の記述について、すべてのタグ及びテキストについて上述のような処理を終了したら、S47において、編集前の旧バージョンにおいてチェックが施されていない要素を削除されたものとして、削除処理を行う。削除処理は、当該要素情報の削除バージョン情報として旧バージョンの情報を登録する。この削除処理では、実際に要素情報が削除されてなくなることはない。
【0067】
このようにして、部分構造に対して編集が加えられた場合、旧バージョンとの差分を抽出し、その差分だけの情報をリレーショナルデータベース13に登録することになる。
【0068】
図19は、文書編集による要素情報の変化の一例の説明図である。なお、図19には編集単位ID=1の部分構造に含まれる要素についてのみの要素情報を示している。上述のように、例えば図17(A)に示した部分構造の記述を図17(B)に示すように変更すると、タグ“TITLE”に対応する要素情報と、タイトル名に対応する要素情報が新規に登録され、これらの要素の編集前の要素情報に対して削除の処理がなされる。すなわち、ノードテーブルにはSNo=17として修正された要素に対応する要素情報が追加され、SNo=4の要素情報中、削除バージョンの欄がNULLから‘1’に書き換えられている。また属性テーブルにおいても、追加されたSNo=17の要素の属性情報が追加されている。さらにテキストテーブルにはSNo=18として、編集後のテキストに対応する要素情報が追加され、SNo=13の要素情報中、削除バージョンの欄がNULLから‘1’に書き換えられている。
【0069】
図20は、文書編集による構造情報の変化の一例の説明図、図21は、文書編集によるバージョンテーブルの変化の一例の説明図である。このようにして部分構造に対して編集が行われた場合、構造情報登録部12は当該部分構造に対する構造情報を再構築する。構造情報の再構築の方法は、上述の新規登録の場合と同様である。これによって編集単位IDが1の部分構造に対応する構造情報として、図20に示すような構造情報が生成され、リレーショナルデータベース13に登録される。このとき、旧バージョンの構造情報とは異なるクラスタIDが付与される。ここではクラスタIDとして3を付与している。
【0070】
上述のように構造情報はバイナリ形式で保持しているため、部分構造に対して編集が加えられると、構造情報を再構築する必要がある。しかし、構造情報の再構築を、構造化文書全体を分解した部分構造内にとどめることができるため、全体への影響を最小限にとどめるとともに、再構築に要する時間を格段に短縮することができる。
【0071】
文書編集によって新バージョンが登録されると、バージョンテーブルも更新される。図21に示すように、バージョンテーブルには、新バージョンと、新バージョンで生成された構造情報に対応するクラスタIDとを対応づけたレコードが追加される。
【0072】
上述のようにして、部分構造ごとに行われる編集に対して、要素情報及び構造情報の更新によって対応することができる。また、各要素については追加されたバージョンと削除されたバージョンの情報を保持しているので、どのバージョンの部分構造でも、任意に取り出すことが可能である。特に、最新バージョンについては、削除バージョンがNULLの要素情報を取り出すだけでよい。すなわち、リレーショナルデータベース13に対して「削除バージョンのフィールド値がNULLである」という条件を検索条件に追加するだけでよく、非常に簡単かつ高速に最新バージョンの要素を取り出すことができる。最新バージョンの取り出しは、非常によく行われる処理であるため、この処理が高速化されることによって利用者の利便性を大きく向上させることができる。
【0073】
以上、構造化文書を部分構造に分解し、部分構造間の関係を示すバイナリ形式のグローバル構造情報と、各要素の情報である要素情報と、部分構造内の要素の関係を示すバイナリ形式の構造情報とによって構造化文書をリレーショナルデータベース13に登録して管理する構成及び方法について説明した。本発明は、上述のように構造化文書を部分構造に分解せず、要素情報とバイナリ形式の構造情報によって管理するだけでも、属性や内容による検索と文書構造の検索の両者の高速化を実現できるという、本発明に特有の効果を奏するものでる。
【0074】
また、上述の例ではバイナリ形式の構造情報(及びグローバル構造情報)についてもリレーショナルデータベース13に登録するものとして説明した。しかしこれに限らず、バイナリ形式の構造情報(及びグローバル構造情報)については別のデータベースに登録するように構成することもできる。
【0075】
上述の実施の形態では部分構造への分解は1段のみであったが、さらに大規模な文書については部分構造への分解を多段に行い、複数のグローバル構造情報を組み合わせて文書の管理や検索を行うように構成することもできる。
【0076】
【発明の効果】
以上の説明から明らかなように、本発明によれば、構造化文書中のそれぞれの要素の情報と、各要素間の関係とを分け、各要素の情報をそれぞれリレーショナルデータベースのレコードとして管理するとともに、各要素間の関係をバイナリ形式の構造情報として管理する。これによって、構造化された文書を管理するとともに、属性情報や内容を検索する場合も、文書構造を検索する場合も、いずれも容易にかつ高速に行うことができる。バイナリ形式の構造情報についてもリレーショナルデータベースのレコードとして登録することもでき、その場合には構造化文書をリレーショナルデータベースで一元管理することが可能である。
【0077】
また、構造化文書を部分構造に分解して、部分構造ごとにバイナリ形式の構造情報を生成して管理することができる。これによって、文書の編集が行われた場合でも、構造情報の再構築を部分構造内にとどめることができ、構造情報の再構築に要する時間を短縮することができる。また、他の部分構造には影響を与えないため、例えば複数人により共同編集を行う場合でも、部分構造ごとに編集を行えば並行して複数人が編集を行うことができる。
【0078】
さらに、編集が行われた場合には、編集された差分のみを登録するとともに、削除された要素については、編集前のバージョン情報を設定することによって、バージョン情報が設定されていない状態から設定されている状態に変化させる。これによって、バージョン情報が設定されていない要素を最新バージョンに含まれる要素であると見なすことができ、最新バージョンの文書の取得処理を簡単かつ高速に行うことができるという効果がある。
【図面の簡単な説明】
【図1】 本発明の実施の一形態を示すブロック図である。
【図2】 構造化文書の構造の一例の説明図である。
【図3】 グローバル構造情報及び要素情報と構造情報の一例の説明図である。
【図4】 部分構造の編集後の要素情報の一例の説明図である。
【図5】 具体例におけるデータ構造の一例の説明図である。
【図6】 入力される構造化文書の具体例の説明図である。
【図7】 分解された部分構造ごとの文書の具体例(編集単位ID=0)の説明図である。
【図8】 分解された部分構造ごとの文書の具体例(編集単位ID=1)の説明図である。
【図9】 分解された部分構造ごとの文書の具体例(編集単位ID=2)の説明図である。
【図10】 グローバル構造情報の具体例の説明図である。
【図11】 要素情報(ノードテーブル及び属性テーブル)の具体例の説明図である。
【図12】 要素情報(テキストテーブル)の具体例の説明図である。
【図13】 構造情報を生成する処理の一例を示すフローチャートである。
【図14】 編集単位IDが2の部分構造における構造情報生成過程の一例の説明図である。
【図15】 構造情報の具体例の説明図である。
【図16】 バージョンテーブルの具体例の説明図である。
【図17】 編集後の文書内容の具体例の説明図である。
【図18】 差分解析部10における差分管理処理の一例を示すフローチャートである。
【図19】 文書編集による要素情報の変化の一例の説明図である。
【図20】 文書編集による構造情報の変化の一例の説明図である。
【図21】 文書編集によるバージョンテーブルの変化の一例の説明図である。
【符号の説明】
1…文書入力部、2…ファイル管理部、3…ディスパッチャ、4…検索部、5…文書処理部、6…文書解析部、7…文書分解部、8…編集単位処理部、9…文書解析部、10…差分解析部、11…要素情報登録部、12…構造情報登録部、13…リレーショナルデータベース。
Claims (6)
- 構造化文書を管理する構造化文書管理装置において、前記構造化文書中の各要素の属性情報及び内容情報を要素情報として登録する要素登録手段と、前記構造化文書中の各要素間の親子関係を並べたデータをバイナリ形式の構造情報として登録する構造情報登録手段と、前記要素登録手段により登録される前記要素情報をリレーショナルデータベースのレコードとして保持するとともに前記構造情報登録手段により登録されるバイナリ形式の前記構造情報を前記リレーショナルデータベースのレコードとして保持する情報保持手段と、前記情報保持手段に保持されている構造化文書に対して編集を行った後の構造化文書が入力されたとき編集前の構造化文書と編集後の構造化文書の間で要素ごとに対応させて差分を解析する差分解析手段を有し、前記差分解析手段で解析された差分について前記要素登録手段で要素情報を登録するとともに前記構造情報登録手段で差分を含む構造情報を生成して登録することを特徴とする構造化文書管理装置。
- さらに、入力された構造化文書の構造を設定されたタグあるいは属性を有する要素あるいは構造の深さに基づき分割して複数の部分構造に分解するとともに前記部分構造間の親子関係を部分構造ごとに並べたデータをバイナリ形式のグローバル構造情報として前記情報保持手段に登録する分解手段を有し、前記要素登録手段及び前記構造情報登録手段は、前記分解手段によって分解された部分構造ごとに各要素情報及び構造情報を前記保持手段に登録することを特徴とする請求項1に記載の構造化文書管理装置。
- 前記要素登録手段は、前記差分解析手段による前記差分の解析によって削除されたことが判明した要素に対しては、要素登録手段に対して削除された要素に対応するレコードに編集前のバージョン情報を付与させるとともに該バージョン情報に対する索引を生成させ、前記バージョン情報が設定されていない要素を最新の構造化文書を構成する要素とする検索を可能としたことを特徴とする請求項1または請求項2に記載の構造化文書管理装置。
- 構造化文書を管理する構造化文書管理方法において、前記構造化文書中の各要素の属性情報及び内容情報を要素情報として要素登録手段がリレーショナルデータベースのレコードとして情報保持手段に登録し、また、前記構造化文書中の各要素間の親子関係を並べたデータをバイナリ形式の構造情報として構造情報登録手段が前記リレーショナルデータベースのレコードとして前記情報保持手段に登録し、あらかじめ前記情報保持手段に保持されている構造化文書に対して編集を行った後の構造化文書が入力されたとき、編集前の構造化文書と編集後の構造化文書の間で要素ごとに対応させて差分を差分解析手段が解析し、解析された差分について要素情報を前記要素登録手段が前記情報保持手段に登録するとともに前記構造情報登録手段が差分を含む構造情報を生成して前記情報保持手段に登録することを特徴とする構造化文書管理方法。
- 入力された構造化文書の構造を設定されたタグあるいは属性を有する要素あるいは構造の深さに基づき分割して複数の部分構造に分解手段が分解し、前記部分構造間の親子関係を部分構造ごとに並べたデータをバイナリ形式のグローバル構造情報として前記情報保持手段に保持するとともに、分解された部分構造ごとに各要素情報及び構造情報を前記要素登録手段及び前記構造情報登録手段が前記情報保持手段に登録することを特徴とする請求項4に記載の構造化文書管理方法。
- 前記差分の解析によって削除されたことが解析された要素に対しては、前記要素登録手段は、削除された要素に対応するレコードに編集前のバージョン情報を付与するとともに、該バージョン情報に対する索引を生成させ、前記バージョン情報が設定されていない要素を最新の構造化文書を構成する要素とする検索を可能としたことを特徴とする請求項4または請求項5に記載の構造化文書管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001254400A JP4045399B2 (ja) | 2001-08-24 | 2001-08-24 | 構造化文書管理装置及び構造化文書管理方法 |
US10/013,375 US7069502B2 (en) | 2001-08-24 | 2001-12-13 | Structured document management system and structured document management method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001254400A JP4045399B2 (ja) | 2001-08-24 | 2001-08-24 | 構造化文書管理装置及び構造化文書管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003067402A JP2003067402A (ja) | 2003-03-07 |
JP4045399B2 true JP4045399B2 (ja) | 2008-02-13 |
Family
ID=19082569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001254400A Expired - Fee Related JP4045399B2 (ja) | 2001-08-24 | 2001-08-24 | 構造化文書管理装置及び構造化文書管理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7069502B2 (ja) |
JP (1) | JP4045399B2 (ja) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015779A1 (en) * | 2002-07-15 | 2004-01-22 | Shorter Gary T. | System and method for document search, retrieval, and delivery |
US7761459B1 (en) * | 2002-10-15 | 2010-07-20 | Ximpleware, Inc. | Processing structured data |
US20040103087A1 (en) * | 2002-11-25 | 2004-05-27 | Rajat Mukherjee | Method and apparatus for combining multiple search workers |
US7197509B2 (en) * | 2003-07-31 | 2007-03-27 | International Business Machines Corporation | Method, system, and computer program product for managing persistent data across different releases |
JP3714558B2 (ja) * | 2003-10-10 | 2005-11-09 | ソニー株式会社 | ファイル管理装置、ファイル管理方法、ファイル管理方法のプログラム及びファイル管理方法のプログラムを記録した記録媒体 |
KR100568234B1 (ko) | 2003-12-13 | 2006-04-07 | 삼성전자주식회사 | 마크업 랭귀지 기반의 데이터 관리 방법과 그 장치 및기록매체 |
JP2005234837A (ja) * | 2004-02-19 | 2005-09-02 | Fujitsu Ltd | 構造化文書処理方法、構造化文書処理システム及びそのプログラム |
US20050268281A1 (en) * | 2004-05-25 | 2005-12-01 | Kim Letkeman | Portable annotated merge model and methods of using the same |
JP2006134102A (ja) * | 2004-11-05 | 2006-05-25 | Fuji Xerox Co Ltd | ディレクトリ編集支援プログラム、ディレクトリ編集支援方法及びディレクトリ編集支援装置 |
JP4234698B2 (ja) * | 2005-06-20 | 2009-03-04 | 富士通株式会社 | 構造化文書処理システム |
EP1755050A1 (en) * | 2005-08-18 | 2007-02-21 | Sap Ag | A data processing system and method of storing a dataset having a hierarchical data structure in a database |
JP4765846B2 (ja) * | 2005-08-31 | 2011-09-07 | ソニー株式会社 | ファイル処理装置、ファイル処理方法、プログラムおよび記録媒体 |
US20070101256A1 (en) * | 2005-11-01 | 2007-05-03 | Charles Simonyi | Perfect source control |
US8024653B2 (en) * | 2005-11-14 | 2011-09-20 | Make Sence, Inc. | Techniques for creating computer generated notes |
CN101369268B (zh) * | 2007-08-15 | 2011-08-24 | 北京书生国际信息技术有限公司 | 一种文档库系统中文档数据的存储方法 |
US7769792B1 (en) * | 2006-02-10 | 2010-08-03 | Google Inc. | Low overhead thread synchronization system and method for garbage collecting stale data in a document repository without interrupting concurrent querying |
US8429526B2 (en) * | 2006-04-10 | 2013-04-23 | Oracle International Corporation | Efficient evaluation for diff of XML documents |
US8082493B2 (en) * | 2006-04-10 | 2011-12-20 | Oracle International Corporation | Streaming XML patch |
JP2007286897A (ja) * | 2006-04-17 | 2007-11-01 | Hitachi Ltd | 記憶システム及びデータ管理装置並びにその管理方法 |
US20070266309A1 (en) * | 2006-05-12 | 2007-11-15 | Royston Sellman | Document transfer between document editing software applications |
GB0609997D0 (en) * | 2006-05-19 | 2006-06-28 | Ibm | Method, apparatus and computer program for controlling retention of data messages |
JP4816281B2 (ja) * | 2006-06-22 | 2011-11-16 | 富士ゼロックス株式会社 | 文書利用管理システム、文書管理サーバ及びそのプログラム |
US20080028302A1 (en) * | 2006-07-31 | 2008-01-31 | Steffen Meschkat | Method and apparatus for incrementally updating a web page |
US7552130B2 (en) * | 2006-10-17 | 2009-06-23 | International Business Machines Corporation | Optimal data storage and access for clustered data in a relational database |
US20090037440A1 (en) * | 2007-07-30 | 2009-02-05 | Stefan Will | Streaming Hierarchical Clustering |
US8843437B2 (en) * | 2007-10-18 | 2014-09-23 | Agilent Technologies, Inc. | Measurement data management with combined file database and relational database |
US8555157B1 (en) * | 2010-01-21 | 2013-10-08 | Google Inc. | Document update generation |
JP2012043047A (ja) * | 2010-08-16 | 2012-03-01 | Fuji Xerox Co Ltd | 情報処理装置及び情報処理プログラム |
JP5656563B2 (ja) * | 2010-11-02 | 2015-01-21 | キヤノン株式会社 | 文書管理システム、文書管理システムの制御方法、プログラム |
US8996985B1 (en) | 2011-03-16 | 2015-03-31 | Google Inc. | Online document processing service for displaying comments |
US20150199308A1 (en) | 2011-10-17 | 2015-07-16 | Google Inc. | Systems and methods for controlling the display of online documents |
US8434002B1 (en) * | 2011-10-17 | 2013-04-30 | Google Inc. | Systems and methods for collaborative editing of elements in a presentation document |
US8266245B1 (en) | 2011-10-17 | 2012-09-11 | Google Inc. | Systems and methods for incremental loading of collaboratively generated presentations |
US10430388B1 (en) | 2011-10-17 | 2019-10-01 | Google Llc | Systems and methods for incremental loading of collaboratively generated presentations |
US8471871B1 (en) | 2011-10-17 | 2013-06-25 | Google Inc. | Authoritative text size measuring |
US8812946B1 (en) | 2011-10-17 | 2014-08-19 | Google Inc. | Systems and methods for rendering documents |
JP5723257B2 (ja) * | 2011-11-11 | 2015-05-27 | 富士通フロンテック株式会社 | 文書管理プログラム、情報処理装置および文書管理方法 |
US9367522B2 (en) | 2012-04-13 | 2016-06-14 | Google Inc. | Time-based presentation editing |
US9262420B1 (en) | 2012-04-23 | 2016-02-16 | Google Inc. | Third-party indexable text |
KR101445218B1 (ko) * | 2012-05-23 | 2014-09-30 | 이청종 | 컨텐츠 협력작업의 수익배분 방법 |
US9529785B2 (en) | 2012-11-27 | 2016-12-27 | Google Inc. | Detecting relationships between edits and acting on a subset of edits |
US9461870B2 (en) | 2013-05-14 | 2016-10-04 | Google Inc. | Systems and methods for providing third-party application specific storage in a cloud-based storage system |
US9971752B2 (en) | 2013-08-19 | 2018-05-15 | Google Llc | Systems and methods for resolving privileged edits within suggested edits |
US9348803B2 (en) | 2013-10-22 | 2016-05-24 | Google Inc. | Systems and methods for providing just-in-time preview of suggestion resolutions |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4688195A (en) * | 1983-01-28 | 1987-08-18 | Texas Instruments Incorporated | Natural-language interface generating system |
US5860004A (en) * | 1996-07-03 | 1999-01-12 | Sun Microsystems, Inc. | Code generator for applications in distributed object systems |
US6151601A (en) * | 1997-11-12 | 2000-11-21 | Ncr Corporation | Computer architecture and method for collecting, analyzing and/or transforming internet and/or electronic commerce data for storage into a data storage area |
US6073129A (en) * | 1997-12-29 | 2000-06-06 | Bull Hn Information Systems Inc. | Method and apparatus for improving the performance of a database management system through a central cache mechanism |
US6711585B1 (en) * | 1999-06-15 | 2004-03-23 | Kanisa Inc. | System and method for implementing a knowledge management system |
GB2363215B (en) * | 1999-11-30 | 2004-01-21 | Sgs Thomson Microelectronics | Disassembling object code |
US6721727B2 (en) * | 1999-12-02 | 2004-04-13 | International Business Machines Corporation | XML documents stored as column data |
US6604100B1 (en) * | 2000-02-09 | 2003-08-05 | At&T Corp. | Method for converting relational data into a structured document |
US6785673B1 (en) * | 2000-02-09 | 2004-08-31 | At&T Corp. | Method for converting relational data into XML |
WO2002013065A1 (en) * | 2000-08-03 | 2002-02-14 | Epstein Bruce A | Information collaboration and reliability assessment |
US6697808B1 (en) * | 2001-06-19 | 2004-02-24 | Microstrategy, Inc. | Method and system for performing advanced object searching of a metadata repository used by a decision support system |
US6799184B2 (en) * | 2001-06-21 | 2004-09-28 | Sybase, Inc. | Relational database system providing XML query support |
-
2001
- 2001-08-24 JP JP2001254400A patent/JP4045399B2/ja not_active Expired - Fee Related
- 2001-12-13 US US10/013,375 patent/US7069502B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US7069502B2 (en) | 2006-06-27 |
US20030041304A1 (en) | 2003-02-27 |
JP2003067402A (ja) | 2003-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4045399B2 (ja) | 構造化文書管理装置及び構造化文書管理方法 | |
US9009099B1 (en) | Method and system for reconstruction of object model data in a relational database | |
JP4141556B2 (ja) | 構造化文書管理方法及びその実施装置並びにその処理プログラムを記録した媒体 | |
US9646030B2 (en) | Computer-readable medium storing program and version control method | |
US20130006968A1 (en) | Data integration system | |
JP4045400B2 (ja) | 検索装置及び検索方法 | |
JP5152877B2 (ja) | 文書ベースシステムにおける文書データ記憶方法およびその装置 | |
JPH0934763A (ja) | ファイル管理装置およびファイル管理方法 | |
US8166075B2 (en) | Method for mapping an X500 data model onto a relational database | |
US7668888B2 (en) | Converting object structures for search engines | |
JP2001014329A (ja) | データベース処理方法及び実施装置並びにその処理プログラムを記憶した媒体 | |
US8082492B2 (en) | Structured-document management apparatus, search apparatus, storage method, search method and program | |
JP4562749B2 (ja) | 文書の圧縮格納方法及び装置 | |
JP2003281149A (ja) | アクセス権限設定方法および構造化文書管理システム | |
Shershakov | Multi-perspective process mining with embedding configurations into DB-based event logs | |
JPH05225240A (ja) | 文書データベース装置 | |
JP3980326B2 (ja) | データ管理方法およびコンピュータ読み取り可能な記録媒体 | |
JP2003157249A (ja) | 文書の圧縮格納方法 | |
Škrbić et al. | Bibliographic records editor in XML native environment | |
JP3498926B2 (ja) | 文書データベース管理システム | |
JP2004310249A (ja) | Xmlデータの検索方法及び検索装置、並びにプログラムおよびプログラムを記録した記録媒体 | |
JP4334450B2 (ja) | 構造化文書検索装置及び構造化文書検索方法 | |
JP2002183142A (ja) | データ格納装置、データ格納方法及びデータ格納方法をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JPH07319874A (ja) | 文書処理装置 | |
JP2004348593A (ja) | 格納検索装置、格納検索方法、格納検索プログラム、および格納検索プログラム記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040924 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070718 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070914 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071024 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071106 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101130 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111130 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111130 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121130 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121130 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131130 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |