(57)【要約】  変換プログラムの再利用性を向上させることができるとともに、短時間でデータ接続問題の解を見つけることができる変換プログラム探索システムを提供する。  第１シグニチャ生成手段７１は、予め定められた複数の記述形式を１つのデータが満足しているか否かを各記述形式毎に二値で表した第１シグニチャを生成する。第２シグニチャ生成手段７２は、変換元のデータおよび変換後のデータの第１シグニチャの差分に基づき、変換プログラムの第２シグニチャを生成する。変換パス候補作成手段７４がデータ接続問題の解の候補を作成すると、評価値算出手段７５は、第２シグニチャを用いて、その候補の評価値を計算する。また、変換パス特定手段７６は、評価値が高い候補から順に、解となる変換パスを試行する。
2009017158.tif 000002
【特許請求の範囲】
【請求項１】
変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とに応じて、変換元のデータと変換後のデータと一つ以上の変換プログラムの入力データおよびその一つ以上の変換プログラムが出力する出力データとの関係を示す情報である変換パスを特定する変換プログラム探索システムであって、
予め定められた複数の記述形式を１つのデータが満足しているか否かを各記述形式毎に二値で表した情報である第１シグニチャを生成する第１シグニチャ生成手段と、
第１シグニチャ生成手段によって生成された変換元のデータの第１シグニチャおよび変換後のデータの第１シグニチャとの差分に基づいて、変換プログラムのメタデータである第２シグニチャを生成する第２シグニチャ生成手段と、
変換プログラムにおける入力データの名称、出力データの名称、および当該変換プログラムを実行するための実行定義情報と、第２シグニチャ生成手段によって生成される第２シグニチャとを記憶するプログラム情報記憶手段と、
変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とが与えられたときに、与えられた変換元のデータの名称と変換プログラムの入力データの名称との類似度および与えられた変換後のデータの名称と変換プログラムの出力データの名称との類似度に基づいて、データ変換の過程で用いられる変換プログラムの候補を選択するプログラム候補選択手段と、
プログラム候補選択手段によって選択された候補の組み合わせに対し、変換元のデータの名称と変換プログラムの入力データの名称との対応付け、および変換プログラムの出力データの名称と変換後のデータの名称との対応付けを行い、選択された候補の組み合わせとして複数の変換プログラムを含んでいる場合には、変換プログラムの出力データの名称と候補となる他の変換プログラムの入力データの名称との対応付けを行うことによって、変換パスの候補を作成する変換パス候補作成手段と、
入力データおよび出力データの名称と他のデータの名称との対応付けを行った変換プログラムの第２シグニチャと、変換事例とに基づいて、変換パスの候補の評価値を算出する評価値算出手段と、
評価値の高い順に変換パスの候補を選択し、選択した変換パスが定める変換プログラムの順に、与えられた変換元のデータを変換し、当該変換結果が、与えられた変換後のデータである場合に、選択した変換パスの候補を、与えられた変換元のデータの名称、変換後のデータの名称および変換事例に合致する変換パスとして特定する変換パス特定手段とを備えた
ことを特徴とする変換プログラム探索システム。
【請求項２】
物またはイベントを定義する複数の属性の属性名を含む変換元スキーマと、変換元スキーマにおける各属性名に応じた属性値の組であるレコードの集合と、前記変換元スキーマに対して変換を行った変換後スキーマと、変換後スキーマにおける各属性名に応じた属性値の組であるレコードの集合とが入力され、変換元スキーマにおける属性名と変換後スキーマにおける属性名とのペアのうち、属性名の類似度が最高となるペアを特定するペア特定手段と、
特定されたペアにおける変換元の属性名の属性値と、変換後の属性名の属性値とを比較し、同じ属性値を含むレコードを変換元および変換後のレコードの中から特定するレコード特定手段と、
レコード特定手段によって特定された変換元のレコードに含まれる属性値と、変換後のレコードに含まれる属性値とを、類似度が高い属性名のペアから順に抽出する属性値抽出手段とを備え、
プログラム候補選択手段は、属性値抽出手段によって変換元のレコードおよび変換後のレコードから抽出された属性値を変換事例とし、変換元のレコードおよび変換後のレコードから抽出された属性値の属性名をそれぞれ変換元データの名称および変換後のデータの名称として変換プログラムの候補を選択する
請求項１に記載の変換プログラム探索システム。
【請求項３】
変換パス特定手段が特定した変換パスを新たな変換プログラムとみなして、前記変換パスの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させる変換プログラム登録手段を備え、
第２シグニチャ生成手段は、前記変換パスに対する第２シグニチャを生成してプログラム情報記憶手段に記憶させる
請求項１または請求項２に記載の変換プログラム探索システム。
【請求項４】
指定された辞書により変換前のデータから変換後のデータを導出するための辞書プログラムを記憶する辞書プログラム記憶手段と、
プライマリキーとなる属性の属性値および前記プライマリキーに対応付けられる他の属性の属性値が与えられたときに、前記プライマリキーの属性値を変換前のデータとし、前記他の属性の属性値を変換後のデータとして、前記プライマリキーの属性値と前記他の属性の属性値とを対応付けた辞書を作成する辞書作成手段と、
辞書作成手段が作成した辞書を辞書プログラムに対して指定することによって、辞書が指定された新たな変換プログラムを生成し、当該新たな変換プログラムの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させる変換モジュール生成手段とを備え、
第２シグニチャ生成手段は、前記新たな変換プログラムに対する第２シグニチャを生成してプログラム情報記憶手段に記憶させる
請求項１から請求項３のうちのいずれか１項に記載の変換プログラム探索システム。
【請求項５】
変換パス候補作成手段は、変換元のデータの名称を含む第１グループと、変換モジュールおよび変換後のデータの名称を含む第２グループ作成し、第１グループに属する名称と第２グループに属する変換モジュールの入力データの名称とを対応付け、第１グループから対応付けた名称を除外するとともに変換モジュールの出力データの名称を追加し、第２グループから変換モジュールがなくなったときに、第１グループに属する名称と第２グループに属する変換後のデータの名称とを対応付けることによって、変換パスの候補を作成する
請求項１から請求項４のうちのいずれか１項に記載の変換プログラム探索システム。
【請求項６】
変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とに応じて、変換元のデータと変換後のデータと一つ以上の変換プログラムの入力データおよびその一つ以上の変換プログラムが出力する出力データとの関係を示す情報である変換パスを特定する変換プログラム探索方法であって、
第１シグニチャ生成手段が、予め定められた複数の記述形式を１つのデータが満足しているか否かを各記述形式毎に二値で表した情報である第１シグニチャを、変換元のデータおよび変換後のデータについて生成し、
第２シグニチャ生成手段が、第１シグニチャ生成手段によって生成された変換元のデータの第１シグニチャおよび変換後のデータの第１シグニチャとの差分に基づいて、変換プログラムのメタデータである第２シグニチャを生成し、
第２シグニチャ生成手段が、変換プログラムにおける入力データの名称、出力データの名称、および当該変換プログラムを実行するための実行定義情報を予め記憶しているプログラム情報記憶手段に、前記第２シグニチャを記憶させ、
プログラム候補選択手段が、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とが与えられたときに、与えられた変換元のデータの名称と変換プログラムの入力データの名称との類似度および与えられた変換後のデータの名称と変換プログラムの出力データの名称との類似度に基づいて、データ変換の過程で用いられる変換プログラムの候補を選択し、
変換パス候補作成手段が、プログラム候補選択手段によって選択された候補の組み合わせに対し、変換元のデータの名称と変換プログラムの入力データの名称との対応付け、および変換プログラムの出力データの名称と変換後のデータの名称との対応付けを行い、選択された候補の組み合わせとして複数の変換プログラムを含んでいる場合には、変換プログラムの出力データの名称と候補となる他の変換プログラムの入力データの名称との対応付けを行うことによって、変換パスの候補を作成し、
評価値算出手段が、入力データおよび出力データの名称と他のデータの名称との対応付けを行った変換プログラムの第２シグニチャと、変換事例とに基づいて、変換パスの候補の評価値を算出し、
変換パス特定手段が、評価値の高い順に変換パスの候補を選択し、選択した変換パスが定める変換プログラムの順に、与えられた変換元のデータを変換し、当該変換結果が、与えられた変換後のデータである場合に、選択した変換パスの候補を、与えられた変換元のデータの名称、変換後のデータの名称および変換事例に合致する変換パスとして特定する
ことを特徴とする変換プログラム探索方法。
【請求項７】
ペア特定手段が、物またはイベントを定義する複数の属性の属性名を含む変換元スキーマと、変換元スキーマにおける各属性名に応じた属性値の組であるレコードの集合と、前記変換元スキーマに対して変換を行った変換後スキーマと、変換後スキーマにおける各属性名に応じた属性値の組であるレコードの集合とを入力されたときに、変換元スキーマにおける属性名と変換後スキーマにおける属性名とのペアのうち、属性名の類似度が最高となるペアを特定し、
レコード特定手段が、特定されたペアにおける変換元の属性名の属性値と、変換後の属性名の属性値とを比較し、同じ属性値を含むレコードを変換元および変換後のレコードの中から特定し、
属性値抽出手段が、レコード特定手段によって特定された変換元のレコードに含まれる属性値と、変換後のレコードに含まれる属性値とを、類似度が高い属性名のペアから順に抽出し、
プログラム候補選択手段が、属性値抽出手段によって変換元のレコードおよび変換後のレコードから抽出された属性値を変換事例とし、変換元のレコードおよび変換後のレコードから抽出された属性値の属性名をそれぞれ変換元データの名称および変換後のデータの名称として変換プログラムの候補を選択する
請求項６に記載の変換プログラム探索方法。
【請求項８】
変換プログラム登録手段が、変換パス特定手段が特定した変換パスを新たな変換プログラムとみなして、前記変換パスの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させ、
第２シグニチャ生成手段が、前記変換パスに対する第２シグニチャを生成してプログラム情報記憶手段に記憶させる
請求項６または請求項７に記載の変換プログラム探索方法。
【請求項９】
辞書プログラム記憶手段が、指定された辞書により変換前のデータから変換後のデータを導出するための辞書プログラムを予め記憶し、
辞書作成手段が、プライマリキーとなる属性の属性値および前記プライマリキーに対応付けられる他の属性の属性値が与えられたときに、前記プライマリキーの属性値を変換前のデータとし、前記他の属性の属性値を変換後のデータとして、前記プライマリキーの属性値と前記他の属性の属性値とを対応付けた辞書を作成し、
変換モジュール生成手段が、辞書作成手段が作成した辞書を辞書プログラムに対して指定することによって、辞書が指定された新たな変換プログラムを生成し、当該新たな変換プログラムの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させ、
第２シグニチャ生成手段が、前記新たな変換プログラムに対する第２シグニチャを生成してプログラム情報記憶手段に記憶させる
請求項６から請求項８のうちのいずれか１項に記載の変換プログラム探索方法。
【請求項１０】
変換パス候補作成手段が、変換元のデータの名称を含む第１グループと、変換モジュールおよび変換後のデータの名称を含む第２グループ作成し、第１グループに属する名称と第２グループに属する変換モジュールの入力データの名称とを対応付け、第１グループから対応付けた名称を除外するとともに変換モジュールの出力データの名称を追加し、第２グループから変換モジュールがなくなったときに、第１グループに属する名称と第２グループに属する変換後のデータの名称とを対応付けることによって、変換パスの候補を作成する
請求項６から請求項９のうちのいずれか１項に記載の変換プログラム探索方法。
【請求項１１】
変換プログラムにおける入力データの名称、出力データの名称、および当該変換プログラムを実行するための実行定義情報を記憶するプログラム情報記憶手段を備えるコンピュータに、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とに応じて、変換元のデータと変換後のデータと一つ以上の変換プログラムの入力データおよびその一つ以上の変換プログラムが出力する出力データとの関係を示す情報である変換パスを特定させるための変換プログラム探索用プログラムであって、
前記コンピュータに、
予め定められた複数の記述形式を１つのデータが満足しているか否かを各記述形式毎に二値で表した情報である第１シグニチャを、変換元のデータおよび変換後のデータについて生成する第１シグニチャ生成処理、
第１シグニチャ生成処理で生成された変換元のデータの第１シグニチャおよび変換後のデータの第１シグニチャとの差分に基づいて、変換プログラムのメタデータである第２シグニチャを生成する第２シグニチャ生成処理、
プログラム情報記憶手段に、前記第２シグニチャを記憶させる第２シグニチャ記憶処理、
変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とが与えられたときに、与えられた変換元のデータの名称と変換プログラムの入力データの名称との類似度および与えられた変換後のデータの名称と変換プログラムの出力データの名称との類似度に基づいて、データ変換の過程で用いられる変換プログラムの候補を選択するプログラム候補選択処理、
プログラム候補選択処理で選択された候補の組み合わせに対し、変換元のデータの名称と変換プログラムの入力データの名称との対応付け、および変換プログラムの出力データの名称と変換後のデータの名称との対応付けを行い、選択された候補の組み合わせとして複数の変換プログラムを含んでいる場合には、変換プログラムの出力データの名称と候補となる他の変換プログラムの入力データの名称との対応付けを行うことによって、変換パスの候補を作成する変換パス候補作成処理、および
入力データおよび出力データの名称と他のデータの名称との対応付けを行った変換プログラムの第２シグニチャと、変換事例とに基づいて、変換パスの候補の評価値を算出する評価値算出処理、
評価値の高い順に変換パスの候補を選択し、選択した変換パスが定める変換プログラムの順に、与えられた変換元のデータを変換し、当該変換結果が、与えられた変換後のデータである場合に、選択した変換パスの候補を、与えられた変換元のデータの名称、変換後のデータの名称および変換事例に合致する変換パスとして特定する変換パス特定処理
を実行させるための変換プログラム探索用プログラム。
【請求項１２】
コンピュータに、
物またはイベントを定義する複数の属性の属性名を含む変換元スキーマと、変換元スキーマにおける各属性名に応じた属性値の組であるレコードの集合と、前記変換元スキーマに対して変換を行った変換後スキーマと、変換後スキーマにおける各属性名に応じた属性値の組であるレコードの集合とが入力されたときに、変換元スキーマにおける属性名と変換後スキーマにおける属性名とのペアのうち、属性名の類似度が最高となるペアを特定するペア特定処理、
特定されたペアにおける変換元の属性名の属性値と、変換後の属性名の属性値とを比較し、同じ属性値を含むレコードを変換元および変換後のレコードの中から特定するレコード特定処理、および
レコード特定処理で特定された変換元のレコードに含まれる属性値と、変換後のレコードに含まれる属性値とを、類似度が高い属性名のペアから順に抽出する属性値抽出処理を実行させ、
プログラム候補選択処理において、変換元のレコードおよび変換後のレコードから抽出された属性値を変換事例とし、変換元のレコードおよび変換後のレコードから抽出された属性値の属性名をそれぞれ変換元データの名称および変換後のデータの名称として変換プログラムの候補を選択させる
請求項１１に記載の変換プログラム探索用プログラム。
【請求項１３】
コンピュータに、
変換パス特定処理で特定された変換パスを新たな変換プログラムとみなして、前記変換パスの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させる変換プログラム登録処理、および
前記変換パスに対する第２シグニチャを生成してプログラム情報記憶手段に記憶させる処理
を実行させる請求項１１または請求項１２に記載の変換プログラム探索用プログラム。
【請求項１４】
コンピュータに、
指定された辞書により変換前のデータから変換後のデータを導出するための辞書プログラムを記憶する辞書プログラム記憶手段を備えるコンピュータに、
プライマリキーとなる属性の属性値および前記プライマリキーに対応付けられる他の属性の属性値が与えられたときに、前記プライマリキーの属性値を変換前のデータとし、前記他の属性の属性値を変換後のデータとして、前記プライマリキーの属性値と前記他の属性の属性値とを対応付けた辞書を作成する辞書作成処理、
辞書作成処理で作成された辞書を辞書プログラムに対して指定することによって、辞書が指定された新たな変換プログラムを生成し、当該新たな変換プログラムの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させる変換モジュール生成処理、および
前記新たな変換プログラムに対する第２シグニチャを生成してプログラム情報記憶手段に記憶させる処理
を実行させる請求項１１から請求項１３のうちのいずれか１項に記載の変換プログラム
探索用プログラム。
【請求項１５】
コンピュータに、
変換パス候補作成処理で、変換元のデータの名称を含む第１グループと、変換モジュールおよび変換後のデータの名称を含む第２グループ作成し、第１グループに属する名称と第２グループに属する変換モジュールの入力データの名称とを対応付け、第１グループから対応付けた名称を除外するとともに変換モジュールの出力データの名称を追加し、第２グループから変換モジュールがなくなったときに、第１グループに属する名称と第２グループに属する変換後のデータの名称とを対応付けることによって、変換パスの候補を作成させる
請求項１１から請求項１５のうちのいずれか１項に記載の変換プログラム探索用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの表現形式を変換するための複数の変換プログラムの中から入力した条件に合う変換プログラムを探索する変換プログラム探索システム、変換プログラム探索方法および変換プログラム探索用プログラムに関するものである。
【背景技術】
【０００２】
近年、複数のコンピュータシステムを連携させて動作させる基盤技術として、Ｗｅｂサービス，SOA（Service Oriented Architecture），EAI（Enterprise Application Integration ），ESB（Enterprise Service Bus ）等の技術が発展している。これらは、データのフォーマットをＸＭＬ（extensible markup language）等で統一することにより、システム間でのデータの受け渡しを可能にする技術である。しかし、データのフォーマットを統一化した上でも、単純にシステムを連携させることはできない。この原因となっているのがデータの表現方法の不均一さである。【０００３】
ここで、属性、属性名、属性値、スキーマという４つの語句を以下のように定義する。属性とは、実世界の物やイベントをデータとして表現する際に、物やイベントが持つ特徴を表す概念である。例えば、人に関するデータを作成する際には、人の特徴である「名前」や「性別」が属性にあたる。「属性名」とは、属性が何を表すか表現するために用いられる語である。すなわち、属性の名称となる語である。例えば、人をデータとして表現するため属性として名前や性別が用いられるとすると、「名前」という語や「性別」という語が属性名にあたる。「属性値」とは、属性で指定される特徴の値（属性である特徴の値）である。例えば、「名前」という属性における「田中太郎」、「性別」という属性における「男性」等が属性値に該当する。【０００４】
スキーマとは、実世界の物やイベントを定義する複数の属性であって、属性名が定められた複数の属性である。また、スキーマでは、属性値の記述形式も定められている。例えば、「人」を定義する一つのスキーマの例として、「名前」「住所」「性別」「年齢」という属性名を持つ４つの属性と、「性別は『男』か『女』の値を持つ」のように属性に対する属性値の記述規則から定義されるスキーマが挙げられる。【０００５】
データの表現方法の不均一さとは、データを表現するために用いるスキーマがデータの作成者によって異なることを指す。この具体例としては、個人情報データにおいて「名前」という属性名を持つデータが、別のサービスでは属性名「name」として扱われるという例が挙げられる。また、時間を表現する属性値があるデータでは「2006 /  09 / 06」と記述され、別のデータでは「Sep 6 (2006)」のような異なる形式で記述される例が挙げられる。また、あるデータベースで「時給」と「労働時間」という二つの属性で扱われている情報が別のデータウェアハウスでは「給料」という一つの属性で扱われる等、属性名と属性値の記述規則の両方が異なっている例も挙げられる。【０００６】
このように、企業において複数のコンピュータシステムが稼動している場合、それぞれのシステムは独自のスキーマでデータを定義しており、同じ事実を指すデータであってもシステムによって属性名が異なっていることや、属性値の記述規則が異なっていることが多い。従って、システムＡからシステムＢにデータを渡し、システムを連携させるためには、システムＡのスキーマで表現されたデータをシステムＢのスキーマで表現したデータに変換する方法を見つける必要がある。本明細書では、この問題をスキーマ統合問題と呼ぶ。【０００７】
スキーマ統合問題を解消するためのシステムが、例えば特許文献１に記載されている。特許文献１に記載されたシステムは、複数のスキーマをそれぞれ抽象スキーマグラフに変換し、抽象スキーマグラフの全部または一部を所定のルールに基づいて変換するとともに、それぞれの抽象スキーマグラフで定義されているクラス名または属性名をマッチングし、その結果に応じて統合抽象スキーマグラフを作成し、作成した統合抽象スキーマグラフを統合スキーマに変換する。【０００８】
実際のスキーマ統合問題では、属性値の記述規則が異なる場合も多い。図１は、属性値の記述形式が異なっているスキーマの例を示す説明図である。図１では、変換が必要な社員情報を変換元のスキーマ（ソーススキーマ）Ｓから目的とするスキーマ（ターゲットスキーマ）Ｔに変換する例を示している。図１に示すソーススキーマＳでは、属性名が「姓」である属性の属性値は名字であり、属性名が「名」である属性の属性値は名前であるのに対し、ターゲットスキーマＴでは、属性名が「名前」である属性の属性値は氏名である。従って、ソーススキーマＳにおける属性名が「姓」の属性の属性値と、属性名が「名」である属性の属性値とを文字列結合し、属性名が「名前」である属性の属性値としなければならない。また、ソーススキーマＳでは、属性名が「性別」である属性の属性値は「男性」または「女性」であるのに対し、ターゲットスキーマでは、属性名が「性別」である属性の属性値は「ｍ」または「ｆ」である。よって、「男性」から「ｍ」への変換等を行わなければならない。図１に例示する他の属性に関しても、住所から県名を抽出し、その県名を、「近畿」等の地区名称に変換したり、「２２」等の年齢を「２０代」等の年代に変換したりするなどの、各種変換を行う必要がある。このように、スキーマが異なると単純に属性間の対応関係を見つけるだけでなく、属性値の記述形式が異なっている場合には、対応する属性間において属性値を変換する必要がある。【０００９】
以下、属性名が「Ａ」である属性を、属性名「Ａ」の属性と記す場合がある。【００１０】
属性値の記述規則が異なる場合に自動的なデータ変換を実現するスキーマ統合システムの例が非特許文献１に記載されている。非特許文献１に記載されたシステムは、基本的なデータ変換（文字列結合や四則演算等）を行うための複数のSearcherモジュールと、Searcherモジュールごとに実行されたデータ変換の結果が正しいかどうかを判定するEvaluator モジュールと、SearcherとEvaluator を利用して探索的に正しい変換方法を探す探索部を持つ。【００１１】
非特許文献１に記載されたシステムは以下のように動作する。探索部は、異なるスキーマで表現されたデータ集合のペア（仮にＳとＴとする）が与えられると、Ｓ内の属性値をＴのスキーマに変換するSearcherの集合を探索する。この探索は次のように行われる。まず、システムはＳ内の属性とＴ内の属性から属性のペア（仮にs1とt1とする）を作成する（処理１）。次に、システムは、s1の属性値集合に対して任意のSearcherを用いてデータ変換を試行する（処理２）。さらに、システムは、Evaluator を利用し、変換によって得られた値とt1の属性値集合とを比較し、値が類似しているかどうかを調べる（処理３）。これらの値が高く類似している場合、その属性間に対応関係と変換方法を見つけたとし、試行に利用したSearcherモジュールを属性間の変換方法として出力し、探索を終了する。また、属性s1の変換後の値と目標の属性t1の属性値の類似度が低い場合、処理１に戻り別の属性のペアを作成して同様の処理を行う。さらに、それ以外の場合、このs1の変換結果を入力として再度各Searcherでデータ変換を行い、再度、処理３を行う。非特許文献１に記載されたシステムは、このように、正しい変換が得られるまで探索的にデータ変換を試し、変換方法を探す。【００１２】
【特許文献１】特開２００３−１６２５３３号公報（段落００６５−００６９、図３）
【非特許文献１】Robin Dhamankar, YoonkyongLee, AnHai Doan, Alon Halevy,  Pe    dro Domingos, “iMAP: Discovering Complex Semantic Matches between Database     Schemas”, Proceedings of ACM SIGMOD, pp.383-394, 2005.
【発明の開示】
【発明が解決しようとする課題】
【００１３】
特許文献１に記載されたシステムは、属性同士の対応付けは行っているが、属性値の記述形式が異なる場合のスキーマ統合問題には対応できない。既に説明したように、属性値の記述形式が異なっている場合には、対応する属性間において属性値を変換する必要がある。そのために、ユーザは変換スクリプトや変換ルールを記述しなければならないが、この作業を行うためにユーザがスキーマの詳細を理解した上で、人手で変換規則を用意しなければならず、スキーマ統合作業における手間となっている。非特許文献１に記載された技術では、属性値の変換を行うための複数のSearcherモジュールを探すための技術が非特許文献１に記載されている。【００１４】
また、ここで、スキーマ統合問題のサブタスクであるデータ接続問題を定義する。データ接続問題とは、変換元の属性の集合と、変換後の属性の集合と、変換元の属性の属性値から変換後の属性の属性値への変換例の集合とを入力データとしたときに、その変換を行うために必要となるデータ変換用のプログラム（以下、変換モジュールと呼ぶ）を探すという問題である。データ変換問題の解は、一つ以上の変換モジュールから成る変換パスとなる。変換パスとは、変換元の属性値と、変換先の属性値と、一つ以上の変換モジュールに入力される属性値およびその一つ以上の変換モジュールが出力する属性値との関係を示す情報である。なお、変換元とは、変換前を意味している。【００１５】
図２は、データ接続問題および変換パスの例を示す説明図である。図２（ａ）は、データ接続問題の例を示している。図２に示す楕円は、属性を表し、楕円内の文字列は属性名を表している。図２（ａ）に示す例では、変換元の属性は、「ｓ１」という属性名の属性および「ｓ２」という属性名の属性である。変換後の属性は、「ｔ」という属性名の属性である。また、属性名「ｓ１」の属性の属性値であるｖ１（ｓ１）と、属性名「ｓ２」の属性の属性値であるｖ１（ｓ２）とを入力とした場合の変換結果がｖ１（ｔ）であるとする。同様に、属性名「ｓ１」の属性の属性値であるｖ２（ｓ１）と、属性名「ｓ２」の属性の属性値であるｖ２（ｓ２）とを入力とした場合の変換結果がｖ２（ｔ）であるとする。このように、変換元の属性の属性値を変換後の属性の属性値に変換する変換モジュール（変換プログラム）を探すことが、データ接続問題である。【００１６】
図２（ｂ）は、変換パスの例を模式的に示している。図２（ｂ）に示す四角形は、変換モジュールを表している。また、変換モジュールの左側には、その変換モジュールに入力される属性値が表す属性を示し、変換モジュールの右側には、その変換モジュールの出力となる属性値が表す属性を示している。例えば、図２（ｂ）に示す変換モジュール「ｍ１」には、属性名「ｉ１１」の属性の属性値と、属性名「ｉ１２」の属性の属性値とが入力され、それらの属性値が、属性名「ｏ１」の属性値に変換されることを意味している。従って、図２（ｂ）に模式的に表している変換パスは、以下の関係を表している。すなわち、属性名「ｓ１」の属性の属性値、属性名「ｓ２」の属性の属性値がそれぞれ、属性名「ｉ１１」の属性の属性値、属性名「ｉ１２」の属性の属性値として、変換モジュールｍ１に入力され、変換モジュールｍ１によって属性名「ｏ１」の属性値に変換される。その属性値は、属性名「ｉ２」の属性の属性値として変換モジュールｍ２に入力され、属性名「ｏ２」の属性の属性値として変換される。その属性値が、属性名「ｔ」の属性の属性値である。【００１７】
変換モジュールを作成しておき、データ接続問題の解として用いることを、変換モジュールの再利用という。変換モジュールの再利用の例として、例えば、あるデータ接続問題に対して作成された変換モジュールを、他のデータ接続問題について用いること等が挙げられる。変換モジュールを再利用可能とするためには、変換モジュールに、その変換モジュールがどのような記述形式の異なりを解消できるかというメタデータを付加し、別のデータ接続問題においてその変換モジュールを見つけられる状態にしておくことが考えられる。しかし、システム間のデータ記述形式の異なりは、人間がデータの記述形式の差を認識していないために発生するものであり、様々なデータ接続問題において変換モジュールが解に含まれるか否かを判定するためにメタデータを汎用的なものにすることができなかった。そのため、変換モジュールの再利用性に限界があった。【００１８】
また、非特許文献１に記載されたシステムでは、成功する（目標の属性値を同じ変換結果が得られる）まで、変換モジュールを試行する。そのため、非特許文献１に記載されたシステムでは、変換モジュールを再利用可能とすることができても、解の候補となる変換モジュールの数が多くなって変換モジュールの試行回数が増えることになる場合や、データ接続問題の解が複数の変換モジュールを利用したものである場合に、処理時間が多くかかってしまう。すなわち、データ接続問題の解を見つけるまでに多くの時間を要してしまう。【００１９】
そこで、本発明は、変換モジュール（変換プログラム）の再利用性を向上させることができるとともに、短時間でデータ接続問題の解を見つけることができる変換プログラム探索システム、変換プログラム探索方法および変換プログラム探索用プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２０】
かかる目的を達成するために、本発明は、以下の特徴を有することとする。【００２１】
本発明の変換プログラム探索システムは、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とに応じて、変換元のデータと変換後のデータと一つ以上の変換プログラムの入力データおよびその一つ以上の変換プログラムが出力する出力データとの関係を示す情報である変換パスを特定する変換プログラム探索システムであって、予め定められた複数の記述形式を１つのデータが満足しているか否かを各記述形式毎に二値で表した情報である第１シグニチャを生成する第１シグニチャ生成手段と、第１シグニチャ生成手段によって生成された変換元のデータの第１シグニチャおよび変換後のデータの第１シグニチャとの差分に基づいて、変換プログラムのメタデータである第２シグニチャを生成する第２シグニチャ生成手段と、変換プログラムにおける入力データの名称、出力データの名称、および当該変換プログラムを実行するための実行定義情報と、第２シグニチャ生成手段によって生成される第２シグニチャとを記憶するプログラム情報記憶手段と、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とが与えられたときに、与えられた変換元のデータの名称と変換プログラムの入力データの名称との類似度および与えられた変換後のデータの名称と変換プログラムの出力データの名称との類似度に基づいて、データ変換の過程で用いられる変換プログラムの候補を選択するプログラム候補選択手段と、プログラム候補選択手段によって選択された候補の組み合わせに対し、変換元のデータの名称と変換プログラムの入力データの名称との対応付け、および変換プログラムの出力データの名称と変換後のデータの名称との対応付けを行い、選択された候補の組み合わせとして複数の変換プログラムを含んでいる場合には、変換プログラムの出力データの名称と候補となる他の変換プログラムの入力データの名称との対応付けを行うことによって、変換パスの候補を作成する変換パス候補作成手段と、入力データおよび出力データの名称と他のデータの名称との対応付けを行った変換プログラムの第２シグニチャと、変換事例とに基づいて、変換パスの候補の評価値を算出する評価値算出手段と、評価値の高い順に変換パスの候補を選択し、選択した変換パスが定める変換プログラムの順に、与えられた変換元のデータを変換し、当該変換結果が、与えられた変換後のデータである場合に、選択した変換パスの候補を、与えられた変換元のデータの名称、変換後のデータの名称および変換事例に合致する変換パスとして特定する変換パス特定手段とを備えたことを特徴とする。【００２２】
本発明の変換プログラム探索方法は、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とに応じて、変換元のデータと変換後のデータと一つ以上の変換プログラムの入力データおよびその一つ以上の変換プログラムが出力する出力データとの関係を示す情報である変換パスを特定する変換プログラム探索方法であって、第１シグニチャ生成手段が、予め定められた複数の記述形式を１つのデータが満足しているか否かを各記述形式毎に二値で表した情報である第１シグニチャを、変換元のデータおよび変換後のデータについて生成し、第２シグニチャ生成手段が、第１シグニチャ生成手段によって生成された変換元のデータの第１シグニチャおよび変換後のデータの第１シグニチャとの差分に基づいて、変換プログラムのメタデータである第２シグニチャを生成し、第２シグニチャ生成手段が、変換プログラムにおける入力データの名称、出力データの名称、および当該変換プログラムを実行するための実行定義情報を予め記憶しているプログラム情報記憶手段に、前記第２シグニチャを記憶させ、プログラム候補選択手段が、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とが与えられたときに、与えられた変換元のデータの名称と変換プログラムの入力データの名称との類似度および与えられた変換後のデータの名称と変換プログラムの出力データの名称との類似度に基づいて、データ変換の過程で用いられる変換プログラムの候補を選択し、変換パス候補作成手段が、プログラム候補選択手段によって選択された候補の組み合わせに対し、変換元のデータの名称と変換プログラムの入力データの名称との対応付け、および変換プログラムの出力データの名称と変換後のデータの名称との対応付けを行い、選択された候補の組み合わせとして複数の変換プログラムを含んでいる場合には、変換プログラムの出力データの名称と候補となる他の変換プログラムの入力データの名称との対応付けを行うことによって、変換パスの候補を作成し、評価値算出手段が、入力データおよび出力データの名称と他のデータの名称との対応付けを行った変換プログラムの第２シグニチャと、変換事例とに基づいて、変換パスの候補の評価値を算出し、変換パス特定手段が、評価値の高い順に変換パスの候補を選択し、選択した変換パスが定める変換プログラムの順に、与えられた変換元のデータを変換し、当該変換結果が、与えられた変換後のデータである場合に、選択した変換パスの候補を、与えられた変換元のデータの名称、変換後のデータの名称および変換事例に合致する変換パスとして特定することを特徴とする。【００２３】
本発明の変換プログラム探索用プログラムは、変換プログラムにおける入力データの名称、出力データの名称、および当該変換プログラムを実行するための実行定義情報を記憶するプログラム情報記憶手段を備えるコンピュータに、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とに応じて、変換元のデータと変換後のデータと一つ以上の変換プログラムの入力データおよびその一つ以上の変換プログラムが出力する出力データとの関係を示す情報である変換パスを特定させるための変換プログラム探索用プログラムであって、前記コンピュータに、予め定められた複数の記述形式を１つのデータが満足しているか否かを各記述形式毎に二値で表した情報である第１シグニチャを、変換元のデータおよび変換後のデータについて生成する第１シグニチャ生成処理、第１シグニチャ生成処理で生成された変換元のデータの第１シグニチャおよび変換後のデータの第１シグニチャとの差分に基づいて、変換プログラムのメタデータである第２シグニチャを生成する第２シグニチャ生成処理、プログラム情報記憶手段に、前記第２シグニチャを記憶させる第２シグニチャ記憶処理、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とが与えられたときに、与えられた変換元のデータの名称と変換プログラムの入力データの名称との類似度および与えられた変換後のデータの名称と変換プログラムの出力データの名称との類似度に基づいて、データ変換の過程で用いられる変換プログラムの候補を選択するプログラム候補選択処理、プログラム候補選択処理で選択された候補の組み合わせに対し、変換元のデータの名称と変換プログラムの入力データの名称との対応付け、および変換プログラムの出力データの名称と変換後のデータの名称との対応付けを行い、選択された候補の組み合わせとして複数の変換プログラムを含んでいる場合には、変換プログラムの出力データの名称と候補となる他の変換プログラムの入力データの名称との対応付けを行うことによって、変換パスの候補を作成する変換パス候補作成処理、および入力データおよび出力データの名称と他のデータの名称との対応付けを行った変換プログラムの第２シグニチャと、変換事例とに基づいて、変換パスの候補の評価値を算出する評価値算出処理、評価値の高い順に変換パスの候補を選択し、選択した変換パスが定める変換プログラムの順に、与えられた変換元のデータを変換し、当該変換結果が、与えられた変換後のデータである場合に、選択した変換パスの候補を、与えられた変換元のデータの名称、変換後のデータの名称および変換事例に合致する変換パスとして特定する変換パス特定処理を実行させることを特徴とする。
【発明の効果】
【００２４】
本発明によれば、変換プログラムの再利用性を向上させることができるとともに、短時間でデータ接続問題の解を見つけることができる。
【発明を実施するための最良の形態】
【００２５】
以下、本発明の実施形態を図面を参照して説明する。【００２６】
実施形態１．
図３は、本発明による変換プログラム探索システムの第１の実施形態を示すブロック図である。第１の実施形態の変換プログラム探索システムは、データ接続問題入出力部１１と、変換探索手段１２と、属性知識記憶部１３と、記述形式知識記憶部１４と、属性値シグニチャ作成手段１５と、変換モジュール記憶部１６と、変換モジュール実行手段１７と、事例記憶部１８と、変換シグニチャ作成手段１９とを備える。【００２７】
データ接続問題入出力部１１には、データ接続問題が入力され、また、データ接続問題の解である変換パスを出力する。なお、データ接続問題が入力されるとは、具体的には、変換元の一つ以上の属性名と、変換後の一つ以上の属性名と、属性値の変換例の集合（すなわち、変換元の属性値と変換後の属性値との組み合わせの集合）とが入力されることである。データ接続問題入出力部１１は、例えば、外部のシステムもしくはユーザによって操作される。また、データ接続問題入出力部１１は、例えば、キーボード等の入力装置とディスプレイ装置等の出力装置によって実現される。あるいは、データ接続問題入出力部１１は、外部のシステムとのインタフェースであってもよい。【００２８】
データ接続問題入出力部１１は、データ接続問題が入力されると、そのデータ接続問題（変換元の一つ以上の属性名、変換後の一つ以上の属性名、および属性値の変換例の集合）を変換探索手段１２に渡す。すると、変換探索手段１２は、その解を探索する。また、データ接続問題入出力部１１は、変換探索手段１２によって得られた解を、外部のシステムまたはユーザに提示する。【００２９】
変換探索手段１２は、データ接続問題入出力部１１からデータ接続問題を入力されると、その解となる変換パスを探索し、その変換パスをデータ接続問題入出力部１１に送信する。なお、データ接続問題の解とする変換パスに含まれる変換モジュール数の上限値を探索距離Ｄとする。探索距離Ｄは、予め定められている。【００３０】
変換探索手段１２は、変換パスの構成要素となる変換モジュール（変換プログラム）を選び出すために、変換モジュール記憶部１６から各変換モジュールに関する情報を読み込む。また、変換探索手段１２は、変換パスの要素となる変換モジュールの候補を選び出すために、属性知識記憶部１３に属性名間の類似度を求めさせ、データ接続問題として入力された変換元の一つ以上の属性名、変換後の一つ以上の属性名、変換モジュールの入力となる属性および出力となる属性の属性名との間に類似性があるか否かを判定する。そして、入力された変換元の一つ以上の属性名、変換後の一つ以上の属性名と、入力となる属性および出力となる属性の属性名との間に類似性がある変換モジュールを選択する。この処理は、図１０に示すステップＦ２２の処理であり、具体的な処理内容の例については後述する。さらに、変換探索手段１２は、データ接続問題として入力された属性値（属性値の変換例の集合に含まれる変換元、変換後の各属性値）を属性値シグニチャ作成手段１５に入力し、属性値シグニチャを得る。そして、変換探索手段１２は、属性値シグニチャを用いて、解となる変換パスに含まれる変換モジュールの組み合わせ（一つの変換モジュールである場合もある）を予測する。属性値シグニチャについては後述する。また、変換探索手段１２は、予測する変換モジュールを試行するため、変換モジュールを実行するための情報（実行定義情報）と、属性値の変換例の集合に含まれる変換元の属性値とを、変換モジュール実行手段１７に送り、変換モジュール実行手段１７によって求められた変換元の属性値の変換結果が、入力された属性値の変換例の集合に含まれていた変換後の属性値と合致するか否かを判定する。【００３１】
属性記憶部１３は、属性名となる語彙の類似度を導出可能な情報を記憶し、変換探索手段１２に指定された属性名同士の類似度を求める。属性名となる語彙の類似度を導出可能な情報の例として、例えば、属性名となる語彙同士間の関係を表す情報がある。属性名となる語彙同士間の関係を表す情報の例を図４に示す。図４では、２つの語彙と、その２つの語彙が類義語であることを示す情報が組み合わされている。属性記憶部１３は、例えば、このような情報の集合を記憶する。属性記憶部１３は、図４に例示する情報の集合として、シソーラス（類義語辞書）やオントロジを記憶していてもよい。【００３２】
２つの語彙と、その２つの語彙が類義語であることを示す情報との組み合わせ（図４参照）の集合を記憶している場合、属性記憶部１３は、予め規定されたルールに従って、属性名間の類似度を決定すればよい。ルールの例として、以下に示すルール１〜３の組み合わせが挙げられる。属性記憶部１３が記憶する情報によって、２つの属性名が類義語であると定められているならば類似度を１とする（ルール１）。２つの属性名が直接類似語であると定められていなくても、一方の属性名と類義語となる語彙が、他方の属性名とも類義語となっているならば、類似度を０．５とする（ルール２）。ルール１，ルール２に該当しなければ、類似度を０とする。例えば、属性記憶部１３が図４に例示する情報を記憶していて、「名前」と「氏名」の類似度を求める場合、ルール１により、類似度１とすればよい。また、属性記憶部１３が記憶する情報において、「住所」と「市町村」とが類義語であると定められ、「市町村」と「宛先」も類義語であると定められているが、「住所」と「宛先」は類義語として定められていないとする。このとき、属性記憶部１３は、「住所」と「宛先」の類似度を求める場合、ルール２により、類似度を０．５とすればよい。【００３３】
なお、上記のルール１〜３の組み合わせは例示であり、ルールの規定の仕方は限定されない。例えば、類似度を判定しようとする２つの属性名の一方を起点として、順次、類義語となる語彙を辿っていき、もう一方の属性名が得られるまでに辿った語彙数に応じた類似度をより細分化して定めていてもよい。【００３４】
また、属性名となる語彙の類似度を導出可能な情報の例として、コーパス（文書の集合）も挙げられる。属性記憶部１３は、図４に例示する情報ではなく、文書の集合を記憶していてもよい。この場合、属性記憶部１３は、記憶している文書の集合を参照して、以下に示す式（１）によって類似度を算出すればよい。【００３５】
Ｓｉｍ（Ａ，Ｂ）＝（ｄｏｃ（Ａ，Ｂ））２／（ｄｏｃ（Ａ）×ｄｏｃ（Ｂ））
式（１）【００３６】
式１において、Ａ，Ｂは、それぞれ類似度を判定しようとする属性名である。Ｓｉｍ（Ａ，Ｂ）は、ＡとＢとの類似度である。また、ｄｏｃ（ｘ）は、単語ｘを含む文書数を意味し、ｄｏｃ（ｘ，ｙ）は、単語ｘとｙを両方とも含む文書数を意味する。従って、属性記憶部１３は、類似度を判定しようとする２つの属性名を両方とも含む文書を属性記憶部１３から検索して、その文書数の二乗（ｄｏｃ（Ａ，Ｂ））２）を計算する。また、属性記憶部１３は、一方の属性名Ａを含む文書ともう一方の属性名Ｂを含む文書をそれぞれ検索し、属性名Ａを含む文書数と属性名Ｂを含む文書数の積（ｄｏｃ（Ａ）×ｄｏｃ（Ｂ））で、（ｄｏｃ（Ａ，Ｂ））２）を除算し、その結果を属性名Ａ，Ｂの類似度とすればよい。【００３７】
記述形式記憶部１４は、属性値が満たしているか否かを判定される記述形式を定めた情報である記述形式知識を記憶する。記述形式は、属性値が満たしているか否かを判定される条件ということができる。記述形式知識は、属性値シグニチャ作成手段１５によって参照される。図５は、記述形式知識の例を示す説明図である。図５に示す例において、各記述形式知識毎に、記述形式ＩＤ、記述形式の名前、属性値のデータ型、属性値が記述形式を満足しているか否かを判定するための条件式が定められている。このうち、記述形式ＩＤは、例えば、記述形式記憶部１４によって自動採番される。名前、データ型、条件式は、予め人手で用意される。例えば、変換プログラム探索システムの管理者（以下、システム管理者と記す。）によって記述形式記憶部１４に記憶される。なお条件式は、ある属性値がその記述形式で記述されているかどうかを判定する任意の式または関数である。例えば、図５に例示する、「ｉｓＫａｎｊｉ（ｖａｌｕｅ）」は、属性値を引数とし、その属性値が漢字であるか否かを判定する関数である。また、例えば、図５に例示する「ｖａｌｕｅ．ｌｅｎｇｔｈ」は、属性値となる文字列に含まれる文字数を意味している。従って、「ｖａｌｕｅ．ｌｅｎｇｔｈ＝１」は、属性値の文字数が１であるという条件式である。条件式は、論理和や論理積で表されていてもよい。属性値シグニチャ作成手段１５は、記述形式知識において条件式として定められた関数を実行したり、定められた式の計算を行う。なお、図５に例示する「メール」の条件式における「a-zA-Z0-9・・・」という文字列は、正規表現で記述されており、「英数字とピリオド、＠からなる文字列」を意味している。すなわち、この条件式は、属性値が、「英数字とピリオド、＠からなる文字列」であるか否かを判定する関数である。【００３８】
記述形式知識記憶部１４に記憶される記述形式知識は、図５に例示するものに限定されない。また、記述形式知識記憶部１４は、例えば、ユーザインタフェースを介してシステム管理者が入力した記述形式知識を記憶する。【００３９】
属性値シグニチャ作成手段１５は、１つの属性値を指定され、その属性値の属性値シグニチャを作成する。属性値シグニチャとは、属性値が記述形式知識記憶部１４において定められた各記述形式を満足しているかどうかを表すベクトルデータである。属性値シグニチャ作成手段１５は、属性値が記述形式を満足しているかの判定結果を、真（満足している）か偽（満足していない）かのいずれかとして導出する。ベクトルデータである属性値シグニチャでは、真を１、偽を０として、予め定められた順に個々の判定結果である１または０が並べられる。また、属性値シグニチャに含まれる要素数は、記述形式知識記憶部１４に記憶された記述形式知識の数（すなわち、記述形式の数）と同数である。属性値シグニチャ作成手段１５は、属性値を一つ指定されると、属性値が記述形式知識記憶部１４に記憶された各記述形式知識の条件式を参照して、その属性値が条件式を満たしているか否かを判定し、真であれば１、偽であれば０とする。そして、予め定められた順に、各条件式の判定結果である１または０を並べることによって属性値シグニチャを作成する。【００４０】
属性値シグニチャ作成手段１５は、変換シグニチャ作成手段１９もしくは変換探索手段１２によって呼び出される。すなわち、変換シグニチャ作成手段１９もしくは変換探索手段１２によって属性値を指定される。属性値シグニチャ作成手段１５は、指定された属性値を用いて変換シグニチャを作成し、その変換シグニチャを呼び出し元の変換シグニチャ作成手段１９もしくは変換探索手段１２に渡す。【００４１】
変換モジュール記憶部１６は、システム管理者によって作成された変換モジュールに関する情報と、変換シグニチャ作成手段１９によって付加された変換シグニチャを記憶する。図６は、変換モジュール記憶部１６が記憶する情報の例を示す説明図である。変換モジュール１６は、変換モジュール毎に、モジュールＩＤと、モジュール名と、入力属性、入力属性型、出力属性、出力属性型、実行定義情報、変換シグニチャを記憶する。モジュールＩＤは、変換モジュールの識別子である。モジュール名とは、変換モジュールの役割を示す名前である。入力属性とは、変換モジュールの入力となる属性であり、具体的には、入力となる属性の属性名が変換モジュール記憶部１６に記憶される。なお、図６に例示する「Ｘ」は、任意の属性でよいことを表している。入力属性型とは、変換モジュールの入力属性の属性値のデータ型である。出力属性とは、変換モジュールの出力となる属性であり、具体的には、出力となる属性の属性名が変換モジュール記憶部１６に記憶される。出力属性型とは、変換モジュールの出力属性の属性値のデータ型である。【００４２】
実行定義情報とは、その変換モジュールを実行するための情報であり、変換モジュールがプログラムコンポーネントとして実装される場合、実行情報はプログラム本体とそのプログラムを呼び出すための呼び出し方法を記述したものになる。例えば、変換モジュールがＷｅｂサービスとして実装される場合、ＷＳＤＬファイルを実行定義情報とすることができる。実行定義情報には、例えば、変換モジュールが記憶されている装置の情報、および、変換モジュールを実行するために入力しなければならない情報が示されている。【００４３】
変換シグニチャとは、記述形式知識記憶部１４に記憶された各記述形式知識で定められた記述形式毎に、変換モジュールによる変換によって記述形式を満たしている状態に変化するか、記述形式を満たさない状態に変化するか、または、記述形式を満たした状態あるいは満たさない情報が変化しないかを示すデータである。変換シグニチャは、変換モジュールの特徴を示すメタデータあるということができる。変換シグニチャは、具体的には、記述形式知識の数の要素を持つベクトルデータとして表される。一組の入力となる属性値および出力となる属性値によって定められる変換シグニチャは、個々の要素として、記述形式を満たしている状態に変化することを表す“１”、記述形式を満たさない状態に変化することを表す“−１”、記述形式を満たした状態あるいは満たさない情報が変化しないことを表す“０”のいずれかの値をとる。ただし、入力となる属性値または出力となる属性値が変化すると、変動する要素も生じる。同一の変換モジュールについて入力となる属性値を変化させて求めた変換シグニチャの平均を算出する場合、その要素は、“１”，“−１”，“０”以外の値を取り得る。【００４４】
図７は、変換シグニチャの例を示す説明図である。図７に示す変換シグニチャは、変換モジュールによる変換の結果、属性値が、記述形式ｄ２を満足する状態に変化し、記述形式ｄ３を満足しない状態に変化したことを意味する。また、変換の前後で、記述形式ｄ１やｄｎを満足する状態（あるいは満足しない状態）が変化していないことを意味する。【００４５】
また、変換シグニチャは、１つの入力属性と１つの出力属性との組み合わせについて、１つ定められるデータである。従って、変換モジュールがＩ種類の属性を入力とし、Ｋ種類の属性を出力とする場合、その変換モジュールには、Ｉ×Ｋ個の変換シグニチャが定められる。例えば、「名字」および「名前」を入力とし、それらを結合して「氏名」を出力する変換シグニチャでは、「名字」と「氏名」についての変換シグニチャと、「名前」と「氏名」についての変換シグニチャの２種類が定められる。【００４６】
また、既に説明したように、一組の入力となる属性値および出力となる属性値によって定められる変換シグニチャは、個々の要素として“１”，“−１”，“０”のいずれかを含む。例えば、上述の「名字」と「氏名」についての変換シグニチャを例にすると、「田中」と「田中太郎」という属性値から求めた変換シグニチャは、個々の要素として“１”，“−１”，“０”のいずれかを含む。同様に、「佐藤」と「佐藤次郎」という属性値から求めた変換シグニチャも、個々の要素として“１”，“−１”，“０”のいずれかを含む。ただし、それらの変換シグニチャの各要素同士が完全に一致しているとは限らず、それらの変換シグニチャの平均等を算出した場合、“１”，“−１”，“０”以外の要素が生じ得る。【００４７】
変換モジュール記憶部１６に記憶させる各項目のうち、モジュール名、入力属性、入力属性型、出力属性、出力属性型、実行定義情報はシステム管理者もしくは変換モジュール作成者によって用意され、変換モジュール記憶部１６に記憶される。これらの項目が記憶されると、変換モジュール記憶部１７は、モジュールＩＤを自動採番して記憶する。また、変換シグニチャは、変換シグニチャ作成手段１９によって作成される。【００４８】
変換モジュール実行手段１７は、変換シグニチャ作成手段１９もしくは変換探索手段１２に呼び出され、変換モジュールの実行定義情報と入力の１つ以上の属性値を渡される。そして、変換モジュール実行手段１７は、その属性値を入力値として、実行定義情報に基づいて変換モジュールを実行し、変換後の属性値を作成する。あるいは、他の装置に変換モジュールを実行させ、その装置から変換後の属性値を受信してもよい。例えば、変換モジュールが記憶されている装置の情報が実行定義情報に定められている場合、その装置に属性値を送信して、その装置に変換モジュールを実行させてもよい。変換モジュール実行手段１７は、変換後の属性値を、呼び出し元の変換シグニチャ作成手段１９もしくは変換探索手段１２に渡す。【００４９】
また、変換モジュール実行手段１７が、変換モジュールを呼び出して、属性値の変換を行う場合、呼び出した変換モジュールに従って、辞書を参照したり、代数的演算を行ったり、文字列操作処理を実行したり、あるいは、辞書参照、代数的演算、文字列操作処理を組み合わせた処理を実行したりすることによって変換を行う。また、この場合、変換モジュールは、例えば、変換モジュール記憶部１６に予め記憶される。変換モジュール実行時に辞書を参照する場合には、その辞書もあわせて変換モジュール記憶部１６に予め記憶される。【００５０】
辞書を参照して変換を行う例として、例えば、「男」を「ｍａｌｅ」に変換し、「女」をｆｅｍａｌｅに変換する等の例が挙げられる。変換モジュール実行手段１７は、呼び出した変換モジュールに従って、辞書を参照して、「男」等の属性値に対応する文字列「ｍａｌｅ」等を変換後の属性値とする。文字列操作処理の例として、二つの文字列を結合して一つの文字列としたり、入力された文字列の所定の部分を抽出して変換後の文字列とする等の処理が挙げられる。【００５１】
また、Ｎ種類の属性値が、一つの属性値に対応する場合等では、辞書参照と文字列操作を組み合わせて変換を行ってもよい。例えば、「住所」を入力とし、「地区」を出力とする場合、個々の住所と地区とを対応付けた辞書を作成する負担が大きい。この場合、「県名」と「近畿」等の「地区」とを対応付けた辞書を予め用意しておき、「住所」の冒頭の県名を抽出する文字列操作処理を行ってから、「県名」に対応する「地区」を辞書によって変換してもよい。【００５２】
また、例えば、「連絡先」として記述されたテキストを入力とし、その中に記述された「人名」を出力とする場合、人名辞書から作成された分類器を利用してもよい。例えば、変換モジュール実行手段１７は、任意の２文字が人名辞書に登場する回数と、予め用意された人名辞書ではない文書に登場する回数とを計数しておき、その２文字がどの程度名前らしいかを算出しておく。変換モジュール実行手段１７は、「連絡先」から「人名」に変換する変換モジュールを読み込んだ場合、入力された文字列（「連絡先」）を２文字ずつ区切り、名前らしいと判定される２文字を抜き出す。なお、ここで挙げた例は、変換モジュール実行手段１７が変換モジュールに従って変換を行う場合の例示であり、変換モジュール実行手段１７による変換処理の態様は、特に限定されない。【００５３】
事例記憶部１８は、変換モジュール実行手段１７によって生成された変換の実行例を記憶する。図８は、事例記憶部１８が記憶する情報の例を示す説明図である。変換事例毎に、事例ＩＤと、変換モジュールＩＤと、入力属性値と、出力属性値とを記憶する。事例ＩＤは、個々の変換事例を識別する識別子である。変換モジュールは、変換事例において用いられた変換モジュールの識別子である。入力属性値は、変換モジュールに入力された変換前の属性値である。出力属性値は、変換モジュールが出力した変換後の属性値である。変換モジュールＩＤ、入力属性値、出力属性値は変換モジュール実行手段１７によって作成される。また、事例記憶部１８には、人手によっても、変換モジュールＩＤ、入力属性値、出力属性値の組み合わせが記憶される。変換モジュールの作成者等がその変換モジュールに関する情報を変換モジュール記憶部１６に記憶させる場合、その変換モジュールの作成者等は、その変換モジュールの変換モジュールＩＤと、その変換モジュールによる変換前の属性値（入力属性値）と、変換後の属性値（出力属性値）とを、事例記憶部１８に記憶させる。変換モジュールＩＤ、入力属性値、出力属性値を記憶した場合、事例記憶部１７は、その組み合わせに対して、事例ＩＤを自動採番して割り当て、その事例ＩＤも記憶する。【００５４】
変換シグニチャ作成手段１９は、変換モジュール記憶部１６に記憶されている変換モジュールに関する情報（ここでは、実行定義情報）を読み込んで、変換モジュール１７に変換モジュールを利用して変換事例を増加させ、その変換事例を事例記憶部１８に記憶させる。そして、変換シグニチャ作成手段１９は、属性値シグニチャ作成手段１５に変換前後の属性値の属性値シグニチャを作成させ、属性値シグニチャから変換シグニチャを作成し、変換モジュール記憶部１６に記憶させる。【００５５】
変換探索手段１２と、属性値シグニチャ作成手段１５と、変換モジュール実行手段１７と、変換シグニチャ作成手段１９は、例えば、変換プログラム探索用プログラムに従って動作するＣＰＵによって実現される。属性知識記憶部１３と、記述形式知識記憶部１４と、変換モジュール記憶部１６と、事例記憶部１８は、例えば、記憶装置と、変換プログラム探索用プログラムに従って動作するＣＰＵとによって実現される。上記の各手段１２，１５，１７，１９および各記憶部１３，１４，１６，１８を実現するためのＣＰＵが、同一のＣＰＵであってもよい。【００５６】
次に、本実施形態の全体の動作について説明する。本実施形態の動作は大きく、変換モジュールに対して変換シグニチャを作成する動作と、データ接続問題の解を探索する動作に分けられる。【００５７】
図９は、変換モジュールに対して変換シグニチャを作成する動作の例を示すフローチャートである。まず、変換シグニチャ作成手段１９は、変換モジュール記憶部１６に記憶されている各変換モジュールに関する情報のうち、変換シグニチャが作成されていない変換モジュールに関する情報を特定し、そのモジュールに関する実行定義情報を読み込む（ステップＦ１１）。この実行定義情報が、変換モジュールＭｉの実行定義情報であるとして説明する。変換シグニチャ作成手段１９は、事例記憶部１８から任意の属性値を読み込み、その属性値と、変換モジュールＭｉの実行定義情報とともに、変換モジュール実行手段１７に渡し、変換モジュール実行手段１７にその属性値を変換元として、変換モジュールＭｉによる変換後の属性値を取得させる。変換シグニチャ作成手段１９は、変換モジュール実行手段１７に渡した入力値を入力属性値とし、変換モジュール実行手段１７に取得させた変換後の属性値を出力属性値とし、変換モジュールＭｉのＩＤと対応付けて、事例記憶部１８に記憶させる。変換シグニチャ作成手段１９は、この処理を繰り返し、事例記憶部１８に記憶される事例数を増加させる（ステップＦ１２）。なお、ステップＦ１２において、変換シグニチャ作成手段１９が事例記憶部１８から読み込む属性値は、変換モジュールＭｉ以外の変換モジュールに対応付けられた属性値であってもよく、また、入力属性値であっても、出力属性値であってもよい。また、変換モジュールの作成者等がその変換モジュールに関する情報を変換モジュール記憶部１６に記憶させる場合、その変換モジュールの作成者等は、その変換モジュールの変換モジュールＩＤと、その変換モジュールによる変換前の属性値（入力属性値）と、変換後の属性値（出力属性値）とを、事例記憶部１８に記憶させるので、ステップＦ１２に最初に移行したときに、事例記憶部１８から属性値を読み込むことが可能である。【００５８】
続いて、変換シグニチャ作成手段１９は、事例記憶部１８に記憶された変換モジュールＭｉの変換事例（すなわち、変換モジュールＭｉに対応付けられた入力属性値および出力属性値）を全て読み込む。そして、変換シグニチャ作成手段１９は、読み込んだ個々の属性値をそれぞれ指定して、属性値シグニチャ作成手段１５に個々の属性値毎に属性値シグニチャを作成させる（ステップＦ１３）。ステップＦ１３において、属性値シグニチャ作成手段１５は、変換シグニチャ作成手段１９によって属性値が指定されると、その属性値が、各記述形式知識（図５参照）で定められた各記述形式を満足しているか否かを判定し、真であれば１、偽であれば０とする。そして、予め定められた順に、各条件式の判定結果である１または０を並べることによって属性値シグニチャを作成する。そして、属性値シグニチャ作成手段１５は、各属性値の属性値シグニチャを変換シグニチャ作成手段１９
に返す。【００５９】
ステップＦ１３の後、変換シグニチャ作成手段１９は、各事例のデータ（入力属性値と出力属性値の組）に対して出力属性値の属性値シグニチャと入力属性値の属性値シグニチャとの差分を算出することによって、事例毎に変換の特徴を表すベクトルを算出する（ステップＦ１４）。出力属性値の属性値シグニチャおよび入力属性値の属性値シグニチャはいずれもベクトルであり、変換シグニチャ作成手段１９は、ステップＦ１２において、出力属性値の属性値シグニチャから入力属性値の属性値シグニチャを減算すればよい。この減算はベクトルの減算である。【００６０】
続いて、変換シグニチャ作成手段１９は、ステップＦ１４で算出した各事例の変換の特徴を表したベクトルを一つのベクトルにまとめる（ステップＦ１５）。ステップＦ１４では、例えば、各事例の変換の特徴を表したベクトルの平均ベクトルを求めてもよい（すなわち、要素毎に平均値を求めてもよい）。あるいは、各事例の変換の特徴を表したベクトルの要素毎に中央値を算出してもよい。ここで挙げたステップＦ１５の計算は例示であり、変換の特徴を表したベクトルを他の計算によって一つのベクトルにまとめてもよい。変換シグニチャ作成手段１９は、ステップＦ１１で読み込んだ実行定義情報に対応する変換シグニチャとして、ステップＦ１５で一つにまとめられたベクトルを変換モジュール記憶部１６に記憶させる（ステップＦ１６）。以上の処理によって、新たに変換ベクトルが作成され、変換モジュール記憶部１６に記憶される。【００６１】
次に、データ接続問題の解を探索する動作について説明する。図１０は、データ接続問題の解（すなわち、変換パス）を探索する動作の例を示すフローチャートである。まず、データ接続問題入出力部１１に、外部システムまたはユーザから、変換元の一つ以上の属性名と、変換後の一つ以上の属性名と、属性値の変換例の集合（すなわち、変換元の属性値と変換後の属性値との組み合わせの集合）とが入力される（ステップＦ２１）。データ接続問題入出力部１１は入力された各データを変換探索手段１２に渡す。【００６２】
変換探索手段１２は、属性名の類似度に基づいて、変換パスに含まれる変換モジュールの候補を選択する（ステップＦ２２）。以下、ステップＦ２２の処理の例を示す。ステップＦ２２において、変換探索手段１２は、変換モジュール毎に、以下に示す式（２）および式（３）を計算する。式（２）および式（３）の計算対象とする変換モジュールをｍとする。また、ステップＦ２１で入力された変換元の属性名の集合をｓとし、変換後の属性名の集合をｔとする。また、変換モジュールｍの入力属性の属性名の集合をｉｎとし、変換モジュールｍの出力属性の属性名の集合をｏｕｔとする。変換探索手段１２は、変換モジュール記憶部１６が記憶する各モジュールＩＤを一つずつ順番に選択し、選択したモジュールＩＤに対応する入力属性の属性名の集合をｉｎとし、選択したモジュールＩＤに対応する出力属性の属性名の集合をｏｕｔとすればよい。また、選択したモジュールＩＤによって特定される変換モジュールがｍとなる。変換探索手段１２は、選択したモジュールＩＤによって特定される変換モジュールがｍについて、以下の式（２）および式（３）の計算を行う。【００６３】
【数１】
2009017158.tif 000003
【００６４】
【数２】
2009017158.tif 000004
【００６５】
式（２）において、ｓｉは集合ｓに属する任意の属性名であり、ｉｎｊは集合ｉｎに属する一つ任意の属性名である。また、ｔｋは集合ｔに属する任意の属性名である。Ｓｉｍ（ｘ，ｙ）は、単語（属性名）ｘ，ｙ間の類似度である。また、ｍａｘ｛集合の中の値を用いた計算式；集合｝は、集合の中の値を用いた計算式によって求められる値の最大値を意味する。従って、変換探索手段１２は、任意のｓｉ，ｉｎｊ，ｔｋの組み合わせ毎に、ｓｉとｉｎｊとの類似度Ｓｉｍ（ｓｉ，ｉｎｊ）、およびｓｉとｔｋとの類似度Ｓｉｍ（ｓｉ，ｔｋ）を属性知識記憶部１３に計算させ、Ｓｉｍ（ｓｉ，ｉｎｊ）をＳｉｍ（ｓｉ，ｔｋ）で除算する。そして、その除算結果の最大値をＩｎＳｃｏｒｅ（ｍ，ｓ，ｔ）として求める。【００６６】
式（３）において、ｔｉは集合ｔに属する任意の属性名である。ｓｋは、集合ｓに属する任意の属性名である。ｏｕｔｊは集合ｏｕｔに属する任意の属性名である。変換探索手段１２は、任意のｓｋ，ｏｕｔｊ，ｔｉの組み合わせ毎に、ｔｉとｏｕｔｊとの類似度Ｓｉｍ（ｔｉ，ｏｕｔｊ）、およびｓｋとｔｉとの類似度Ｓｉｍ（ｓｋ，ｔｉ）を属性知識記憶部１３に計算させ、Ｓｉｍ（ｔｉ，ｏｕｔｊ）をＳｉｍ（ｓｋ，ｔｉ）で除算する。そして、その除算結果の最大値をＯｕｔＳｃｏｒｅ（ｍ，ｓ，ｔ）として求める。【００６７】
変換探索手段１２は、ＩｎＳｃｏｒｅとＯｕｔＳｃｏｒｅのうち、少なくともいずれか一方が予め定められた閾値よりも大きければ、選択したモジュールＩＤによって特定される変換モジュールｍを、変換パスに含まれる変換モジュールの候補として選択する。変換探索手段１２は、変換モジュール記憶部１６が記憶する各モジュールＩＤ毎に（すなわち変換モジュール毎に）上記の処理を行い、変換パスに含まれる変換モジュールの候補として選択するか否かを個々の変換モジュール毎に判定する。式（２）および式（３）を用いた上記の処理はステップＦ２２の処理の例示であり、ステップＦ２２の処理は、上記の処理に限定されない。すなわち、変換探索手段１２は、他の方法で変換モジュールの候補を選択してもよい。【００６８】
また、変換探索手段１２は、入力属性および出力属性が任意の属性でよいとされている変換モジュール（例えば、文字列結合変換）は、全て、変換パスに含まれる変換モジュールの候補として選択する。【００６９】
ステップＦ２２の後、変換探索手段１２は、ステップＦ２１で入力された各属性値（属性値の変換例の集合に含まれる変換前の属性値および変換後の属性値）をそれぞれ指定して、属性値シグニチャ作成手段１５に属性値シグニチャを作成させる（ステップＦ２３）。属性値シグニチャ作成手段１５は、変換探索手段１２によって属性値を指定されると、ステップＦ１３と同様に指定された属性値について属性値シグニチャを作成する。そして、属性値シグニチャ作成手段１５は、各属性値の属性値シグニチャを変換探索手段１２に返す。【００７０】
次に、変換探索手段１２は、探索距離Ｄ以内の数の変換モジュールを含む変換パスの候補のリストを作成する（ステップＦ２４）。既に説明したように、探索距離Ｄは、データ接続問題の解とする変換パスに含まれる変換モジュール数の上限値である。図１１は、変換パスの候補のリストを作成するステップＦ２４の処理経過の例を示すフローチャートである。変換探索手段１２は、ステップＦ２４において、まず、変換パスの候補に含める変換モジュール数を表す変数ｉの値を１とする（ステップＦ２４１）。【００７１】
変数ｉの値を設定した後、変換探索手段１２は、ｉ個の変換モジュールを含む変換パスを作成する（ステップＦ２４２）。ステップＦ２４２の後、変換探索手段１２は、ｉ＝Ｄであるか否かを判定する（ステップＦ２４３）。すなわち、変数ｉの値が探索距離Ｄと一致しているか否かを判定する。一致していなければ（ステップＦ２４３のｎｏ）、変換探索手段１２は変数ｉの値を１増加させて（ステップＦ２４４）、ステップＦ２４２以降の処理を繰り返す。また、ステップＦ２４３においてｉ＝Ｄであれば、変換パスの候補のリストを作成するステップＦ２４（図１０参照）を終了し、ステップＦ２５に移行する。このように、ステップＦ２４では、変数ｉをインクリメントして、１個の変換モジュールを含む変換パスから、Ｄ個の変換モジュールを含む変換パスまで順に作成する。【００７２】
上記のステップＦ２４２の処理について、より詳しく説明する。ステップＦ２４２において、変換探索手段１２は、変換パスに含まれる変換モジュールの候補のリストの中からｉ個の変換モジュールを用いてできる変換モジュールの組み合わせを全て作成する。変換パスに含まれる変換モジュールの候補のリストとは、ステップＦ２２（図１０参照）で選択された変換モジュールのリストである。１つの組み合わせにおけるｉ個の変換モジュールは重複していてもよい。例えば、ｉ＝３である場合に、同一の変換モジュールが３個重複した組み合わせも、全組み合わせの中に含まれる。【００７３】
次に、変換探索手段１２は、ｉ個の変換モジュールからなるそれぞれの組み合わせについて、そのｉ個の変換モジュールと、変換元の属性名の集合と、変換後の属性名の集合とに基づいて、属性間の接続を行い、複数の変換パスの作成と追加を行う。変換元の属性名の集合は、ステップＦ２１で入力された変換元の属性名の集合であり、この属性名の集合をSとする。変換後の属性名の集合は、ステップＦ２１で入力された変換後の属性名の集合であり、この属性名の集合をTとする。また、属性の接続とは、どの属性名の属性がどの変換モジュールの入力属性となるのかを対応付けることである。例えば、変換元の属性名を有する属性と、最初の変換モジュールの入力属性を対応付けたり、各変換モジュールの出力属性と、次の変換モジュールの入力属性とを対応付けることである。【００７４】
図１２は、属性間の接続処理の経過の例を示す説明図である。例えば、図１２（Ａ）は、変換元の属性名の集合がｓ１，ｓ２であり、変換後の属性名の集合がｔ１であり、変換モジュールの組み合わせがｍ１，ｍ２，ｍ３である場合を例示している。この図１２（Ａ）において、変換モジュールｍ１の入力属性ｉ１と、変換元の入力属性ｓ１とを接続することを仮定すると、図１２（Ｂ）に示すように、変換元の属性名の集合が変換モジュールｍ１の出力属性ｏ１とｓ２であり、変換後の属性名の集合がｔ１であり、変換モジュールの組み合わせがｍ２，ｍ３である場合に置き換えることができる。このように、属性の接続を行う処理は、再帰的な処理によって実現することができる。【００７５】
図１３は、属性間の接続を行い、変換パスを作成する処理の例を示す説明図である。属性間の接続処理の対象となる組み合わせに含まれるｉ個の各変換モジュールの集合をMとする。また、その集合Mに含まれる変換モジュール（Miとする。）の入力属性の集合をin(Mi)とし、変換モジュールMiの出力属性の集合をout(Mi)とする。また、変換元の属性名の集合をSとし、変換後の属性名の集合をTとする。変換探索手段１２は、S，T，Mを指定して、処理countUp(S,T,M)を実行する。変換探索手段１２は、処理countUp(S,T,M)において、以下に示す３種類のリストを定める。countUpの後に括弧で示したS,T,Mは指定される集合を表している。【００７６】
第１のリストは、未接続の属性の属性名を格納するリストであり、以下、このリストを入力未接続リストUCSL（または、単にUCSL）と記す。第２のリストは、未接続の変換モジュールのモジュール名もしくは変換後の属性名を格納するリストであり、以下、このリストを出力未接続リストUCTML（または、単にUCTML）と記す。第３のリストは、接続した属性同士の関係を示す情報を格納するリストであり、以下、このリストを接続リストCL（または単にCL）と記す。変換探索手段１２は、接続した属性の属性名を、接続リストCLに、例えば「属性名１：属性名２」のように属性名のペアとして登録する。変換探索手段１２は、ただし、変換モジュールの入力属性または出力属性の属性名に関しては、変換モジュールのモジュール名とともに登録する。また、最初の変換元の属性名に関しては、変換元の属性であることをを示す情報とともに登録し、最終的に得られる変換後の属性名に関しては、変換後の属性であることを示す情報とともに登録する。【００７７】
処理countUp(S,T,M)では、変換探索手段１２は、UCSLにSを登録する。また、UCTMLにTとMの和（すなわち、変換後の属性名の集合、およびｉ個の変換モジュール）を登録する。変換探索手段１２は、接続リストCLを、空の状態（何も登録されていない状態）とする。変換探索手段１２は、そして、UCSL、UCTML、CLを指定して、処理connect(UCSL,UCTML,CL)を実行する。connectの後に括弧で示したUCSL,UCTML,CLは、指定されるリストを表している。【００７８】
処理connect(UCSL,UCTML,CL)において、変換探索手段１２は、まず、UCSLとUCTMLが空の状態であるか否かを調べる。UCSLとUCTMLのうち少なくとも一方が空の状態であるならば、変換探索手段１２は、処理connect(UCSL,UCTML,CL)を終了する。ただし、このとき、UCSLとUCTMLとがいずれも空の状態であるならば、指定された接続リストCLを変換パスとし、変換パスの候補のリストに追加し、その後、処理connect(UCSL,UCTML,CL)を終了する。後述するように、処理connect(UCSL,UCTML,CL)は再帰的に実行され、そのときに指定される接続リストCLは属性名のペアの集合である。このCLが変換パスを表す。【００７９】
また、UCSLおよびUCTMLがいずれも空の状態でなければ、変換探索手段１２は、UCTMLから１つの要素（mとする。）を取りだす。UCTMLから取りだす要素mは、変換モジュールである場合と、変換後の属性名の集合Tの要素である場合とがある。変換探索手段１２は、UCTMLから要素mを取りだす場合、要素mとして、先に変換モジュールを取り出し、取りだす変換モジュールがなくなった場合に、変換後の属性名を取りだす。【００８０】
UCTMLから取りだした要素mが変換モジュールである場合、変換探索手段１２は、UCSLから、mの入力属性の数｜in(m)｜の属性名を取りだす全ての順列Ｐを作成する。ここで、Ｐは順列であるので、変換探索手段１２は、取りだした｜in(m)｜個の属性名の順番が異なれば、別の並びとしてＰを複数作成する。そして、変換探索手段１２は、個々の順列Ｐ毎に以下の処理を行う。【００８１】
変換探索手段１２は、CLの複製であるリストTCLを作成する。次に、変換探索手段１２は、順列Ｐ内の属性をmの入力属性の先頭から順に接続し、TCLに追加する。すなわち、順列Ｐ内の属性名とmの入力属性の属性名とを先頭から順に接続し、TCLに登録する。【００８２】
続いて、変換探索手段１２は、入力未接続リストUCSLから順列Ｐ内の属性名を削除するとともにmの出力属性out(m)を追加したリストであるTUCSLを作成する。また、変換探索手段１２は、出力未接続リストUCTMLからmを削除したリストであるTUCTMLを作成する。【００８３】
接続される属性名同士がTCL内に登録されていることにより、TUCLS内の属性名とTUCTML内に登録されている属性名または変換モジュールの入力属性とを接続すればよいことになる。変換探索手段１２は、TCL,TUCSL,TUCTMLを作成した後、TUCSL,TUCTML ,TCLを指定して、処理connect(TUCSL,TUCTML ,TCL)を実行する。すなわち、再帰的に処理connectを実行する。【００８４】
また、UCTMLから取りだした要素mが変換後の属性名の集合Tに含まれる要素である場合、変換探索手段１２は、UCSL内の各属性名（ｐとする。）毎に、以下の処理を行う。【００８５】
変換探索手段１２は、上記の処理と同様に、CLの複製であるリストTCLを作成する。次に、変換探索手段１２は、UCSL内の属性名ｐと要素mとを接続し、TCLに登録する。【００８６】
続いて、変換探索手段１２は、UCSLからｐを削除したリストであるTUCSLを作成する。また、変換探索手段１２は、出力未接続リストUCTMLからmを削除したリストであるTUCTMLを作成する。【００８７】
そして、変換探索手段１２は、上記の場合と同様に、TUCSL,TUCTML ,TCLを指定して、処理connect(TUCSL,TUCTML ,TCL)を再帰的に実行する。【００８８】
ステップＦ２４２では、以上のように再帰的に処理を行って変換パスの候補を作成する。【００８９】
変換パスの候補を全て作成した後（図１０に示すステップＦ２４の後）、変換探索手段１２は、ステップＦ２４で作成した各変換パスの候補に対して、それぞれ評価値を算出する（ステップＦ２５）。ここで、変換パスの評価値の算出方法を説明するための語句として、シングルパスを定義する。シングルパスとは、変換元の属性値のうちの一つと、変換後の属性値のうちの一つと、一つ以上の変換モジュールに入力される属性値およびその一つ以上の変換モジュールが出力する属性値との関係を示す情報である。シングルパスは、変換パスが示す情報の一部である。【００９０】
図１４（Ａ），（Ｂ）は、それぞれ変換パスに含まれるシングルパスの例を示している。図１４（Ａ），（Ｂ）では、図２と同様に属性や変換モジュールを示している。図１２（Ａ）では、変換パスａに含まれる４つのシングルパスａ１，ａ２，ａ３，ａ４を示している。図１４（Ｂ）では、変換パスｂに含まれる２つのシングルパスｂ１，ｂ２を示している。図１４に示す例では、シングルパスを以下に示すような構文で記述している。すなわち、１つの変換元の属性名、１つ以上の変換モジュール、１つの変換後の属性名をそれぞれ括弧“［］”内に記述し、１つの変換元の属性名、１つ以上の変換モジュール、１つの変換後の属性名の順に、左側から記述している。変換モジュールを表す括弧内では、変換モジュールの識別子と、その変換モジュールの１つの入力属性の属性名と、その変換モジュールの１つの出力属性の属性名とを、「変換モジュールの識別子：入力属性の属性名→出力属性の属性名」の順に記述している。例えば、図１４（Ｂ）に示すシングルパスｂ１は、以下の関係を表している。属性名「ｓ」の属性の属性値が、属性名「ｉ１１」の属性の属性値として変換モジュールｍ３に入力され、属性名「ｏ１１」の属性の属性値として出力される。その属性値が、属性名「ｉ２１」の属性の属性値として、変換モジュールｍ４に入力され、属性名「ｏ２２」の属性の属性値として出力される。その属性値が、変換後の属性（属性名「ｔ」の属性）の属性値である。【００９１】
変換探索手段１２は、ステップＦ２５において、変換パスの各候補毎に、変換パスの候補をシングルパスに分解する。変換探索手段１２は、例えば、変換元の属性名に接続される変換モジュールの入力属性、変換モジュールの出力属性に接続される変換後の属性名あるいはその次の変換モジュールの入力属性を順次辿って、変換元の１つの属性名から変換後の１つの属性名までの各経路をそれぞれシングルパスとすればよい。【００９２】
そして、変換探索手段１２は、１つの変換パスの候補から分解した各シングルパスについての評価値を計算する。変換探索手段１２は、１つのシングルパスの評価値を計算するときに、そのシングルパスの先頭に記述される属性名を有する属性の属性値を、ステップＦ２１で入力された変換元の属性値の中から抽出し、属性値シグニチャ作成手段１５に、その属性値の属性値シグニチャを作成させる。この変換元の属性値の属性値シグニチャをＶｓとする。同様に、変換探索手段１２は、そのシングルパスの最後に記述される属性名を有する属性の属性値を、ステップＦ２１で入力された変換後の属性値の中から抽出し、属性値シグニチャ作成手段１５に、その属性値の属性値シグニチャを作成させる。この変換後の属性値の属性値シグニチャをＶｔとする。変換探索手段１２は、Ｖｓに、シングルパスに属する各変換モジュールの変換シグニチャを加算し、その加算結果とＶｔとの内積をシングルパスの評価値として計算する。この計算式を示す。【００９３】
シングルパスＳＰｉに変換モジュールをＭ１，・・・，Ｍｎのｎ個の変換モジュールが記載されているとする。そして、シングルパスに記述された入力属性および出力属性に応じた、シングルパスにおけるｎ個中ｉ番目の変換モジュールの変換シグニチャをＴＶｉとする。このシングルパスの評価値をＳＰＳｃｏｒｅ（Ｐｉ，Ｖｓ，Ｖｔ）とすると、変換探索手段１２は、以下に示す式（４）によってシングルパスの評価値ＳＰＳｃｏｒｅ（Ｐｉ，Ｖｓ，Ｖｔ）を計算する。【００９４】
【数３】
2009017158.tif 000005
【００９５】
ここでは、属性値シグニチャＶｔと、属性値シグニチャＶｓにシングルパスに属する各変換モジュールの変換シグニチャを加算したベクトルデータ（Ｖａとする。）との内積をシングルパスの評価値とする場合を示したが、属性値シグニチャＶｔとベクトルデータＶａとのなす角度の余弦を評価値としてもよい。この場合、式（４）の右辺を、ベクトルデータＶｔ，Ｖａの大きさの積で除算した値を評価値とすればよい。なお、式（４）の右辺の括弧で示した部分がベクトルデータＶａに該当する。【００９６】
変換探索手段１２は、１つの変換パスの候補から分解した各シングルパスについて、それぞれ評価値を算出し、各シングルパスの評価値の平均値または中央値（数値を大きさ順に並べたときに中央にくる数値）を算出し、変換パスの候補の評価値とする。変換探索手段１２は、各変換パスの候補のうち、評価値が最大となっているものを、データ接続問題の解となる変換パスとして予測する（ステップＦ２６）。【００９７】
ステップＦ２６の次に、変換探索手段１２は、変換モジュール実行手段１７に変換パスを試行させる。すなわち、変換探索手段１２は、ステップＦ２１で入力された変換元の属性値と、予測した変換パスに含まれる各変換モジュールの実行定義情報を変換モジュール実行手段１７に渡し、変換モジュール実行手段１７に変換パスの順に変換モジュールを実行させ、変換元の属性値の変換結果を得る（ステップＦ２７）。【００９８】
さらに、変換探索手段１２は、探索処理を終了するか否かを判定する（ステップＦ２８）。ステップＦ２７で得られた変換結果と、変換元の属性値に応じた変換後の属性値（ステップＦ２１で入力されている変換後の属性値）とを比較し、属性値同士が完全一致していれば、予測された変換パスがデータ接続問題の解とし、変換探索手段１２は、そのデータパスをデータ接続問題入出力部１１から出力する（ステップＦ２９）。また、予測した変換パスに対してステップＦ２５で求めた評価値が、予め設定された閾値に満たない場合、解無しとして探索を終了する。【００９９】
属性値同士が完全に一致しておらず、評価値が閾値以上である場合には、ステップＦ２４で求めた変換パスの候補のリストを更新する（ステップＦ３０）。具体的には、ステップＦ２７で試行した変換パス（換言すれば、直近のステップＦ２６で予測した変換パス）の評価値を０とする。その後、変換探索手段１２は、ステップＦ３０の後、ステップＦ２６に移行し、ステップＦ２６以降の処理を繰り返す。このように、ステップＦ２６で一旦選択した変換パスの予測値を０とする（ステップＦ３０）ので、そのステップＦ３０の後のステップＦ２６では、未だデータ接続問題の解して予測されていない変換パスのうち、評価値が最も高い変換パスを、解として予測する。従って、ステップＦ２６〜Ｆ３０のループ処理では、評価値が高い変換パスから順に選択して試行している。【０１００】
次に、動作の具体例を説明する。図１５は、変換モジュール記憶部１６に入力属性等の各情報が記憶される変換モジュールの例を示す説明図である。図１５では、各変換モジュールの機能を示すため、変換モジュールの名前、入力属性、出力属性、変換の例を示している。また、入力属性と出力属性では、各属性のデータ型も合わせて記述している。また、図１５に示す「Ｘ」は、任意の属性に当てはまることを示している。変換例は、変換モジュールの実行によって変換される属性値の例を示している。例えば、「文字列結合」については、「田中」および「太郎」が入力された場合、その二つを結合して「田中太郎」に変換するという例を示している。「１文字抽出」、「２文字抽出等」は、入力された属性値の最初の１文字や２文字等を抽出する変換モジュールである。ここでは、図１５に示すように、入力属性や出力属性に複数の属性を持つ変換モジュール、また、任意の属性属性値変換に利用できる変換モジュール、あるいは、性別等の特定の属性にのみ利用可能な変換モジュール等、多様な変換モジュールに関する情報が変換モジュール記憶部１６に記憶されているものとする。なお、図１５は、変換モジュールの一例であり、変換モジュール記憶部１６に入力属性等の各情報が記憶される変換モジュールは、図１５に例示する変換モジュールに限定されない。【０１０１】
また、記述形式知識記憶部１４は、少なくとも、図５に例示する記述形式ＩＤ“ｄ０００１”，“ｄ０００２”、“ｄ０００３”，“ｄ００１１”，“ｄ００１２”の記述形式知識、および“ｄ００１２”と同様の、「３文字で記述されている」という条件、「４文字で記述されている」という条件、「５文字で記述されている」という条件、「６文字で記述されている」という条件を示す各記述形式知識を記憶しているものとする。記述形式知識記憶部１４は、他の記述形式知識を記憶していてもよいが、以下の説明では、属性値シグニチャおよび変換値シグニチャの要素として、これらの９個の記述形式知識に対応する要素のみを示して説明する。【０１０２】
まず、図９に例示する変換シグニチャの作成処理の例について説明する。ここでは、図１３に例示する「性別変換Ａ」に関して、入力属性、入力属性型、出力属性、出力属性型、実行定義情報が変換モジュール記憶部１６に記憶されているが、変換シグニチャが記憶されていない場合を例に説明する。変換シグニチャ作成手段１９は、変換シグニチャが記憶されていない変換モジュールとして「性別変換Ａ」を検出すると、「性別変換Ａ」の実行定義情報を読み込む（ステップＦ１１）。そして、変換シグニチャ作成手段１９は、事例記憶部１８に記憶されている属性値を任意の属性値を変換元の属性値として、変換モジュール実行手段１７に変換後の属性値を取得させる（ステップＦ１２）、変換前後の属性値の事例を事例記憶部１８に記憶させる。図１６は、性別変換Ａに関して生成された事例を示す。変換シグニチャ作成手段１９は、図１６に例示するように出力（変換後の属性値）が“error ”となった事例は、事例記憶部１８から削除し、残った事例に関して、それぞれ属性値シグニチャ作成性手段１５に属性値シグニチャを作成させる（ステップＦ１３）。【０１０３】
図１７は、図１６に示す事例の各属性値（「男性」、「ｍａｌｅ」、「女性」、「ｆｅｍａｌｅ」）について、属性値シグニチャ作成性手段１５が作成する属性値シグニチャの例である。「男性」は、漢字２文字であるので、「漢字」および「２文字」という条件については満足するので、属性値シグニチャ作成性手段１５は、その条件に対応する要素を「１」とし、他の条件に対応する要素を「０」とする。「ｍａｌｅ」等の他の属性値に関しても、同様に属性値シグニチャを作成する。【０１０４】
変換シグニチャ作成手段１９は、各事例毎に、出力属性値の属性値シグニチャから、入力属性値の属性値シグニチャを減算するベクトル演算を行うことで、個々の変換事例毎の変換シグニチャを作成する。例えば、図１７に示す「ｍａｌｅ」の属性値シグニチャの各要素から「男性」の属性値シグニチャの各要素を減算するベクトル演算を行い、「男性」から「ｍａｌｅ」への変換に関する「−１，０，１，０，−１，０，１，０，０」という変換シグニチャを作成する。同様に、「女性」から「ｆｅｍａｌｅ」への変換に関する変換シグニチャも作成する（ステップＦ１４）。【０１０５】
変換シグニチャ作成手段１９は、各変換事例の変換シグニチャの平均ベクトルを算出することによって、変換シグニチャを１つにまとめる（ステップＦ１５）。図１８は、このようにして作成した「性別変換Ａ」の変換シグニチャの例を示す。この変換シグニチャでは、漢字２文字で記述されている値が、アルファベット４文字もしくはアルファベット６文字に変換されることを示している。変換シグニチャ作成手段１９は、このように作成した変換シグニチャを変換モジュール記憶部１６に記憶させる。【０１０６】
次に、データ接続問題の解となる変換パスを探索する動作の具体例を説明する。ステップＦ２１ではデータ接続問題が入力されるが、ここでは、変換元の属性名として「性別」が入力され、変換後の属性名として「性別」が入力され、属性値の変換例として、変換元の属性値「男性」および変換後の属性値「ｍ」が入力された場合を例にして説明する。ステップＦ２１で上記の属性名や属性値が入力された後、属性値知識記憶部１３を用いて、変換元の属性名「性別」と、変換後の属性名「性別」とに意味的に関連のある変換モジュールの候補を選択する（ステップＦ２２）。具体的には、変換探索手段１２は、式（２），式（３）の計算を行うことによって、変換パスに含まれる変換モジュールの候補を選択する。なお、このとき、変換探索手段１２は、特定の属性名を持たない変換モジュール（図１５において１文字抽出等のように入出力の属性が「X」となっているもの）は、ステップＦ２２において常に選択する。図１９に、この処理によって選ばれた性別に関連のある変換モジュールの候補を示す。このように、属性名「性別」に基づく選択では、文字列操作に関する変換モジュールや複数の性別に関する変換モジュールが選ばれる。【０１０７】
次に、変換探索手段１２は、ステップＦ２１で入力された各属性値「男性」および「ｍ」について属性値シグニチャ作成手段１５に属性値シグニチャを作成させる（ステップＦ２３）。【０１０８】
次に、変換探索手段１２は、ステップＦ２２で選択した変換モジュールを組み合わせて変換パスの候補を作成し、各変換パスの候補の評価値を算出する（ステップＦ２４，Ｆ２５）。ここでは、「[性別]，[性別変換Ａ]，[１文字抽出]，[性別]」という変換パスが組み合わせられたとし、この評価値の算出方法について説明する。変換探索手段１２は、評価値を算出する変換パスをシングルパスに分解するが、本例は、１つの属性を１つの属性に変換する例であり、シングルパスは変換パスそのものの１つのみとなる。【０１０９】
図２０は、変換パスの評価値の算出例を示す説明図である。既に説明したように、変換パスの評価値は、式（４）に示すように、属性値シグニチャＶｔとベクトルデータＶａの内積として計算してもよい。あるいは、属性値シグニチャ（ベクトルデータ）ＶｔとベクトルデータＶａとのなす角度の余弦を、変換パスの評価値としてもよい。ここでは、Ｖｔ，Ｖａのなす角度の余弦を変換パスの評価値とする場合を例にして説明する。【０１１０】
本例では、属性値「男性」の属性値シグニチャ「１，０，０，０，１，０，０，０，０」に、性別変換Ａの変換シグニチャ（「−１，０，１，０，−１，０，０．５，０，０．５」とする。）および１文字抽出の変換シグニチャ（「０，０，０，１，０，０，０，０，０」）を加算した結果得られるベクトルデータがＶａである。本例ではＶａは、「０，０，１，１，０，０，０．５，０，０．５」である。このベクトルデータＶａと、「ｍ」の変換シグニチャＶｔである「０，０，１，１，０，０，０，０，０」とのなす角度の余弦を求めると、０．８９４となり、この値を変換パスの評価値とする。【０１１１】
変換探索手段１２は、他の変換パスについても評価値を算出し、評価値が最も高い変換パスを選択する（ステップＦ２６）。ここで、「[性別],[性別変換Ａ],[１文字抽出],[性別]」の評価値が最も高いとすると、変換探索手段１２は、「男性」を変換元として、「[性別],[性別変換Ａ],[１文字抽出],[性別]」という変換パスに属する各変換モジュールについて順に、変換モジュール実行手段１７に変換後の属性値を取得させる（ステップＦ２７）。その結果得られる属性値が「ｍ」であるとすると、変換探索手段１２は、データ接続問題入出力部１１を介して、ユーザまたは外部システムに、「[性別],[性別変換Ａ],[１文字抽出],[性別]」という変換パスを提示する。【０１１２】
次に、効果について説明する。本発明では、変換シグニチャ作成手段１９が、記述形式知識に基づいて、変換モジュールのメタデータである変換シグニチャを作成し、変換モジュール毎に変換モジュール記憶部１６に記憶させる。従って、変換モジュールの作成者やあるアプリケーションの利用者が認識していないような観点で、変換モジュールの特徴を示すメタデータ（変換シグニチャ）を作成して、変換モジュールに対応付けることができる。また、人間が新しい記述形式の異なり方を発見した場合には、新たに記述形式知識を記述形式知識記憶部１４に記憶させることによって、新たにメタデータを追加することができる。そして、本発明では、そのようなメタデータにもとづいて変換パスを予測する。従って、変換モジュールの再利用性を向上させることができる。【０１１３】
また、本発明では、変換パスに属する変換モジュール数が１個の場合の変換パスの候補から、探索距離Ｄの場合の変換パスの候補まで、それぞれ作成する。従って、１つの変換モジュールだけを単体で利用する場合だけでなく、複数の変換モジュールを組み合わせた再利用形態に応じた変換パスも見つけることができるよので、変換モジュールが再利用される機会を多くすることができる。【０１１４】
例えば、「奈良県○○市○○町○○」等の住所の属性値を、「近畿」等の地域を表す属性値に変換する場合を考える。「住所」の属性値から「地域」の属性値に直接変換する変換モジュールが存在しなくても、「住所」から「県名」に変換する変換モジュールおよび「県名」から「地域」に変換する変換モジュールがあれば、上記のような住所から地域への変換を可能とする変換パスを導くことができる。この場合、「奈良県」等の県名の属性値と「近畿」等の属性値は表層的には類似しないが、複数の変換モジュールを組み合わせた変換パスを導出することができ、精度よくデータ接続問題の解を見つけることができる。【０１１５】
また、本発明では、予め変換パスの評価値を計算しておき、変換パスの評価値が最も高いものについて、その変換パスによって所望の属性値変換が行われるかを判定する。従って、実際に属性値の変換処理を行うのに要する時間を短縮することができ、効率的に短時間でデータ接続問題の解を見つけることができる。例えば、非特許文献１に記載された技術と比較すると、非特許文献１に記載された技術では、変換を行った後に変換モジュールを評価するので、各変換モジュールについてそれぞれ属性値の変換処理を実際に行わなければならない。それに対し、本発明では、実際に属性値を変換しなければならない変換モジュール数を少なくすることができるので、効率的に短時間でデータ接続問題の解を見つけることができる。【０１１６】
実施形態２．
図２１は、本発明による変換プログラム探索システムの第２の実施形態を示すブロック図である。第１の実施形態と同一の構成要素については、図３と同一の符号を付し、説明を省略する。第２の実施形態の変換プログラム探索システムは、データ接続問題入出力部１１と、変換探索手段１２と、属性知識記憶部１３と、記述形式知識記憶部１４と、属性値シグニチャ作成手段１５と、変換モジュール記憶部１６と、変換モジュール実行手段１７と、事例記憶部１８と、変換シグニチャ作成手段１９と、変換モジュール登録部２０とを備える。変換モジュール登録部２０以外の構成要素の動作は、第１の実施形態で説明した動作と同様である。【０１１７】
変換探索手段１２は、第１の実施形態と同様にデータ接続問題の解となる変換パスを導出する。変換パスは、順序付けられた１つ以上の変換モジュールが含まれている。本実施形態では、変換モジュールに含まれている順序付けられた１つ以上の変換モジュールの組み合わせを、新たな１つの変換モジュールとみなし、その変換モジュールの組み合わせに関する情報を新たな１つの変換モジュールに関する情報として変換モジュール記憶部１６に記憶させる。変換探索手段１２は、導出した変換パスを変換モジュール登録部２０に渡す。【０１１８】
変換モジュール登録部２０は、変換探索手段１２が見つけた変換パスを受け取り、変換パスを１つの変換モジュールとして、変換モジュール記憶部１６に登録する。具体的には、変換モジュール登録部２０は、変換探索手段１２から変換パスを受け取ると、その変換パスに含まれている順序付けられた１つ以上の変換モジュールの組み合わせに関する情報を、１つの変換モジュールに関する情報として、以下に示すように変換モジュール記憶部１６に記憶させる。【０１１９】
変換モジュール登録部２０は、変換パス内に含まれる各変換モジュールのモジュール名を新しい変換モジュールのモジュール名として変換モジュール記憶部１６に記憶させる。例えば、変換パス内に含まれる各変換モジュールのモジュール名をハイフンで結んだ文字列を、新たな１つの変換モジュールのモジュール名として変換モジュール記憶部１６に記憶させる。【０１２０】
また、変換モジュール登録部２０は、変換パス内で最初に実行させる変換モジュールの入力属性および入力属性型を、新たな１つの変換モジュールの入力属性および入力属性型として変換モジュール記憶部１６に記憶させる。【０１２１】
同様に、変換パス内で最後に実行させる変換モジュールの出力属性および出力属性型を、新たな１つの変換モジュールの出力属性および出力属性型として変換モジュール記憶部１６に記憶させる。また、最後に実行させる変換モジュールの出力属性が、任意の属性でよいとされている場合（例えば、出力属性が、任意の属性に該当することを示す“Ｘ”とされている場合）、１つ手前の変換モジュールの出力属性を、新たな変換モジュールの出力属性とすればよい。手前の変換モジュール出力属性が、任意の出力属性でよいとされている場合、更に手前の変換モジュールの出力属性を辿ればよい。【０１２２】
また、変換モジュール登録部２０は、変換パス自体を新たな１つの変換モジュールの実行定義情報とし、変換モジュール記憶部に記憶させる。新たな変換モジュールの実行定義情報となる情報は、変換パスに含まれる各変換モジュールを変換モジュールの実行順に特定することができる情報であればよい。例えば、変換パスに含まれる各変換モジュールのモジュールＩＤを変換モジュールの実行順に並べた情報を実行定義情報としてもよい。【０１２３】
さらに、変換モジュール登録部２０は、変換パスを解とするデータ接続問題の入力時に入力された属性値の変換例を、事例記憶部１８に記憶させる。【０１２４】
変換シグニチャ作成手段１９は、入力属性、出力属性、実行定義情報等の各情報が変換モジュール記憶部１６に記憶された変換パスについて変換シグニチャを作成し、その変換シグニチャを変換モジュール記憶部１６に記憶させる。【０１２５】
また、変換パスに含まれる変換モジュールが１つである場合には、変換モジュール登録部２０は、その変換パスに含まれる変換モジュールに関する情報を新たに登録しなくてもよい。【０１２６】
なお、変換モジュール事項手段１７は、１つとみなした変換モジュールによる変換結果を取得する場合、その変換モジュールの実行定義情報に含まれる各変換モジュールによって特定される各実行定義情報を順次参照して、順番に各変換モジュールによる変換結果を取得していけばよい。【０１２７】
変換モジュール登録部２０は、例えば、変換プログラム探索用プログラムに従って動作するＣＰＵによって実現される。このＣＰＵは、他の各構成要素（変換探索手段１２等）を実現するためのＣＰＵと同一のＣＰＵであってもよい。【０１２８】
変換モジュール登録部２０の動作の具体例を説明する。図２２は、変換モジュール登録部２０によって変換モジュール記憶部１６に登録される新たなモジュールに関する情報の例を示す説明図である。変換モジュール１６には、モジュールＩＤ、モジュール名、入力属性、入力属性型、出力属性、出力属性型がそれぞれ「ｍ０００１」、「性別変換Ａ」、「［性別］」、「［Ｓｔｒｉｎｇ］」、「［性別］」、「［Ｓｔｒｉｎｇ］」であり、実行定義情報が定められた変換モジュールが記憶されているとする。同様に、モジュールＩＤ、モジュール名、入力属性、入力属性型、出力属性、出力属性型がそれぞれ「ｍ０００２」、「１文字抽出変換」、「［Ｘ］」、「［Ｓｔｒｉｎｇ］」、「［性別］」、「［Ｓｔｒｉｎｇ］」であり、実行定義情報が定められた変換モジュールが記憶されているとする。そして、変換探索手段１２が、この２つの変換モジュールを「性別変換Ａ」、「１文字抽出変換」の順に含む変換パスを導出し、その変換パスを変換モジュール登録部２０に渡したとする。【０１２９】
すると、変換モジュール登録部２０は、変換パス内における順番にモジュール名称「性別変換Ａ」、「１文字抽出変換」をハイフンで結んだ「性別変換Ａ−１文字抽出変換」を新たな変換モジュールのモジュール名として変換モジュール記憶部１６に記憶させる。また、最初の変換モジュールの入力属性「［性別］」および入力属性型「［Ｓｔｒｉｎｇ］」をそれぞれ、新たな変換モジュールの入力属性、入力属性型として記憶させる。また、最後の変換モジュールの出力属性および出力属性型も、新たな変換モジュールの出力属性および出力属性型として変換モジュール記憶部１６に記憶させるが、本例では出力属性が、任意の属性に該当することを示す「Ｘ」であるので、１つ手前の変換モジュール（性別変換Ａ）の出力属性「［性別］」を出力属性として記憶させる。また、本例では、変換モジュール登録部２０は、変換パスに含まれる各変換モジュールのモジュールＩＤを変換モジュールの実行順に並べた「［ｍ０００１］，［ｍ０００２］」を実行定義情報として記憶させる。【０１３０】
この１つとみなされる新しい変換モジュールによる変換結果を取得する場合、変換モジュール実行手段１７は、［ｍ０００１］によって特定される実行定義情報、［ｍ０００２］によって特定される実行定義情報を参照して、性別変換Ａおよび１文字抽出変換による変換結果を順次取得していけばよい。【０１３１】
次に、本実施形態の効果について説明する。本実施形態によれば、変換探索手段１２によって見つけられた変換パスを１つの変換モジュールとみなして、変換モジュール登録部２０がその変換パスに関する情報を変換モジュール記憶部１６に登録する。互いに異なるデータ接続問題であっても、その解として、同じ変換モジュールの組み合わせを利用できる場合が多い。従って、本実施形態のように、過去に登場した変換モジュールの組み合わせ方を記憶しておくことで、変換モジュールを再度探索する手間を省くことが可能になる。その結果、より高速にデータ接続問題を解決できる【０１３２】
また、変換モジュールの組み合わせを１つの変換モジュールとみなし、１つとみなされた変換モジュールに関する情報を変換モジュール記憶部１６に記憶させるので、変換パスと同機能を持つ変換モジュールを新たに作成する必要がなくなる。その結果、変換モジュールの管理負担が軽減される。例えば、管理者は、変換モジュール記憶部１６に記憶された情報を参照することで、過去に登場した変換モジュールの組み合わせ方を容易に認識でき、その結果、新しい変換モジュールを作成しなくよいと判断することができる。また、作成する変換モジュール数が少なくて済むので、変換モジュールに関する情報を変換モジュール記憶部１６に登録する作業負担も軽減される。【０１３３】
実施形態３．
図２３は、本発明による変換プログラム探索システムの第３の実施形態を示すブロック図である。第１の実施形態と同一の構成要素については、図３と同一の符号を付し、説明を省略する。第３の実施形態の変換プログラム探索システムは、データ接続問題入出力部１１と、変換探索手段１２と、属性知識記憶部１３と、記述形式知識記憶部１４と、属性値シグニチャ作成手段１５と、変換モジュール記憶部１６と、変換モジュール実行手段１７と、事例記憶部１８と、変換シグニチャ作成手段１９と、変換モジュール生成部２１とを備える。変換モジュール生成部２１以外の構成要素の動作は、第１の実施形態で説明した動作と同様である。【０１３４】
ただし、本実施形態では、例えば、変換モジュール記憶部は、辞書ルールの集合が指定され、入力データとなる属性値が定められた場合、辞書ルールの集合から入力データとなる属性値に対応付けられた属性値を選択し、その属性値を出力データとするプログラム（以下、辞書プログラムと記す。）を予め記憶する。辞書ルールとは、入力データとなる属性値と、出力データとなる属性値とを対応付けた情報である。入力データとなる属性値は変換元の属性値であり、出力データとなる属性値とを対応付けた情報である。変換モジュール実行手段１７が辞書プログラムを実行する際、入力データとなる属性値に対応する属性値が定められていなければ、エラーを返す。【０１３５】
外部リソース２２（図２３参照）は、少なくとも１つのプライマリキーを有する表構造のデータである。プライマリキーは、表で定められた属性名のうち、属性値が全てユニークであること（すなわち、属性値が重複しないこと）を保証されている属性名である。例えば、「社員番号」、「名前」、「住所」という属性名が定められ、「社員番号」、「名前」および「住所」の属性値の組の集合である情報等が、外部リソース２２として用いることができる。この例では、「社員番号」がプライマリキーに該当する。また、外部リソース２２として、例えば、企業内等で予め作成されているデータベースやオントロジを用いることができる。【０１３６】
変換モジュール生成手段２１は、外部リソース２２を読み込み、辞書ルールを作成する。そして、辞書ルールと辞書プログラムとの組み合わせを、新たな変換モジュールとして作成する。【０１３７】
図２４は、変換モジュール生成手段２１の動作の例を示すフローチャートである。変換モジュール生成部２１は、外部リソース２２が入力されることで起動する。変換モジュール生成手段２１は、外部リソース２２が入力されると（ステップＦ３１）、その外部リソース２２から対応する属性名を抽出する（ステップＦ３２）。対応する属性名とは、外部リソース２２内の属性値同士が対応関係を有している属性名である。具体的には、変換モジュール生成手段２１は、ステップＦ３２において、プライマリキーとなる属性名と、他の任意の１つの属性名とを抽出すればよい。例えば、外部リソース２２がデータベースである場合、プライマリキーとなるフィールドと、他のフィールドとの組を抽出すればよい。【０１３８】
続いて、変換モジュール生成手段２１は、新たな変換モジュールを作成する（ステップＦ３３）。ステップＦ３３において、変換モジュール生成手段２１は、表のレコード順に、対応する属性名の属性値のペアを抽出し、抽出した属性値のペアの集合を辞書ルールとして変換モジュール記憶部１６に記憶させる。このとき、変換モジュール生成手段２１は、プライマリキーの属性値を入力（変換元）の属性値とし、もう一方の属性名の属性値を、出力される属性値（変換後の属性値）として変換モジュール記憶部１６に記憶させる。全てのレコードから属性値のペアを抽出して辞書ルールとして記憶させた後、変換モジュール生成手段２１は、その辞書ルールと辞書プログラムとの組を、新たな変換モジュールとして定める。このとき、変換モジュール生成手段２１は、辞書ルールから属性値を抽出するＳＱＬ文のテンプレートを作成し、変換モジュールに含めてもよい。【０１３９】
ステップＦ３３の後、変換モジュール生成手段２１は、新たな変換モジュールのモジュール名、入力属性、入力属性型、出力属性、出力属性型、および実行定義情報を、新たな変換モジュールに関する情報として、図６に例示するように変換モジュール記憶部１６に記憶させる（ステップＦ３４）。モジュール名は、例えば、外部リソース２２に付加されている名称、および入力属性、出力属性の属性名をつなげた文字列とすればよい。他の方法でモジュール名を定めてもよい。また、ステップ３３で変換モジュール記憶部１６に記憶させた辞書ルールを指定して辞書プログラムを実行する情報を実行定義情報とすればよい。実行定義情報は、辞書ルールと組み合わせた辞書プログラムを実行する情報であればよい。変換モジュール生成手段２１は、入力属性および入力属性型として、プライマリキーとなる属性名およびその属性値の属性型を記憶させればよい。同様に、出力属性および出力属性型として、プライマリキーとペアにした属性名およびその属性値の属性型を記憶させればよい。変換モジュール生成手段２１は、ステップＦ３４において、外部リソース２２から抽出して辞書ルールとした属性値の組（変換元の属性値と変換後の属性値との組）を、属性値の変換例として事例記憶部１８に記憶させる。事例記憶部１８に記憶させる属性値の組の数は、特に限定されない。【０１４０】
なお、外部リソース２２にプライマリキー以外の属性名が複数存在する場合には、変換モジュール生成手段２１は、プライマリキーとその他の属性名のペア毎に、ステップＦ３２〜Ｆ３４の処理を実行してもよい。【０１４１】
変換シグニチャ作成手段１９は、入力属性、出力属性、実行定義情報等の各情報が変換モジュール記憶部１６に記憶された新たな変換プログラムについて変換シグニチャを作成し、その変換シグニチャを変換モジュール記憶部１６に記憶させる。【０１４２】
変換モジュール生成手段２１は、例えば、変換プログラム探索用プログラムに従って動作するＣＰＵによって実現される。このＣＰＵは、他の各構成要素（変換探索手段１２等）を実現するためのＣＰＵと同一のＣＰＵであってもよい。【０１４３】
次に、変換モジュール生成手段２１の動作の具体例を説明する。ここでは、外部リソース２２がリレーショナルデータベース（以下、ＲＤＢと記す。）内の社員に関するテーブルであり、テーブルの中に「社員番号（プライマリキー）、名前、住所」というフィールドが存在している場合を例にする。このような外部リソース２２が入力されると（ステップＦ３１）、変換モジュール生成部２１は、プライマリキーである「社員番号」と「名前」の属性名のペアを外部リソース２２から抽出する（ステップＦ３２）。【０１４４】
次に、変換モジュール生成部２１は、「社員番号」の属性値と「名前」の属性値とのペアをレコード順に全て抽出し、抽出した属性値のペアの集合を辞書ルールとして変換モジュール記憶部１６に記憶させる。そして、変換モジュール生成部２１は、「select プライマリキー以外の属性名 from 辞書ルール名 where プライマリキーの属性名=?」というＳＱＬ文における「プライマリキー以外の属性名」、「辞書ルール名」、「プライマリキーの属性名」に、それぞれ属性名や辞書ルール名を当てはめ、ＳＱＬ文のテンプレートを作成する。例えば、「辞書ルール名」が社員テーブルであるとすると、変換モジュール生成部２１は、「select 名前 from 社員テーブル where 社員番号=?」というＳＱＬ文のテンプレートを作成する。このテンプレートの“?”に入力データである属性値を代入して実行することで、変換後の属性値が辞書ルールから抽出される。また、本例では、辞書プログラムとして、ＳＱＬ文のテンプレートを呼び出し、そのテンプレートの“?”に入力データである属性値を代入してＳＱＬ文を実行させるためのプログラムが予め変換モジュール記憶部１６に記憶されているとする。変換モジュール生成部２１は、その辞書プログラムと、作成したＳＱＬ文のテンプレートと、辞書ルールとの組を新たな変換モジュールとして定める（ステップＦ３３）。【０１４５】
さらに、変換モジュール生成部２１は、その変換プログラムのモジュール名、入力属性、入力属性値、出力属性、出力属性値、実行定義情報を変換モジュール記憶部１６に記憶させ、辞書ルールを事例記憶部１８に記憶させる（ステップＦ３４）。【０１４６】
上記の例では、「社員番号」と「名前」とのペアについてステップＦ３２〜Ｆ３４を実行する場合を説明したが、変換モジュール生成部２１は、「社員番号」と「住所」に関してもステップＦ３２〜Ｆ３４の処理を行ってもよい。【０１４７】
本実施形態では、変換モジュール生成部２１が外部リソース２２に基づいて新たな変換モジュールを定める。従って、外部リソース２２を入力すれば、変換モジュールのうちの一部を自動的に作成することができる。この結果、本発明をアプリケーションに適応する際の作業コストを下げることができる。【０１４８】
また、本実施形態の変換プログラム探索システムは、第２の実施形態と同様に動作する変換モジュール登録部２０を備えていてもよい。その場合、第２の実施形態と同様の効果を得られる。【０１４９】
実施形態４．
図２５は、本発明による変換プログラム探索システムの第４の実施形態を示すブロック図である。第１の実施形態と同一の構成要素については、図３と同一の符号を付し、説明を省略する。第４の実施形態の変換プログラム探索システムは、データ接続問題入出力部１１と、変換探索手段１２と、属性知識記憶部１３と、記述形式知識記憶部１４と、属性値シグニチャ作成手段１５と、変換モジュール記憶部１６と、変換モジュール実行手段１７と、事例記憶部１８と、変換シグニチャ作成手段１９と、スキーマ統合部２３と、スキーマ統合問題入出力部２４とを備える。【０１５０】
スキーマ統合問題入出力部２４には、２つのスキーマとそのレコードからなるスキーマ統合問題が入力され、また、そのスキーマ統合問題の解を出力する。２つのスキーマとは、変換元のスキーマと変換後のスキーマである。レコードとは、スキーマによって定められる属性名の集合を用いて実世界の物やイベントを表現したデータである。例えば、「人」を定義する１つのスキーマが「名前」「住所」「性別」「年齢」という属性名の４つの属性を含んでいるとする。この場合、「田中太郎」「奈良県奈良市・・・」「男」「２８歳」という４つの属性値の集合が１つのレコードとなる。すなわち、レコードは、スキーマによって定められる各属性の属性値の組である。スキーマ統合問題は、変換元のスキーマと、変換元のスキーマで用意されたデータの集合（変換元のスキーマのレコードの集合）と、変換後のスキーマと、変換後のスキーマで用意されたデータの集合（変換後のスキーマのレコードの集合）とによって、定められる。従って、スキーマ統合問題入出力部２４には、スキーマ統合問題として、変換元のスキーマおよびそのレコードの集合と変換後のスキーマおよびそのレコードの集合とが入力される。また、スキーマ統合問題の解は、
変換元のスキーマで表現されたデータを変換後のスキーマで表現するための変換方法を示す情報であり、変換元のスキーマの属性名と変換後のスキーマの属性名との対応関係を示す情報と、変換前と変換後とで対応する属性名同士の間で属性値を変換する変換パスとを含む。スキーマ統合問題入出力部２４は、スキーマ統合問題の解として、変換元のスキーマの属性名と変換後のスキーマの属性名との対応関係を示す情報および、属性値を変換するための変換パスを出力する。【０１５１】
スキーマ統合問題入出力部２４は、例えば、外部のシステムもしくはユーザによって操作される。また、スキーマ統合問題入出力部２４は、例えば、キーボード等の入力装置とディスプレイ装置等の出力装置によって実現される。あるいは、スキーマ統合問題入出力部２４は、外部のシステムとのインタフェースであってもよい。本実施形態において、データ接続問題入出力部１１は、スキーマ統合部２３と変換探索手段１２とのインタフェースである。また、後述するように、スキーマ統合部２３は、例えばプログラムに従って動作するＣＰＵによって実現されるが、スキーマ統合部２３を実現するためのＣＰＵと他の各構成要素（変換探索手段１２等）を実現するためのＣＰＵとが同一のＣＰＵである場合、スキーマ統合部２３と変換探索手段１２とのインタフェースとなる回路としてデータ接続問題入出力部１１が設けられていなくてもよい。【０１５２】
スキーマ統合部２３は、変換前のスキーマと変換後のスキーマの属性名同士の対応関係およびレコード同士の対応関係を見つける。そして、スキーマ統合部２３は、変換前のスキーマの属性名、変換後のスキーマの属性名、およびそれらの属性名を有する属性の属性値を、データ接続問題として、データ接続問題入出力部１１を介して変換探索手段１２に入力する。また、そのデータ接続問題の解である変換パスが出力されると、スキーマ統合部２３は、変換前のスキーマの属性名、変換後のスキーマの属性名およびその変換パスをスキーマ統合問題入出力部２４を介して出力する。【０１５３】
スキーマ統合部２３は、スキーマ統合探索部２３３と、属性名類似度導出部２３２と、レコード照合部２３１とを有する。【０１５４】
属性名類似度導出部２３２は、２つの属性名を入力データとして、その２つの属性名の類似度を求める。属性名類似度導出部２３２は、この類似度を求める際、属性知識記憶部１３を用いる。ただし、属性名類似度導出部２３２が求める属性名の類似度は、属性知識記憶部１３が求める類似度に対してさらに演算を行った結果であってもよい。【０１５５】
レコード照合部２３１は、変換元のスキーマの属性名と変換後のスキーマの属性名とのペアを全て作成し、各ペア毎に属性名の類似度を属性名類似度導出部２３２に求めさせる。そして、レコード照合部２３１は、属性名の類似度を参照して、変換前と変換後とで対応する属性名の特定、変換元のスキーマおよび変換後のスキーマ間で対応するレコードの特定、および、そのレコード間で対応する属性値同士の特定を行う。例えば、変換前のスキーマの属性名「電話」と変換後のスキーマの属性名「Ｔｅｌ」とを対応付ける処理を行う。また、性別や電話番号を含む変換前のレコード「男性、0774xxxx、・・・」と、変換後のレコード「Ｍ，0774xxxx、」とを対応するレコードとして特定し、そのレコード間で対応する属性値「男性」と「Ｍ」、「0774xxxx」と「0774xxxx」等を特定する処理を行う。【０１５６】
スキーマ統合探索部２３３は、スキーマ統合問題入出力部２４からスキーマ統合問題（変換元のスキーマおよびそのレコードの集合、変換後のスキーマおよびそのレコードの集合）を受け取ると、そのスキーマ統合問題をレコード照合部２３１に渡し、属性名の対応関係を示す情報、および対応する変換元、変換後の属性名における各属性値のうち対応する属性値の組をスキーマ統合探索部２３３から受け取る。【０１５７】
さらに、スキーマ統合探索部２３３は、スキーマ間で対応する属性名と、データ照合部２３１により特定した対応するデータ（属性値）とを参照し、データ接続問題の解を求める必要があるか否かを判定する。例えば、対応する属性名同士が同一属性名であり、対応する属性値同士が同一属性名であれば、データ接続問題の解を求める必要がなく、対応する属性名同士が異なっていたり、対応する属性値同士が異なっている場合に、データ接続問題の解を求める必要があると判定する。データ接続問題の解を求める必要がある場合、対応する属性名、およびその属性名を有する属性の属性値を、データ接続問題として、データ接続問題入出力部１１に入力し、その解を得る。スキーマ統合探索部２３３は、対応する属性名の組とおよび属性名の組に関する変換パスを、対応する属性名の組毎にまとめて、スキーマ統合問題入出力部２４を介して、出力する。ここで出力されるデータが、スキーマ統合問題の解である。【０１５８】
図２６は、スキーマ統合部２３の動作の例を示すフローチャートである。スキーマ統合部２３は、スキーマ統合問題入出力部２１を介してスキーマ統合問題（変換元のスキーマおよびそのレコードの集合、変換後のスキーマおよびそのレコードの集合）が入力されることで起動する。スキーマ統合問題入出力部２４にスキーマ統合問題が入力されると、スキーマ統合問題入出力部２４は、そのスキーマ統合問題をスキーマ統合探索部２３３に渡す（ステップＦ４１）。【０１５９】
スキーマ統合探索部２３３はスキーマ統合問題をレコード照合部２３１に渡し、レコード照合部２３１は、スキーマ統合問題を受け取ると、変換前のスキーマの属性名と、変換後のスキーマの属性名とのペアを全て作成する。そして、各ペア毎に、ペアをなす２つの属性名およびその属性名の属性値の集合を属性名類似度導出部２３２に渡して、その属性名間の類似度を求めさせる（ステップＦ４２）。【０１６０】
ステップＦ４２において、属性名類似度導出部２３２は、２つの属性名、およびそのそれぞれの属性値を渡されると、属性名間の類似度を求める。ここでは、属性知識記憶部１３が求める類似度に対してさらに演算を行うことによって属性名間の類似度を求める場合を例にして説明する。まず、属性名類似度導出部２３２は、２つの属性名の類似度を属性知識記憶部１３に求めさせる。さらに、属性名類似度導出部２３２は、一方の属性名の属性値と、もう一方の属性名の属性値とを比較して、同じ属性値の割合を求める。例えば、一方の属性名（Ａとする。）の属性値と、もう一方の属性名（Ｂとする。）の属性値とで共通する属性値の数をカウントし、一方の属性名（Ａ，Ｂのいずれか）の属性値の個数に対する割合を計算する。属性名類似度導出部２３２は、属性知識記憶部１３に求めさせた類似度と、上記の属性値の割合との線型和（例えば、平均）を計算し、その計算結果を、２つの属性名間の類似度として、レコード照合部２３１に返す。【０１６１】
ステップＦ４２の後、レコード照合部２３１は、変換前のスキーマの属性名と、変換後のスキーマの属性名との全てのペアのうち、類似度が最高のペアを特定する（ステップＦ４３）。レコード照合部２３１は、そのペアにおける変換前の属性名の属性値と、変換後の属性名の属性値とを比較し、同じ属性値を含むレコードを変換元および変換後のレコードの中から特定する（ステップＦ４４）。ステップＦ４４で特定されたレコード同士が対応するレコードである。【０１６２】
例えば、ステップＦ４３で、属性名「電話」と属性名「Ｔｅｌ」のペアを類似度が最高のペアとして特定したとする。この場合、ステップＦ４４では、属性名「電話」の属性値と属性名「Ｔｅｌ」の属性値を比較し、同じ属性値（例えば「0774xxxx」）を含む「男性、0774xxxx、・・・」というレコード、「Ｍ、0774xxxx、・・・」というレコードをそれぞれ変換元、変換後のレコードから抽出する。【０１６３】
レコード照合部２３１は、未選択の属性名のペアの中で最も類似度の高いペアをを選択する（ステップＦ４５）。さらに、レコード照合部２３１は、選択したペアにおける変換元の属性名の属性値と変換後の属性名の属性値を、それぞれ対応するレコード（ステップＦ４４で特定したレコード）から抽出する。レコード照合部２３１は、選択したペアにおける２つの属性名および抽出した属性値を、スキーマ統合探索部２３３に渡す。抽出した属性値は、データ接続問題における変換例に該当する。【０１６４】
スキーマ統合探索部２３３は、レコード照合部２３１から受け取った属性名および属性値をデータ接続問題として、データ接続問題入出力部１１を介して変換探索手段１２に入力する。データ接続問題が入力された変換探索手段１２は、第１の実施形態と同様に、解となる変換パスを導出する。スキーマ統合探索部２３３は、データ接続問題入出力部を介して、その変換パスを変換探索手段１２から受け取る（ステップＦ４６）。【０１６５】
続いて、レコード照合部２３１は、ステップＦ４５の処理を終了するか否かを判定する（ステップＦ４７）。例えば、変換元および変換後の属性名のうち、ペアとしてステップＦ４５で選択されていない属性名が存在しなくなったときにステップＦ４５の処理を終了すると判定する。ステップＦ４５で選択されていない属性名が残っている場合には、ステップＦ４５に移行し、ステップＦ４５以降の処理を繰り返す。なお、最初にステップＦ４５の処理を行ってから所定時間が経過しているとき、あるいは、ステップＦ４５から始まる処理を所定回数実行したときにステップＦ４５の処理を終了すると判定してもよい。【０１６６】
ステップＦ４５では、未選択の属性名のペアの中で最も類似度の高いペアをを選択するが、類似度の差が予め定められた閾値以下であって、変換元の属性名または変換後の属性名が共通である複数のペアが存在する場合には、その複数のペアを同時に選択してもよい。例えば、属性名「名前」および属性名「Ｆｉｒｓｔ  Ｎａｍｅ」のペアと、属性名「名前」および属性名「Ｆａｍｉｌｙ  Ｎａｍｅ」のペアの類似度が閾値以下である場合等では、属性名「名前」が共通であるので、この２つのペアを同時に選択する。そして、「名前」、「Ｆｉｒｓｔ  Ｎａｍｅ」、「Ｆａｍｉｌｙ  Ｎａｍｅ」の属性値をそれぞれ抽出し、スキーマ統合探索部２３３に渡す。スキーマ統合探索部２３３は、「名前」、「Ｆｉｒｓｔ  Ｎａｍｅ」、「Ｆａｍｉｌｙ  Ｎａｍｅ」、およびその属性値をデータ接続問題として、データ接続問題入出力部１１に入力すればよい。【０１６７】
ステップＦ４５の処理を終了すると判定した場合（ステップＦ４７のＹｅｓ）、スキーマ統合探索部２３３は、それまでのステップＦ４６で変換探索手段１２から受け取った変換パスをスキーマ統合問題入出力部２４から出力する（ステップＦ４８）。その変換パスの組み合わせがスキーマ統合問題の解である。【０１６８】
スキーマ統合探索部２３３、属性名類似度導出部２３２、レコード照合部２３１を有するスキーマ統合部２３は、例えば、変換プログラム探索用プログラムに従って動作するＣＰＵによって実現される。このＣＰＵは、他の各構成要素（変換探索手段１２等）を実現するためのＣＰＵと同一のＣＰＵであってもよい。【０１６９】
次に、本実施形態の動作の具体例を説明する。図２７は、スキーマ統合問題の例を示す説明図である。図２７に示すテーブルＡは、スキーマ統合問題における変換前のスキーマおよびそのレコードの例である。同様に、テーブルＢは、スキーマ統合問題における変換後のスキーマおよびそのレコードの例である。図２７に例示するように、「名前」、「性別」、「電話」、「住所」を属性名とするスキーマおよびそのレコードと、「Ｆｉｒｓｔ  Ｎａｍｅ」、「Ｆａｍｉｌｙ  Ｎａｍｅ」、「Ｓｅｘ」、「Ｔｅｌ」、「ＰＯＳ」を属性名とするスキーマおよびそのレコードとがスキーマ統合問題として入力されたとする（ステップＦ４１）。【０１７０】
すると、レコード照合部２３１は、変換前のスキーマの属性名と、変換後のスキーマの属性名とのペアを全て作成し、ペアをなす２つの属性名間の類似度を属性名類似度導出部２３２に算出させる。本例では、『「名前」と「Ｆｉｒｓｔ  Ｎａｍｅ」』、『「名前」と「Ｆａｍｉｌｙ  Ｎａｍｅ」』、『「名前」と「Ｓｅｘ」』、『「名前」と「Ｔｅｌ」』、『「性別」と「Ｆｉｒｓｔ  Ｎａｍｅ」』等のペアを全て作成し、各ペアにおける属性名間の類似度を属性名類似度導出部２３２に算出させる。【０１７１】
次に、レコード照合部２３１は、類似度が最高のペアを特定する（ステップＦ４３）。本例では、『「電話」と「Ｔｅｌ」』の類似度が最高であったものとする。レコード照合部２３１は、そのペアにおける変換前の属性名の属性値と、変換後の属性名の属性値とを比較し、同じ属性値を含むレコードを変換元および変換後のレコードの中から特定する（ステップＦ４４）。例えば、「電話」および「Ｔｅｌ」の属性値として、様々な電話番号が記述されているが、本例ではそのうち「0774xxxx」が一致する。従って、その属性値を含む「田中太郎、男性、0774xxxx、奈良県・・・」を変換元のレコードから特定し、同様に、「Ｔａｒｏｕ、Ｔａｎａｋａ、Ｍ、0774xxxx、610-xxxx」を変換後のレコードから特定する。この２つのレコードは変換元および変換後のレコードである。【０１７２】
そして、レコード照合部２３１は、未選択の属性名のペアのうち類似度が最高のペアを選択する（ステップＦ４５）。さらに、レコード照合部２３１は、そのペアにおける変換元の属性名の属性値と変換後の属性名の属性値を、ステップＦ４４で特定したレコードから抽出する。ここでは、属性名「電話」および「Ｔｅｌ」を選択し、その属性値（いずれも「0774xxxx」）を抽出する。スキーマ統合探索部２３３は、「電話」および「Ｔｅｌ」とその属性値をデータ接続問題入出力部１１に入力し、データ接続問題の解となる変換パスを受け取る（ステップＦ４６）。【０１７３】
また、まだ未選択の属性名が残っているので、再度ステップＦ４５移行の処理を繰り返す。例えば、次に、類似度が高いペアが「性別」と「Ｓｅｘ」であるとする。レコード照合部２３１は、その属性値のペアを選択し、ステップＦ４４で特定したレコードからその属性値「男性」および「Ｍ」を抽出する。そして、スキーマ統合探索部２３３がその属性名や属性値をデータ接続問題入出力部１１に入力し、変換パスを受け取る。【０１７４】
同様の処理を繰り返し、「電話」の属性値から「Ｔｅｌ」の属性値への変換パス、「性別」の属性値から「Ｓｅｘ」の属性値への変換パス、「名前」の属性値から「Ｆｉｒｓｔ  Ｎａｍｅ」、「Ｆａｍｉｌｙ  Ｎａｍｅ」の属性値への変換パス、「住所」の属性値から「ＰＯＳ」の属性値への変換パスを順次受け取る。未選択の属性名がなくなった場合（ステップＦ４７のＹｅｓ）、スキーマ統合探索部２３３は、これらの変換パスを出力する（ステップＦ４８）。【０１７５】
本実施形態によれば、スキーマ統合問題が入力された場合、スキーマ統合部２３３が変換元のスキーマの属性名と変換後のスキーマの属性名を対応付け、対応付けた属性名とその属性値を特定する。そして、変換探索手段１２が、その属性名および属性値をデータ接続問題として変換パスを導出する。従って、スキーマ統合問題の解を正確に求めることができる。また、属性値の記述形式が異なっていたとしても、網羅的に変換を行ってスキーマ統合問題の解を求めているわけではなく、本実施形態では、短い処理時間で正確にスキーマ統合問題の解を求めることができる。【０１７６】
本実施形態の変換プログラム探索システムは、データベースの統合を行うスキーマ統合のアプリケーションに適用され、スキーマ統合問題を正確に解くことができる。【０１７７】
また、本実施形態は、企業内もしくは企業間に存在するデータベースの統合やシステム連携において、スキーマの異なりを解消する用途に適用可能である。【０１７８】
本実施形態の変換プログラム探索システムは、第２の実施形態と同様に動作する変換モジュール登録部２０を備えていてもよい。その場合、第２の実施形態と同様の効果を得られる。本実施形態の変換プログラム探索システムは、第３の実施形態と同様に動作する変換モジュール生成部２１を備えていてもよい。その場合、第３の実施形態と同様の効果を得られる。【０１７９】
図２８は、本発明の概要を示す説明図である。本発明の変換プログラム探索システムは、予め定められた複数の記述形式を１つのデータが満足しているか否かを各記述形式毎に二値で表した情報である第１シグニチャを生成する第１シグニチャ生成手段７１を備える。そして、第２シグニチャ生成手段７２が、第１シグニチャ生成手段７１に、変換元のデータの第１シグニチャおよび変換後のデータの第１シグニチャを生成させ、その差分に基づいて、変換プログラムのメタデータである第２シグニチャを生成する。【０１８０】
また、プログラム情報記憶手段７７は、変換プログラムにおける入力データの名称、出力データの名称、および変換プログラムを実行するための実行定義情報を記憶している。第２シグニチャ生成手段７２は、作成した第２シグニチャをプログラム情報記憶手段７７に追加記憶させる。【０１８１】
そして、プログラム候補選択手段７３は、変換元のデータの名称と、変換後のデータの名称と、変換元のデータおよび変換後のデータを含む変換事例とが与えられたときに、与えられた変換元のデータの名称と変換プログラムの入力データの名称との類似度および与えられた変換後のデータの名称と変換プログラムの出力データの名称との類似度に基づいて、データ変換の過程で用いられる変換プログラムの候補を選択する。【０１８２】
さらに、変換パス候補作成手段７４は、プログラム候補選択手段７３によって選択された候補の組み合わせに対し、変換元のデータの名称と変換プログラムの入力データの名称との対応付け、および変換プログラムの出力データの名称と変換後のデータの名称との対応付けを行い、選択された候補の組み合わせとして複数の変換プログラムを含んでいる場合には、変換プログラムの出力データの名称と候補となる他の変換プログラムの入力データの名称との対応付けを行うことによって、変換パスの候補を作成する。また、評価値算出手段７５は、入力データおよび出力データの名称と他のデータの名称との対応付けを行った変換プログラムの第２シグニチャと、変換事例とに基づいて、変換パスの候補の評価値を算出する。【０１８３】
そして、変換パス特定手段７６は、評価値の高い順に変換パスの候補を選択し、選択した変換パスが定める変換プログラムの順に、与えられた変換元のデータを変換し、その変換結果が、与えられた変換後のデータである場合に、選択した変換パスの候補を、与えられた変換元のデータの名称、変換後のデータの名称および変換事例に合致する変換パスとして特定する。【０１８４】
このように、本発明では、変換プログラムのメタデータである第２シグニチャを、変換元のデータの第１シグニチャおよび変換後のデータの第１シグニチャを用いて予め求めておく。そして、評価値算出手段７５が、変換パスの候補の評価値を、変換パスの候補作成時に用いた変換プログラムの第２シグニチャを用いて算出する。また、その評価値の高い順に変換パスの候補を選択する。従って、人間が認識していないような観点で、変換プログラムの特徴を表す第２シグニチャを生成することができ、また、変換パスの候補の選択順位を定めることができる。【０１８５】
そして、選択した変換パスの候補について、実際に変換パスを試行して、変換事例と同じ結果が得られれば、選択した候補をデータ接続問題の解として特定する。従って、変換パスの各候補それぞれについて全て変換を試行しなくて済む。【０１８６】
このような構成により、変換プログラムの再利用性の向上を実現し、また、変換パスを特定する処理の効率化を実現することができる。【０１８７】
また、本発明の実施形態には、物またはイベントを定義する複数の属性の属性名を含む変換元スキーマと、変換元スキーマにおける各属性名に応じた属性値の組であるレコードの集合と、変換元スキーマに対して変換を行った変換後スキーマと、変換後スキーマにおける各属性名に応じた属性値の組であるレコードの集合とが入力され、変換元スキーマにおける属性名と変換後スキーマにおける属性名とのペアのうち、属性名の類似度が最高となるペアを特定するペア特定手段と、特定されたペアにおける変換元の属性名の属性値と、変換後の属性名の属性値とを比較し、同じ属性値を含むレコードを変換元および変換後のレコードの中から特定するレコード特定手段と、レコード特定手段によって特定された変換元のレコードに含まれる属性値と、変換後のレコードに含まれる属性値とを、類似度が高い属性名のペアから順に抽出する属性値抽出手段とを備え、プログラム候補選択手段が、属性値抽出手段によって変換元のレコードおよび変換後のレコードから抽出された属性値を変換事例とし、変換元のレコードおよび変換後のレコードから抽出された属性値の属性名をそれぞれ変換元データの名称および変換後のデータの名称として変換プログラムの候補を選択する構成が開示されている。【０１８８】
また、本発明の各実施形態には、変換パス特定手段が特定した変換パスを新たな変換プログラムとみなして、その変換パスの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させる変換プログラム登録手段を備え、第２シグニチャ生成手段が、その変換パスに対する第２シグニチャを生成してプログラム情報記憶手段に記憶させる構成が開示されている。【０１８９】
また、本発明の各実施形態には、指定された辞書により変換前のデータから変換後のデータを導出するための辞書プログラムを記憶する辞書プログラム記憶手段と、プライマリキーとなる属性の属性値およびそのプライマリキーに対応付けられる他の属性の属性値が与えられたときに、プライマリキーの属性値を変換前のデータとし、他の属性の属性値を変換後のデータとして、プライマリキーの属性値と他の属性の属性値とを対応付けた辞書を作成する辞書作成手段と、辞書作成手段が作成した辞書を辞書プログラムに対して指定することによって、辞書が指定された新たな変換プログラムを生成し、その新たな変換プログラムの入力データの名称、出力データの名称および実行定義情報をプログラム情報記憶手段に記憶させる変換モジュール生成手段とを備え、第２シグニチャ生成手段が、新たな変換プログラムに対する第２シグニチャを生成してプログラム情報記憶手段に記憶させる構成が開示されている。【０１９０】
また、本発明の各実施形態には、変換パス候補作成手段が、変換元のデータの名称を含む第１グループと、変換モジュールおよび変換後のデータの名称を含む第２グループ作成し、第１グループに属する名称と第２グループに属する変換モジュールの入力データの名称とを対応付け、第１グループから対応付けた名称を除外するとともに変換モジュールの出力データの名称を追加し、第２グループから変換モジュールがなくなったときに、第１グループに属する名称と第２グループに属する変換後のデータの名称とを対応付けることによって、変換パスの候補を作成する構成が開示されている。【０１９１】
なお、この出願は、２００７年８月１日に出願した、日本特許出願番号２００７−２００８５２号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１９２】
本発明は、例えば、企業内もしくは企業間に存在するシステム連携において、データ接続問題の解に含まれる変換モジュールを検索し、実行する用途に適用可能である。
【図面の簡単な説明】
【０１９３】
【図１】属性値の記述形式が異なっているスキーマの例を示す説明図である。
【図２】データ接続問題および変換パスの例を示す説明図である。
【図３】本発明の第１の実施形態を示すブロック図である。
【図４】属性名となる語彙同士間の関係を表す情報の例を示す説明図である。
【図５】記述形式知識の例を示す説明図である。
【図６】変換モジュール記憶部が記憶する情報の例を示す説明図である。
【図７】変換シグニチャの例を示す説明図である。
【図８】事例記憶部が記憶する情報の例を示す説明図である。
【図９】変換モジュールに対して変換シグニチャを作成する動作の例を示すフローチャートである。
【図１０】変換パスを探索する動作の例を示すフローチャートである。
【図１１】ステップＦ２４の処理経過の例を示すフローチャートである。
【図１２】属性間の接続処理の経過の例を示す説明図である。
【図１３】属性間の接続を行って変換パスを作成する処理の例を示す説明図である。
【図１４】シングルパスの例を示す説明図である。
【図１５】変換モジュールの例を示す説明図である。
【図１６】性別変換Ａに関して生成された事例を示す説明図である。
【図１７】属性値シグニチャの例を示す説明図である。
【図１８】変換シグニチャの例を示す説明図である。
【図１９】ステップＦ２２で選択される変換モジュールの候補の例を示す説明図である。
【図２０】評価値の算出例を示す説明図である。
【図２１】本発明の第２の実施形態を示すブロック図である。
【図２２】変換モジュール登録部によって変換モジュール記憶部に登録される新たなモジュールに関する情報の例を示す説明図である。
【図２３】本発明の第３の実施形態を示すブロック図である。
【図２４】変換モジュール生成手段の動作の例を示すフローチャートである。
【図２５】本発明の第４の実施形態を示すブロック図である。
【図２６】スキーマ統合部の動作の例を示すフローチャートである。
【図２７】スキーマ統合問題の例を示す説明図である。
【図２８】本発明の概要を示す説明図である。
【符号の説明】
【０１９４】
１１  データ接続問題入出力部
１２  変換探索手段
１３  属性知識記憶部
１４  記述形式知識記憶部
１５  属性値シグニチャ作成手段
１６  変換モジュール記憶部
１７  変換モジュール実行手段
１８  事例記憶部
１９  変換シグニチャ作成手段
２０  変換モジュール登録部
２１  変換モジュール生成部
２３  スキーマ統合部
２３１  レコード照合部
２３２  属性名類似度導出部
２３３  スキーマ統合探索部
８０３  ＩＣカード
【図１】
2009017158.tif 000006
【図２】
2009017158.tif 000007
【図３】
2009017158.tif 000008
【図４】
2009017158.tif 000009
【図５】
2009017158.tif 000010
【図６】
2009017158.tif 000011
【図７】
2009017158.tif 000012
【図８】
2009017158.tif 000013
【図９】
2009017158.tif 000014
【図１０】
2009017158.tif 000015
【図１１】
2009017158.tif 000016
【図１２】
2009017158.tif 000017
【図１３】
2009017158.tif 000018
【図１４】
2009017158.tif 000019
【図１５】
2009017158.tif 000020
【図１６】
2009017158.tif 000021
【図１７】
2009017158.tif 000022
【図１８】
2009017158.tif 000023
【図１９】
2009017158.tif 000024
【図２０】
2009017158.tif 000025
【図２１】
2009017158.tif 000026
【図２２】
2009017158.tif 000027
【図２３】
2009017158.tif 000028
【図２４】
2009017158.tif 000029
【図２５】
2009017158.tif 000030
【図２６】
2009017158.tif 000031
【図２７】
2009017158.tif 000032
【図２８】
2009017158.tif 000033
【国際調査報告】
2009017158.tif 000034
2009017158.tif 000035