(57)【特許請求の範囲】
【請求項１】
半構造データの変更管理を行う半構造データ差分管理システムを用いた半構造データ差分管理方法であって、
前記半構造データ差分管理システムが、
データ受信部を介して、１以上の前記半構造データを受信し、
参照構造情報受信部を介して、前記半構造データを参照するアプリケーションプログラムごとに当該アプリケーションプログラムが参照する前記半構造データの対象部分を示した参照構造情報を受信して記憶部に記憶し、
前記受信した半構造データの構造解析を行い、
過去に前記構造解析を行ったデータ同士で同じパスを示すノードを重ね合せた構造重ね合せデータを作成して記憶部に記憶し、
前記記憶部に記憶された構造重ね合せデータおよび前記データ受信部を介して新たに受信した前記半構造データの構造解析結果それぞれに含まれるノードを対比し、前記構造解析結果において変更されたノードを示す差分情報を含む構造差分抽出データを作成し、
前記記憶部に記憶された参照構造情報を参照して、前記作成した構造差分抽出データから、前記アプリケーションプログラムごとに、当該アプリケーションプログラムが参照する前記差分情報を抽出した構造差分絞込みデータを作成し、
前記作成した構造差分絞込みデータを当該アプリケーションプログラムに関する構造差分情報として出力することを特徴とする半構造データ差分管理方法。
【請求項２】
前記差分情報は、前記構造解析結果において変更されたノードにおける変更種別をさらに含み、
前記構造差分情報は、前記差分情報に示される変更されたノードおよびそのノードの変更種別をもとに作成した、前記半構造データにおける変更前のパス情報および変更後のパス情報を含むことを特徴とする請求項１に記載の半構造データ差分管理方法。
【請求項３】
前記半構造データ差分管理システムが、
前記新たに受信した半構造データを順次前記記憶部に蓄積し、前記記憶部に前記半構造データが所定数の蓄積されたとき、前記記憶部に蓄積された所定数の半構造データを構造解析して、前記構造重ね合せデータを作成し、
前記作成した構造重ね合せデータと、前記記憶部に記憶された過去の構造の重ね合わせデータとの差分を抽出した構造差分抽出データを作成することを特徴とする請求項１に記載の半構造データ差分管理方法。
【請求項４】
前記記憶部は、前記アプリケーションプログラムの識別情報ごとに、当該アプリケーションプログラムに関する前記構造差分情報の通知先であるメールアドレスを示した情報を記憶し、
前記半構造データ差分管理システムが、
前記構造差分情報を出力するとき、前記記憶部から、当該構造差分情報が対象とするアプリケーションプログラムの識別情報に対応するメールアドレスを読み出し、前記読み出したメールアドレスを宛先とした前記構造差分情報の電子メール送信要求とともに出力することを特徴とする請求項１ないし請求項３のいずれか１項に記載の半構造データ差分管理方法。
【請求項５】
前記半構造データ差分管理システムが受信する半構造データは、１以上のデータタイプの半構造データであり、
前記半構造データ差分管理システムが、
前記構造重ね合せデータを作成するとき、前記同じデータタイプの半構造データ同士において同じパスを示すノードを重ね合せて作成し、
前記構造差分抽出データを作成するとき、前記記憶部に記憶された構造重ね合せデータのうち、前記新たに受信した前記半構造データと同じデータタイプの構造重ね合せデータと、当該半構造データの構造解析結果との前記差分情報を抽出し作成することを特徴とする請求項１に記載の半構造データ差分管理方法。
【請求項６】
前記アプリケーションプログラムが、前記半構造データの参照に用いるコンフィグレーションファイルを編集するコンフィグレーションファイル編集装置が、
前記半構造データ差分管理システムから出力された構造差分情報を受信したとき、
前記受信した構造差分情報に示されるアプリケーションプログラムの識別情報をキーとして、前記コンフィグレーションファイルを記憶する記憶装置から、当該アプリケーションプログラムが参照するコンフィグレーションファイルを検索し、この検索されたコンフィグレーションファイルに示される参照パスのうち、前記受信した構造差分情報に示される変更前のパス情報を参照パスとする検索項目に関する参照パスとして、当該当該構造差分情報に示される変更後のパス情報を追加することを特徴とする請求項２に記載の半構造データ差分管理方法。
【請求項７】
前記アプリケーションプログラムが、前記変更後の半構造データを含むデータベースから前記半構造データを検索するとき、
前記編集されたコンフィグレーションファイルを参照して、前記変更後のパス情報を追加したクエリを生成し、
前記変更後のパス情報を追加したクエリを用いて、前記変更後の半構造データを含むデータベースを検索することを特徴とする請求項６に記載の半構造データ差分管理方法。
【請求項８】
半構造データの変更管理を行う半構造データ差分管理システムを用いた半構造データ差分管理方法であって、
前記半構造データ差分管理システムが、
データ受信部を介して、前記１以上の半構造データを受信し、
前記データ受信部を介して、前記半構造データの更新を行う端末装置から、当該半構造データの構造に関する更新情報を受信し、
参照構造情報受信部を介して、前記半構造データを参照するアプリケーションプログラムごとに、当該アプリケーションプログラムが参照する前記半構造データの対象部分を示した参照構造情報を受信して記憶部に記憶し、
前記記憶部に記憶された参照構造情報を参照して、前記受信した更新情報から、前記アプリケーションプログラムごとに、当該アプリケーションプログラムが参照する更新情報を絞り込んだ構造差分絞込みデータを作成し、
前記作成した構造差分絞込みデータを示す構造差分情報を、前記半構造データの更新を行う端末装置へ出力することを特徴とする半構造データ差分管理方法。
【請求項９】
請求項１ないし請求項８のいずれか１項に記載の半構造データ差分管理方法をコンピュータに実行させることを特徴とする半構造データ差分管理プログラム。
【請求項１０】
半構造データの変更管理を行う半構造データ差分管理システムであって、
１以上の前記半構造データを受信するデータ受信部と、
前記半構造データを参照するアプリケーションプログラムごとに、当該アプリケーションプログラムが参照する前記半構造データの対象部分を示した参照構造情報を受信する参照構造情報受信部と、
前記受信した半構造データの構造解析を行う構造解析部と、
前記受信した参照構造情報を記憶する参照構造情報格納領域と、過去に前記構造解析を行ったデータ同士で同じパスを示すノードを重ね合せた構造重ね合せデータを記憶する構造重ね合せデータ格納領域とを備える記憶部と、
前記記憶部に記憶された構造重ね合せデータおよび新たに受信した前記半構造データの構造解析結果それぞれに含まれるノードを対比し、前記構造解析結果において変更されたノードを示す差分情報を含む構造差分抽出データを作成する構造差分抽出部と、
前記記憶部に記憶された参照構造情報を参照して、前記作成した構造差分抽出データから、前記アプリケーションプログラムごとに、当該アプリケーションプログラムが参照する前記差分情報を抽出した構造差分絞込みデータを作成する構造差分絞込み部と、
前記作成した構造差分絞込みデータを当該アプリケーションプログラムに関する構造差分情報として出力する構造差分出力部と、
を備えることを特徴とする半構造データ差分管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース内の半構造データにおけるデータ構造の変更に対して、この半構造データを参照するアプリケーションが用いるコンフィグレーションファイルの修正技術に関する。
【背景技術】
【０００２】
昨今、企業内で情報システムを構築する場合、データベースとしてＸＭＬ（Extensible Markup Language）等の半構造データを用いたデータベースを用いることがある（特許文献１、非特許文献１参照）。このデータベースは、ＸＭＬデータ等の半構造データをそのまま格納するものなので、データベースに格納されるデータに変更があった場合でも比較的柔軟に対応できるという利点がある。このデータベースに格納されるデータのデータ構造が変更されると、このデータベースに対しクエリ等を生成するアプリケーション側の修正も必要になる。
【０００３】
図２を用いて、前記した背景技術を詳細に説明する。図２は、ＸＭＬデータを格納するデータベースシステムの例を示す図である。
【０００４】
図２のデータシステムは、ＸＭＬデータベース２１３に格納された帳票（帳票データ）２００を一次利用するシステム（以下、一次システム２０３という）と、この帳票データ２００を二次利用するシステム（以下、二次システム２０４という）とを備える。この一次システム２０３や二次システム２０４は、帳票検索システムや監査システム等、利用者端末装置２０５に対して、様々なサービスを提供する複数のアプリケーションを指す。
【０００５】
例えば、一次システム２０３は、帳票登録部２１５と、ＸＭＬデータベース２１３とを備える。この帳票登録部２１５は、帳票登録プログラムにより、ネットワーク２０１（例えば、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）等）を経由して帳票データ２００の入力を受け付けると、この帳票データ２００をＸＭＬデータベース２１３に登録する。また、二次システム２０４は、アプリケーションとして、このＸＭＬデータベース２１３から帳票データ２００（ＸＭＬデータ）を検索するためのクエリを作成する参照プログラム２１９を備える。利用者端末装置２０５は、この参照プログラム２１９により作成されたクエリを用いてＸＭＬデータベース２１３に格納された帳票データ２００（ＸＭＬデータ）を検索する。
【０００６】
帳票データ２００は、ＸＭＬデータ等の半構造データとする。半構造データとは、構造は持っているものの、ＲＤＢ（Relational Database）のように予め定めたレイアウトに拘束されない可変的なデータのことをいう。ＸＭＬは、文書やデータの意味や構造を記述するための言語であり、文書の一部をタグと呼ばれる特別な文字列で囲うことにより修飾情報を文章中に記述する言語である。
【０００７】
図２に示すデータベースシステムを運用中、法改正等により、入力データとなる帳票データ２００のフォーマットは頻繁に変更される可能性がある。この帳票データ２００のフォーマットの変更の例として以下のようなものが考えられる。
【０００８】
・項目の集約：  ＜政令＞＜省令＞→＜政省令＞
・項目の分割：  ＜氏名＞→＜氏名＞／＜姓＞と＜氏名＞／＜名＞
・項目名の変更：  ＜電話番号＞→＜ＴＥＬ＞
・属性の変更：  ＜単位＝“月”＞→＜単位＝“期”＞
【０００９】
図２に示すように、帳票データ２００が変更された場合、一次システム２０３の帳票登録部２１５は、この変更後の帳票データ２００をそのままＸＭＬデータベース２１３に蓄積する。つまり、一次システム２０４側のアプリケーション開発者２０７は、特に変更作業を行う必要がない。しかし、二次システム２０３側のアプリケーション開発者２１８は、帳票の項目がデータベースのどの階層にあるかの対応付けを行う参照プログラム２１９の修正を行う必要がある。例えば、帳票データ２００のタグが＜政令＞＜省令＞→＜政省令＞に変更された場合、アプリケーション開発者２１８は、参照プログラム２１９中のパスを、変更前はタグ＜政令＞の値を参照していたのを、変更後はタグ＜政省令＞の値を参照するように修正する必要がある。このときの手順は例えば以下のようになる。
【００１０】
まず、アプリケーション開発者２１８は、ＸＭＬデータベース２１３の検索に関する不具合を発見すると、ＸＭＬデータベース２１３内のＸＭＬデータを参照する。そして、アプリケーション開発者２１８は、この参照プログラム２１９が正しいパスから正しいデータを参照できているか否かを確認する。ここで、この参照プログラム２１９が正しいパスから正しいデータを参照できていない場合には、アプリケーション開発者２１８は、該当データを参照する上での正しいパス情報を取得する。つまり、ＸＭＬデータベース２１３内の変更後のＸＭＬデータから参照プログラム２１９が本来参照すべきパス情報を取得する。そして、アプリケーション開発者２１８は、その他の検索項目についてタグ名称等に変更がないことを確認する。最後に、アプリケーション開発者２１８は、変更を検知した全ての検索項目について、検索対象タグ名称とそのパス情報を変更し、参照プログラム２１９が正しく修正されたことを確認する。
【００１１】
より具体的に説明すると、アプリケーション開発者２１８は、不具合の発生しているＸＭＬデータを取得し、そのＸＭＬデータの変更内容を二次システム２０４側の参照プログラム２１９が参照しているコンフィグレーションファイル（図示せず）に記載されているタグとそのパス情報等のデータ内容と突合せながら確認する。なお、この参照プログラム２１９は、例えば、関数型言語ＸＱｕｅｒｙ等を用いＸＭＬデータ問合せを行うクエリ生成プログラムである。つまり、アプリケーション開発者２１８は、従来の検索対象のタグと新しいＸＭＬデータに関するタグを抽出する。そして、アプリケーション開発者２１８は、該当の参照プログラム（クエリ生成プログラム）２１９もしくはプログラムが参照しているコンフィグレーションファイルに記載されているタグとそのパス情報等のデータ内容を漏れなく、正しく変更する。そして、アプリケーション開発者２１８は、これらの作業を該当アプリケーションに関連する他の検索項目についても繰り返し、全体的な漏れがないことを確認して作業を終了する。
【特許文献１】特開平１０−２４０７５２号公報
【非特許文献１】Roy Goldman, Jennifer Widom,DataGuides: Enabling Query Formulation and Optimization in Semistructured Databases, In Proceedings of VLDB Conference, pp.436-445, 1997.
【発明の開示】
【発明が解決しようとする課題】
【００１２】
前記したように、従来のシステムでは、データベースの検索の不具合を検出すると、アプリケーション開発者が、手作業でこのデータベースの検索の不具合の原因を特定したり、コンフィグレーションファイル等を修正したりする必要があり、作業負荷が大きかった。また、このような検索の不具合が発生することを検知するまでに、時間を要する可能性があり、不適切な検索結果を提供する時間も長くなることがあった。
【００１３】
本発明は、一次システムのデータを変更した場合等に発生する二次システム側のアプリケーション開発者の作業量を低減し、かつ前記したような不適切な検索結果を提供する時間を短縮することを目的とするものである。
【課題を解決するための手段】
【００１４】
前記した課題を解決するため、本発明は、入力となる半構造データに対して、変更前後の半構造データの差分を抽出した構造差分抽出データと、半構造データを参照する各アプリケーションが半構造データのどの構造を参照しているかを示す参照構造情報とを用いて半構造データを参照しているアプリケーションに対して、このアプリケーションが影響を受ける半構造データの差分を部分構造木として抽出した構造差分絞込みデータを生成し、これを構造差分情報として出力する構成とした。
【発明の効果】
【００１５】
本発明によれば、帳票等のデータの変更時、二次システム側のアプリケーション開発者は自システムに関連のある差分の有無を検知でき、システム変更の要否を即座に判断できるようになる。また、本発明によれば、アプリケーション開発者は自システムのアプリケーションに影響のある差分情報を確認できるようになり、アプリケーションを修正するのにかかる手間を低減できる。さらに、二次システム側のアプリケーションの開発者はアプリケーション利用者に対して正しい検索結果を継続的に提供することが可能になる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明を実施するための最良の形態（以下、実施の形態という）を、第１の実施の形態および第２の実施の形態に分けて説明する。図１は、各実施の形態におけるデータベースシステムの例を示す図である。
【００１７】
≪第１の実施の形態≫
本実施の形態のデータベースシステムは、半構造データ差分管理システム（半構造データ差分管理装置）１００と、一次システム２０３と、二次システム２０４と、メールサーバ１２３と、この二次システム２０４を利用する利用者端末装置２０５とを含んで構成される。なお、破線で示したコンフィグレーションファイル編集装置２０６については、別途第２の実施の形態として説明する。
【００１８】
半構造データ差分管理システム１００は、一次システム２０３の半構造データ収集元システム１０１、二次システム２０４のアプリケーションサーバ１０２およびメールサーバ１２３と、ネットワーク１０３を介して接続され、互いに通信可能な状態にあるものとする。この半構造データ差分管理システム１００は、半構造データ収集元システム１０１の半構造データに変更があったとき、その変更により影響を受けるアプリケーションプログラム１０２３に対して、その影響の原因となる半構造データの差分情報（構造差分情報）を出力する。
【００１９】
半構造データ収集元システム１０１は、半構造データ差分管理システム１００やアプリケーションサーバ１０２が処理対象とする半構造データをデータベース１０１１に格納している。そして、この半構造データ収集元システム１０１は、ＤＢＭＳ（DataBase Management System）１０１４を備え、このＤＢＭＳ１０１４によりデータベース１０１１内の半構造データの管理を行う。また、半構造データ収集元システム１０１は、このＤＢＭＳ１０１４により、半構造データを半構造データ差分管理システム１００やアプリケーションサーバ１０２に対して随時送信するものとする。
【００２０】
図６は、本実施の形態における半構造データの例を示す図である。ここでは半構造データとしてＸＭＬデータを用いる場合を例に説明する。図６に示すＸＭＬデータ６００，６１０は、出張報告書に関するＸＭＬデータであり、“日立花子”、“2006/11/17”、“工程会議”、“凸凹銀行”等の情報がそれぞれの属性を示すタグとともに記載されている。
【００２１】
図１の説明に戻る。このような半構造データを格納する半構造データ収集元システム１０１は、半構造データ差分管理システム１００と同様、ディスプレイ、キーボード、ＣＰＵ（中央処理装置）、通信制御装置、主メモリ、半構造データに格納する磁気ディスク装置、システムバスから構成される。また、アプリケーションサーバ１０２も、ディスプレイ、キーボード、ＣＰＵ（中央処理装置）、通信制御装置、主メモリ、磁気ディスク装置、システムバス等から構成される。なお、図１において、ＣＰＵ１０１２、主メモリ１０１３、半構造データを格納するデータベース１０１１以外の構成は図示を省略している。
【００２２】
また、アプリケーションサーバ１０２は、半構造データ収集元システム１０１から送信された半構造データをデータベース１０４に格納し、このデータベース１０４内の半構造データを用いて様々なサービスを提供する。例えば、このアプリケーションサーバ１０２は、利用者端末装置２０５からの要求に応じ、データベース１０４内の半構造データの検索サービス等を提供する。このアプリケーションサーバ１０２も、半構造データ差分管理システム１００同様、ディスプレイ、キーボード、ＣＰＵ（中央処理装置）、通信制御装置、主メモリ、磁気ディスク装置、システムバスから構成される。なお、ここでは、ＣＰＵ１０２１および主メモリ１０２２以外の構成は図示を省略している。また、この主メモリ１０２２は、アプリケーションプログラム１０２３およびこのアプリケーションプログラム１０２３を実行するときに参照するコンフィグレーションファイル（設定ファイル）１０２９を備える。このアプリケーションプログラム１０２３は、利用者端末装置２０５からの検索条件を受信する検索条件受信部１０２４、この受信した検索条件をもとにコンフィグレーションファイルからパス情報を取得するパス情報取得部１０２５、取得したパス情報をもとにクエリを生成するクエリ生成部１０２６、生成したクエリを実行して半構造データの検索を実行するクエリ実行部１０２７、利用者端末装置２０５に表示する検索画面を作成する検索画面作成部１０２８等を備える。なお、この検索条件受信部１０２４、パス情報取得部１０２５、クエリ生成部１０２６、クエリ実行部１０２７および検索画面作成部１０２８は、ＣＰＵ１０２１がアプリケーションプログラム１０２３を主メモリ１０２２上にロードし、実行することで実現される。また、図１において、データベース１０４はアプリケーションサーバ１０２の外部に設置されるように描いているが、アプリケーションサーバ１０２の内部、例えば、磁気ディスク装置（図示省略）内に設けるようにしてもよい。
【００２３】
メールサーバ１２３は、半構造データ差分管理システム１００から、アプリケーションプログラム１０２３に関する構造差分情報と、このアプリケーションプログラム１０２３の開発者のメールアドレスを含む電子メールの送信要求を受信すると、このメールアドレス宛の電子メールにこの構造差分情報含めて送信する。これにより、アプリケーション開発者は、半構造データの変更に伴いアプリケーションプログラム１０２３の修正が必要であることと、そのアプリケーションのうち、どの部分を修正すればよいかをすぐに知ることができる。
【００２４】
次に、半構造データ差分管理システム１００の構成について説明する。半構造データ差分管理システム１００は、ディスプレイ１０５、キーボード１０６、ＣＰＵ（中央処理装置）１０７、通信制御装置１０８、主メモリ１０９、磁気ディスク装置１１０、システムバス１１１から構成される。
【００２５】
ディスプレイ１０５は、この半構造データ差分管理システム１００における処理の実行状況等を表示するために使用する。キーボード１０６は、半構造データ差分管理システム１００における処理の実行等を指示するコマンドを入力するために使用する。ＣＰＵ１０７は、半構造データ差分管理システム１００を構成する各種プログラムを実行する。通信制御装置１０８は、ネットワーク１０３を介して、半構造データ収集元システム１０１、アプリケーションサーバ１０２、メールサーバ１２３等との間でデータの送受信を行うために使用する。主メモリ１０９は半構造データ差分管理システム１００による処理を実行するための各種プログラムおよび一時的なデータを保持するために使用する。この主メモリ１０９は、ＲＡＭ（Random Access Memory）等の半導体メモリにより構成される。磁気ディスク装置１１０は、前記した各種プログラムや、この半構造データ差分管理システム１００が生成するデータを格納するために使用する。なお、この磁気ディスク装置１１０は、例えばＨＤＤ（Hard Disk Drive）であり、フラッシュメモリ等の記憶装置で代用するようにしてもよい。システムバス１１１はこれらの各種装置を接続するために使用する。なお、図１において、磁気ディスク装置１１０に格納される各プログラムが各処理部として主メモリ１０９上にロードされた状態を示している。
【００２６】
主メモリ１０９には、磁気ディスク装置１１０から構造差分抽出制御部１１２、データ受信部１１３、構造解析部１１４、構造重ね合せ部１１５、構造差分抽出部１１６、構造差分絞込み部１１７、参照構造受信部１１８および構造差分出力部１１９（以上まとめて半構造データ差分管理部という）を実現するプログラムがロードされ、ワークエリア１２０が確保される。また、磁気ディスク装置１１０中には、構造重ね合せデータ格納領域１２１および参照構造情報格納領域１２２が確保される。
【００２７】
図３は、図１の半構造データ差分管理システム１００における、各種処理部間のデータの流れを示す図である。図３を用いて半構造データ差分管理システム１００における、各種処理部間のデータの流れを示す。なお、半構造データ差分管理システム１００におけるデータの流れは領域３００に示す。
【００２８】
図３に示すように、半構造データ収集元システム１０１は、半構造データ３０１が登録される都度、この半構造データ３０１をデータ受信部１１３（図１の半構造データ差分管理システム１００のデータ受信部１１３）およびアプリケーションサーバ１０２へ送信する。アプリケーションサーバ１０２は受信した半構造データ３０１をデータベース１０４へ格納し、この半構造データ３０１の内容を参照する。そして、アプリケーションサーバ１０２は、このアプリケーションサーバ１０２のアプリケーションプログラム１０２３（図１参照）の実行により半構造データ３０１の参照対象が変わると、このアプリケーションプログラム１０２３の実行により参照対象となる全ての部分構造の情報（参照構造情報３０６）を作成し、半構造データ差分管理システム１００（図１参照）へ出力する。
【００２９】
＜参照構造情報作成処理＞
半構造データ差分管理システム１００（図１参照）は、図３に示すように、参照構造情報受信部１１８により、アプリケーションサーバ１０２の実行により、参照構造情報３０６を受信すると、この参照構造情報３０６を参照構造情報格納領域１２２に格納しておく。
【００３０】
＜構造差分抽出データ作成処理＞
また、半構造データ差分管理システム１００のデータ受信部１１３は、図３に示すように、半構造データ収集元システム１０１から半構造データ３０１を受信すると、これを構造解析部１１４へ出力する。構造解析部１１４は、この受信した半構造データ３０１の構造解析を行い、構造解析済みデータ３０２を生成する。なお、ここでいう構造解析とは、例えば、ＸＭＬデータ等の半構造データを木構造に解析することである。構造解析部１１４は、この生成した構造解析済みデータ３０２を構造重ね合せ部１１５および構造差分抽出部１１６へ出力する。
【００３１】
構造重ね合せ部１１５は、構造解析済みデータ３０２の持つ構造に関する情報を構造重ね合せデータ格納領域１２１に格納されている構造重ね合せデータ３０３に登録して、更新済み構造重ね合せデータ３０４を作成する。そして、この更新済み構造重ね合せデータ３０４を構造重ね合せデータ格納領域１２１に格納する。
【００３２】
構造差分抽出部１１６は、構造解析部１１４から出力された解析済みデータ３０２と、構造重ね合せデータ格納領域１２１に格納されている構造重ね合せデータ３０３とが持つ構造に関する情報を照合し、構造差分抽出データ３０５を作成する。このようにして、構造差分抽出部１１６は、半構造データが更新されたとき、この更新前後で半構造データ３０１がどのように変化したか示す構造差分抽出データ３０５を作成する。
【００３３】
＜構造差分情報作成処理＞
次に、構造差分絞込み部１１７は、参照構造情報格納領域１２２に格納されている参照構造情報３０６と、構造差分抽出部１１６から出力された構造差分抽出データ３０５とを照合し、構造差分絞込みデータ３０７を生成する。つまり、半構造データ３０１の差分情報のうち、この半構造データ３０１の変更によりアプリケーションプログラム１０２３の実行により影響を受ける半構造データ３０１の差分情報を出力する。そして、構造差分出力部１１９は、出力された構造差分絞込みデータ３０７をもとに、構造差分情報３０８を作成する。
【００３４】
なお、構造解析済みデータ３０２、構造重ね合せデータ３０３、更新済み構造重ね合せデータ３０４、構造差分抽出データ３０５、参照構造情報３０６、構造差分絞込みデータ３０７および構造差分情報３０８の詳細は図面を用いて後記する。
【００３５】
次に、図１を参照しつつ、図４を用いて、半構造データ差分管理システム１００の処理の流れを説明する。図４は、図１の半構造データ差分管理システム１００の処理手順を示すＰＡＤ（Ｐｒｏｂｌｅｍ  Ａｎａｌｙｓｉｓ  Ｄｉａｇｒａｍ）図である。
【００３６】
図１の半構造データ差分管理システム１００が起動されると、このシステムはまず、構造差分抽出制御部１１２を起動する（Ｓ４００）。次に、半構造データ差分管理システム１００は参照構造情報受信部１１８を起動する（Ｓ４１０）。そして、半構造データ差分管理システム１００は構造差分出力部１１９を起動する（Ｓ４２０）。
【００３７】
この構造差分抽出制御部１１２は、半構造データを受信すると、この半構造データの変更前のデータとの差分を抽出する。その詳細については図５で説明する。また、この参照構造情報受信部１１８は、アプリケーションプログラム１０２３が参照する半構造データの構造のうち、参照の対象とする構造に関する情報を、アプリケーションサーバ１０２から受信し蓄積する。その詳細については図１１で説明する。さらに、この構造差分出力部１１９は、アプリケーションの開発者に対して通知する差分情報を作成する。その詳細については図１９で説明する。
【００３８】
この後、半構造データ差分管理システム１００はキーボード１０６からのシステム停止コマンドが入力された場合には（Ｓ４３０の“ある”）、構造差分抽出制御部１１２を停止（Ｓ４４０）し、参照構造情報受信部１１８を停止（Ｓ４５０）し、構造差分出力部１１９を停止（Ｓ４６０）するが、それまでは各処理部を起動させたままにする。
【００３９】
＜参照構造情報作成処理の詳細＞
次に、図１を参照しつつ、図１１を用いて、参照構造情報受信部１１８の処理について説明する。図１１は、図１の参照構造情報受信部１１８の処理手順を示すＰＡＤ図である。この参照構造情報受信部１１８は、図１のアプリケーションプログラム１０２３の実行により参照される半構造データの範囲（参照対象）が変更されると、アプリケーションサーバ１０２から、このアプリケーションプログラム１０２３の参照構造情報を受信し、参照構造情報格納領域１２２に格納する。
【００４０】
参照構造情報受信部１１８は、アプリケーションプログラム１０２３が実行されるごとに参照構造情報を受信する（Ｓ１１００）。つまり、アプリケーションプログラム１０２３の参照対象が変更されると、参照構造情報受信部１１８は、アプリケーションサーバ１０２から、このアプリケーションプログラム１０２３の実行により参照対象となる全ての部分構造の情報（参照構造情報）を受信する。この参照構造情報は、当該アプリケーションプログラム１０２３のアプリケーション識別子、このアプリケーションプログラム１０２３の参照する半構造データタイプ、その半構造データの参照パス等を示した情報である。この参照構造情報は、例えば、アプリケーション識別子“ＡＰ００１”、半構造データ識別子“出張報告書”、参照パス“／出張報告書／訪問先リスト／訪問先”といった情報である。
【００４１】
次に、参照構造情報受信部１１８は、アプリケーションサーバ１０２から受信した全ての参照構造情報についてＳ１１２０の処理を繰り返し実行する（Ｓ１１１０）。Ｓ１１２０において、参照構造情報受信部１１８は、受信した全ての参照構造情報を参照構造情報格納領域１２２に格納する。
【００４２】
また、Ｓ１１１０の後、参照構造情報受信部１１８は、Ｓ１１３０において、Ｓ１１００で参照構造情報を受信する以前に参照構造情報格納領域１２２に格納していた当該アプリケーションプログラム１０２３の参照構造情報を削除する。つまり、参照構造情報受信部１１８は、参照構造情報格納領域１２２に、最新の参照構造情報を格納するようにする。このようにすることで、図１の構造差分絞込み部１１７が構造差分絞込みデータ３０７（図３参照）を作成する際、最新の参照構造情報を用いて構造差分絞込みデータ３０７を作成することができる。
【００４３】
図１２は、図１の参照構造情報格納領域１２２に格納される参照構造情報の例を示す図である。図１２に示すように、参照構造情報は、アプリケーション識別子１３１０ごとに、アプリケーションプログラム１０２３の実行により参照される半構造データタイプ１３２０と、参照パス１３３０とを示した情報である。この参照構造情報は、例えば、図１２に示すようなテーブル（表）形式で参照構造情報格納領域１２２に格納される。図１２に示すテーブル１３００は、アプリケーション識別子“ＡＰ００１”を付与されたアプリケーションプログラム１０２３の参照構造情報を示している。また、テーブル１３４０，１３５０は、それぞれ、アプリケーション識別子“ＡＰ００２”、“ＡＰ００３”を付与されたアプリケーションプログラム１０２３の参照構造情報を示している。
【００４４】
＜構造差分抽出データ作成処理の詳細＞
次に、図１、図４、図６、図７を参照しつつ、図５を用いて、構造差分抽出制御部１１２について説明する。図５は、図１の構造差分抽出制御部１１２の処理手順を示すＰＡＤ図である。図７は、本実施の形態の解析済みデータおよび構造重ね合せデータの例を示す図である。
【００４５】
図１の構造差分抽出制御部１１２は、データ受信部１１３、構造解析部１１４、構造差分抽出部１１６、構造重ね合せ部１１５、構造差分絞込み部１１７を制御する。
【００４６】
なお、図５において、データ受信部１１３が行う処理を符号５００、構造解析部１１４が行う処理を符号５０１、構造差分抽出部１１６が行う処理を符号５０２、構造重ね合せ部１１５が行う処理を符号５０３、構造差分絞込み部１１７が行う処理を符号５０４に示す。図５に示すように、構造差分抽出制御部１１２は、以下のＳ５０６〜Ｓ５１４の処理を繰り返す（Ｓ５０５）。まず、データ受信部１１３は、半構造データ収集元システム１０１から受信した半構造データ（図６参照）について、受信した半構造データに半構造データ識別子を割り当てる（Ｓ５０６）。また、データ受信部１１３は、受信した半構造データに受信時刻を割り当てる（Ｓ５０７）。
【００４７】
次に、Ｓ５０８では、構造解析部１１４が、受信した半構造データに対して、タグの対応等の構文解析を行い、半構造データを木構造で示した解析済みデータを作成する。なお、図７の解析済みデータ７００は図６の半構造データ６００を解析した解析済みデータであり、構造解析済みデータ７０４は図６の半構造データ６１０を解析した解析済みデータである。
【００４８】
続いて、構造差分抽出部１１６は、図５のＳ５０９〜Ｓ５１２の処理を行う。まず、Ｓ５０９では、構造差分抽出部１１６は、Ｓ５０８で作成した解析済みデータと同じ半構造データタイプタイプの構造重ね合せデータが、構造重ね合せデータ格納領域１２１中にあるか否かを判断する。この半構造データタイプとは、“出張報告書”や“業務日報”等の、帳票の種類を示す情報である。半構造データ差分管理システム１００がこのような半構造データタイプを用いることで帳票の種類（例えば“出張報告書”や“業務日報”等）ごとの変更を管理できるようにしている。なお、この半構造データタイプを示す情報は、例えば、前記した図６に示すように、半構造データの冒頭に直接書き込まれているものとする。すなわち、図６に示す半構造データ６００，６１０の半構造データタイプは“出張報告書”であることを示す。
【００４９】
図５の説明に戻る。Ｓ５０９において、構造差分抽出部１１６が、構造重ね合せデータ格納領域１２１中に、該当する構造重ね合せデータがないと判断した場合には（Ｓ５０９で“なし”）、構造差分抽出部１１６は、初期構造重ね合せデータを作成する（Ｓ５１０）。つまり、構造重ね合せデータ格納領域１２１中に、該当する構造重ね合せデータがない場合には、構造差分抽出部１１６は、Ｓ５０８で作成した解析済みデータをそのまま構造重ね合せデータの初期データとする。
【００５０】
一方、構造差分抽出部１１６が、構造重ね合せデータ格納領域１２１中に、既に構造重ね合せデータがあると判断した場合には（Ｓ５０９で“あり”）、構造重ね合せデータ格納領域１２１中から構造重ね合せデータを読み込む（Ｓ５１１）。構造重ね合せデータとは、今まで入力された複数の解析済みデータを順次重ね合わせることにより作成したデータである。
【００５１】
次に、Ｓ５０９の後、Ｓ５１２では、構造差分抽出部１１６は、構造重ね合せデータ格納領域１２１から読み出した構造重ね合せデータと、解析済みデータとを用いて、構造差分抽出データを作成する。この構造差分抽出データとは、今まで入力された複数の解析済みデータを順次重ね合わせた構造重ね合せデータの構造と、新規に入力された解析済みデータの構造とを比較し、変更された部分構造を抽出したものである。
【００５２】
この構造差分抽出データの生成過程の一例を、図８を用いて説明する。図８は、本実施の形態の構造差分抽出データの生成過程の例を示す図である。ここでは、半構造データの変更種別が、“削除”、“変更”および“追加”である場合を例に説明する。図８において、構造解析済みデータ７０４が入力され、図１の構造差分抽出部１１６は、構造重ね合せデータ格納領域１２１から構造解析済みデータ７０４と同じ半構造データタイプ（この場合“出張報告書”）の構造重ね合せデータ７０３を読み込む。そして、構造差分抽出部１１６は、構造解析済みデータ７０４と構造重ね合せデータ７０３とを照合することにより、構造差分抽出データ８００を作成する。
【００５３】
この構造差分抽出データの生成において、構造差分抽出部１１６は、まず始めに、既に構造重ね合せデータ格納領域１２１（図１参照）に登録された構造重ね合せデータ７０３について、構造解析済みデータ７０４との差分情報を抽出する。すなわち、構造差分抽出部１１６は、構造重ね合せデータ７０３の各ノード（例えば、“／出張報告書”、“／出張報告書／出張者”、“／出張報告書／日付”、“／出張報告書／用件”等）ごとに構造解析済みデータ７０４と比較し、当該ノードが（１）“西暦”や“和暦”といった属性としての変化があるか否か、（２）構造解析済みデータ７０４中に存在するか否かを判定することにより、その差分情報を出力する。ここでは、構造重ね合せデータ７０３において、“／出張報告書／日付”の単位が、構造解析済みデータ７０４において和暦から西暦に変更され、“／出張報告書／用件”が削除されている。従って、（１）に関しては符号８０１に示すように変更種別“変更”を設定した情報が出力される。また、（２）に関しては符号８０２に示すように変更種別“削除”を設定した情報が出力される。このようにすることで、構造差分抽出部１１６は、構造解析済みデータ７０４について属性が変化した項目や、削除された項目を検出することができる。
【００５４】
次に、構造差分抽出部１１６は、構造解析済みデータ７０４における各ノードについて、構造重ね合せデータ７０３との差分情報を抽出する。すなわち、構造差分抽出部１１６は、構造解析済みデータ７０４の各ノード（例えば、“／出張報告書”、“／出張報告書／出張者”、“／出張報告書／日付”等）ごとに、構造重ね合せデータ７０３と比較し、当該ノードが、（３）構造解析済みデータ７０４中に存在するか否かを判定する。ここでは、構造解析済みデータ７０４において、“／出張報告書／訪問先リスト／用務先”と“／出張報告書／訪問先リスト／用務内容”が追加されている。従って、（３）に関しては符号８０３，８０４に示すように変更種別“追加”を設定した情報が出力される。このようにすることで、構造差分抽出部１１６は構造解析済みデータ７０４について、追加された項目を検出することができる。
【００５５】
また、構造差分抽出部１１６は、解析済みデード７０４において、符号８０３，８０４に示されるノード（追加されたノード）の１つ上の階層のノードに関する情報も抽出する。そして、構造差分抽出部１１６は、この１つ上の階層のノードについて、（４）該当の構造が構造重ね合せデータ７０３中に存在するか否かを判定する。ここでは、このノードの下位に新たにノードが加わっているので、構造差分抽出部１１６は、符号８０５に示すように変更種別“変更”を設定する。また、このノードのその下位に存在する“／出張報告書／訪問先リスト／訪問先／用務先”および“／出張報告書／訪問先リスト／訪問先／用務内容”を追記する。
【００５６】
なお、構造差分抽出部１１６は、構造重ね合せデータ７０３および構造解析済みデータ７０４のノードのうち、特に追加も削除も変更もされていないノードには変更種別は設定しない。
【００５７】
このようにして構造差分抽出部１１６は、構造重ね合せデータ７０３と構造解析済みデータ７０４に基づいて、構造差分抽出データ８００を作成する。なお、この構造差分抽出データ８００は、構造解析済みデータ７０４の受信時刻８０６における構造差分抽出データである。このため、構造差分抽出部１１６は、構造差分抽出データ８００に受信時刻８０６を設定する。
【００５８】
図５の説明に戻る。Ｓ５１２において、入力された解析済みデータに対する構造差分抽出データが作成された後、構造重ね合せ部１１５は、この解析済みデータを、Ｓ５１０またはＳ５１１で作成された構造重ね合せデータに重ね合わせ、構造重ね合せデータを更新する（Ｓ５１３）。この構造重ね合せデータとは、今まで入力された複数の解析済みデータのうち、同じ半構造データタイプにおいて同じパスを示すノードが重なるように順次重ね合わせたものである。
【００５９】
この構造重ね合せ部１１５が構造重ね合せデータを作成していく過程について、前記した図７を用いて説明する。ここでは、構造重ね合せ部１１５が解析済みデータ７００，７０２，７０４を既存の構造重ね合せデータ上に順次重ね合わせることにより、構造重ね合せデータを作成する場合を例に説明する。
【００６０】
解析済みデータ７００が入力されると、構造重ね合せ部１１５は、最初の段階では構造重ね合せデータ格納領域１２１にはデータは登録されていないので、この解析済みデータ７００をそのまま登録し、構造重ね合せデータは符号７０１に示す状態となる。
【００６１】
次に、解析済みデータ７０２が入力されると、構造重ね合せ部１１５は、既存の構造重ね合せデータ７０１と構造、ノードの内容が重複する部分については何も行わず、構造重ね合せデータ７０１上に対応する部分がなかった部分構造を新たに登録する。また、構造重ね合せデータ７０１と構造上対応する部分であるが、ノードの内容が異なる部分構造がある場合、構造重ね合せ部１１５は、構造重ね合せデータ７０３の該当部分に解析済みデータ７０２の該当部分の情報を上書きする。
【００６２】
例えば、図７の解析済みデータ７０２上にある“単位＝和暦”７０６は、構造重ね合せデータ７０１上に対応する部分がない。従って、構造重ね合せ部１１５は、解析済みデータ７０２上にある“単位＝和暦”７０６は構造重ね合せデータ７０３に登録する（符号７０７参照）。
【００６３】
次に、構造解析済みデータ７０４が入力されると、既存の構造重ね合せデータ７０３と構造、ノードの内容が重複する部分については何も行わず、構造重ね合せデータ７０３上に対応する部分がなかった部分構造が新たに登録される。また、構造重ね合せデータ７０３と構造上対応する部分であるが、ノードの内容が異なる部分構造がある場合、構造重ね合せデータ７０３の該当部分に構造解析済みデータ７０４の該当部分を上書きする。
【００６４】
例えば、構造解析済みデータ７０４上にある“用務先”７０８、“用務内容”７０９は、構造重ね合せデータ７０３上に対応する部分がない。従って、構造解析済みデータ７０４上にある“用務先”７０８、“用務内容”７０９は構造重ね合せデータ７０５に登録される（“用務先”７１０、“用務内容”７１１参照）。
【００６５】
また、構造解析済みデータ７０４上にある“単位＝西暦”７１２は、構造重ね合せデータ７０３と構造上対応する部分があるが、“単位＝和暦”７０７とノードの内容が異なる。従って、構造重ね合せデータ７０３の“単位＝和暦”７０７に、構造解析済みデータ７０４の“単位＝西暦”７１２を上書きする（“単位＝西暦”７１３参照）。
【００６６】
このようにして、３個の解析済みデータ７００，７０２，７０４が登録された段階で、構造重ね合せデータは符号７０５に示す状態となる。このようにして作成された構造重ね合せデータ７０５は、構造重ね合せ部１１５が、構造重ね合せデータ格納領域１２１へ登録する。
【００６７】
＜構造差分情報作成処理の詳細＞
図５の説明に戻る。図５のＳ５１４は、構造差分絞込み部１１７が行う。Ｓ５１４では、構造差分絞込み部１１７が、Ｓ５１２で作成した構造差分抽出データと、参照構造情報格納領域１２２に格納された参照構造情報（後記する図１２参照）を読み込む。そして、構造差分絞込み部１１７は、構造差分抽出データと、参照構造情報とを用いて構造差分絞込みデータを作成する。つまり、構造差分絞込み部１１７は、構造差分抽出データに示される構造のうち、アプリケーションプログラム１０２３の動作に影響を与える構造を絞り込む。このＳ５１４の処理手順の詳細を、図１０を用いて説明する。図１０は、図５のＳ５１４の処理手順を示すＰＡＤ図である。
【００６８】
構造差分絞込み部１１７は、まずＳ１０００で、参照構造情報格納領域１２２の全テーブル（例えば、図１２のテーブル１３００，１３４０，１３５０）を読み込む。つまり、構造差分絞込み部１１７は、参照構造情報格納領域１２２から各アプリケーションプログラム１０２３の参照構造情報を読み込む。そして、構造差分絞込み部１１７は、参照構造情報格納領域１２２の各テーブルについてＳ１００２〜Ｓ１０１１の処理を繰り返し実行する（Ｓ１００１）。
【００６９】
Ｓ１００２では、構造差分絞込み部１１７は、構造差分絞込みデータの初期化を行う。次に、Ｓ１００３では、構造差分絞込み部１１７は、Ｓ５１２において作成した構造差分抽出データのノードのうち、変更種別が設定された各ノードについてＳ１００４を繰り返し実行する。
【００７０】
Ｓ１００４では、構造差分絞込み部１１７は、Ｓ１００３で取出した、構造差分抽出データにおいて変更種別を持つノードに対応するパス情報が、Ｓ１０００で読み込んだテーブル（例えば、図１２のテーブル１３００，１３４０，１３５０）の参照パスに含まれているか判定する。つまり、構造差分絞込み部１１７は、半構造データのうち追加や削除、変更があったパスについて、このパスがアプリケーションプログラム１０２３の実行により参照されているか否かを判断する。ここで、パス情報が、Ｓ１０００で読み込んだテーブルの参照パスに含まれている場合（Ｓ１００４の“はい”）、構造差分絞込み部１１７は、Ｓ１００５とＳ１００６を実行する。
【００７１】
Ｓ１００５では、構造差分絞込み部１１７は、構造差分抽出データにおける前記参照パスのノードと、そのノードの変更種別を構造差分絞込みデータへ登録する。この構造差分絞込みデータの例は図面を用いて後記する。
【００７２】
次に、Ｓ１００６では、構造差分絞込み部１１７は、当該ノードの変更種別が“変更”であり、かつ下位へのパス情報が追記されているか否かを判定する。ここで、当該ノードの変更種別が“変更”であり、かつ下位へのパス情報が追記されている場合（Ｓ１００６で“はい”）、Ｓ１００７とＳ１００８を実行する。
【００７３】
Ｓ１００７では、構造差分絞込み部１１７は、当該ノードの変更種別に追記されている全ての下位へのパス情報に対応するノードについて、変更種別に“追加”を設定し、当該ノードのパス情報を設定する。
【００７４】
Ｓ１００８では、構造差分絞込み部１１７は、変更種別に追記されている全ての下位へのパス情報に対応するノードと、その変更種別（Ｓ１００７で設定した変更種別）を構造差分絞込みデータへ登録する。このようにすることで、参照構造情報に記載されていないが、アプリケーションプログラム１０２３の実行によりその参照に影響を与える参照パスについてももれなく構造差分絞込みデータに登録することができる。
【００７５】
次に、Ｓ１００３の後、構造差分絞込み部１１７は、変更種別を設定した構造差分絞込みデータを出力する（Ｓ１００９）。そして、Ｓ１０１０で、構造差分絞込み部１１７は、この変更種別を設定した構造差分絞込みデータと参照構造情報に付されたアプリケーション識別子との対応付けを行う。つまり、構造差分絞込み部１１７は、Ｓ１００３で用いた参照構造情報のテーブルに付されたアプリケーションプログラム１０２３の識別子を、Ｓ１００９で出力した構造差分絞込みデータに付与する。
【００７６】
次に、Ｓ１０１１で、構造差分絞込み部１１７は、Ｓ１００９で出力した構造差分絞込みデータと、図５のＳ５１２で作成した構造差分抽出データに設定された受信時刻との対応付けを行う。すなわち、構造差分絞込み部１１７は、この構造差分絞込みデータがいつの時点で作成した構造差分抽出データに基づくものかを記録しておく。
【００７７】
次に、この構造差分絞込みデータの作成過程の例を、図８、図１０、図１２を参照しつつ、図９を用いて説明する。図９は、本実施の形態の構造差分絞込みデータの作成過程の例を示す図である。なお、図９の構造差分抽出データ８００は、図８の構造差分抽出データ８００と同じものである。また、図９のテーブル１３００，１３４０，１３５０は、図１２に示すテーブル１３００，１３４０，１３５０と同じものである。
【００７８】
図１の構造差分絞込み部１１７は、図９に示すように、この構造差分抽出データ８００と、テーブル１３００，１３４０，１３５０とに基づいて、各アプリケーションプログラム１０２３ごとに、当該アプリケーションプログラム１０２３の実行に影響を与える構造を絞り込んだ構造差分絞込みデータ９００，９０１，９０２を生成する。
【００７９】
まず、構造差分絞込み部１１７は、構造差分抽出データ８００上のノードのうち、変更種別を持つノードに対応するパス情報が、テーブル１３００の参照パスに含まれているか否かを判定する。つまり、構造差分絞込み部１１７は、構造差分抽出データ８００上に示される追加、削除または変更の対象となるノードに対応するパスは、アプリケーション識別子“ＡＰ００１”のアプリケーションプログラム１０２３の実行により参照されたパスか否かを判断する。
【００８０】
ここで、構造差分抽出データ８００上のノードのうち、変更種別が設定されたノードで、かつテーブル１３００に対応する参照パスが存在するものは、変更種別８０５が設定された“／出張報告書／訪問先リスト／訪問先”のノードと、変更種別８０２が設定された“／出張報告書／用件”のノードである。つまり、これらのノードが示すパスは、アプリケーション識別子“ＡＰ００１”のアプリケーションプログラム１０２３の実行により参照されており、かつ変更対象となっているので、符号９０３，９０４に示すような情報が構造差分絞込みデータ９００に登録される（Ｓ１００５）。なお、図８における変更種別８０１，８０３，８０４は、図９における構造差分抽出データ８００の図面においてはテーブル１３００中に含まれていないため記載を省略している。
【００８１】
また、構造差分抽出データ８００上のノードのうち、テーブル１３００の参照パスに含まれていて、変更種別に“変更”が設定され、かつその下位へのパス情報を保持しているノードがある場合、構造差分絞込み部１１７は、その下位へのパス情報に対応するノードに対して“追加”の変更種別を設定し、当該ノードのパス情報を追記する。
【００８２】
すなわち、図９でいうと、構造差分抽出データ８００上のノードのうち、変更種別に“変更”が設定され、その下位へのパス情報を保持しており、かつテーブル１３００の参照パスに含まれているノードは、変更種別８０５を持つ“／出張報告書／訪問先リスト／訪問先”である。また、このノードの下位へのパス情報は、“／出張報告書／訪問先リスト／訪問先／用務先”と“／出張報告書／訪問先リスト／訪問先／用務内容”である。従って、符号９０５，９０６に示すように、“／出張報告書／訪問先リスト／訪問先／用務先”と“／出張報告書／訪問先リスト／訪問先／用務内容”のノードにおける変更種別に、“追加”と“／出張報告書／訪問先リスト／訪問先”が設定され（Ｓ１００７）、構造差分絞込みデータには、このノードと前記した情報を設定した変更種別とが登録される（Ｓ１００８）。
【００８３】
なお、変更種別は“変更”だが、この変更が下位へのパス情報を保持していないノードの属性値等の変更であった場合、例えば、図８の“／出張報告書／日付”の変更種別８０１のように“日付”の属性値が“西暦”から“和暦”に変更された場合、構造差分絞込み部１１７は、先に述べた変更種別８０５の“変更”とは別の“変更”として扱う。
【００８４】
また、構造差分絞込み部１１７は、構造差分絞込みデータに対して、アプリケーション識別子９０７との対応付け（Ｓ１０１０）および構造差分抽出データに設定された受信時刻８０６との対応付け９０８（Ｓ１０１１）を実施する。このように、構造差分絞込み部１１７は、構造差分抽出データ８００とテーブル１３００に示される参照構造情報とを比較することでアプリケーション識別子“ＡＰ００１”の構造差分絞込みデータ９００を生成する。
【００８５】
同様に、構造差分絞込み部１１７は、構造差分抽出データ８００とテーブル１３４０，１３５０とを比較することでアプリケーション識別子“ＡＰ００２”、“ＡＰ００３”の構造差分絞込みデータ９０１，９０２を生成（作成）する。つまり、構造差分絞込み部１１７は、アプリケーションプログラム１０２３ごとに、このアプリケーションプログラム１０２３に影響を与える半構造データの構造およびその構造における変化の内容を示した構造差分抽出データを作成する。
【００８６】
次に、構造差分出力部１１９の処理について説明する。この構造差分出力部１１９は、構造差分絞込み部１１７で作成された構造差分絞込みデータをもとに構造差分情報を出力する。この構造差分情報は、アプリケーション開発者に、アプリケーションプログラム１０２３の修正が必要であることと、そのアプリケーションプログラム１０２３の実行により参照されるコンフィグレーションファイル１０２９のうち、どの部分を修正すればよいかを示した情報である。
【００８７】
本実施の形態では、構造差分出力部１１９が出力した構造差分情報を、メールサーバ１２３が電子メールで各アプリケーション開発者の端末装置等へ通知する。なお、メールサーバ１２３が用いるメールアドレス一覧は、図１の半構造データ差分管理システム１００のワークエリア１２０の所定領域に格納される。図１３は、図１のワークエリア１２０に格納されるメールアドレス一覧の例を示す図である。例えば、ワークエリア１２０には、図１３に示すように、アプリケーションプログラム１０２３のアプリケーション識別子１４００ごとに、そのアプリケーションプログラム１０２３のアプリケーション開発者１４１０、そのアプリケーション開発者のメールアドレス１４２０を示した情報が格納される。この情報は、アプリケーション開発者等が予め半構造データ差分管理システム１００に入力しておく。
【００８８】
図１４は、図９に示す構造差分絞込みデータ９００から作成された構造差分情報を含む電子メールの内容表示画面例を示す図である。図１４に示す電子メールは、アプリケーション識別子“ＡＰ００１”のアプリケーション開発者に、帳票のフォーマット変更によりアプリケーション識別子“ＡＰ００１”のアプリケーションプログラム１０２３の修正見直しの必要があることを通知するものである。この電子メールは、構造差分出力部１１９が出力した構造差分情報である変更内容１５００を含む。
【００８９】
図１４に示す変更内容１５００は、このアプリケーション識別子“ＡＰ００１”のアプリケーションプログラム１０２３の実行により参照される半構造データの変更内容を示したものであり、例えば、項番１５０１、変更された帳票名（半構造データタイプ）１５０２、その変更種別（“変更”、“追加”、“削除”）１５０３、変更前（変更前の参照パス）１５０４、変更後（変更後の参照パス）１５０５等を含む。
【００９０】
アプリケーション開発者がこのような変更内容１５００を含む電子メールを見ることで、帳票の変更があったときに当該アプリケーションプログラム１０２３のコンフィグレーションファイル１０２９のうち、どの部分を修正すればよいかを迅速に知ることができる。
【００９１】
次に、構造差分出力部１１９の処理手順を、図１を、図９、図１３、図１４を参照しつつ図１９を用いて説明する。図１９は、図１の構造差分出力部１１９の処理手順を示すＰＡＤ図である。
【００９２】
構造差分出力部１１９は、まずＳ２１００で、図５のＳ５１４で作成された構造差分絞込みデータ（例えば、図９における構造差分絞込みデータ９００，９０１，９０２等）を読込む。
【００９３】
以降、構造差分出力部１１９は、Ｓ２１００で読込んだ全ての構造差分絞込みデータについて、Ｓ２１０２〜Ｓ２１１５を繰り返し実行する（Ｓ２１０１）。ここでは構造差分出力部１１９は、各アプリケーション開発者へ送信する電子メール本文を作成する。
【００９４】
まず、構造差分出力部１１９は、Ｓ２１０２で、ワークエリア１２０に格納されたメールアドレス一覧（図１３参照）から、当該構造差分絞込みデータに付与されたアプリケーション識別子を持つアプリケーション開発者のメールアドレスを読込む。例えば、構造差分出力部１１９は、図１３に例示したメールアドレス一覧から、アプリケーション識別子“ＡＰ００１”のアプリケーション開発者のメールアドレスを読み込む。
【００９５】
次に、Ｓ２１０３で、構造差分出力部１１９は、図１４に示す変更内容１５００の帳票名１５０２に設定する値として、当該構造差分絞込みデータの半構造データタイプ（例えば“出張報告書”）を設定する。
【００９６】
次に、構造差分出力部１１９は、当該構造差分絞込みデータの全ノードのうち、変更種別が設定されたノードについてＳ２１０５とＳ２１０６を繰り返し実行する（Ｓ２１０４）。
【００９７】
Ｓ２１０５では、構造差分出力部１１９は、図１４に示す変更内容１５００の変更種別１５０３に当該ノードの変更種別を設定する。次にＳ２１０６で、構造差分出力部１１９は、構造差分絞込みデータにおける当該ノードの変更種別が“変更”か“削除”か“追加”かを判定する。このＳ２１０６において変更種別が“変更”の場合、Ｓ２１０７へ進み、構造差分出力部１１９は、構造差分絞込みデータにおける当該ノードの変更種別にパス情報が追記されているか否かを判定する。ここで当該ノードの変更種別にパス情報が追記されている場合（Ｓ２１０７の“はい”）、構造差分出力部１１９は、図１４に示す変更内容１５００の変更前１５０４に、構造差分絞込みデータにおける当該ノードのパス情報を設定する（Ｓ２１０８）。また、構造差分出力部１１９は、図１４に示す変更内容１５００の変更後１５０５に、構造差分絞込みデータにおける当該ノードの変更種別に設定されている、追加された下位構造のパス情報を設定する（Ｓ２１０９）。
【００９８】
なお、当該ノードの変更種別にパス情報が追記されている場合とは、例えば、図９における変更種別８０５に示すように、 “／出張報告書／訪問先リスト／訪問先”における下位構造に“／出張報告書／訪問先リスト／訪問先／用務先”と“／出張報告書／訪問先リスト／訪問先／用務内容”といったノードが追加されたことによる変更の場合である。このような場合、構造差分出力部１１９は、図１４に示す変更前１５０４には、下位構造に新たにノードが追加されることで構造が変化するノードのパス情報を記載する。また、構造差分出力部１１９は、図１４に示す変更後１５０５には、新たに追加された下位構造のノードのパス情報を記載する。
【００９９】
一方、図１９のＳ２１０７で、当該ノードの変更種別にパス情報が追記されていない場合は（Ｓ２１０７の“いいえ”）、図１４に示す変更内容１５００の変更前１５０４に、当該ノードのパス情報を設定する（Ｓ２１１０）。つまり、構造差分出力部１１９は、図１４に示す変更後１５０５には何も設定しない。なお、当該ノードの変更種別にパス情報が追記されていない場合とは、例えば図８に示す変更種別８０１を持つ“／出張報告書／日付”における“西暦”や“和暦”といった属性値の変更の場合である。すなわち、構造差分出力部１１９は、構造差分絞込みデータにおいて構造の変更があれば、図１４に示す変更後１５０５にパス情報を記載するが、属性値のみの変更であれば図１４に示す変更後１５０５にパス情報を記載しない。
【０１００】
また、Ｓ２１０６において変更種別が“削除”の場合、構造差分出力部１１９は、Ｓ２１１１で、図１４に示す変更内容１５００の変更前１５０４に設定する値として、構造差分絞込みデータにおける当該変更種別に設定されているパス情報を設定する。なお、図１４に示す変更内容１５００の変更後１５０５には何も設定しない。これは、変更前１５０４のパス情報に対応するノードが削除されたことで、変更後１５０５のパス情報は存在しなくなるためである。
【０１０１】
また、Ｓ２１０６において変更種別が“追加”の場合、構造差分出力部１１９は、図１４に示す変更内容１５００の変更前１５０４に設定する値として、構造差分絞込みデータにおける当該ノードの変更種別に設定されている、パス情報（一段上の階層を示すパス情報）を設定し（Ｓ２１１２）、図１４に示す変更内容１５００の変更後１５０５に設定する値として、当該ノードのパス情報を設定する（Ｓ２１１３）。
【０１０２】
なお、変更種別が“追加”の場合とは、例えば図９における変更種別９０５や変更種別９０６に示すように、“／出張報告書／訪問先リスト／訪問先”における下位構造に“／出張報告書／訪問先リスト／訪問先／用務先”と“／出張報告書／訪問先リスト／訪問先／用務内容”といったノードが追加された場合である。このような場合、構造差分出力部１１９は、このノードに関し、図１４に示す変更内容１５００の変更前１５０４に、新たに追加されたノードの一段上の階層を示すパス情報を記載する。また、図１４に示す変更内容１５００の変更後１５０５には、新たに追加されたノードのパス情報を記載する。
【０１０３】
次に、Ｓ２１０４の後、Ｓ２１１４では、構造差分出力部１１９は、当該構造差分絞込みデータに設定された受信時刻を読込む。そして、Ｓ２１１５で、構造差分出力部１１９は、Ｓ２１０２〜Ｓ２１１４で取出した情報をもとに、電子メールで送信する構造差分情報の出力を行う。つまり、構造差分出力部１１９は、電子メールに記載するタイトルや、帳票のフォーマットの変更により影響を受けるアプリケーションプログラム１０２３の識別子や帳票のフォーマットの変更を検知した時刻（Ｓ２１１４で読み込んだ受信時刻）等を含む本文、帳票の変更内容１５００等を追記した構造差分情報の出力を行う。
【０１０４】
最後に、Ｓ２１１６で、構造差分出力部１１９は、Ｓ２１１５で作成した構造差分情報の送信要求をメールサーバ１２３へ送信する。つまり、構造差分出力部１１９は、Ｓ２１１５で作成した構造差分情報を、アプリケーション開発者のメールアドレス（Ｓ２１０２で読み出したメールアドレス）を宛先とした電子メールで送信するようメールサーバ１２３へ要求する。
【０１０５】
この構造差分出力部１１９の処理について、図１４に示す変更内容１５００を参照しながら、具体的に説明する。なお、ここで構造差分出力部１１９が読込む構造差分絞込みデータは、図９に示す構造差分絞込みデータ９００であるとする。この場合、構造差分絞込みデータのノードのうち、変更種別が“変更”のノードは、変更種別９０４を持つ“／出張報告書／訪問先リスト／訪問先”である。そこで、構造差分出力部１１９は、図１４に示す変更内容１５００の項番“１”として、帳票名１５０２にこの構造差分絞込みデータの半構造データタイプ（“出張報告書”）を設定し（Ｓ２１０３）、変更種別１５０３に当該ノードの変更種別である“変更”を設定し（Ｓ２１０５）、変更前１５０４に関するデータ項目として当該ノードのパス情報（“／出張報告書／訪問先リスト／訪問先”）を記載する（Ｓ２１０８）。そして、このノードの変更種別にパス情報が存在するので、変更後１５０５に関するデータとしてそのパス情報（“／出張報告書／訪問先リスト／訪問先／用務先”と“／出張報告書／訪問先リスト／訪問先／用務内容”）を記載する（Ｓ２１０９）。
【０１０６】
なお、該当ノードの変更種別にパス情報がないものについては、構造差分出力部１１９は、変更前１５０４に関するデータ項目として該当ノードのパス情報を記載し（Ｓ２１１０）、変更後１５０５のデータ項目の記載を省略する。例えば、図８における変更種別８０１を持つ“／出張報告書／日付”における“西暦”や“和暦”といった属性値の変更の場合は、構造差分出力部１１９は、変更前１５０４に“／出張報告書／日付／＠単位”（＠は属性の意である）を記載し、変更後１５０５のデータ項目の記載を省略する。
【０１０７】
また、構造差分絞込みデータのノードのうち、変更種別が“削除”のノードは、変更種別９０３を持つ“／出張報告書／用件”である。そこで、構造差分出力部１１９は、変更内容１５００の項番“２”として、帳票名１５０２に当該構造差分絞込みデータの半構造データタイプを設定し（Ｓ２１０３）、変更種別１５０３に当該ノードの変更種別である“削除”と設定し（Ｓ２１０５）、変更前１５０４に関するデータ項目の値として当該ノードに関するパス情報をそのまま記載（Ｓ２１１１）し、変更後１５０５に関するデータ項目の記載は省略する。
【０１０８】
また、図９に示す構造差分絞込みデータ９００のノードのうち、変更種別が“追加”のノードは、変更種別９０６を持つ“／出張報告書／訪問先リスト／訪問先／用務先”と、変更種別９０５を持つ“／出張報告書／訪問先リスト／訪問先／用務内容”である。そこで、構造差分出力部１１９は、変更内容１５００の項番“３”、項番“４”として、帳票名１５０２に当該構造差分絞込みデータの半構造データタイプ（“出張報告”）を設定し（Ｓ２１０３）、変更種別１５０３に当該ノードの変更種別である“追加”を設定し（Ｓ２１０５）、変更前１５０４に関するデータとして、当該ノードの変更種別にパス情報が存在するものについては、その一段上の階層を示すパス情報（“／出張報告書／訪問先リスト／訪問先”）を記載（Ｓ２１１２）し、変更後１５０５のデータとして該当するノードに関するパス情報（“／出張報告／訪問先リスト／訪問先／用務先”、“／出張報告／訪問先リスト／訪問先／用務内容”）をそれぞれそのまま記載する（Ｓ２１１３）。
【０１０９】
このようにして構造差分出力部１１９は、構造差分絞込みデータから構造差分情報を作成し、出力する。
【０１１０】
このように半構造データ差分管理システム１００が構造差分情報をアプリケーション開発者に通知することで、帳票のフォーマット変更が発生した際、このアプリケーション開発者はアプリケーションプログラム１０２３に影響のある差分を即時に把握することができるようになる。つまり、アプリケーション開発者は、コンフィグレーションファイル１０２９において修正が必要な箇所を即時に把握できる。
【０１１１】
すなわち、従来では、半構造データ収集元システム１０１のデータベース１０１１の入力データの変更により、二次システム２０４における検索の不備が発生してから、コンフィグレーションファイル１０２９の更新が完了するまでに長時間を要することがあった。しかし、半構造データ差分管理システム１００によれば、データベース１０１１の入力データに関する変更が発生した際には、図１４に例示したような電子メール等により、この入力データのうちアプリケーションプログラム１０２３の動作に影響のある構造の情報が迅速にアプリケーション開発者に通知されることになる。すなわち、この半構造データ差分管理システム１００によれば、アプリケーション開発者は、速やかにコンフィグレーションファイル１０２９の修正ができるので、検索サービスを速やかに再開できる。
【０１１２】
さらに、従来では、アプリケーション開発者は、データベース１０１１の検索に不備が生じた場合、検索漏れ等の不備のある検索項目に対しデータベース１０１１の入力データを参照しながら、検索に不備のある検索項目に対応するこの入力データのパス名を特定、確認する必要があった。これに対し、半構造データ差分管理システム１００によれば、アプリケーション開発者は、半構造データ差分管理システム１００から出力された構造差分情報により、当該検索項目に対応するパス情報に関する変更前および変更後のパス情報を確認し、この構造差分情報から当該検索項目に対する正しいパス情報を取得することができる。つまり、アプリケーション開発者は、検索漏れ等の不備のある検索項目に対するパス情報を速やかに確認できる。
【０１１３】
さらに、従来では、二次システム２０４における検索に不備が生じた場合、アプリケーション開発者は、過去にデータベース１０１１に入力されていた入力データに関するタグ構造と、新規にデータベース１０１１に入力される入力データに関するタグ名とを適宜比較し、確認する必要があった。これに対し、半構造データ差分管理システム１００によれば、メールサーバ１２３が変更前と変更後のパス情報をアプリケーション開発者に電子メールで通知するので、アプリケーション開発者は入力データのパス情報のうち、アプリケーションプログラム１０２３に影響を与えるパス情報を即時に取得することができる。つまり、アプリケーション開発者が参照すべきパス情報を速やかに取得できる。
【０１１４】
また、従来、アプリケーション開発者は、データベース１０１１の入力データに変更が生じた場合、その変更の種類にかかわらず、当該アプリケーションプログラム１０２３に関連する全ての検索項目を精査する必要があった。これに対し、半構造データ差分管理システム１００によれば、アプリケーション開発者は構造差分情報に示される変更種別１５０３（図１４参照）により、変更種別を確認できるので、コンフィグレーションファイル１０２９の修正確認を効率的に行うことができる。
【０１１５】
≪第２の実施の形態≫
次に、引き続き図１を参照しながら、本発明の第２の実施の形態のデータベースシステムを説明する。第２の実施の形態のデータベースシステムは、コンフィグレーションファイル編集装置２０６を備え、このコンフィグレーションファイル編集装置２０６が、半構造データ差分管理システム１００から出力された構造差分情報を用いてコンフィグレーションファイル１０２９を修正することを特徴とする。
【０１１６】
このコンフィグレーションファイル編集装置２０６は、図１に示すように、ＣＰＵ２０６１および主メモリ２０６２を備える。この主メモリ２０６２には、コンフィグレーションファイル編集部２０６３を備え、ＣＰＵ２０６１がこのコンフィグレーションファイル編集部２０６３を実行することでコンフィグレーションファイル編集装置２０６の機能を実現する。
【０１１７】
つまり、アプリケーション開発者の端末装置が、半構造データ差分管理システム１００から半構造データの変更を通知する電子メールを受信すると、アプリケーション開発者は、端末装置上でその内容を確認する。そして、アプリケーション開発者が、コンフィグレーションファイル１０２９の修正要と判断すると、コンフィグレーションファイル編集装置２０６に対して、半構造データ差分管理システム１００から、当該アプリケーションプログラム１０２３に関する構造差分情報を取得するよう指示を出す。そして、このコンフィグレーションファイル編集装置２０６は、半構造データ差分管理システム１００から構造差分情報を取得すると、この構造差分情報をもとに当該アプリケーションプログラム１０２３に関するコンフィグレーションファイル１０２９を修正することを特徴とする。つまり、コンフィグレーションファイル１０２９を修正する手間を軽減することを特徴とする。
【０１１８】
図１６は、第２の実施の形態のアプリケーションサーバ１０２およびコンフィグレーションファイル編集装置２０６の処理の流れを示す図である。なお、領域１８００に示す情報は、アプリケーションサーバ１０２が利用者端末装置２０５に表示させる帳票検索画面を例示したものである。
【０１１９】
まず、アプリケーションサーバ１０２の処理の流れについて説明する。利用者は、利用者端末装置２０５の入力装置等を用いて、帳票検索画面１８０２に、帳票名１８０３、検索項目１８０４、キーワード１８０５等を含む検索条件１８０６を入力する。入力された検索条件１８０６は、利用者端末装置２０５からアプリケーションサーバ１０２へ送信され、このアプリケーションサーバ１０２の検索条件受信部１０２４によって受信される。
【０１２０】
その後、アプリケーションプログラム１０２３のパス情報取得部１０２５が、検索項目とその検索項目に関するパス情報とを示した、コンフィグレーションファイル１０２９を読込む。そして、パス情報取得部１０２５は、この読込んだコンフィグレーションファイル１０２９から、検索条件受信部１０２４が受信した帳票名１８０３と検索項目１８０４に対応するパス情報を取得する。
【０１２１】
ここで、図１７を用いてコンフィグレーションファイル１０２９の修正を説明する。図１７は、本実施の形態のコンフィグレーションファイルの修正の例を示す図である。コンフィグレーションファイル１０２９は、帳票名１９００、検索項目１９１０、参照パス１９２０等の情報を含んで構成される。ここでは、帳票名ごとに別々のコンフィグレーションファイル１０２９が定義されているものとする。例えば、図１７のコンフィグレーションファイル１０２９において、帳票名が“出張報告書”の帳票について、検索項目が“出張者”である場合、参照パスは“／出張報告書／出張者”であることを示す。
【０１２２】
なお、図１６に示した帳票検索画面１８０２において、帳票名１０２５に“出張報告書”、検索項目１８０４に“出張者”が入力された場合、パス情報取得部１０２５は、図１７のコンフィグレーションファイル１０２９の、帳票名１９００が“出張報告書”、検索項目１９１０が“出張者”の参照パス１９２０から、“／出張報告書／出張者”というパス情報を取得する。
【０１２３】
その後、クエリ生成部１０２６は、パス情報取得部１０２５が取得したパス情報と、検索条件受信部１０２４が受信した帳票名とキーワードとを用いて、クエリ文１８１２を作成する。このクエリ生成部１０２６が作成したクエリ文１８１２はクエリ実行部１０２７に渡され、アプリケーションプログラム１０２３の実行によりこのクエリ文１８１２が用いられてデータベース１０４に格納されている半構造データに対して問合せが行われる。
【０１２４】
ここで、ＸＰａｔｈを用いたクエリの例を、図１８を用いて説明する。図１８は、図１のクエリ生成部１０２６が作成するクエリの例を示した図である。なお、クエリ２０００は、変更前のクエリであり、クエリ２０１０は、クエリ２０００を変更した後のクエリを示す。また、ここでのクエリ作成にはＸＰａｔｈを用いる。このＸｐａｔｈとは、ＸＭＬデータの特定の要素を指し示す記述方法を定めた規格のことである。
【０１２５】
図１６のクエリ生成部１０２６は、帳票検索画面１８０２において入力された帳票名１８０３を、図１８のクエリ２０００の符号２０２０に示す箇所に、パス情報取得部１０２５が取得した、検索項目１８０４に対応するパス情報を符号２０３０に示す箇所に、キーワード１０２５を符号２０４０に示す箇所に書き込むことで、ＸＰａｔｈを用いたクエリ文を生成する。
【０１２６】
この後、図１６のクエリ実行部１０２７は、このクエリ生成部１０２６が生成したクエリ文に示される内容を実行する。つまり、クエリ実行部１０２７は、データベース１０４からクエリ文に示される内容を検索してクエリ実行結果１８１３を得る。
【０１２７】
次に、クエリ実行結果１８１３を受理したクエリ実行部１０２７はその結果を検索画面作成部１０２８に渡す。検索画面作成部１０２８は、渡されたクエリ実行結果１８１３を反映した帳票検索結果表示画面１８１５を作成し、利用者端末装置２０５に対して表示する。例えば、クエリ実行部１０２７が図１８のクエリ２０１０に示される内容を、データベース１０４の半構造データに対し実行したとき、検索画面作成部１０２８は、そのヒット件数をカウントし、その値をヒット件数１８１６として帳票検索結果表示画面１８１５に出力する。
【０１２８】
次に、図１４、図１６、図１７および図１８を参照しながら、図１のコンフィグレーションファイル編集装置２０６が、半構造データ差分管理システム１００から構造差分情報（例えば、図１４に示した変更内容１５００と、アプリケーション識別子）を受信し、この受信した情報をもとにコンフィグレーションファイル１０２９を修正する手順を説明する。ここではコンフィグレーションファイル編集装置２０６のコンフィグレーションファイル編集部２０６３が、構造差分情報を受信後、この構造差分情報に示される半構造データタイプ（帳票名）およびアプリケーション識別子に対応するコンフィグレーションファイル１０２９を検索しておくものとする。そして、コンフィグレーションファイル編集部２０６３は、半構造データ差分管理システム１００から受信した構造差分情報の内容のうち、変更種別（図１４でいう変更種別１５０３）が“変更”となっていて、かつ、変更前（図１４でいう変更前１５０４）のパス情報がコンフィグレーションファイル１０２９の参照パス１９２０に存在する検索項目１９１０に対して、変更後（図１４でいう変更後１５０５）のパス情報をコンフィグレーションファイル１０２９の参照パスに追記する。
【０１２９】
このときの手順を、図１７を参照しながら説明する。例えば、図１のコンフィグレーションファイル編集部２０６３が、図１４に示す変更内容１５００を含む構造差分情報を受信した場合、変更内容１５００において変更種別が“変更”となっており、かつ変更前のパス情報“／出張報告書／訪問先リスト／訪問先”がコンフィグレーションファイル１０２９に存在する検索項目“訪問先”に対して、変更後のパス情報“／出張報告書／訪問先リスト／訪問先／用務先”、“／出張報告書／訪問先リスト／訪問先／用務内容”をこの検索項目“訪問先”の参照パスに追加する（図１７の符号１９３０参照）。このようにコンフィグレーションファイル編集部２０６３がコンフィグレーションファイル１０２９を修正することで、図１６の帳票検索画面１８０２から、帳票名１８０３に“出張報告書”、検索項目１８０４に“訪問先”が入力された場合、クエリ生成部１０２６は、修正後のコンフィグレーションファイル１０２９から、“訪問先”に対応するパス情報として、“／出張報告書／訪問先リスト／訪問先”の他に、“／出張報告書／訪問先リスト／訪問先／用務先”および“／出張報告書／訪問先リスト／訪問先／用務内容”を取得する。そして、クエリ生成部１０２６は、これらのパス情報（図１８に示す符号２０５０参照）を追加したクエリ２０１０を生成し、クエリ実行部１０２７はこのクエリ２０１０によりデータベース１０４（図１６参照）の帳票（半構造データ）を検索する。
【０１３０】
このように、コンフィグレーションファイル編集装置２０６がコンフィグレーションファイル１０２９に変更後の帳票に追加されたパス情報を追加していくことによって、アプリケーションプログラム１０２３の実行の際には変更前の帳票も変更後の帳票も全て検索対象とすることができる。従って、帳票のフォーマット変更時にアプリケーション開発者がコンフィグレーションファイル１０２９を修正する時間が短縮され、かつこのデータベースシステムの利用者に対しても、漏れのない正しい検索結果を提供できる。
【０１３１】
なお、このコンフィグレーションファイル編集装置２０６は、半構造データ差分管理システム１００に組み込むようにしてもよいし、アプリケーションサーバ１０２または半構造データ収集元システム１０１に組み込むようにしてもよい。
【０１３２】
また、各実施の形態の半構造データ差分管理システム１００は、二次システム２０４のデータベース１０４またはアプリケーションサーバ１０２に組み込むようにしてもよいし一次システム２０３の半構造データ収集元システム１０１に組み込むようにしてもよい。
【０１３３】
さらに、これまでに記載にした本発明の実施の形態では、本発明が対象とする半構造データ差分管理システム１００で複数のアプリケーションに対する変更を通知する構成を取っている。しかし、二次システムとして存在する個々のアプリケーションに対して各々、半構造データ差分管理システム１００を１システム、対応付ける構成をとることもできる。この場合、図１２における参照構造情報には１テーブルのみが格納される形態が想定され、構造差分絞込みプログラム１１７の処理内容も各アプリケーション単位での繰り返し処理を簡略化するなどの構成により実現することが可能になる。
【０１３４】
さらに、構造差分情報は、メールサーバ１２３が電子メールで利用者端末装置２０５へ送信することとしたが、半構造データ差分管理システム１００がＦＴＰ（File Transfer Protocol）やＨＴＴＰ（HyperText Transfer Protocol）等により送信するようにしてもよい。
【０１３５】
また、半構造データ差分管理システム１００は、構造差分情報をテキストデータ以外のアプリケーションサーバ１０２側で識別できるようなデータ構造で送信するようにしてもよい。このようにすることで、アプリケーションサーバ１０２は、半構造データの構造の変更内容を、例えば、このアプリケーションサーバ１０２と通信可能な表示装置（図示せず）にグラフィカルに表示させたり、クエリ生成部１０２６に関する変更箇所を特定するようなプログラムの実行により実現される処理と通信したりすることも可能になる。
【０１３６】
なお、半構造データ差分管理システム１００は、半構造データ収集元システム１０１から半構造データを受信するたび、つまり二次システム２０４のデータベース１０４に新たな半構造データが入力されるたびに、構造重ね合わせデータを作成することとしたが、これに限定されない。例えば、半構造データ差分管理システム１００は、新たに入力されてくる半構造データを複数件分、一時的にワークエリア１２０に格納しておき、これらまとめた構造重ね合わせデータを作成する。そして、半構造データ差分管理システム１００は、この複数件分の半構造データをまとめた構造重ね合わせデータと過去に登録された構造重ね合わせデータを比較し、その差分を抽出するようにしてもよい。このようにすることで、半構造データ差分管理システム１００は、半構造データが入力されるたびに構造重ね合せデータの差分抽出を行わなくてよいので、差分抽出の効率および精度を向上することができる。
【０１３７】
また、半構造データ差分管理システム１００は、ワークエリア１２０に構造差分絞込みデータが複数件たまった時点で、構造差分情報をまとめて出力するようにしてもよい。
【０１３８】
さらに、アプリケーションサーバ１０２から半構造データ差分管理システム１００へ出力される参照構造情報は、このアプリケーションサーバ１０２のアプリケーションプログラム１０２３の実行の際にデータベース１０４に発行するクエリ情報（ＸＰａｔｈやＸＱｕｅｒｙ等）を用いるようにしてもよい。
【０１３９】
また、半構造データ差分管理システム１００は、過去に作成した構造差分絞込みデータをワークエリア１２０等に蓄積しておき、これを過去に遡って参照することにより、過去から現在にいたる構造差分の変化履歴等を合わせて参照するようにしてもよい。このようにすることで半構造データの変更の頻度等をもとに、コンフィグレーションファイル１０２９の確認頻度等を調整、最適化することも可能になる。
【０１４０】
また、半構造データ差分管理システム１００は、逐次入力されてくる半構造データをワークエリア１２０に蓄積し、同じ半構造データタイプの半構造データのうち、同じタグが所定回数連続で削除されていたときに、“削除”に関する構造差分絞込みデータを出力するようにしてもよい。このような場合、前記所定回数を閾値としてワークエリア１２０等に設定しておく。そして、構造差分抽出部１１６は半構造データを監視し、この閾値以上の回数、当該タグが削除されていたとき、このタグの“削除”に関する構造差分絞込みデータを出力する。なお、この当該タグの削除回数は、例えば、前記した参照構造情報に記録する。
【０１４１】
図１５は、本実施の形態の参照構造情報の例を示す図である。例えば、図１５に示すように、この参照構造情報を示すテーブルに、削除データ数１７００および削除通知フラグ１７１０の欄を設ける。この削除データ数１７００は、入力された半構造データのうち、当該タグを含まない半構造データの数を示す欄である。また削除通知フラグ１７１０は、構造差分抽出部１１６が当該タグに関して“削除”に関する構造差分絞込みデータを出力したことを示す欄である。
【０１４２】
例えば、図１５に示す参照構造情報を示すテーブル１３００において、削除データ数１７００は予め初期値として“０”を設定しておく。そして、構造差分抽出部１１６は“削除”の変更種別を持つノードを含む構造重ね合せデータが入力された場合には、該当パスに関する削除データ数１７００に“１”を加算していく。そして、構造差分抽出部１１６は該当パスに関するタグが存在するデータを発見した場合には該当の削除データ数を“０”にリセットする。そして構造差分抽出部１１６は該当の削除データ数の値が予め設定された閾値以上の場合、該当タグが削除されたものとして、当該タグが削除されたことを示す情報を設定した構造差分絞込みデータを出力する。これにより、入力データに対して連続的に該当タグが省略されている場合、半構造データ差分管理システム１００は該当のタグが削除されたものとして構造差分情報を出力することになる。つまり、半構造データにおいてたまたま当該タグが削除されていた場合に、その度ごとにアプリケーション開発者に電子メールが通知されることがなくなる。これによりアプリケーション開発者は、コンフィグレーションファイル１０２９を修正すべきときに集中してファイルの修正を行うことができる。
【０１４３】
そして、構造差分出力部１１９は、該当タグが削除されたことを示す構造差分情報を出力すると、削除通知フラグ１７１０に“１”を立てる。この後、構造差分出力部１１９は、この削除通知フラグ１７１０に値が“１”が立っている場合には、たとえ連続的に該当パスに関するタグが削除されていた場合でも、このパス情報を含む構造差分情報を出力しない。このようにすることで、アプリケーション開発者への電子メールの発信回数を１回に限定することが可能になる。
【０１４４】
さらに、半構造データ差分管理システム１００は、半構造データ収集元システム１０１から次々に半構造データを受信し、この受信した半構造データ同士を比較して差分情報を抽出するようにしたが、これに限定されない。例えば、半構造データ差分管理システム１００は、半構造データ収集元システム１０１から半構造データの変更情報（変更予定情報）を直接受信し、この変更情報をもとに構造差分情報を出力するようにしてもよい。
【０１４５】
つまり、半構造データ差分管理システム１００は、帳票の管理者（あるいはアプリケーション開発者）等の端末装置等から、変更情報として、変更対象の帳票名、変更種別、変更前および変更後のパス情報を示した情報（例えば、図１４の変更内容１５００に示す情報参照）を送信する。この変更情報は、いったん半構造データ収集元システム１０１のＤＢＭＳ１０１４で受信し、このＤＢＭＳ１０１４経由で半構造データ差分管理システム１００へ送信するようにしてもよい。そして、半構造データ差分管理システム１００は、この変更情報と、参照構造情報格納領域１２２に格納された参照構造情報をもとに各アプリケーションプログラム１０２３の構造差分情報を出力する。そして、帳票の管理者等がこの構造差分情報を電子メール等で確認することで、当該半構造データの変更により、コンフィグレーションファイル１０２９をどの程度修正する必要があるかを確認することができる。つまり、帳票の管理者等がアプリケーションサーバ１０２への影響を考慮しながら、帳票を修正するか否かの判断をすることができる。
【０１４６】
なお、本実施の形態において半構造データの例としてＸＭＬデータを用いる場合を例に説明したがこれに限定されない。例えば、ＳＧＭＬ（Standard Generalized Mark-up Language）、ＨＴＭＬ（HyperText Markup Language）等を用いるようにしてもよい。
【０１４７】
また、本実施の形態において各処理部の機能はプログラムやオブジェクトの他に、ハードウェア（専用回路）等によっても実現可能である。
【０１４８】
本実施の形態に係る半構造データ差分管理システム１００を実現するプログラムをコンピュータによる読み取り可能な記憶媒体（ＣＤ−ＲＯＭ等）に記憶して提供することが可能である。また、このプログラムを、インターネット等のネットワークを通して提供することも可能である。
【図面の簡単な説明】
【０１４９】
【図１】各実施の形態におけるデータベースシステムの例を示す図である。
【図２】ＸＭＬデータを格納するデータベースシステムの例を示す図である。
【図３】図１の半構造データ差分管理システム１００における、各種処理部間のデータの流れを示す図である。
【図４】図１の半構造データ差分管理システム１００の処理手順を示すＰＡＤ図である。
【図５】図１の構造差分抽出制御部１１２の処理手順を示すＰＡＤ図である。
【図６】本実施の形態における半構造データの例を示す図である。
【図７】本実施の形態の解析済みデータおよび構造重ね合せデータの例を示す図である。
【図８】本実施の形態の構造差分抽出データの生成過程の例を示す図である。
【図９】本実施の形態の構造差分絞込みデータの作成過程の例を示す図である。
【図１０】図５のＳ５１４の処理手順を示すＰＡＤ図である。
【図１１】図１の参照構造情報受信部１１８の処理手順を示すＰＡＤ図である。
【図１２】図１の参照構造情報格納領域１２２に格納される参照構造情報の例を示す図である。
【図１３】図１のワークエリア１２０に格納されるメールアドレス一覧の例を示す図である。
【図１４】図９に示す構造差分絞込みデータ９００から作成された構造差分情報を含む電子メールの内容表示画面例を示す図である。
【図１５】本実施の形態の参照構造情報の例を示す図である。
【図１６】図１のアプリケーションサーバ１０２およびコンフィグレーションファイル編集装置２０６の処理の流れを示す図である。
【図１７】本実施の形態のコンフィグレーションファイルの修正の例を示す図である。
【図１８】図１のクエリ生成部１０２６が作成するクエリの例を示した図である。
【図１９】図１の構造差分出力部１１９の処理手順を示すＰＡＤ図である。
【符号の説明】
【０１５０】
１００  半構造データ差分管理システム
１０１  半構造データ収集元システム
１０２  アプリケーションサーバ
１０３  ネットワーク
１０４  データベース
１０５  ディスプレイ
１０６  キーボード
１０７  ＣＰＵ
１０８  通信制御装置
１０９  主メモリ
１１０  磁気ディスク装置
１１１  システムバス
１１２  構造差分抽出制御部
１１３  データ受信部
１１４  構造解析部
１１５  構造重ね合せ部
１１６  構造差分抽出部
１１７  構造差分絞込み部
１１８  参照構造情報受信部
１１９  構造差分出力部
１２０  ワークエリア
１２１  構造重ね合せデータ格納領域
１２２  参照構造情報格納領域
１２３  メールサーバ
２０１  ネットワーク
２０３  一次システム
２０４  二次システム
２０５  利用者端末装置
２０６  コンフィグレーションファイル編集装置
１０１１  データベース
１０１２  ＣＰＵ
１０１３  主メモリ
１０１４  ＤＢＭＳ
１０２１  ＣＰＵ
１０２２  主メモリ
１０２３  アプリケーションプログラム
１０２４  検索条件受信部
１０２５  パス情報取得部
１０２６  クエリ生成部
１０２７  クエリ実行部
１０２８  検索画面作成部
１０２９  コンフィグレーションファイル
【図１】
0004783339.tif 000002
【図２】
0004783339.tif 000003
【図３】
0004783339.tif 000004
【図４】
0004783339.tif 000005
【図５】
0004783339.tif 000006
【図６】
0004783339.tif 000007
【図７】
0004783339.tif 000008
【図８】
0004783339.tif 000009
【図９】
0004783339.tif 000010
【図１０】
0004783339.tif 000011
【図１１】
0004783339.tif 000012
【図１２】
0004783339.tif 000013
【図１３】
0004783339.tif 000014
【図１４】
0004783339.tif 000015
【図１５】
0004783339.tif 000016
【図１６】
0004783339.tif 000017
【図１７】
0004783339.tif 000018
【図１８】
0004783339.tif 000019
【図１９】
0004783339.tif 000020