説明

構造化文書データ変換装置及び方法

【課題】アプリケーションが個別にデータの読み替え処理をプログラミングしなくても、異なる構造化データを、共通化された構造を持つものとして参照可能とする。
【解決手段】変換エンジン20は、DB10に記憶された、見かけ上の構造は異なるが、共通の論理構造を持つと見なされる要素群の組毎に用意され変換規則定義情報であって、当該組内の物理形式が共通の要素群毎にそれぞれ対応した変換規則を含む変換規則定義情報の1つ、例えば変換規則定義情報120-1が、アプリケーションプログラム40から指定された場合、当該情報120-1に従って、対応する要素群の組を対象に、DB10に記憶された構造化データの物理形式を論理形式に変換する。ユーザインタフェース30は、変換された論理形式を持った構造化データがDB10に存在するかの如く変換エンジン20による変換結果をアプリケーションプログラム40に返す。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、構造化データ(構造化文書)の形式を変換する構造化データ変換装置及び変換方法に係り、特に、構造化データ(構造化文書)の一種である半構造化データ(半構造化文書)として知られているXMLデータ(XML文書)の表現形式を変換するのに好適な構造化データ変換装置及び方法に関する。
【背景技術】
【0002】
データを記述する手段として、XML(Extensible Markup Language)が広く利用されている。このXMLを用いて記述されたデータ(文書)はXMLデータ(XML文書)と呼ばれる。
【0003】
XMLデータは、論理的に、階層を持った木構造を表現し、構造化データ(構造化文書)の一種である半構造化データ(半構造化文書)として知られている。XMLは、タグ、属性名、及びそれらの階層構造による自己説明性を有している。このため、XMLは、データの利用時に構造を目的に合わせて整形したり、その中から必要な情報を抽出することが可能な特長を持つ。特に昨今、技術発展の顕著なXMLデータベース(XMLDB)では、データ構造を事前に規定することなく応用ソフトウェア(アプリケーション)がそれぞれの固有形式で情報登録しても、それらの情報に陰に含まれる共通構造に注目して一括処理や分析を行うアプリケーションを実現可能であるという大きな効用をもたらしている。
【0004】
従来、データ登録アプリケーションに固有の形式でXMLDBに格納されたデータを、利用時に目的の構造に読み替える(つまり変換する)には、大別して次の2つの方法(変換方法)がある。
【0005】
1つは、アプリケーションが、DBから読み取ったデータを目的の構造に変換するか、もしくは、その中の参照する情報項目を直接に取り出して変換する方法(方法1)である。もう1つは、DBから対象データを形式毎にいったん取り出し、これを変換して形式を共通化する方法(方法2)である。この変換法の定義と変換の実行には、XMLの標準の1つであるXSLT(XSL Transformations, XSL:Extensible Stylesheet Language)が用いられる(例えば、非特許文献1参照)。
【非特許文献1】XSL Transformations (XSLT) Version 1.0,[online],平成11年11月16日,World Wide Web Consortium (W3C),[平成16年6月21日検索],インターネット<URL: http://www.w3.org/TR/1999/REC-xslt-19991116>
【発明の開示】
【発明が解決しようとする課題】
【0006】
上記した従来技術、例えば方法1には、データ読み替えの多くの処理は類似しているにも拘わらず、アプリケーションがそれぞれの読み替え処理をプログラミングしなければならない問題がある。一方、方法2には、データを格納形式毎に一旦取り出して、XSLTプロセッサを実行しなければならないため、実行効率が悪いという問題がある。XSLTプロセッサは、XSLTスタイルシート(変換法の定義)を利用して変換結果を出力するプログラムである。
【0007】
また、方法1及び2のいずれも、元のデータの形式が複数存在する場合にアプリケーションはそのことを考慮しなければならないため、プログラミングが複雑になると共に、元のデータの形式が増大したときの拡張性に欠けるという問題もある。
【0008】
本発明は上記事情を考慮してなされたものでその目的は、アプリケーションが個別にデータの読み替え処理をプログラミングしなくても、異なる構造化データを、共通化された構造を持つものとして参照できる構造化データ変換装置及び方法を提供することにある。
【課題を解決するための手段】
【0009】
本発明の1つの観点によれば、データベースに記憶された構造化データの形式を変換する構造化データ変換装置が提供される。この構造化データ変換装置は、上記データベースに記憶された、見かけ上の構造は異なるが、共通の論理構造を持つと見なされる予め定められた要素群の組毎に用意される変換規則定義情報であって、当該組内の物理形式が共通の上記要素群毎にそれぞれ対応した変換規則を含む変換規則定義情報の1つが、上記構造化データを利用するアプリケーションプログラムから指定された場合、当該指定された変換規則定義情報に従って、上記データベースに記憶されたデータの形式である物理形式を、共通の論理構造を表す形式である論理形式に変換する変換手段と、この変換手段によって変換された論理形式を持ったデータが上記データベースに存在するかの如く、当該変換手段による変換結果を上記アプリケーションプログラムに返すインタフェース手段とを備える。
【0010】
このような構成においては、アプリケーションプログラムによって任意の変換規則定義情報が指定されると、その変換規則定義情報に対応する要素群の組、即ち見かけ上の構造は異なるが、共通の論理構造を持つと見なされる要素群の組を対象に、当該指定された変換規則定義情報に従って、構造化データの物理形式が論理形式に変換される。そして、変換された論理形式を持った構造化データがデータベースに存在するかの如く、その変換結果がアプリケーションプログラムに返される。
【0011】
このように、上記の構成によれば、アプリケーションプログラムは、構造化データ変換装置の変換手段に対して任意の変換規則定義情報を指定するだけで、当該アプリケーションプログラムが個別にデータの読み替え処理をプログラミングしなくても、当該アプリケーションプログラムからは、当該変換規則定義情報に対応した、見かけ上の構造が異なるデータベース内の構造化データを、共通化された構造を持つものとして参照できる。しかも、元のデータの形式が増大したときにも、それに合わせて変換規則定義情報を変更するだけで容易に対応できるため、拡張性に富む。更に、データベース内の元の構造化データが、見かけ上の構造が異なる幾つかのグループから構成されていても、アプリケーションプログラムに対し、共通化された構造のデータが連続して存在するように認識させることができる。
【0012】
ここで、データベースに記憶された要素群の組毎に用意される変換規則定義情報に、それぞれ識別情報が付与される構成とするならば、上記変換手段に次のような機能、即ち、アプリケーションプログラムから任意の変換規則定義情報の識別情報が指定された場合に、データベースに記憶された変換規則定義情報のうちの、当該識別情報が付与されている変換規則定義情報が指定されたとして、当該指定された変換規則定義情報に従う変換を行う機能を持たせると良い。ここで、上記識別情報に名前を用いるならば、アプリケーションプログラムは名前を指定するだけで、データ変換に用いる変換規則定義情報と変換の対象となる要素群の組を指定できる。
【0013】
また、上記変換規則定義情報に含まれている変換規則が、当該変換規則を適用する要素群中の各要素に共通のフィールド変換規則であって、当該各要素の下に位置する任意の要素であるフィールドのうち、共通の論理構造に対応した物理構造を持つフィールドの変換規則であるフィールド変換規則を含む構成とするならば、上記変換手段に次のようなフィールド変換手段、即ち、上記フィールド変換規則に従い、対応するフィールドの物理形式を論理形式に変換するフィールド変換手段を持たせると良い。この変換規則を適用する要素群中の各要素の下に位置する要素であるフィールドのうち、フィールド変換規則で定義されるフィールドについて、物理形式を論理形式に変換するフィールド変換を自動的に行うことができる。
【0014】
特に、変換規則定義情報に含まれている変換規則が、当該変換規則を適用する要素群の格納箇所を示すパスの情報を含み、フィールド変換規則が、対応するフィールドの変換前の要素名を表す変換前タグと変換後の要素名を表す変換後タグとを含む構成とするならば、上記変換手段に次のような各手段、即ち、指定された変換規則定義情報を適用する要素群の組の中から、変換対象となる要素群を順次選択する第1の選択手段と、指定された変換規則定義情報の中から、この第1の選択手段によって選択された要素群の格納箇所を表すパスで特定される変換規則を選択する第2の選択手段と、上記第1の選択手段によって選択された要素群から、変換対象となる要素を順次選択する第3の選択手段とを持たせ、この第3の選択手段によって選択された要素中の各フィールドのうち、第2の選択手段によって選択された変換規則中のフィールド変換規則に含まれている変換前タグに一致するタグを含むフィールドの物理形式が、上記フィールド変換手段により当該フィールド変換規則に従って論理形式に変換される構成とすると良い。
【0015】
また、フィールド変換規則にフィールド値の変換を定義したフィールド値変換規則が含まれる構成とするならば、上記変換手段に、次のような手段、即ちフィールド変換規則による変換の対象となるフィールドの値をフィールド値変換規則に従って変換するフィールド値変換手段を持たせると良い。このような構成においては、フィールドの物理形式を論理形式に変換することにより、フィールド値と変換後の形式との間に矛盾が生じる場合に、その矛盾を解消することができる。例えば、<定価>フィールド(定価要素)のフィールド値(要素内容)は千円単位で表され、<価格>フィールド(価格要素)のフィールド値(要素内容)は円単位で表される場合に、<定価>タグを共通化された<価格>タグに変換する場合、そのフィールド値(要素内容)を千円単位から円単位に変換することができる。
【0016】
また、上記変換手段に、次のような手段、即ちアプリケーションプログラムから集約型の操作と、当該集約型の操作の対象となる集約対象フィールドの論理形式を表す論理名が指定された場合、上記フィールド変換規則に上記フィールド値変換規則が含まれているならば、上記指定された集約対象フィールドの値に対する変換後の値を、その時点までの集約結果に反映し、上記フィールド変換規則に上記フィールド値変換規則が含まれていないならば、上記指定された集約対象フィールドの値を、その時点までの集約結果に反映する集約手段を持たせると良い。このような構成においては、指定された集約対象フィールドの変換後の値を集約結果に反映することが可能となるため、フィールド値と変換後の形式との間の矛盾を解消しながら、集約対象フィールドの値を集約すること、例えば単位が統一された集約対象フィールドの値を加算することができる。
【発明の効果】
【0017】
本発明によれば、アプリケーションプログラムから任意の変換規則定義情報を指定するだけで、その変換規則定義情報に対応する要素群の組である、見かけ上の構造は異なるが、共通の論理構造を持つと見なされる要素群の組を対象に、当該指定された変換規則定義情報に従って、構造化データの物理形式が論理形式に変換され、その変換された論理形式を持った構造化データがデータベースに存在するかの如く、その変換結果がアプリケーションプログラムに返される。このため、アプリケーションプログラムは、個別にデータの読み替え処理をプログラミングしなくても、当該変換規則定義情報に対応した、見かけ上の構造が異なるデータベース内の構造化データを、共通化された構造を持つものとして参照できる。
【発明を実施するための最良の形態】
【0018】
以下、本発明を、構造化データ(半構造化データ)の代表であるXMLデータの表現形式を変換するXMLデータ変換装置に適用した一実施形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るXMLデータ変換装置の構成を示すブロック図である。XMLデータ変換装置は、XMLDB(XMLデータベース)10と、XMLデータ変換エンジン20と、ユーザインタフェース30とを備えている。XMLDB10はハードディスクドライブに代表される外部記憶装置(図示せず)に保存されているものとする。なお、XMLDB10をXMLデータ変換装置から独立させて、例えばネットワークを介して当該XMLデータ変換装置内の変換エンジン20からアクセス可能な構成とすることも可能である。この場合、XMLDB10を、複数のXMLデータ変換装置で共有することも可能である。
【0019】
XMLは均質な階層構造で表されるデータである。しかし、以下の説明においては便宜上、共通構造の認識に基づき処理される要素を「レコード」、レコードの下に位置する要素を「フィールド」、レコード群を子要素とする要素を「テーブル」と表現する。
【0020】
XMLDB10には、XMLデータ変換エンジン20による変換の対象となり得るXMLデータである物理データ(元データ)11が格納される。物理データ11は、レコード群を子要素として有する幾つかのテーブル(物理テーブル、物理要素群)、例えば3つのテーブル110-1,110-2及び110-3を含む。テーブル110-iは、定められた特徴を備えたデータではなく、共通な構造を持った要素(レコード)群に対する外部からの意味づけ結果を示すデータである。
【0021】
XMLDB10にはまた、XMLデータ変換エンジン20によって適用されるXMLデータ変換の規則(XMLデータ変換法)を定義した情報(変換規則定義情報)のファイル(以下、変換規則定義ファイルと称する)12も格納される。ここでは、変換規則定義ファイル12は、変換規則定義情報120-1及び120-2を含む変換規則定義情報の集合として定義されており、ファイル名によって管理される通常のデータファイルとは異なるものとする。変換規則定義情報120-j(j=1,2)は、XMLデータの表現形式を物理形式から論理形式に変換するための変換規則を定義した情報である。ここで、物理形式とは、変換対象となるXMLデータの元の表現形式をいい、論理形式とは、元の表現形式と共通な論理構造の目的とする表現形式をいう。
【0022】
XMLデータ変換エンジン20は、変換規則定義ファイル12内の変換規則定義情報120-jに基づきXMLデータを物理形式から論理形式に変換する。XMLデータ変換エンジン20は、形式形式変換部21とフィールド値変換部22とを備えている。
【0023】
形式変換部21はXMLデータ変換の実行部であり、XMLデータ変換エンジン20の中枢部をなす。形式変換部21は、アプリケーション(アプリケーションプログラム)40からユーザインタフェース30を介して与えられるXMLデータ変換要求に応じて、物理形式から論理形式へのXMLデータ変換を実行する。形式変換部21は、例えば2つの変換ユニット210-1及び210-2を含む。変換ユニット210-1及び210-2は、変換により得られる論理形式データの処理法に応じて選択して用いられる。変換ユニット210-1は、XMLデータ変換により構造を共通化された論理レコード群を、一括してアプリケーションプログラム40に渡す処理(以下、処理1と称する)を適用する。一方、変換ユニット210-2は、上記論理レコード群に対して集約型の操作を行った結果をアプリケーションプログラム40に渡す処理(以下、処理2と称する)を適用する。集約型の操作とは、論理レコード群を集約する操作を指し、例えば定価要素の要素内容と価格要素の要素内容を、いずれも価格要素の要素内容として、それらの総和を算出する操作が挙げられる。また、エラー要素の要素内容(エラーの有無)と誤り要素の要素内容(誤りの有無)を、いずれもエラー要素の要素内容として、1つでもエラー(誤り)があれば、不良とする操作も集約型の操作である。変換ユニット210-1及び210-2のいずれを用いるかは、ユーザの選択操作に応じてアプリケーションプログラム40から指定される。
【0024】
フィールド値変換部22は、変換規則定義情報120-jによりフィールド値の変換が指定されたとき、形式変換部21(内の変換ユニット210-1または210-2)から呼び出されて、その値の変換を実行する。フィールド値変換部22は、例えば、値を四捨五入するための変換関数(四捨五入関数)221と、値の単位を変換するための変換関数(単位変換関数)222とを有する。
【0025】
ユーザインタフェース30は、XMLデータ変換エンジン20とアプリケーションプログラム40(のユーザ)とのインタフェースである。ユーザインタフェース30は、ユーザの操作に応じてアプリケーションプログラム40から送られるXMLデータ変換(物理形式から論理形式への変換)の要求を、XMLデータ変換エンジン20(内の形式変換部21)に通知する。ユーザインタフェース30はまた、XMLデータ変換エンジン20(内の形式変換部21)によるXMLデータの変換結果(つまり、物理形式から論理形式への変換結果)をアプリケーションプログラム40に通知する。アプリケーションプログラム40は、通知された変換結果(XMLデータの変換結果)を利用する。
【0026】
XMLデータ変換エンジン20は、計算機にインストールされた特定のソフトウェアプログラムを当該計算機が読み取って実行することにより実現される。このプログラムは、コンピュータで読み取り可能な記憶媒体(フロッピー(登録商標)ディスクに代表される磁気ディスク、CD−ROM、DVDに代表される光ディスク、フラッシュメモリに代表される半導体メモリ等)に予め格納して頒布可能である。また、このプログラムが、ネットワークを介してダウンロード(頒布)されても構わない。
【0027】
図2は、変換規則定義ファイル12の記述内容の一般形を示す。図2において、各タグで表わされた記述項目は次のように定義される。
<logical-table>要素121は、変換規則定義ファイル12全体、つまり変換規則定義情報120-jの集合を表わす。
【0028】
<map>要素122は、1つの変換規則定義情報120-jを表わす。この<map>要素202が1つの論理的なテーブルを与える。<map>要素202は、仮想的に共通構造を持つと見せるデータ群(論理テーブル)毎に用意される。
<name>要素123は、論理テーブル名を表す。変換規則定義情報120-jは、アプリケーションプログラム40からこの論理テーブル名によって識別される。つまり変換規則定義情報120-jには、固有の論理テーブル名が付与されている。
<recordname>要素124は、変換後レコード(論理レコード)タグを表す。
【0029】
<translate>要素125は、変換元のデータからなるテーブル(物理テーブル)毎に用意される、レコード変換の規則を定義した情報である。
<path>要素126は、物理テーブルのパスを表す。
<field>要素127は、物理テーブルから論理テーブルに変換するとき、変換対象となるフィールドの変換規則を定義した情報である。
【0030】
<physical>要素128は、変換対象フィールドの変換前のタグを表す。
【0031】
<logical>要素129は、変換対象フィールドの変換後のタグを表す。
【0032】
<function>要素12Aは、フィールド値の変換を要するとき、その変換に用いられる変換関数を指定する。
【0033】
<param>要素12Bは、<function>要素12Aで指定される変換関数が引数を要するとき、その引数を指定する。
【0034】
図3は、変換対象データの一例を示す。この図3には、XMLデータ変換前の、異なる物理形式のレコード31及び32が、2つのパス “/root/商品カタログ” と “/root/製品情報” にそれぞれ格納されている状況と、当該レコード31及び32の具体例が示されている。なお、パス “/root/商品カタログ” には、レコード31と同一の物理形式の別のレコードも格納されているものとする。つまり、パス “/root/商品カタログ” には、レコード31を含む同一の物理形式のレコード群を子要素とする(図1中のテーブル110-iに相当する)テーブル33が格納されている。同様に、パス “/root/製品情報” には、レコード32と同一の物理形式の別のレコードも格納されているものとする。つまり、パス “/root/製品情報” には、レコード32を含む同一の物理形式のレコード群を子要素とする(図1中のテーブル110-iに相当する)テーブル34が格納されている。
【0035】
図4は、図3に示されている、物理形式の異なる2種類のレコード31及び32の間のフィールドの対応関係を表形式で示す。図4には、レコード(商品カタログレコード)31中の商品、メーカ、機種、サイズ及び定価の各フィールドと、レコード(製品情報レコード)32中の製品、製造元、名称、画面サイズ及び価格の各フィールドとが、それぞれ対応していることが示されている。そこで、図4に示す表形式の最右端のカラムに記されたタグを持つ論理テーブルに、上述の対応関係のあるフィールドを統合し、アプリケーションプログラム40からは共通のレコード形式に見せる変換規則の定義を考える。つまり、図3に示されている物理形式の異なるレコード31及び32を、それぞれ図5に示すレコード310及び320としてアプリケーションプログラム40に提供することを考える。
【0036】
図6は、図3のレコード31及び32を、それぞれ図5のレコード310及び320に変換するための、例えば変換規則定義情報120-1の具体例を示す。図6において、<map>要素622は、図2中の<map>要素122に相当しており、図2中の<translate>要素125に相当する2つの<translate>要素625-1及び625-2を含む。<translate>要素625-1は、レコード31を含むレコード群を子要素とするテーブル33(図3参照)に対応して用意され、<translate>要素625-2は、レコード32を含むレコード群を子要素とするテーブル34(図3参照)に対応して用意されている。
【0037】
<translate>要素625-1は、図2中の<field>要素127に相当する、<field>要素627-1を含む。<field>要素627-1は、図3中のテーブル33の子要素群、つまりレコード31を含むレコード群に共通の、定価タグ(定価フィールド)を価格タグ(価格フィールド)に変換するためのフィールドの変換規則を定義している。<field>要素627-1は、図2中の<function>要素12Aに相当する、<function>要素62Aを含む。<function>要素62Aは、価格の単位変換のために、図1中の単位変換関数222を指定する。
【0038】
一方、<translate>要素625-2は、3つの<field>要素627-2a,627-2b及び627-2cを含む。<field>要素627-2a,627-2b及び627-2cは、図3中のテーブル34の子要素群、つまりレコード32を含むレコード群に共通に用意される。<field>要素627-2aは、製造元タグ(製造元フィールド)をメーカータグ(メーカーフィールド)に変換するための、フィールドの変換規則を定義している。同様に、<field>要素627-2bは、名称タグ(名称フィールド)を機種タグ(機種フィールド)に変換するための、フィールドの変換規則を定義している。同様に、<field>要素627-2cは、外形/画面サイズタグ(外形/画面サイズフィールド)をサイズタグ(サイズフィールド)に変換するための、フィールドの変換規則を定義している。このように、図6に示す変換規則定義情報120-1は、図3中の2つのテーブル(物理テーブル)33及び34に含まれる各レコードを共通の論理的レコード形式に変換するために、当該各レコード内の特定のフィールドをどのように変換するかを示す変換規則を与えている。
【0039】
次に、本実施形態の動作について、XMLデータ変換エンジン20内の変換ユニット210-1の動作を例に、図7のフローチャートを参照して説明する。
まず、ユーザの操作に応じて、アプリケーションプログラム40から変換ユニット210-1に対して、図6中の変換規則定義情報120-1を特定する論理テーブル名が通知されたものとする。この場合、変換ユニット210-1は、アプリケーションプログラム40から指定された論理テーブル名の空の変換結果テーブル(論理テーブル)を、図示せぬメモリ上に用意する(ステップS1)。
【0040】
次に、変換ユニット210-1は第1の選択手段として機能して、XMLDB10に格納されている、アプリケーションプログラム40から指定された論理テーブル名の論理テーブルに対応する変換対象XMLデータ(即ち物理テーブル群)から、最初の変換対象テーブル(物理テーブル)を選択する(ステップS2)。ここでは、図3に示すテーブル33及び34を含むXMLデータからテーブル33が選択されたものとする。
【0041】
次に、変換ユニット210-1は第2の選択手段として機能して、XMLDB10に格納されている変換規則定義ファイル12内の変換規則定義情報のうちの、アプリケーションプログラム40から指定された論理テーブル名で特定される変換規則定義情報から、変換対象テーブル33のパス、つまり “/root/商品カタログ” で特定される変換規則である<translate>要素を選択する(ステップS3)。ここでは、アプリケーションプログラム40から指定された論理テーブル名によって、図6に示す変換規則定義情報120-1が特定されるものとすると、当該変換規則定義情報120-1内の<translate>要素625-1が選択される。
【0042】
次に、変換ユニット210-1は第3の選択手段として機能して、テーブル33から、最初の変換対象レコードを選択する(ステップS4)。ここでは、レコード31が変換対象レコードとして選択されたものとする。変換ユニット210-1は、変換対象レコード31から最初の変換対象フィールドを選択する(ステップS5)。ここでは、レコード31からメーカー要素(図3参照)が変換対象フィールドとして選択されたものとする。
【0043】
変換ユニット210-1は、変換対象フィールド(メーカー要素)のタグ(メーカー)が<translate>要素625-1中の変換規則に含まれているかを判定する(ステップS6)。<translate>要素625-1中の変換規則に含まれるタグは、図6に示されるように、定価タグのみである。この場合、変換ユニット210-1は、後述するステップS7及びS8をスキップしてステップS9に進む。このステップS9において、変換ユニット210-1は、、現在処理中のテーブル33に未処理のフィールドが残っているかを判定する。この例のように、未処理のフィールドが残っている場合、変換ユニット210-1はテーブル33から次の変換対象フィールドを選択する(ステップS10)。ここでは、図3から明らかなように、メーカー要素の次の品名要素が変換対象フィールドとして選択される。
【0044】
変換ユニット210-1は、次の変換対象フィールド(=品名要素)を選択すると、ステップS6に戻る。このステップS6において、変換ユニット210-1は、変換対象フィールド(品名要素)のタグ(品名)が<translate>要素625-1中の変換規則に含まれているかを判定する。ここで、変換対象フィールドである品名要素のタグ(品名)は、<translate>要素625-1中の変換規則に含まれていない。この場合、テーブル33中の残りのフィールドについて、同様の処理が繰り返される。
【0045】
さて、テーブル33中の残りのフィールド、つまり機種要素、サイズ要素、重量要素及び定価要素の各タグのうち、<translate>要素625-1中の変換規則に含まれているタグは、定価タグのみである。変換ユニット210-1は、次の変換対象フィールドとしてテーブル33から定価要素を選択した場合(ステップS10)、当該価格要素のタグが<translate>要素625-1中の変換規則に含まれていると判定する(ステップS6)。ここでは、価格要素のタグが<translate>要素625-1中の<field>要素627-1に含まれている。この場合、変換ユニット210-1は、<field>要素627-1に<function>要素が含まれているかを判定し、<function>要素が含まれているならば、フィールド値変換部22を呼び出す。するとフィールド値変換部22は、<field>要素627-1に含まれている<function>要素で指定される変換関数を用いて、変換対象フィールドの値を変換する(ステップS7)。本実施形態では、<field>要素627-1中の<function>要素で単位変換関数222が指定されると共に、引数として1000が指定されている。これにより、ステップS7では、変換対象フィールドの値、つまり定価要素の要素内容である「298」(図3参照)が、「298000」に変換される。このフィールド値変換部22によるフィールド値変換結果は変換ユニット210-1に返される。また変換ユニット210-1は、<field>要素627-1の変換規則(図6参照)に従い、変換対象フィールドのパス、つまり定価要素のタグを<定価>から<価格>に変換する(ステップS8)。
【0046】
変換ユニット210-1は、テーブル(物理テーブル)33中のレコード(物理レコード)31に含まれている全てのフィールド(要素)について処理し終えると(ステップS9)、当該レコード31を対象としたフィールド毎のデータ変換の結果である変換結果レコード(論理レコード)を変換結果テーブル(論理テーブル)に追加する(ステップS11)。次に変換ユニット210-1は、テーブル33に未処理のレコードが残っているかを判定する(ステップS12)。もし、未処理のレコードが残っているならば、変換ユニット210-1は第3の選択手段として機能して、テーブル33から次の変換対象レコードを選択し(ステップS13)、当該変換対象レコードについて上記ステップS5から始まる処理を実行する。これに対し、未処理のレコードが残っていないならば、変換ユニット210-1は、XMLDB10内の変換対象データに未処理のテーブルが残っているかを判定する(ステップS14)。この例のように、未処理のテーブルが残っているならば、変換ユニット210-1は第1の選択手段として機能して、変換対象データから次の変換対象テーブルを選択する(ステップS15)。ここでは、図3に示されているテーブル34が選択される。
【0047】
変換ユニット210-1は、テーブル34を変換対象テーブルとして選択すると、当該テーブル34について上記ステップS3から始まる処理を実行する。ここでは、テーブル34のパス、つまり “/root/製品情報” で特定される変換規則である<translate>要素625-2(図6参照)が選択される(ステップS3)。また、テーブル34中のレコード、例えばレコード32について、当該レコード32に含まれている製造元要素、名称要素、外形要素及び価格要素のうち、製造元要素、名称要素及び外形要素が変換対象フィールドとして、それぞれ、<translate>要素625-2に含まれている<field>要素627-2a,627-2b及び627-2cの変換規則(図6参照)に従うデータ変換が行われる。ここでは、<field>要素627-2a,627-2b及び627-2cには、いずれも<function>要素は含まれていない。この場合、製造元要素、名称要素及び外形要素のパス(タグ)である<製造元>、<名称>及び<外形/画面サイズ>が、それぞれ<メーカー>、<機種>及び<サイズ>に変換される(ステップS8)。これら、テーブル(物理テーブル)33中のレコード(物理レコード)32に含まれている製造元要素、名称要素及び外形要素を変換対象フィールドとした変換結果のレコード(論理レコード)は、変換結果テーブル(論理テーブル)に追加される(ステップS11)。やがて、XMLDB10内の変換対象データに含まれている全てのテーブル(物理テーブル)についての処理が完了すると、その時点において変換結果テーブル(論理テーブル)に格納されている論理レコードの群(つまり変換ユニット210-1による変換結果)が、ユーザインタフェース30によってアプリケーションプログラム40に渡される。
【0048】
次に、XMLデータ変換エンジン20内の変換ユニット210-2の動作について、図8のフローチャートを参照して説明する。
まず、ユーザの操作に応じて、アプリケーションプログラム40から変換ユニット210-2に対して、ある論理テーブル名が通知されたものとする。この場合、変換ユニット210-2は、メモリ上に集約結果値を保持する領域を確保し、その領域内の集約結果値を初期化する(ステップS21)。次に変換ユニット210-2は、アプリケーションプログラム40から集約対象フィールドの論理名を取得する(ステップS22)。ここでは変換ユニット210-2は、定価タグ及び価格タグに共通の<価格>を論理名として取得したものとする。
【0049】
次に、変換ユニット210-1は第1の選択手段として機能して、XMLDB10に格納されている、アプリケーションプログラム40から指定された論理テーブル名の論理テーブルに対応する変換対象XMLデータ(即ち物理テーブル群)から、最初の変換対象テーブル(物理テーブル)を選択する(ステップS23)。次に、変換ユニット210-2は第2の選択手段として機能して、XMLDB10に格納されている変換規則定義ファイル12内の変換規則定義情報のうちの、アプリケーションプログラム40から指定された論理テーブル名で特定される変換規則定義情報から、変換対象テーブルのパスで特定される変換規則(<translate>要素)を選択する(ステップS24)。
【0050】
次に、変換ユニット210-2は第3の選択手段として機能して、変換対象テーブルから、最初の変換対象レコードを選択する(ステップS25)。次に変換ユニット210-2は、変換対象レコードから、ステップS22で取得した論理名の最初の集約対象フィールドを選択する(ステップS26)。そして変換ユニット210-2は、集約対象フィールドのタグがステップS24で選択された変換規則に含まれているかを判定する(ステップS27)。もし、集約対象フィールドのタグがステップS24で選択された変換規則に含まれているならば、変換ユニット210-2は当該規則に<function>要素が含まれているかを判定し、<function>要素が含まれているならば、フィールド値変換部22を呼び出す。するとフィールド値変換部22は、この<function>要素で指定される変換関数を用いて、変換対象フィールドの値を変換する(ステップS28)。ここでは、価格要素の要素内容である価格の値の単位が変換されたものとする。このフィールド値変換部22によるフィールド値変換結果は変換ユニット210-2に返される。すると、変換ユニット210-2は集約手段として機能して、現在の集約結果値に、フィールド値変換部22から返されたステップS28での変換結果を反映する(ステップS29)。ここでは、変換された価格の値が、現在の集約結果値に加算されたものとする。
【0051】
また集約対象フィールドのタグがステップS24で選択された変換規則に含まれていても(ステップS27)、ステップS24で選択された変換規則に<function>要素が含まれていないときは、変換ユニット210-2はステップS28を行わずに集約手段として機能して、集約対象フィールドの値をそのまま現在の集約結果値に反映する。また、集約対象フィールドのタグがステップS24で選択された変換規則に含まれていないときも(ステップS27)、変換ユニット210-2は集約手段として機能して、当該集約対象フィールドの値を現在の集約結果値に反映する(ステップS29a)。
【0052】
変換ユニット210-2はステップS29または29aを実行するとステップS30に進む。このステップS30において、変換ユニット210-2は、変換対象テーブルに未処理のレコードが残っているかを判定する。もし、未処理のレコードが残っているならば、変換ユニット210-2は第3の選択手段として機能して、変換対象テーブルから次の変換対象レコードを選択し(ステップS31)、当該変換対象レコードについて上記ステップS26から始まる処理を実行する。これに対し、未処理のレコードが残っていないならば、変換ユニット210-2は、XMLDB10内の変換対象XMLデータ(アプリケーションプログラム40から指定された論理テーブル名の論理テーブルに対応する物理テーブル群)に未処理のテーブルが残っているかを判定する(ステップS32)。
【0053】
もし、未処理のテーブルが残っているならば、変換ユニット210-2は第1の選択手段として機能して、変換対象データ(物理テーブル群)から次の変換対象テーブルを選択する(ステップS33)。そして変換ユニット210-2は、選択された変換対象テーブルについて上記ステップS24から始まる処理を実行する。これに対し、未処理のテーブルが残っていないならば、その時点における集約結果値(つまり変換ユニット210-2による変換結果)が、ユーザインタフェース30によってアプリケーションプログラム40に渡される。
【0054】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【0055】
【図1】本発明の一実施形態に係るXMLデータ変換装置の構成を示すブロック図。
【図2】図1に示されている変換規則定義ファイル12の記述内容の一般形を示す図。
【図3】アプリケーションプログラム40からの論理テーブル名で特定される、変換対象テーブル(物理テーブル)33及び34を含む変換対象データ(XMLデータ)と、当該変換対象テーブル33及び34中の変換対象レコード31及び32の一例とを示す図。
【図4】図3に示されている、物理形式の異なる2種類のレコード31及び32の間のフィールドの対応関係を表形式で示す図。
【図5】図3中のレコード31及び32を対象とするデータ変換後のレコード310及び320の一例を示す図。
【図6】図3のレコード31を含むテーブル33及びレコード32を含むテーブル34を、それぞれ図5のレコード310を含むテーブル及びレコード320を含むテーブルに変換するための、変換規則定義情報120-1の具体例を示す図。
【図7】XMLデータ変換エンジン20内の変換ユニット210-1の処理手順を示すフローチャート。
【図8】XMLデータ変換エンジン20内の変換ユニット210-2の処理手順を示すフローチャート。
【符号の説明】
【0056】
10…XMLDB(XMLデータベース)、11…物理データ、12…変換規則定義ファイル、20…XMLデータ変換エンジン(変換手段)、21…形式変換部(フィールド変換手段)、22…フィールド値変換部(フィールド値変換手段)、30…ユーザインタフェース、31,32…レコード(物理レコード)、33,34…テーブル(物理テーブル)、40…アプリケーションプログラム、110-1,110-2,110-3…テーブル(物理テーブル)、120-1,120-2…変換規則定義情報、210-1,210-2…変換ユニット、221…変換関数(四捨五入関数)、222…変換関数(単位変換関数),310,320…レコード(論理レコード)。

【特許請求の範囲】
【請求項1】
データベースに記憶された構造化データの形式を変換する構造化データ変換装置において、
前記データベースに記憶された、見かけ上の構造は異なるが、共通の論理構造を持つと見なされる予め定められた要素群の組毎に用意される変換規則定義情報であって、当該組内の物理形式が共通の前記要素群毎にそれぞれ対応した変換規則を含む変換規則定義情報の1つが、前記構造化データを利用するアプリケーションプログラムから指定された場合、当該指定された変換規則定義情報に従って、対応する要素群の組を対象に、前記データベースに記憶された構造化データの形式である物理形式を、共通の論理構造を表す形式である論理形式に変換する変換手段と、
前記変換手段によって変換された論理形式を持った構造化データが前記データベースに存在するかの如く、前記変換手段による変換結果を前記アプリケーションプログラムに返すインタフェース手段と
を具備することを特徴とする構造化データ変換装置。
【請求項2】
前記データベースに記憶された前記要素群の組毎に用意される前記変換規則定義情報にはそれぞれ識別情報が付与されており、
前記変換手段は、前記アプリケーションプログラムから任意の変換規則定義情報の識別情報が指定された場合に、前記データベースに記憶された前記変換規則定義情報のうちの、当該識別情報が付与されている変換規則定義情報が指定されたとして、当該指定された変換規則定義情報に従う変換を行う
ことを特徴とする請求項1記載の構造化データ変換装置。
【請求項3】
前記変換規則定義情報に含まれている前記変換規則は、当該変換規則が適用される要素群中の各要素に共通のフィールド変換規則であって、当該各要素の下に位置する任意の要素であるフィールドのうち、共通の論理構造に対応した物理構造を持つフィールドの変換規則であるフィールド変換規則を含み、
前記変換手段は、前記フィールド変換規則に従い、対応するフィールドの物理形式を論理形式に変換するフィールド変換手段を含む
ことを特徴とする請求項1記載の構造化データ変換装置。
【請求項4】
前記変換規則定義情報に含まれている前記変換規則は、当該変換規則が適用される前記要素群の格納箇所を示すパスの情報を含み、前記フィールド変換規則は、対応するフィールドの変換前の要素名を表す変換前タグと変換後の要素名を表す変換後タグとを含み、
前記変換手段は、前記指定された変換規則定義情報が適用される要素群の組の中から、変換対象となる要素群を順次選択する第1の選択手段と、前記指定された変換規則定義情報の中から、前記第1の選択手段によって選択された要素群の格納箇所を表すパスで特定される変換規則を選択する第2の選択手段と、前記第1の選択手段によって選択された要素群から、変換対象となる要素を順次選択する第3の選択手段とを含み、
前記フィールド変換手段は、前記第3の選択手段によって選択された要素中の各フィールドのうち、前記第2の選択手段によって選択された変換規則中の前記フィールド変換規則に含まれている変換前タグに一致するタグを含むフィールドの物理形式を、当該フィールド変換規則に従って論理形式に変換する
ことを特徴とする請求項3記載の構造化データ変換装置。
【請求項5】
前記変換手段は、前記フィールド変換規則にフィールド値の変換を定義したフィールド値変換規則が含まれている場合に、前記フィールド変換規則による変換の対象となるフィールドの値を前記フィールド値変換規則に従って変換するフィールド値変換手段を含むことを特徴とする請求項3記載の構造化データ変換装置。
【請求項6】
前記フィールド値変換手段は、前記フィールド値変換規則によって四捨五入が指定されている場合、対応するフィールドの値を四捨五入する四捨五入手段を含むことを特徴とする請求項5記載の構造化データ変換装置。
【請求項7】
前記フィールド値変換手段は、前記フィールド値変換規則によって単位変換が指定されている場合、対応するフィールドの値の単位を変換する単位変換手段を含むことを特徴とする請求項5記載の構造化データ変換装置。
【請求項8】
前記変換手段は、前記アプリケーションプログラムから集約型の操作と、当該集約型の操作の対象となる集約対象フィールドの論理形式を表す論理名が指定された場合、前記フィールド変換規則に前記フィールド値変換規則が含まれているならば、前記指定された集約対象フィールドの値に対する変換後の値を、その時点までの集約結果に反映し、前記フィールド変換規則に前記フィールド値変換規則が含まれていないならば、前記指定された集約対象フィールドの値を、その時点までの集約結果に反映する集約手段を含むことを特徴とする請求項5記載の構造化データ変換装置。
【請求項9】
前記データベースを更に具備することを特徴とする請求項1記載の構造化データ変換装置。
【請求項10】
データベースに記憶された構造化データの形式を変換する構造化データ変換方法において、
前記データベースに記憶された、見かけ上の構造は異なるが、共通の論理構造を持つと見なされる予め定められた要素群の組毎に用意される変換規則定義情報であって、当該組内の物理形式が共通の前記要素群毎にそれぞれ対応した変換規則を含む変換規則定義情報の1つが、前記構造化データを利用するアプリケーションプログラムから指定された場合、当該指定された変換規則定義情報に従って、対応する要素群の組を対象に、前記データベースに記憶された構造化データの形式である物理形式を、共通の論理構造を表す形式である論理形式に変換するステップと、
変換された論理形式を持った構造化データが前記データベースに存在するかの如く、前記変換するステップによる変換結果を前記アプリケーションプログラムに返すステップと
を具備することを特徴とする構造化データ変換方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate