(57)【要約】【課題】  検索対象文書の格納および検索に必要な処理時間、格納領域、およびメモリ消費量を改善する。【解決手段】  検索条件からタグ登録情報１０４、キーワード登録情報１０５、および状態管理情報１０６を生成し、検索対象の構造化文書の文書データを所定量ずつ連続的に読み込み、読み込まれたデータ列の中からタグ登録情報１０４に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中からキーワード登録情報１０５に登録されたキーワードを検出するキーワード検索とを状態管理情報１０６を用いて切り替えながら、検索処理を実行する。【選択図】      図１
2005070911.tif 000002
【特許請求の範囲】
【請求項１】
タグを用いて構造化された文書のデータを検索条件に従って検索する検索装置であって、
前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ登録情報と、該検索条件により指定されたキーワードの文字列を登録したキーワード登録情報と、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成する生成手段と、
検索対象の構造化文書の文書データを所定量ずつ連続的に読み込む読込手段と、
読み込まれたデータ列の中から前記タグ登録情報に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード登録情報に登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索して、検索結果を出力する検索手段と
を備えることを特徴とする検索装置。
【請求項２】
タグを用いて構造化された文書のデータを検索条件に従って検索するコンピュータのためのプログラムであって、
前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ登録情報と、該検索条件により指定されたキーワードの文字列を登録したキーワード登録情報と、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成し、
検索対象の構造化文書の文書データを所定量ずつ連続的に読み込み、
読み込まれたデータ列の中から前記タグ登録情報に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード登録情報に登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索し、
検索結果を出力する
処理を前記コンピュータに実行させることを特徴とするプログラム。
【請求項３】
前記現在の検索状態が前記検索パス上のどの要素に対応するかを管理するための情報と、前記タグ検索から前記キーワード検索に切り替えるべき状態を指定する情報とを含む前記状態管理情報を生成し、前記タグ検索により前記登録されたタグが検出されたときに該状態管理情報を参照して、該現在の検索状態が該タグ検索から該キーワード検索に切り替えるべき状態であれば該タグ検索から該キーワード検索に切り替える処理を前記コンピュータに実行させることを特徴とする請求項２記載のプログラム。
【請求項４】
前記タグ検索において、前記構造化文書の文書データから文字列を１文字ずつ読み込んで、前記タグ登録情報に登録されたタグの文字列と１文字ずつ照合し、読み込まれた文字列が登録されたタグの文字列と一致すれば、前記状態管理情報を参照して前記現在の検索状態をチェックし、該現在の検索状態が該タグ検索から前記キーワード検索に切り替えるべき状態であれば該タグ検索から該キーワード検索に切り替え、該キーワード検索において、前記登録されたタグの文字列と一致した文字列に続く文字列を１文字ずつ読み込んで、前記キーワード登録情報に登録されたキーワードの文字列と１文字ずつ照合し、読み込まれた文字列が登録されたキーワードの文字列と一致すれば、該構造化文書を前記検索条件に合致する文書の候補と判断する処理を前記コンピュータに実行させることを特徴とする請求項２記載のプログラム。
【請求項５】
前記構造化文書の文書データを検索しながら該構造化文書の文書データの追加、更新、削除、および一括削除のうち少なくとも１つの操作を行う処理を前記コンピュータに実行させることを特徴とする請求項２記載のプログラム。
【請求項６】
前記構造化文書の文書データにアクセスするための２つのデータ管理テーブルのうち一方のデータ管理テーブルを用いて前記構造化文書の文書データを検索しながら、他方のデータ管理テーブルを用いて該構造化文書に対する前記少なくとも１つの操作を行う処理を前記コンピュータに実行させることを特徴とする請求項５記載のプログラム。
【請求項７】
タグを用いて構造化された文書のデータを検索条件に従って検索するコンピュータのためのプログラムであって、
前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ用オートマトンと、該検索条件により指定されたキーワードの文字列を登録したキーワード用オートマトンと、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成し、
検索対象の構造化文書の文書データを所定量ずつ連続的に読み込み、
読み込まれたデータ列の中から前記タグ用オートマトンに登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード用オートマトンに登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索し、
検索結果を出力する
処理を前記コンピュータに実行させることを特徴とするプログラム。
【請求項８】
タグを用いて構造化された文書のデータを検索条件に従って検索する検索方法であって、
生成手段が、前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ登録情報と、該検索条件により指定されたキーワードの文字列を登録したキーワード登録情報と、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成し、
読込手段が、検索対象の構造化文書の文書データを所定量ずつ連続的に読み込み、
検索手段が、読み込まれたデータ列の中から前記タグ登録情報に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード登録情報に登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索して、検索結果を出力する
ことを特徴とする検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬ（eXtensible Markup Language）文書のような構造化文書のデータを検索する装置および方法に関する。
【背景技術】
【０００２】
ＸＭＬ文書は、文書データの各要素をタグを用いて記述することで構造化された、階層構造の文書である。ＸＭＬ文書を木構造で表現した場合、木の各要素はノードと呼ばれる。ＸＭＬ文書のデータを検索する従来の方法としては、以下の２つの方法がある。
（ａ）検索対象の全文書の全ノードを木構造のオブジェクトで表現して文書を展開する。検索要求の条件に従ってノードを検索し、条件に合致する場合は、返信用のノードの情報を検索して取り出す。この検索方法は、インデクス方式と呼ばれる。
（ｂ）検索・返信要求に従って、一旦、検索対象の全文書を２次元のテーブルに展開する。このとき、ノードの子ノードとして階層表現されている複数のノードについては、必要に応じてテーブルの行を増やしていく。そして、検索要求の条件に従ってテーブルを検索し、条件に合致する場合は、返信用のセル（ノード）の情報を取り出す。
【０００３】
例えば、図２１のような２つの文書を検索対象とする場合、上記（ａ）の方法では、図２２のような木構造の文書データが生成される。ここで、検索要求として次のような検索式が入力されたものとする。
／ｄｏｃ／Ｇｒｐ｛／Ａ＝‘Ｘ’  ＡＮＤ  ／Ｂ＝‘１０００’｝          （１）
この検索式は、／ｄｏｃ／Ｇｒｐ／Ａというパスで指定されるノードに‘Ｘ’というキーワードが含まれており、かつ、／ｄｏｃ／Ｇｒｐ／Ｂというパスで指定されるノードに‘１０００’というキーワードが含まれているという条件を表す。この場合、図２３に示すように文書データのノードを辿ることで、文書１が検索要求の条件に合致することが分かる。
【０００４】
また、上記（ｂ）の方法では、図２４のようなテーブル構造の文書データが生成される。図２１の文書１では、“ｄｏｃ”ノードの子ノードとして２つの異なる“Ｇｒｐ”ノードが存在するため、図２４のテーブルでは、文書１のデータが２行に渡って格納されている。この場合、図２５に示すように、（１）式の検索式に従ってテーブルが検索され、文書１が検索要求の条件に合致することが分かる。
【０００５】
上記（ａ）および（ｂ）の方法では、検索対象の全文書をあらかじめ展開するために、ＤＴＤ（Document Type Definition）やスキーマ等のＸＭＬ定義情報、ＸＭＬ定義情報とＸＭＬ文書の関連性に関する情報、およびＸＭＬ文書内の各タグ・ノードに関する情報が、各ＸＭＬ文書とは別に保管されている。
【０００６】
また、構造化文書を検索する際に、検索条件を入力として階層オートマトンを生成し、生成された階層オートマトンを用いて検索を行う方法も知られている（例えば、特許文献１参照）。
【０００７】
【特許文献１】特開２０００−９００９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来の検索方法には、次のような問題がある。
・検索処理を行う前に、一旦、検索対象文書の解析を行わなければならない。したがって、検索対象文書の格納に際しては解析・分解等の処理を経るため、非常に多くの処理時間を要するという問題がある。
・検索対象文書自体をタグ・ノード単位に分解して検索最適化を行うので、検索対象文書の格納に際して、元の文書の数倍もの格納領域を要することとなる。
・検索・解析に際して、格納された文書データの一部または全部を一旦メモリ上に展開し、検索要求の条件に合致するノードを特定する必要がある。したがって、格納された文書データの量に応じて、検索・解析に要するメモリ資源の消費量は膨大なものとならざるを得ない。
・検索対象とするＸＭＬ文書群は、格納方式の論理から、特定のＸＭＬ定義情報により指定された定型の様式で統一されていなければならない。また、検索に際しては、定型の様式に従った検索式を用いなければならない。したがって、複数の異なる様式のＸＭＬ文書を対象として検索を行う場合は、各様式毎のＸＭＬ文書を検索した後に、得られた各検索結果をマージする必要がある。
【０００９】
本発明の課題は、検索対象文書の格納および検索に必要な処理時間、格納領域、およびメモリ消費量を改善する検索装置およびその方法を提供することである。
【課題を解決するための手段】
【００１０】
図１は、本発明の検索装置の原理図である。図１の検索装置は、生成手段１０１、読込手段１０２、および検索手段１０３を備え、タグを用いて構造化された文書のデータを検索条件に従って検索する。
【００１１】
生成手段１０１は、検索条件を解析して、その検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ登録情報１０４と、検索条件により指定されたキーワードの文字列を登録したキーワード登録情報１０５と、検索パスを用いて現在の検索状態を管理するための状態管理情報１０６とを生成する。読込手段１０２は、検索対象の構造化文書の文書データを所定量ずつ連続的に読み込む。
【００１２】
検索手段１０３は、読み込まれたデータ列の中からタグ登録情報１０４に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中からキーワード登録情報１０５に登録されたキーワードを検出するキーワード検索とを状態管理情報１０６を用いて切り替えながら、構造化文書の文書データを検索して、検索結果を出力する。
【００１３】
このような検索装置によれば、文書データを所定量ずつ連続的に読み込みながら検索が行われるので、検索対象の全文書の文書データをあらかじめ展開しておく必要はなくなる。また、検索条件により指定された要素のタグを検索するタグ検索と、その要素の中のキーワードを検索するキーワード検索とを適切に切り替えながら検索が行われるので、検索対象文書の構造が分からなくても、検索条件に合致する要素の内容をキーワードと照合することができる。したがって、検索対象文書は、特定のＸＭＬ定義情報等により指定された様式でなくても構わない。
【００１４】
生成手段１０１、読込手段１０２、検索手段１０３、タグ登録情報１０４、キーワード登録情報１０５、および状態管理情報１０６は、例えば、後述する図２の検索式解析部２１３、データ読込部２１５、ＸＭＬ検索部２１４、タグ用オートマトン２２２、キーワード用オートマトン２２４、および状態管理情報２２３にそれぞれ対応する。
【発明の効果】
【００１５】
本発明によれば、検索対象文書は定型の様式で整形された文書でなくてもよく、異なるレイアウト・スキーマのＸＭＬ文書をそのままの形で格納することができる。したがって、検索対象文書の格納領域が小さくなるとともに、検索対象文書に対する事前の解析処理が不要となるので格納速度も向上する。
【００１６】
また、メモリ資源の消費量が検索対象文書のデータ量に拠らず、検索条件のデータ量に拠って決まるため、限られたメモリ資源でも検索を行うことができる。
【００１７】
さらに、複数の異なる様式のＸＭＬ文書を対象として検索を行う場合でも、各様式を区別することなく検索を実施できるので、検索速度が向上する。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照しながら、本発明を実施するための最良の形態を詳細に説明する。
【００１９】
図２は、本実施形態の検索装置の構成図である。図２の検索装置２０１は、操作解析部２１１、データ検索部２１２、検索式解析部２１３、ＸＭＬ検索部２１４、データ読込部２１５、検索結果格納部２１６、データ同期部２１７、データ書込部２１８、およびデータ格納部２１９を備える。
【００２０】
操作解析部２１１は、データ操作のアプリケーションプログラム２０２から処理要求を受け取り、それを解析して処理要求がデータの検索、追加、更新、削除、および一括削除のいずれを要求しているかをチェックする。そして、処理要求が検索要求であれば、その検索要求をデータ検索部２１２に転送し、追加要求、更新要求、削除要求、または一括削除要求であれば、その処理要求をデータ書込部２１８に転送する。
【００２１】
データ検索部２１２は、受け取った検索要求の条件（以後、検索条件と記す）に含まれる検索式を検索式解析部２１３に転送する。検索式解析部２１３は、受け取った検索式を解析して、検索すべき要素を指定するパス、パスに含まれる各要素のタグ、検索すべきキーワード等の情報を抽出する。そして、抽出した情報を用いてタグ用オートマトン２２２、状態管理情報２２３、およびキーワード用オートマトン２２４を生成し、ＸＭＬ検索部２１４に転送する。状態管理情報２２３は、指定されたパスを用いて検索状態を管理するための情報である。
【００２２】
オートマトンは、初期状態と受理状態を含む複数の状態の集合で表現され、２つの状態の間は遷移の方向を示す矢印で結ばれる。オートマトンは、まず、初期状態において、入力されたデータの値に応じた遷移先の状態を決定し、その状態に遷移する。次に、次の入力データの値に応じた遷移先の状態を決定し、その状態に遷移する。受理状態には、初期状態からその受理状態に到達するまでに入力されたデータ列の情報が設定されている。言い換えれば、受理状態に設定されたデータ列はオートマトンに登録されたデータ列である。
【００２３】
オートマトンは、連続的に入力されるデータ列に従って状態遷移を繰り返すことで、入力されるデータ列と登録されたデータ列とを照合する。そして、受理状態に到達すると、入力データ列がその状態に対応する登録データ列と一致したものと判断し、登録データ列の情報を出力する。
【００２４】
ＸＭＬ検索部２１４は、論理式テーブル２２１を保持しており、検索式解析部２１３から受け取ったタグ用オートマトン２２２、状態管理情報２２３、およびキーワード用オートマトン２２４を用いて、データ格納部２１９に格納された検索対象のＸＭＬ文書を検索する。このとき、データ読込部２１５は、データ格納部２１９から全文書の文書データを所定量ずつ読み出し、ＸＭＬ検索部２１４に転送する。検索処理の開始時には、論理式テーブル２２１の値は“偽”に設定されている。
【００２５】
ＸＭＬ検索部２１４は、データ読込部２１５から受け取ったデータをタグ用オートマトン２２２に入力し、データがヒットすると、タグ用オートマトン２２２から出力されるヒット情報を元に状態管理情報２２３にアクセスする。ヒット情報により指定される階層が、状態管理情報２２３に登録された検索条件の階層に合致している場合、それ以降のデータをキーワード用オートマトン２２４に入力する。そして、キーワード用オートマトン２２４に登録されたキーワードが検出されると、該当する文書の情報を検索結果格納部２１６に格納する。
【００２６】
タグ用オートマトン２２２は、要素の開始タグおよび終了タグより構成されるオートマトンであり、入力された文書データから開始・終了タグを検出すると、ヒット情報を出力する。これを受けて、ＸＭＬ検索部２１４は、状態管理情報２２３の要素を辿り、検索条件に合致する要素に到達したとき、キーワード用オートマトン２２４に対して文書データの入力を開始する。
【００２７】
キーワード用オートマトン２２４は、検索条件のキーワード、開始タグ、および終了タグより構成されるオートマトンであり、入力された文書データから検索条件のキーワードを検出すると、ヒット情報を出力する。これを受けて、ＸＭＬ検索部２１４は、論理式テーブル２２１の該当する値を“真”に変更する。
【００２８】
次に、入力された文書データから終了タグが検出されると、キーワード用オートマトン２２４は再びヒット情報を出力する。これを受けて、ＸＭＬ検索部２１４は、検索処理が検索条件の要素を抜ける段階に達したものと判断し、その要素に関する論理式を評価して、論理式テーブル２２１の該当する値を初期化する。そして、状態管理情報２２３の次の要素にアクセスする。ルートノードの要素を抜ける場合は、最終論理式評価を行って該当文書の真偽を判定する。
【００２９】
次に、図３から図１１までを参照しながら、図２の検索装置２０１が行う検索処理をより詳細に説明する。
【００３０】
図３および図４は、データ格納部２１９に格納された検索対象の文書の例を示している。ここで、検索式解析部２１３が次のような検索式を受け取ったものとする。
／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅ＝‘ＡＢＣ’                            （２）
この検索式は、／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅというパスで指定される要素に‘ＡＢＣ’というキーワードが含まれているという条件を表す。このように、パス表現においては、先頭に記号“／”が記述され、異なる階層のタグの間は“／”で区切られる。なお、下記（ａ）および（ｂ）に示すように、検索式の記述方法として、パスに含まれる要素のタグを省略する方法もある。
（ａ）パス省略表現１
パスを記述する場合に、フルパスではなく、“／／”を用いることで、タグを省略した形で記述する。“／／”はどこに記述しても構わない。
例１）／ｒｏｏｔ／／ｃｏｍｐ／ｎａｍｅ
この表現は、“／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅ”、“／ｒｏｏｔ／ａ／ｂ／ｃ／ｃｏｍｐ／ｎａｍｅ”等のパスを含んでいる。
例２）／／ｎａｍｅ
この表現は、“ｎａｍｅ”タグに到るすべてのパスを含んでいる。
例３）／ｒｏｏｔ／ｃｏｍｐ／／
この表現は、／ｒｏｏｔ／ｃｏｍｐ以下の階層に到るすべてのパスを含んでいる。
（ｂ）パス省略表現２
パスを記述する場合に、タグ名ではなく、“＊”を用いることで、１つのタグを省略した形で記述する。“＊”はどこに記述しても構わず、“＊”が記述された部分はどんなタグでも構わない。
例４）／ｒｏｏｔ／ｃｏｍｐ／＊
この表現は、“＊”の部分に対応するタグに到るすべてのパスを含んでいる。したがって、“／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅ”や“／ｒｏｏｔ／ｃｏｍｐ／ｃｏｄｅ”がこの表現に含まれる。
【００３１】
検索式解析部２１３は、（２）式から以下の３つの論理式を生成する。
／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅ                                        （３）
‘ＡＢＣ’                                                            （４）
／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅ＝‘ＡＢＣ’                            （５）
（３）式は、検索すべき要素を指定するパスを表し、（４）式は、検索すべきキーワードを表し、（５）式は、（３）式と（４）式を比較演算子“＝”で結合した論理式である。検索式解析部２１３は、これらの論理式からタグ用オートマトン２２２、状態管理情報２２３、およびキーワード用オートマトン２２４を生成する。
【００３２】
図５は、生成されたタグ用オートマトン２２２の例を示している。図５において、各状態は円で示されており、円の中の文字は、前の状態からその文字が記された状態に遷移する際に入力された文字データを表している。また、“ｉｎ”と記された状態は初期状態を表し、ヒット情報が付加された状態は受理状態を表す。このオートマトンには、以下のような文字列（開始タグ等）が登録されており、登録文字列と一致する文字列が入力されると、対応するヒット情報が出力される。ただし、“＿”は１文字分のブランクを表す。
文字列        ヒット情報
＜ｃｏｍｐ／＞      ５０１
＜ｃｏｍｐ＞        ５０２
＜ｃｏｍｐ＿        ５０３
＜ｒｏｏｔ／＞      ５０４
＜ｒｏｏｔ＞        ５０５
＜ｒｏｏｔ＿        ５０６
＜ｎａｍｅ／＞      ５０７
＜ｎａｍｅ＞        ５０８
＜ｎａｍｅ＿        ５０９
＞                  ５１０
簡単のため図５では省略されているが、実際には、図６に示すような文字列もタグ用オートマトン２２２に登録される。コンピュータ上でオブジェクト指向プログラミングによりオートマトンを実現する場合、例えば、各状態および各ヒット情報が１つのオブジェクトにより表現される。
【００３３】
図７は、状態管理情報２２３の前に生成されるタグテーブルの例を示している。図７のタグテーブルには、（３）式に含まれる各タグの名称および番号が登録されており、このタグテーブルを用いて図８のような状態管理情報が生成される。
【００３４】
図８の状態管理情報は、“Ｉｎｉｔｉａｌ”、“ｒｏｏｔ”、“ｃｏｍｐ”、および“ｎａｍｅ”の４つの要素からなり、検索すべき要素を指定するパスを表している。“Ｉｎｉｔｉａｌ”要素は初期状態を表し、他の３つの要素はそれぞれパスに含まれる３つの要素に対応している。各要素には、図７のタグテーブルに登録されたタグの名称および番号が登録されており、ＸＭＬ検索部２１４は、その情報を用いて次の要素にアクセスすることができる。
【００３５】
また、検索条件の階層に属する“ｎａｍｅ”要素にはＯＵＴＰＵＴが付加されている。このＯＵＴＰＵＴは（５）式の情報を含んでおり、“ｎａｍｅ”要素がアクセスされたときに（５）式が評価されることを表している。オブジェクト指向プログラミングにより状態管理情報を記述する場合、例えば、各要素および各ＯＵＴＰＵＴが１つのオブジェクトにより表現される。
【００３６】
図９は、生成されたキーワード用オートマトン２２４の例を示している。図９の各状態および状態遷移の記述方法は、基本的に図５の場合と同様である。“ｉｎ”の状態は初期状態を表し、ヒット情報が付加された状態は受理状態を表す。このオートマトンには、以下のような文字列（キーワード等）が登録されており、登録文字列と一致する文字列が入力されると、対応するヒット情報が出力される。
文字列  ヒット情報
ＡＢＣ    ９０１
＜／      ９０２
簡単のため図９では省略されているが、実際には、図６に示したような文字列もキーワード用オートマトン２２４に登録される。
【００３７】
ＸＭＬ検索部２１４は、検索式解析部２１３から３つの論理式、タグ用オートマトン２２２、状態管理情報２２３、およびキーワード用オートマトン２２４を受け取る。そして、図１０に示すように、受け取った論理式を論理式テーブルに登録する。初期状態では、論理式テーブルの各論理式の値として“偽”が格納されている。
【００３８】
次に、ＸＭＬ検索部２１４は、図１１に示すフローチャートに従って検索処理を行う。ここでは、各ＸＭＬ文書が１つのレコードとして格納されているものとする。ＸＭＬ検索部２１４は、まず、検索対象のすべてのレコードの処理が終了したか否かをチェックし（ステップ１１０１）、未処理のレコードが残っていれば、タグ検索処理を行う（ステップ１１０２）。
【００３９】
タグ検索処理では、文書データを１文字ずつタグ用オートマトン２２２に入力し、タグ用オートマトン２２２からヒット情報が出力されると、ヒット情報のタグがレコードの終端に対応するか否かをチェックする（ステップ１１０３）。
【００４０】
ヒット情報のタグがレコードの終端に対応しなければ、次に、そのタグの情報に従って状態管理情報２２３を参照し（ステップ１１０６）、参照先の要素が検索条件の階層に属するか否かをチェックする（ステップ１１０７）。参照先の要素が検索条件の階層に属する場合、キーワード検索処理を行う（ステップ１１０８）。
【００４１】
キーワード検索処理では、それ以降の文書データを１文字ずつキーワード用オートマトン２２４に入力し、キーワード用オートマトン２２４からヒット情報が出力されると、ヒット情報の文字列がタグの終端に対応するか否かをチェックする（ステップ１１０９）。
【００４２】
文字列がタグの終端に対応しなければ、ステップ１１０８のキーワード検索処理を繰り返し、文字列がタグの終端に対応していれば、そのタグに関する論理式を評価する（ステップ１１０５）。そして、そのタグの情報に従ってステップ１１０６以降の処理を繰り返す。
【００４３】
ステップ１１０７において参照先の要素が検索条件の階層に属さない場合は、そのままステップ１１０２以降の処理を繰り返す。そして、ステップ１１０３においてヒット情報のタグがレコードの終端に対応していれば、最終論理式評価を行ってそのレコードが検索条件に合致するか否かを判定し（ステップ１１０４）、ステップ１１０１以降の処理を繰り返す。その後、ステップ１１０１においてすべてのレコードの処理が終了すれば、検索処理を終了する。
【００４４】
例えば、図３の文書のレコードが検索される場合、ステップ１１０２において最初に＜ｒｏｏｔ＞タグが検出され、図５のタグ用オートマトンからヒット情報５０５が出力される。そこで、ステップ１１０６において図８の状態管理情報の“Ｉｎｉｔｉａｌ”要素を参照すると、タグ名“ｒｏｏｔ”は次の“ｒｏｏｔ”要素を指しているので、“ｒｏｏｔ”要素がアクセスされる。そして、ステップ１１０７において“ｒｏｏｔ”要素にＯＵＴＰＵＴが付加されているか否かがチェックされる。
【００４５】
“ｒｏｏｔ”要素にはＯＵＴＰＵＴが付加されていないので、この要素は検索条件の階層に属さないものと判断され、ステップ１１０２のタグ検索処理が続行される。同様にして、＜ｃｏｍｐ＞タグが検出されると、状態管理情報の“ｃｏｍｐ”要素がアクセスされる。“ｃｏｍｐ”要素にもＯＵＴＰＵＴは付加されていないので、タグ検索処理が続行される。
【００４６】
次に、＜ｎａｍｅ＞タグが検出されると、状態管理情報の“ｎａｍｅ”要素がアクセスされる。このとき、“ｎａｍｅ”要素にはＯＵＴＰＵＴが付加されているので、この要素は検索条件の階層に属するものと判断される。そこで、図１０の論理式テーブルの／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅの値が“真”に変更され、ステップ１１０８のキーワード検索処理が行われる。
【００４７】
キーワード検索処理では、キーワード‘ＡＢＣ’が検出されるので、図９のキーワード用オートマトンからヒット情報９０１が出力される。そこで、論理式テーブルの‘ＡＢＣ’の値が“真”に変更される。しかし、ステップ１１０９においてこの文字列はタグの終端に対応しないので、キーワード検索処理が続行される。
【００４８】
次に、文字列“＜／”が検出され、キーワード用オートマトンからヒット情報９０２が出力される。この文字列は終了タグの先頭部分を表すので、＜ｎａｍｅ＞タグの終端に対応するものと判断され、ステップ１１０５において、論理式テーブルを参照して／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅ＝‘ＡＢＣ’が満たされるか否かがチェックされる。
【００４９】
この段階では、論理式テーブルの／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅおよび‘ＡＢＣ’の値が共に“真”となっているので、この論理式は満たされたと判断され、論理式テーブルの該当する値が“真”に変更される。これにより、図３の文書は検索条件に合致する文書の候補となる。このとき、／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅおよび‘ＡＢＣ’の値は、初期値である“偽”に変更される。
【００５０】
また、終了タグが検出されたので、ステップ１１０６において状態管理情報を逆に辿る処理が行われる。そこで、状態管理情報の“ｎａｍｅ”要素の直前にある“ｃｏｍｐ”要素がアクセスされるが、この要素は検索条件の階層に属さないのでタグ検索処理が続行される。
【００５１】
そして、最後の＜／ｒｏｏｔ＞タグが検出された段階で、ステップ１１０３においてこのタグはレコードの終端に対応するものと判断される。そこで、ステップ１１０４において、論理式テーブルを参照して検索条件が満たされたか否かがチェックされる。
【００５２】
この段階では、論理式テーブルの／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅ＝‘ＡＢＣ’の値が“真”となっているので、検索条件は満たされたと判断される。そこで、図３の文書の識別情報が、検索条件に合致する文書の情報として検索結果格納部２１６に格納される。このとき、論理式テーブルの／ｒｏｏｔ／ｃｏｍｐ／ｎａｍｅ＝‘ＡＢＣ’の値は、初期値である“偽”に変更される。
【００５３】
次に、図４の文書のレコードも同様にして検索されるが、このレコードの“ｎａｍｅ”要素にはキーワード‘ＡＢＣ’が含まれていないので、検索条件は満たされない。したがって、図４の文書の識別情報は検索結果格納部２１６には格納されない。
【００５４】
すべてのレコードの処理が終了すると、検索結果格納部２１６に格納された文書の識別情報が、検索結果としてアプリケーションプログラム２０２に返送される。
【００５５】
次に、図１２から図１８までを参照しながら、図２のデータ読込部２１５、データ同期部２１７、およびデータ書込部２１８が行う処理を詳細に説明する。
【００５６】
データ同期部２１７は、図１２に示すように、２つのデータ管理テーブル１２０１および１２０２を保持しており、データ読込部２１５およびデータ書込部２１８に対して使用可能ないずれかのデータ管理テーブルを引き渡す。データ管理テーブル１２０１および１２０２は、データ格納部２１９に格納された文書データ１２０３、１２０４、１２０５、および１２０６のアドレスを保持しており、それらの文書データにアクセスするためのインデックステーブルとして用いられる。ここでは、文書データ１２０３、１２０４、１２０５、および１２０６の各々が１つのＸＭＬ文書に対応するものとする。
【００５７】
データ同期部２１７は、検索用テーブルのアドレス１２０７と更新用テーブルのアドレス１２０８にいずれかのデータ管理テーブルのアドレスを設定することで、データ読込部２１５およびデータ書込部２１８が使用するデータ管理テーブルを決定する。図１２では、アドレス１２０７としてデータ管理テーブル１２０１のアドレスＰ１が設定され、アドレス１２０８としてデータ管理テーブル１２０２のアドレスＰ２が設定されている。
【００５８】
アドレス１２０７により指定されたデータ管理テーブル１２０１は、検索用テーブルとしてデータ読込部２１５に渡され、アドレス１２０８により指定されたデータ管理テーブル１２０２は、更新用テーブルとしてデータ書込部２１８に渡される。データ読込部２１５は、上述した検索処理において、渡された検索用テーブルを用いてデータ格納部２１９から文書データを読み出す。
【００５９】
データ書込部２１８は、操作解析部２１１から追加要求、更新要求、削除要求、または一括削除要求を受け取ると、渡された更新用テーブルを用いて、データ格納部２１９の文書データの追加処理、更新処理、削除処理、または一括削除処理を行う。そして、その処理の情報を更新用テーブルに書き込んだ後に、処理の終了をデータ同期部２１７に通知する。
【００６０】
これを受けて、データ同期部２１７は、保持しているアドレス１２０７とアドレス１２０８の値を入れ換え、今まで更新用テーブルとして使用されていたデータ管理テーブル１２０２を新たな検索用テーブルとしてデータ読込部２１５に渡す。その後に、データ管理テーブル１２０２の内容を他方のデータ管理テーブル１２０１に複写する。
【００６１】
このような構成を採用することで、データ書込部２１８が追加処理、更新処理、削除処理、および一括削除処理を行っている最中でも、データ読込部２１５は、文書データの読み出しを行うことが可能となる。
【００６２】
図１３から図１５までは、新たな文書データの追加処理の手順を示している。まず、図１３に示すように、データ書込部２１８は、追加すべき文書データ１３０１をデータ格納部２１９に格納し、その格納アドレスをデータ管理テーブル１２０２に追加する。
【００６３】
次に、図１４に示すように、データ同期部２１７は、アドレス１２０７とアドレス１２０８の値を入れ換える。これにより、データ管理テーブル１２０１が更新用テーブルとなり、データ管理テーブル１２０２が検索用テーブルとなる。そして、図１５に示すように、データ管理テーブル１２０２の内容をデータ管理テーブル１２０１に複写して、新たな更新用テーブルの内容を最新のものに更新する。
【００６４】
図１６は、既存の文書データ１２０５の更新処理を示している。まず、データ書込部２１８は、更新された文書データ１６０１をデータ格納部２１９に格納し、データ管理テーブル１２０２に登録されている文書データ１２０５のアドレスを文書データ１６０１の格納アドレスに変更する。次に、データ同期部２１７は、図１４および図１５の手順と同様にして、アドレス１２０７とアドレス１２０８の値を入れ換え、データ管理テーブル１２０２の内容をデータ管理テーブル１２０１に複写する。
【００６５】
図１７は、既存の文書データ１２０６の削除処理を示している。まず、データ書込部２１８は、データ管理テーブル１２０２に登録されている文書データ１２０６のアドレスを削除する。次に、データ同期部２１７は、図１４および図１５の手順と同様にして、アドレス１２０７とアドレス１２０８の値を入れ換え、データ管理テーブル１２０２の内容をデータ管理テーブル１２０１に複写する。
【００６６】
図１８は、データ格納部２１９の全文書データの一括削除処理を示している。まず、データ書込部２１８は、データ管理テーブル１２０２に登録されているすべての文書データのアドレスを削除する。次に、データ同期部２１７は、図１４および図１５の手順と同様にして、アドレス１２０７とアドレス１２０８の値を入れ換え、データ管理テーブル１２０２の内容をデータ管理テーブル１２０１に複写する。
【００６７】
以上説明した実施形態では、ＸＭＬ文書を対象とする検索処理について述べたが、本発明は、ＸＭＬ文書に限らず、ＳＧＭＬ（Standard Generalized Markup Language）文書を含む任意の構造化文書の検索処理に対して適用可能である。
【００６８】
また、上述した実施形態では、タグおよびキーワードを検出するためにそれぞれタグ用オートマトンおよびキーワード用オートマトンを用いているが、それらの代わりに他のタグ登録情報およびキーワード登録情報を用いてもよい。
【００６９】
ところで、図２の検索装置は、例えば、図１９に示すような情報処理装置（コンピュータ）を用いて構成することができる。図１９の情報処理装置は、ＣＰＵ（中央処理装置）１９０１、メモリ１９０２、入力装置１９０３、出力装置１９０４、外部記憶装置１９０５、媒体駆動装置１９０６、ネットワーク接続装置１９０７を備え、それらはバス１９０８により互いに接続されている。
【００７０】
メモリ１９０２は、例えば、ＲＯＭ（read only memory）、ＲＡＭ（random access memory）等を含み、処理に用いられるプログラムおよびデータを格納する。ＣＰＵ１９０１は、メモリ１９０２を利用してプログラムを実行することにより、必要な処理を行う。
【００７１】
図２の検索結果格納部２１６は、メモリ１９０２に対応する。図２の操作解析部２１１、データ検索部２１２、検索式解析部２１３、ＸＭＬ検索部２１４、データ読込部２１５、データ同期部２１７、およびデータ書込部２１８は、メモリ１９０２に格納されたプログラムを実行することにより実現される機能に対応する。また、図２の論理式テーブル２２１、タグ用オートマトン２２２、状態管理情報２２３、およびキーワード用オートマトン２２４は、メモリ１９０２上で動的に生成される。
【００７２】
入力装置１９０３は、例えば、キーボード、ポインティングデバイス、タッチパネル等であり、ユーザからの指示や情報の入力に用いられる。出力装置１９０４は、例えば、ディスプレイ、プリンタ、スピーカ等であり、ユーザへの問い合わせや処理結果等の出力に用いられる。
【００７３】
外部記憶装置１９０５は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。情報処理装置は、この外部記憶装置１９０５に、上記プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ１９０２にロードして使用する。また、外部記憶装置１９０５は、図２のデータ格納部２１９としても使用される。
【００７４】
媒体駆動装置１９０６は、可搬記録媒体１９０９を駆動し、その記録内容にアクセスする。可搬記録媒体１９０９は、メモリカード、フレキシブルディスク、ＣＤ−ＲＯＭ（compact disk read only memory ）、光ディスク、光磁気ディスク等の任意のコンピュータ読み取り可能な記録媒体である。ユーザは、この可搬記録媒体１９０９に上記プログラムおよびデータを格納しておき、必要に応じて、それらをメモリ１９０２にロードして使用する。
【００７５】
ネットワーク接続装置１９０７は、ＬＡＮ（local area network）等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う。情報処理装置は、必要に応じて、上記プログラムおよびデータを外部の装置からネットワーク接続装置１９０７を介して受け取り、それらをメモリ１９０２にロードして使用する。
【００７６】
図２０は、図１９の情報処理装置にプログラムおよびデータを供給することのできるコンピュータ読み取り可能な記録媒体を示している。可搬記録媒体１９０９やサーバ２００１のデータベース２００３に格納されたプログラムおよびデータは、情報処理装置２００２のメモリ１９０２にロードされる。サーバ２００１は、そのプログラムおよびデータを搬送する搬送信号を生成し、ネットワーク上の任意の伝送媒体を介して情報処理装置２００２に送信する。ＣＰＵ１９０１は、そのデータを用いてそのプログラムを実行し、必要な処理を行う。
【００７７】
（付記１）  タグを用いて構造化された文書のデータを検索条件に従って検索する検索装置であって、
前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ登録情報と、該検索条件により指定されたキーワードの文字列を登録したキーワード登録情報と、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成する生成手段と、
検索対象の構造化文書の文書データを所定量ずつ連続的に読み込む読込手段と、
読み込まれたデータ列の中から前記タグ登録情報に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード登録情報に登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索して、検索結果を出力する検索手段と
を備えることを特徴とする検索装置。
【００７８】
（付記２）  タグを用いて構造化された文書のデータを検索条件に従って検索するコンピュータのためのプログラムであって、
前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ登録情報と、該検索条件により指定されたキーワードの文字列を登録したキーワード登録情報と、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成し、
検索対象の構造化文書の文書データを所定量ずつ連続的に読み込み、
読み込まれたデータ列の中から前記タグ登録情報に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード登録情報に登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索し、
検索結果を出力する
処理を前記コンピュータに実行させることを特徴とするプログラム。
【００７９】
（付記３）  前記現在の検索状態が前記検索パス上のどの要素に対応するかを管理するための情報と、前記タグ検索から前記キーワード検索に切り替えるべき状態を指定する情報とを含む前記状態管理情報を生成し、前記タグ検索により前記登録されたタグが検出されたときに該状態管理情報を参照して、該現在の検索状態が該タグ検索から該キーワード検索に切り替えるべき状態であれば該タグ検索から該キーワード検索に切り替える処理を前記コンピュータに実行させることを特徴とする付記２記載のプログラム。
【００８０】
（付記４）  前記タグ検索において、前記構造化文書の文書データから文字列を１文字ずつ読み込んで、前記タグ登録情報に登録されたタグの文字列と１文字ずつ照合し、読み込まれた文字列が登録されたタグの文字列と一致すれば、前記状態管理情報を参照して前記現在の検索状態をチェックし、該現在の検索状態が該タグ検索から前記キーワード検索に切り替えるべき状態であれば該タグ検索から該キーワード検索に切り替え、該キーワード検索において、前記登録されたタグの文字列と一致した文字列に続く文字列を１文字ずつ読み込んで、前記キーワード登録情報に登録されたキーワードの文字列と１文字ずつ照合し、読み込まれた文字列が登録されたキーワードの文字列と一致すれば、該構造化文書を前記検索条件に合致する文書の候補と判断する処理を前記コンピュータに実行させることを特徴とする付記２記載のプログラム。
【００８１】
（付記５）  前記構造化文書の文書データを検索しながら該構造化文書の文書データの追加、更新、削除、および一括削除のうち少なくとも１つの操作を行う処理を前記コンピュータに実行させることを特徴とする付記２記載のプログラム。
【００８２】
（付記６）  前記構造化文書の文書データにアクセスするための２つのデータ管理テーブルのうち一方のデータ管理テーブルを用いて前記構造化文書の文書データを検索しながら、他方のデータ管理テーブルを用いて該構造化文書に対する前記少なくとも１つの操作を行う処理を前記コンピュータに実行させることを特徴とする付記５記載のプログラム。
【００８３】
（付記７）  タグを用いて構造化された文書のデータを検索条件に従って検索するコンピュータのためのプログラムであって、
前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ用オートマトンと、該検索条件により指定されたキーワードの文字列を登録したキーワード用オートマトンと、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成し、
検索対象の構造化文書の文書データを所定量ずつ連続的に読み込み、
読み込まれたデータ列の中から前記タグ用オートマトンに登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード用オートマトンに登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索し、
検索結果を出力する
処理を前記コンピュータに実行させることを特徴とするプログラム。
【００８４】
（付記８）  タグを用いて構造化された文書のデータを検索条件に従って検索するコンピュータのためのプログラムを記録した記録媒体であって、
前記プログラムは、
前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ登録情報と、該検索条件により指定されたキーワードの文字列を登録したキーワード登録情報と、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成し、
検索対象の構造化文書の文書データを所定量ずつ連続的に読み込み、
読み込まれたデータ列の中から前記タグ登録情報に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード登録情報に登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索し、
検索結果を出力する
処理を前記コンピュータに実行させることを特徴とするコンピュータ読み取り可能な記録媒体。
【００８５】
（付記９）  タグを用いて構造化された文書のデータを検索条件に従って検索するコンピュータのためのプログラムを搬送する搬送信号であって、
前記プログラムは、
前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ登録情報と、該検索条件により指定されたキーワードの文字列を登録したキーワード登録情報と、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成し、
検索対象の構造化文書の文書データを所定量ずつ連続的に読み込み、
読み込まれたデータ列の中から前記タグ登録情報に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード登録情報に登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索し、
検索結果を出力する
処理を前記コンピュータに実行させることを特徴とする搬送信号。
【００８６】
（付記１０）  タグを用いて構造化された文書のデータを検索条件に従って検索する検索方法であって、
生成手段が、前記検索条件を解析して、該検索条件により指定された検索パスに含まれる各要素を表すタグの文字列を登録したタグ登録情報と、該検索条件により指定されたキーワードの文字列を登録したキーワード登録情報と、該検索パスを用いて現在の検索状態を管理するための状態管理情報とを生成し、
読込手段が、検索対象の構造化文書の文書データを所定量ずつ連続的に読み込み、
検索手段が、読み込まれたデータ列の中から前記タグ登録情報に登録されたタグを検出するタグ検索と、読み込まれたデータ列の中から前記キーワード登録情報に登録されたキーワードを検出するキーワード検索とを前記状態管理情報を用いて切り替えながら、前記構造化文書の文書データを検索して、検索結果を出力する
ことを特徴とする検索方法。
【図面の簡単な説明】
【００８７】
【図１】本発明の検索装置の原理図である。
【図２】検索装置の構成図である。
【図３】第１の文書を示す図である。
【図４】第２の文書を示す図である。
【図５】タグ用オートマトンを示す図である。
【図６】文字列を示す図である。
【図７】タグテーブルを示す図である。
【図８】状態管理情報を示す図である。
【図９】キーワード用オートマトンを示す図である。
【図１０】論理式テーブルを示す図である。
【図１１】検索処理のフローチャートである。
【図１２】検索用テーブルと更新用テーブルの初期状態を示す図である。
【図１３】追加処理の第１の手順を示す図である。
【図１４】追加処理の第２の手順を示す図である。
【図１５】追加処理の第３の手順を示す図である。
【図１６】更新処理を示す図である。
【図１７】削除処理を示す図である。
【図１８】一括削除処理を示す図である。
【図１９】情報処理装置の構成図である。
【図２０】記録媒体を示す図である。
【図２１】検索対象の文書を示す図である。
【図２２】木構造の文書データを示す図である。
【図２３】第１の検索方法を示す図である。
【図２４】テーブル構造の文書データを示す図である。
【図２５】第２の検索方法を示す図である。
【符号の説明】
【００８８】
１０１  生成手段
１０２  読込手段
１０３  検索手段
１０４  タグ登録情報
１０５  キーワード登録情報
１０６、２２３  状態管理情報
２０１  検索装置
２０２  アプリケーションプログラム
２１１  操作解析部
２１２  データ検索部
２１３  検索式解析部
２１４  ＸＭＬ検索部
２１５  データ読込部
２１６  検索結果格納部
２１７  データ同期部
２１８  データ書込部
２１９  データ格納部
２２１  論理式テーブル
２２２  タグ用オートマトン
２２４  キーワード用オートマトン
５０１、５０２、５０３、５０４、５０５、５０６、５０７、５０８、５０９、５１０、９０１、９０２  ヒット情報
１２０１、１２０２  データ管理テーブル
１２０３、１２０４、１２０５、１２０６、１３０１、１６０１  文書データ
１２０７  検索用テーブルのアドレス
１２０８  更新用テーブルのアドレス
１９０１  ＣＰＵ
１９０２  メモリ
１９０３  入力装置
１９０４  出力装置
１９０５  外部記憶装置
１９０６  媒体駆動装置
１９０７  ネットワーク接続装置
１９０８  バス
１９０９  可搬記録媒体
２００１  サーバ
２００２  情報処理装置
２００３  データベース
【図１】
2005070911.tif 000003
【図２】
2005070911.tif 000004
【図３】
2005070911.tif 000005
【図４】
2005070911.tif 000006
【図５】
2005070911.tif 000007
【図６】
2005070911.tif 000008
【図７】
2005070911.tif 000009
【図８】
2005070911.tif 000010
【図９】
2005070911.tif 000011
【図１０】
2005070911.tif 000012
【図１１】
2005070911.tif 000013
【図１２】
2005070911.tif 000014
【図１３】
2005070911.tif 000015
【図１４】
2005070911.tif 000016
【図１５】
2005070911.tif 000017
【図１６】
2005070911.tif 000018
【図１７】
2005070911.tif 000019
【図１８】
2005070911.tif 000020
【図１９】
2005070911.tif 000021
【図２０】
2005070911.tif 000022
【図２１】
2005070911.tif 000023
【図２２】
2005070911.tif 000024
【図２３】
2005070911.tif 000025
【図２４】
2005070911.tif 000026
【図２５】
2005070911.tif 000027