(57)【特許請求の範囲】
【請求項１】
文書の構成要素の型を示すノードとそれらの繋がり方を規定するノードである構築子とによって定義された文書型を用いて文書を生成する文書データベース管理装置において、
ノードの集合を保持する第１の保持手段と、
前記文書型のすべてのノードの集合を前記第１の保持手段に保持させる手段と、
ノードの集合を保持する第２の保持手段と、
文書型を評価する際の停止性を検査対象ノードについて検査する検査手段と、
前記検査手段によりその評価が停止すると検査されたノードを前記第１の保持手段に保持されたノードの集合から除外する手段と、
前記検査手段によりその評価が停止すると検査されたノードを前記第２の保持手段に保持されたノードの集合に追加する手段と、
前記検査手段によって前記文書型のすべてのノードの停止性を前記検査手段に検査させる手段と、
を有し、前記検査手段は、
前記構築子である前記検査対象ノードについて、当該構築子に隣接するノードのうち前記検査手段による検査が済んでいないノードを選択して当該選択したノードの前記停止性を前記検査手段により検査した結果と前記検査対象ノードの構築子の型とを用いて当該構築子の前記停止性を検査する構築子検査部と、
前記構成要素の型を示すノードである前記検査対象ノードについて、当該ノードが下位構造を持つか否かおよび当該ノードが持つ下位構造が前記第２の保持手段に保持されるノードの集合に含まれるか否かに基づき前記検査対象ノードについて前記停止性を検査する要素型ノード検査部と、
を含む文書データベース管理装置。
【請求項２】
文書の構成要素の型を示すノードとそれらの繋がり方を規定するノードである構築子とによって定義された文書型を用いて文書を生成する文書データベース管理装置における、文書型を評価して文書を生成する際のノードの停止性を検査する方法であって、
前記文書データベース管理装置は、
ノードの集合を保持する第１の保持手段と、
前記文書型のすべてのノードの集合を前記第１の保持手段に保持させる手段と、
ノードの集合を保持する第２の保持手段と、
文書型を評価する際の停止性を検査対象ノードについて検査する検査手段と、
前記検査手段によりその評価が停止すると検査されたノードを前記第１の保持手段に保持されたノードの集合から除外する手段と、
前記検査手段によりその評価が停止すると検査されたノードを前記第２の保持手段に保持されたノードの集合に追加する手段と、
前記検査手段によって前記文書型のすべてのノードの停止性を前記検査手段に検査させる手段と、
を有するものであり、
検査対象ノードの型を前記検査手段により判断するステップと、
前記検査対象ノードの型が構築子の場合に、当該構築子に隣接するノードのうち前記検査手段による検査が済んでいないノードを選択して当該選択したノードの前記停止性を前記検査手段により検査した結果と前記検査対象ノードの構築子の型とを用いて当該構築子の前記停止性を検査するステップと、
前記検査対象ノードの型が文書の構成要素の型を示す場合に、当該ノードが下位構造を持つか否かおよび当該ノードが持つ下位構造が前記第２の保持手段に保持されるノード集合に含まれるか否かに基づき前記検査対象ノードについて前記停止性を検査するステップと、
前記検査手段によりその評価が停止すると検査されたノードを前記第１の保持手段に保持されたノードの集合から除外するとともに、前記第２の保持手段に保持されたノードの集合に追加するステップと、
を含む、文書データベース管理装置における文書型を評価して文書を生成する際のノードの停止性を検査する方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、電子文書を管理対象とする文書データベース管理装置とこの装置における文書型を評価して文書を生成する際のノードの停止性を検査する方法に関わる。
【０００２】
【従来の技術】
ワードプロセッサ等により作成された電子文書は、デジタルデータとして表現されるので、追加、削除、変更等の編集を容易に行なうことができ、文書作成効率を高めることができる。また、複数の電子文書を大容量の記憶装置に蓄積して文書データベース装置を構築することにより、キーワード検索等により目的とする文書を電子的に検索することができる。
【０００３】
従来の電子文書を管理対象とする文書データベース管理装置では、文書の検索を行なう場合には、ワードプロセッサ等で作られた文書データそのものを蓄積し、そのデータを使って検索を行なっていた。
【０００４】
一方、電子文書の作成や編集作業を容易に行なえるようにするために、電子文書を構造化することが行なわれている。文書の構造は、たとえば、文書を構成する章、見出し、段落などの要素と、その要素間の関係についての情報、たとえば、章は、下位構造として見出しと段落を持つなどについての情報により表される。
【０００５】
【発明が解決しようとする課題】
本発明が解決しようとする課題を、文書構造の国際規格であるＯＤＡ（Ｏｆｆｉｃｅ  Ｄｏｃｕｍｅｎｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）（ＩＳＯ  ８６１３）とＳＧＭＬ（Ｓｔａｎｄａｒｄ  Ｇｅｎｅｒａｌｉｚｅｄ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）（ＩＳＯ  ８８７９；  ＪＩＳ  Ｘ４１５１）を例にとって説明する。
【０００６】
先ず、本明細書で使用する用語について説明する。
【０００７】
「文書構造」という用語は、文書を表現する情報構造とする。たとえば、ＯＤＡが定める情報構造は文書構造である。ＳＧＭＬのサブセッティング（機能の制限）を行ない、使用する文字コードや図表などに用いる情報構造を定めたものも文書構造である。なお、ＳＧＭＬについては、たとえば、Ｍａｒｔｉｎ  Ｂｒｙａｎ著，「ＳＧＭＬ入門」，株式会社アスキー，１９９１年３月３１日発行を参照されたい。
【０００８】
「文書型」という用語は、文書のテンプレートを示すものとする。文書型は、そこから作られる文書がどのような論理構造をもち得るか、すなわち、論理構造中に現われるノードの種類、各ノードがもち得る属性、各ノードがもち得る下位構造を定める。ＯＤＡの共通論理構造（ｇｅｎｅｒｉｃ  ｌｏｇｉｃａｌ  ｓｔｒｕｃｔｕｒｅ）や、ＳＧＭＬをサブセッティングした文書アーキテクチャにおけるＤＴＤ（Ｄｏｃｕｍｅｎｔ  Ｔｙｐｅ  Ｄｅｆｉｎｉｔｉｏｎ）は、文書型である。
【０００９】
ＳＧＭＬ文書は、ＳＧＭＬ宣言、文書型定義（ＤＴＤ）、及び、文書実現値（文書インスタンス）から構成される。ＳＧＭＬ宣言は、ＳＧＭＬ文書を他のシステムで処理するために必要な宣言であり、文字体系や処理機構を宣言するものでさる。文書型定義は、章、章タイトル、節、節タイトル等の文書の論理構造を定義するものである。文書実現値（文書インスタンス）は、ＳＧＭＬ文書の本文である。
【００１０】
次に、上述したような、構造化された文書を検索する場合の問題点について説明する。
【００１１】
構造化文書では、文書の内容は論理構造と呼ばれ、章、節、図などの複数の文書構成要素からなる木構造で表現される。論理構造の例を図８に示す。
【００１２】
論理構造はまったく自由に作成してよいのではなく、文書型と呼ばれる構文規則に沿って作成される。文書型の例を図９に示す。矩形のノードは要素の型（要素型）を定義している。１重線で示されたノードは、内容をもたず、下位構造のみをもつことができる。２重線で示されたノードは内容をもち得る。ノードのラベルは、要素型の名前を示している。同一の名前をもつノードの実体は同一の要素型である。したがって、図９の「節」という名前の要素型は、図１０の有向グラフで表現した文書型で示すように、再帰的に定義されていることになる。楕円で示したノードは要素の繋がりを定義する。このノードを構築子と呼ぶ。ＳＥＱノードは、それにつながるノードがその順に１回だけ評価されることを示している。ＲＥＰノードは、それにつながるノードが１回以上評価されることを示す。ＯＰＴノードは、それにつながるノードが高々１回評価されることを示す。ＣＨＯノードは、それにつながるいずれか１つのノードが評価されることを示す。図８の論理構造は、図９の文書型の制約を満たしている。
【００１３】
構造化文書を管理対象とする文書データベース管理装置では、検索式を記述するための問合せ言語を提供している。検索式は、たとえば、テキストで記述されこの検索式に基づいて検索が行なわれる。
【００１４】
図１１は、上述したような検索を行なう従来のデータベース管理装置の模式図である。問合せエディタ１で作成された検索式は、検索式生成部２により、検索式評価部３で実行可能な形式の検索式に変換される。一方、文書型（スキーマ）エディタ４で作成された文書型は、文書型生成部５により文書型管理部６を介してデータ辞書７に登録される。前記検索式は、文書型管理部６に渡され、指定された条件を満たす要素をもつ文書を検索する。なお、８はデータベースである。
【００１５】
なお、スキーマとは、入力された情報を何らかの一般性のある「知識」としてデータベースに受け入れるための入力情報を一つの「例」として位置付けるべき「知識の枠組み」を意味する。
【００１６】
上記した従来の電子文書を管理対象とする文書データベース管理装置では、文書型（スキーマ）を登録する際、入力された文書型定義が文法的に正しいかどうかの検査だけを行なっていた。このため、その文書型定義を用いて文書インスタンスを生成しようとすると、停止しないような文書型定義を与えても、正しい文書型として扱われる。たとえば、図１２に示すような文書型は、文法的には正しいが、ここから文書インスタンスを生成しようとすると停止しない。図１３に示す文書型は、文書インスタンスを生成し得るが、要素型「段落」の構造定義、すなわち下位構造は停止しないので、要素型「段落」のオカレンス（その型のデータ自体）は決して作られない。なおここで、文書型が停止するとは、文書型を評価して文書を生成する際、その評価が停止することを意味するものとする。
【００１７】
評価が停止しない文書型は本来誤りであって、それが実際に運用されることはない。このような文書型は、文書型を定義するユーザによって排除されなければならないが、停止するか否かの判断は容易ではなく、ユーザの負担になっていた。また、停止しない部分を含む文書型も誤りであるので、運用されたとしても停止する部分だけが評価されることになる。一旦運用し始めたあとに停止しない部分を修正し、その文書型を再定義すると、それを用いて生成した文書インスタンスの整合を取る必要がある。したがって、データベースに格納されている文書インスタンスを、新しい定義に合わせて生成した後、再度格納しなければならない。これはデータベースを維持するユーザの負担になっていた。
【００１８】
そこで本発明は、不適正な文書型が入力されるのを防止してユーザの手間を低減することを目的とする。
【００１９】
【課題を解決するための手段】
本発明の文書データベース管理装置は、文書の構成要素の型を示すノードとそれらの繋がり方を規定するノードである構築子とによって定義された文書型を用いて文書を生成する文書データベース管理装置において、ノードの集合を保持する第１の保持手段と、前記文書型のすべてのノードの集合を前記第１の保持手段に保持させる手段と、ノードの集合を保持する第２の保持手段と、文書型を評価する際の停止性を検査対象ノードについて検査する検査手段と、前記検査手段によりその評価が停止すると検査されたノードを前記第１の保持手段に保持されたノードの集合から除外する手段と、前記検査手段によりその評価が停止すると検査されたノードを前記第２の保持手段に保持されたノードの集合に追加する手段と、前記検査手段によって前記文書型のすべてのノードの停止性を前記検査手段に検査させる手段と、を有し、前記検査手段は、前記構築子である前記検査対象ノードについて、当該構築子に隣接するノードのうち前記検査手段による検査が済んでいないノードを選択して当該選択したノードの前記停止性を前記検査手段により検査した結果と前記検査対象ノードの構築子の型とを用いて当該構築子の前記停止性を検査する構築子検査部と、前記構成要素の型を示すノードである前記検査対象ノードについて、当該ノードが下位構造を持つか否かおよび当該ノードが持つ下位構造が前記第２の保持手段に保持されるノードの集合に含まれるか否かに基づき前記検査対象ノードについて前記停止性を検査する要素型ノード検査部と、を含む。
【００２０】
また、本発明の文書データベース管理装置における文書型を評価して文書を生成する際のノードの停止性を検査する方法は、検査対象ノードの型を前記検査手段により判断するステップと、前記検査対象ノードの型が構築子の場合に、当該構築子に隣接するノードのうち前記検査手段による検査が済んでいないノードを選択して当該選択したノードの前記停止性を前記検査手段により検査した結果と前記検査対象ノードの構築子の型とを用いて当該構築子の前記停止性を検査するステップと、前記検査対象ノードの型が文書の構成要素の型を示す場合に、当該ノードが下位構造を持つか否かおよび当該ノードが持つ下位構造が前記第２の保持手段に保持されるノード集合に含まれるか否かに基づき前記検査対象ノードについて前記停止性を検査するステップと、前記検査手段によりその評価が停止すると検査されたノードを前記第１の保持手段に保持されたノードの集合から除外するとともに、前記第２の保持手段に保持されたノードの集合に追加するステップと、を含む。
【００２１】
【作用】
本発明においては、文書型を評価して文書を生成する際、その評価が停止するか否かが検査され、停止しない場合には、文書型が妥当でないと判断される。
【００２２】
【実施例】
図１は、本発明の文書データベース管理装置の実施例を示すブロック図である。
【００２３】
問合せエディタ１で作成された検索式は、検索式生成部２により、検索式評価部３で実行可能な形式の検索式に変換される。一方、文書型エディタ４で作成された文書型（スキーマ）は、文書型生成部５により文書型管理部６を介してデータ辞書７に登録される。前記検索式は、文書型管理部６に渡され、指定された条件を満たす要素をもつ文書を検索する。なお、８はデータベースである。
【００２４】
本実施例においては、文書型管理部６は、文書型管理制御部６ａ、文書型検証部６ｂ、及び文書型検索部６ｃを備えている。文書型管理制御部６ａは、格納・検索・検証の要求を受け付け、検索の場合文書型検索部６ｃを呼び出し、検証の場合には文書型検証部６ｂを呼び出す。
【００２５】
図２から図７は、文書型検証部６ｂにおける文書型の停止性を検証する処理のフローである。以下、これらの図にしたがって本実施例の処理について説明する。これらの処理には、図９には示されていない構築子ＡＧＧがある。ＡＧＧは、それにつながるノードが正確に１回だけ評価されることを示す。ＳＥＱとは異なり、ノードの評価順は任意である。
【００２６】
図２は、与えられた文書型を検証する処理のフローである。この処理の入力は文書型定義で、出力は停止しないノードの集合である。この集合が空であれば、与えられた文書型のすべてのノードは停止する。したがって、文書型全体としても停止する。この集合が空でなければ、与えられた文書型は停止しないノードを含む。とくに、ルートノードがこの集合に含まれていれば、この文書型からは文書インスタンスを生成できない。
【００２７】
図２の処理について説明する。ここでは、ノードの集合を保持する３つの変数Ｆ，Ｓ，Ｕを用いる。変数Ｆは停止することが分ったノードを保持する。変数Ｕは停止性を判定中のノードを保持する。変数Ｓは処理の終了を検出するための変数である。
【００２８】
まず、与えられた文書型のすべてのノードの集合を求め（ステップ４−２）、変数Ｕに代入する（ステップ４−３）。変数Ｆの初期値を空集合にしておく（ステップ４−４）。次に、変数Ｓに変数Ｕの値を代入する（ステップ４−５）。変数Ｕが空集合であるか判定する（ステップ４−６）。変数Ｕが空集合であれば、戻り値を空集合として制御を戻す（ステップ４−１２）。変数Ｕが空集合でなければ、変数Ｕに未処理のノードがあるかどうか検査する（ステップ４−７）。すべて処理が済んでいれば、変数Ｓと変数Ｕが等しいか検査する（ステップ４−１３）。変数Ｓと変数Ｕが等しければ、戻り値をＵとして制御を戻す（ステップ４−１４）。変数Ｓと変数Ｕが異なっていれば、変数Ｕの要素をすべて未処理の状態として、ステップ４−５に戻る。ステップ４−７で、未処理のノードが残っていれば、そのひとつを選択する（ステップ４−８）。次いで、選択したノードについて停止性を検証する（ステップ４−９）。このとき、選択されているノードと、停止することが判明しているノードの集合Ｆを引数として渡す。検証手続きの戻り値の真偽を判定し（ステップ４−１０）、真であれば、Ｕからノードを除外して、そのノードをＦに追加し（ステップ４−１１）、ステップ４−７に戻る。戻り値が偽であれば、ステップ４−７に戻る。
【００２９】
図３は、与えられた文書型のすべてのノードの集合を求める処理（図２のステップ４−１参照）のフローである。この処理の入力は文書型定義で、出力は入力された文書型に含まれるすべてのノードの集合である。このフローでは、要素型の集合を保持する変数Ｓと、要素型のキューを保持する変数Ｑを用いる。変数Ｓの初期値は空集合である（ステップ５−２）。変数Ｑの初期値は、入力ノードに隣接するノードすべてからなるキューである（ステップ５−３）。まず、変数Ｑの長さが０かどうか判定する（ステップ５−４）。変数Ｑの長さが０であれば、入力された文書型のすべてのノードの集合が変数Ｓに格納されているので、これを戻り値として制御を戻す（ステップ５−９）。変数Ｑの長さが１以上であれば、変数Ｑの先頭要素を取り出す（ステップ５−５）。取り出した要素が変数Ｓに含まれていれば、ステップ５−４に戻る。取り出した要素が変数Ｓに含まれていなければ、変数Ｓにその要素を加える（ステップ５−８）。取り出した要素に隣接するノードすべてを変数Ｑの末尾に追加し（ステップ５−８）、ステップ５−４に戻る。
【００３０】
図４は、ノードの停止性を判定する処理（図２のステップ４−９参照）のフローである。この処理の入力は、ノードおよび停止することが分かっているノードの集合Ｆで、出力は与えられたノードの停止性を示す真偽値である。戻り値が真になるのは、そのノードは停止することが判明したときである。戻り値が偽になるのは、そのノードが停止しないことが分かったか、停止性の判定が済んでいないかのいずれかである。
【００３１】
まず、入力されたノードが要素型であるかどうか判定する（ステップ６−２）。要素型であれば、要素型の検証を行ない（ステップ６−６）、その判定結果を戻り値として制御を戻す（ステップ６−９）。要素型でなければ、ＣＨＯノードであるかどうか判定する（ステップ６−３）。ＣＨＯ型であれば、ＣＨＯ型の検証を行ない（ステップ６−７）、その判定結果を戻り値として制御を戻す（ステップ６−９）。ＣＨＯでなければ、ＯＰＴノードであるかどうか判定する（ステップ６−４）。ＯＰＴであれば、戻り値を真として制御を戻す（ステップ６−５）。ＯＰＴでなければ、ＳＥＱ／ＡＧＧ／ＲＥＰの停止性の検証を行ない（ステップ６−８）、その判定結果を戻り値として制御を戻す（ステップ６−９）。
【００３２】
図５は、要素型ノードの停止性を判定する処理のフローである。入力は要素型ノードおよび停止することが分かっているノードの集合Ｆで、出力は判定結果である。まず、与えられた要素型が構造定義をもつかどうか検査する（ステップ７−２）。構造定義をもたなければ、戻り値を真として制御を戻す（ステップ７−５）。構造定義をもてば、それが集合Ｆに含まれるかどうか判定する（ステップ７−６）。構造定義が集合Ｆに含まれるときには、戻り値を真として制御を戻す（ステップ７−５）。構造定義が集合Ｆに含まれないときには、戻り値を偽として制御を戻す（ステップ７−４）。
【００３３】
図６は、ＣＨＯノードの停止性を判定する処理のフローである。入力は、ＣＨＯノード、および停止することが分かっているノードの集合Ｆで、出力は判定結果である。まず、入力されたＣＨＯノードに隣接するノードで、まだ処理していないノードがあるかどうか判定する（ステップ８−２）。未処理のノードがなければ、戻り値を偽として制御を戻す（ステップ８−６）。未処理のノードがあれば、それらのうちひとつを選択する（ステップ８−３）。次いで、選択されたノードを検証する（ステップ８−４）。検証結果が真であれば、戻り値を真として制御を戻す（ステップ８−７）。検証結果が偽であれば、ステップ８−２に戻る。
【００３４】
図７は、ＳＥＱ／ＡＧＧ／ＲＥＰノードの停止性を判定する処理のフローである。入力は、ＳＥＱ・ＡＧＧ・ＲＥＰのいずれかのタイプのノード、および停止することが分かっているノードの集合Ｆで、出力は判定結果である。まず、入力されたＳＥＱ／ＡＧＧ／ＲＥＰノードに隣接するノードで、まだ処理していないノードがあるかどうか判定する（ステップ９−２）。未処理のノードがなければ、戻り値を真として制御を戻す（ステップ９−６）。未処理のノードがあれば、それらのうちひとつを選択する（ステップ９−３）。次いで、選択されたノードを検証する（ステップ９−４）。検証結果が偽であれば、戻り値を偽として制御を戻す（ステップ９−７）。検証結果が偽であれば、ステップ９−２に戻る。
【００３５】
【発明の効果】
以上のように、本発明によれば、文書型を評価して文書を生成する際、その評価が停止するか否かを検査することにより、文書型が妥当であるか否かを判断することができる。
【図面の簡単な説明】
【図１】本発明の文書データベース管理装置の実施例のブロック図である。
【図２】文書型の検証処理のフローである。
【図３】文書型に含まれるすべてのノードを求める処理のフローである。
【図４】ノードの停止性を判定する処理のフローである。
【図５】要素型のノードの停止性を判定する処理のフローである。
【図６】ＣＨＯノードの停止性を判定する処理のフローである。
【図７】ＳＥＱ／ＡＧＧ／ＲＥＰノードの停止性を判定する処理のフローである。
【図８】文書インスタンスの例である。
【図９】文書型の例である。
【図１０】図９の文書型を有向グラフで表現したものである。
【図１１】従来の文書データベース管理装置の実施例のブロック図である。
【図１２】停止しない文書型の例である。
【図１３】停止しない部分を含む文書型の例である。
【符号の説明】
１…問合せエディタ、２…検索式生成部、３…検索式評価部、４…文書型エディタ、５…文書型生成部、６…文書型管理部、６ａ…文書型管理制御部、６ｂ…文書型検証部、６ｃ…文書型検索部、７…データ辞書、８…データベース
【図１】
0003570578.tif 000002
【図２】
0003570578.tif 000003
【図３】
0003570578.tif 000004
【図４】
0003570578.tif 000005
【図５】
0003570578.tif 000006
【図６】
0003570578.tif 000007
【図７】
0003570578.tif 000008
【図８】
0003570578.tif 000009
【図９】
0003570578.tif 000010
【図１０】
0003570578.tif 000011
【図１１】
0003570578.tif 000012
【図１２】
0003570578.tif 000013
【図１３】
0003570578.tif 000014