(57)【要約】【課題】入力された条件を満たすデータの組み合わせを短時間で出力する。【解決手段】グラフ生成部は、単項の条件を満たすデータをノードとして抽出するとともに、２項間の条件を満たすノード間を辺（リンク）で連結してグラフを作成し（Ｓ２２，Ｓ２４）、ノード削除部は、ノードが満たすべき２項間の条件を満たさないノードをグラフから削除する処理（Ｓ２８）を、削除するノードが存在しなくなるまで（ステップＳ２６の判断が否定されるまで）繰り返す。そして、出力生成部は、ノード削除後のグラフに基づいて、データの組み合わせの候補を列挙し（Ｓ３０）、列挙した候補と入力された条件とに基づいて条件を満たすデータの組み合わせを出力する。【選択図】図４
2015022372.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータの中から、入力された条件のうち１つのデータに関する条件を満たすデータをノードとして抽出するとともに、２つのデータ間に関する条件のいずれかを満たすノード間をリンクで連結してグラフを作成する工程と、
ノードが満たすべき２つのデータ間に関する条件を満たさないノードを前記グラフから削除する処理を、削除するノードが無くなるまで繰り返す工程と、
前記削除する処理を行った後のグラフからデータの組み合わせの候補を決定する工程と、
前記決定する工程で決定された前記組み合わせの候補から、入力された前記条件に基づいて、前記条件を満たすデータの組み合わせを出力する工程と、
をコンピュータが実行することを特徴とするデータ出力方法。
【請求項２】
入力された前記条件に３つ以上のデータ間に関する条件が含まれる場合に、１つのデータに関する条件又は２つのデータ間に関する条件に変換する工程を前記コンピュータが更に実行することを特徴とする請求項１に記載のデータ出力方法。
【請求項３】
前記変換する工程における変換後の条件に冗長な条件が含まれている場合に、該冗長な条件を削除する工程を前記コンピュータが更に実行することを特徴とする請求項２に記載のデータ出力方法。
【請求項４】
複数のデータの中から、入力された条件のうち１つのデータに関する条件を満たすデータをノードとして抽出するとともに、２つのデータ間に関する条件のいずれかを満たすノード間をリンクで連結してグラフを作成し、
ノードが満たすべき２つのデータ間に関する条件を満たさないノードを前記グラフから削除する処理を、削除するノードが無くなるまで繰り返し、
前記削除する処理を行った後のグラフからデータの組み合わせの候補を決定し、
前記決定する処理で決定された前記組み合わせの候補から、入力された前記条件に基づいて、前記条件を満たすデータの組み合わせを出力する、
処理をコンピュータに実行させることを特徴とするデータ出力プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ出力方法及びデータ出力プログラムに関する。
【背景技術】
【０００２】
従来、データの集合の中から所定の条件を満たすデータの組み合わせを検索する場合、複数のデータの組み合わせを全通り作成し、その中から所定の条件を満たす組み合わせを見つけ、出力する方法が一般的に用いられる。
【０００３】
しかしながら、集合に含まれるデータの数が多い場合、組み合わせの総数が多くなり、処理に時間がかかるおそれがある。
【０００４】
そこで、最近においては、商品管理や検索の効率化を図るための技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２０８９０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１の技術は流通履歴の検索に特化した技術であり、汎用性に乏しい。
【０００７】
１つの側面では、本発明は、入力された条件を満たすデータの組み合わせを短時間で出力することが可能なデータ出力方法及びデータ出力プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
一つの態様では、データ出力方法は、複数のデータの中から、入力された条件のうち１つのデータに関する条件を満たすデータをノードとして抽出するとともに、２つのデータ間に関する条件のいずれかを満たすノード間をリンクで連結してグラフを作成する工程と、ノードが満たすべき２つのデータ間に関する条件を満たさないノードを前記グラフから削除する処理を、削除するノードが無くなるまで繰り返す工程と、前記削除する処理を行った後のグラフからデータの組み合わせの候補を決定する工程と、前記決定する工程で決定された前記組み合わせの候補から、入力された前記条件に基づいて、前記条件を満たすデータの組み合わせを出力する工程と、をコンピュータが実行するデータ出力方法である。
【０００９】
一つの態様では、データ出力プログラムは、複数のデータの中から、入力された条件のうち１つのデータに関する条件を満たすデータをノードとして抽出するとともに、２つのデータ間に関する条件のいずれかを満たすノード間をリンクで連結してグラフを作成し、ノードが満たすべき２つのデータ間に関する条件を満たさないノードを前記グラフから削除する処理を、削除するノードが無くなるまで繰り返し、前記削除する処理を行った後のグラフからデータの組み合わせの候補を決定し、前記決定する処理で決定された前記組み合わせの候補から、入力された前記条件に基づいて、前記条件を満たすデータの組み合わせを出力する、っ処理をコンピュータに実行させるデータ出力プログラムである。
【発明の効果】
【００１０】
入力された条件を満たすデータの組み合わせを短時間で出力することができる。
【図面の簡単な説明】
【００１１】
【図１】一実施形態に係るデータ検索システムの構成を概略的に示す図である。
【図２】図２（ａ）は、処理サーバのハードウェア構成を示す図であり、図２（ｂ）は、クライアントのハードウェア構成を示す図である。
【図３】処理サーバ及びクライアントの機能ブロック図である。
【図４】処理サーバが実行する処理を示すフローチャートである。
【図５】図５（ａ）、図５（ｂ）は、検索条件を示す図である。
【図６】図６（ａ）は、図４のステップＳ１４を説明するための図であり、図６（ｂ）は、図４のステップＳ１８を説明するための図である。
【図７】データ読み取り部が読み込んだデータの一例を示す図である。
【図８】図８（ａ）、図８（ｂ）は、図４のステップＳ２２を説明するための図である。
【図９】図９（ａ）、図９（ｂ）は、図４のステップＳ２４を説明するための図である。
【図１０】グラフ格納部に格納されるグラフのデータ形式を示す図である。
【図１１】図１１（ａ）、図１１（ｂ）は、図４のステップＳ２６、Ｓ２８の処理を説明するための図（その１）である。
【図１２】図１２（ａ）、図１２（ｂ）は、図４のステップＳ２６、Ｓ２８の処理を説明するための図（その２）である。
【図１３】図１３（ａ）、図１３（ｂ）は、図４のステップＳ２６、Ｓ２８の処理を説明するための図（その３）である。
【図１４】図１４（ａ）、図１４（ｂ）は、図４のステップＳ２６、Ｓ２８の処理を説明するための図（その４）であり、図１４（ｃ）は、図４のステップＳ３０を説明するための図である。
【図１５】図４のステップＳ３２を説明するための図である。
【発明を実施するための形態】
【００１２】
以下、データ検索システムの一実施形態について、図１〜図１５に基づいて詳細に説明する。図１には、一実施形態に係るデータ検索システム１００の構成が概略的に示されている。
【００１３】
データ検索システム１００は、図１に示すように、処理サーバ１０と、クライアント５０と、データサーバ８０と、を備えている。処理サーバ１０、クライアント５０及びデータサーバ８０は、インターネットやＬＡＮ（Local Area Network）などのネットワーク６０に接続されている。データ検索システム１００では、クライアント５０から入力されたデータの検索条件（本実施形態ではデータの組み合わせに関する条件）に基づいて、処理サーバ１０がデータサーバ８０内のデータから検索条件に合致するデータの組み合わせを検索し、クライアント５０に対して出力するものとする。データ検索システム１００は、具体的には、データベース中の異常値を発見するため、人脈検索をするため、joinを含む一般的なバッチ処理を行うためなどに利用される。
【００１４】
処理サーバ１０は、図２（ａ）に示すようなハードウェア構成を有する。図２（ａ）に示すように、処理サーバ１０は、ＣＰＵ９０、ＲＯＭ９２、ＲＡＭ９４、記憶部（ここではＨＤＤ（Hard Disk Drive））９６、ネットワークインタフェース９７及び可搬型記憶媒体用ドライブ９９等を備えており、処理サーバ１０の構成各部は、バス９８に接続されている。処理サーバ１０では、ＲＯＭ９２あるいはＨＤＤ９６に格納されているプログラム（データ出力プログラム）、或いは可搬型記憶媒体用ドライブ９９が可搬型記憶媒体９１から読み取ったプログラム（データ出力プログラム）をＣＰＵ９０が実行することにより、図３に示す各部の機能が実現される。
【００１５】
クライアント５０は、図２（ｂ）に示すようなハードウェア構成を有する。図２（ｂ）に示すように、クライアント５０は、ＣＰＵ１９０、ＲＯＭ１９２、ＲＡＭ１９４、記憶部（ＨＤＤ）１９６、ネットワークインタフェース１９７、可搬型記憶媒体用ドライブ１９９、ディスプレイ１９３及び入力部１９５等を備えており、クライアント５０の構成各部は、バス１９８に接続されている。ディスプレイ１９３は、液晶ディスプレイ等であり、入力部１９５は、キーボードやマウス等を含む。クライアント５０では、ＲＯＭ１９２あるいはＨＤＤ１９６に格納されているプログラム、或いは可搬型記憶媒体用ドライブ１９９が可搬型記憶媒体１９１から読み取ったプログラムをＣＰＵ１９０が実行することにより、図３に示す各部の機能が実現される。
【００１６】
図３には、クライアント５０及び処理サーバ１０の機能ブロック図が示されている。
【００１７】
図３に示すように、クライアント５０は、入力処理部５２と表示処理部５４を有する。入力処理部５２は、入力部１９５から入力された（クライアント５０のユーザから入力された）情報を処理サーバ１０に送信する機能を有する。表示処理部５４は、処理サーバ１０からの指示に基づいて、ディスプレイ１９３上に情報を表示する。
【００１８】
処理サーバ１０は、図３に示すように、条件読み取り部１２、条件変換部１４、条件削除部１６、データ読み取り部１８、グラフ生成部２０、グラフ保存部２２、ノード削除部２４、出力生成部２６を有する。なお、図３には、ＨＤＤ９６等に用意されているグラフ格納部３０についても図示されている。
【００１９】
条件読み取り部１２は、クライアント５０（入力処理部５２）から入力されてくるデータの検索条件を読み取り、条件変換部１４に入力する。条件変換部１４は、条件読み取り部１２から入力された３項間以上の条件（３つ以上のデータ間に関する条件）のうち単項の条件（１つのデータ間に関する条件）又は２項間の条件（２つのデータ間に関する条件）に変換可能な条件を変換する。
【００２０】
条件削除部１６は、条件変換部１４が変換した条件に冗長な条件（例えば、推移的な条件や重複する条件）がある場合に、そのような条件を削除する。また、条件削除部１６は、削除処理後に残った検索条件の全てをグラフ生成部２０及び出力生成部２６に対して入力する。
【００２１】
データ読み取り部１８は、データサーバ８０から検索対象のデータ（イベントやレコード）の集合を読み取り、グラフ生成部２０に入力する。グラフ生成部２０は、データ読み取り部１８から入力されたデータの集合と、条件削除部１６から入力された検索条件とを用いて、グラフ理論に基づき、ノードとリンクを有するグラフを生成する。グラフ生成部２０は、生成したグラフをグラフ保存部２２に入力する。
【００２２】
グラフ保存部２２は、グラフ生成部２０から入力されたグラフをグラフ格納部３０に格納する。ノード削除部２４は、グラフ格納部３０に格納されているグラフを検証して、不要なノードを削除する。
【００２３】
出力生成部２６は、ノード削除部２４による処理が終了したグラフをグラフ格納部３０から読み出し、読み出したグラフから検索条件を満たすデータの組み合わせ候補を決定する。また、出力生成部２６は、組み合わせ候補と検索条件とを照合し、該検索条件を満足するデータの組み合わせをクライアント５０（表示処理部５４）に対して出力する。
【００２４】
図１に戻り、データサーバ８０は、各種データを格納する。本実施形態では、例えば、図７に示すようなデータベースを格納しているものとする。図７のデータベースは、ＨＤＤ、ＣＰＵ、ＭＥＭ（memory）などの部品の仕入先と価格を格納するデータベースであり、「ＩＤ」、「種類」、「販売店」、「価格」の各フィールドを有している。「ＩＤ」のフィールドには、データの通し番号が格納され、「種類」のフィールドには部品の名称が格納される。また、「販売店」のフィールドには、部品を販売する店舗の名称が格納され、「価格」のフィールドには、販売店における部品の販売価格が格納されている。
【００２５】
次に、処理サーバ１０による処理について、図４のフローチャートに沿って、その他図面を適宜参照しつつ、詳細に説明する。なお、図４の処理は、クライアント５０（入力処理部５２）から検索条件が入力された段階で実行される。
【００２６】
まず、処理サーバ１０の条件読み取り部１２は、ステップＳ１０において、クライアント５０（入力処理部５２）から入力された検索条件を読み込む。本実施形態では、条件読み取り部１２は、一例として、図５（ａ）に示すような検索条件を読み込んだものとする。本実施形態では、処理サーバ１０は、図５（ａ）の検索条件を満足するｘ、ｙ、ｚのデータの組み合わせを検索し、クライアント５０（表示処理部５４）に対して出力するものとする。なお、図５（ａ）の検索条件は、図５（ｂ）に示すように、（１）〜（４）の条件が単項の条件（１つのデータに関する条件）であり、（５）の条件が２項間の条件（２つのデータ間に関する条件）であり、（６）、（７）の条件が３項間の条件（３つのデータ間に関する条件）である。
【００２７】
次いで、ステップＳ１２では、条件変換部１４が、検索条件に、３項間以上の条件で複数の２項間の条件（又は単項の条件）に変換可能なものが存在するか否かを判断する。なお、複数の２項間の条件（又は単項の条件）に変換可能な３項間以上の条件とは、３項間の同値関係や大小関係などの条件を意味する。図５（ａ）の検索条件では、「（６）ｘ、ｙ、ｚの販売店は同じ」が、複数の２項間の条件に変換可能な３項間以上の条件に該当する。
【００２８】
ステップＳ１２の判断が肯定された場合には、図４の処理は、ステップＳ１４に移行するが、否定された場合には、ステップＳ２０に移行する。
【００２９】
ステップＳ１４に移行すると、条件変換部１４は、複数の２項間の条件（又は単項の条件）に変換可能な３項間以上の条件を変換する。具体的には、図６（ａ）に示すように、「（６）ｘ、ｙ、ｚの販売店は同じ」の条件を、「ｘとｙの販売店は同じ」、「ｙとｚの販売店は同じ」、「ｚとｘの販売店は同じ」という条件に変換する。
【００３０】
次いで、ステップＳ１６では、条件削除部１６が、変換後の条件に冗長な条件が含まれているか否かを判断する。本実施形態の場合、「ｘとｙの販売店は同じ」、「ｙとｚの販売店は同じ」、「ｚとｘの販売店は同じ」のいずれか２つの条件を満足する場合、もう１つの条件も必ず満足する。このため、上記３つの条件のうちの１つは重複した条件（冗長な条件）となる。すなわち、本実施形態の場合、ステップＳ１６の判断は肯定され、ステップＳ１８に移行する。なお、ステップＳ１６の判断が否定された場合には、ステップＳ２０に移行する。ここで、冗長な条件には、上記重複した条件のほかに推移的な条件なども含まれる。
【００３１】
ステップＳ１８に移行した場合、条件削除部１６は、冗長な条件を削除する。本実施形態では、図６（ｂ）に示すように、条件削除部１６は、「ｚとｘの販売店は同じ」の条件を削除したものとする。ステップＳ１８の後は、ステップＳ２０に移行する。なお、条件削除部１６は、「ｚとｘの販売店は同じ」の条件に代えて、「ｘとｙの販売店は同じ」又は「ｙとｚの販売店は同じ」の条件を削除することとしてもよい。
【００３２】
ステップＳ１８の後、又は、ステップＳ１２、Ｓ１６の判断が否定された後、ステップＳ２０に移行すると、データ読み取り部１８は、データ読み込みを実行する。ここでは、データ読み取り部１８は、一例として、データサーバ８０から図７のデータベースのデータを読み込んだものとする。
【００３３】
次いで、ステップＳ２２では、グラフ生成部２０が、単項の条件を満たすデータを抽出してノードとする。ここでは、図８（ａ）に太字にて示す単項の条件「（１）ｘの種類はＣＰＵ」、「（２）ｙの種類はＭＥＭ」、「（３）ｚの種類はＨＤＤ」、「（４）ｙの販売店はＣ店以外」を満たすデータ（ｘ、ｙ、ｚの候補）を図７のデータベースから抽出してノードとする。図８（ｂ）に示すように、本実施形態では、ｘの候補として、データＩＤ＝２，６，１０，１２が抽出され、ｙの候補として、データＩＤ＝３，５，８が抽出され、ｚの候補として、データＩＤ＝１，７，９，１１が抽出され、ノードとして設定される。
【００３４】
次いで、ステップＳ２４では、グラフ生成部２０が、２項間の条件を満たすノード間に辺（リンク）を作成する。ここでは、グラフ生成部２０は、図９（ａ）に太字にて示す２項間の条件「（５）ｘの価格とｚの価格の差は１万円以下」、「（６−１）ｘとｙの販売店は同じ」、「（６−２）ｙとｚの販売店は同じ」の各条件を満たすノード間を辺で繋ぐ。なお、図９（ｂ）には、ノードを辺で繋いだ状態（グラフ）が示されている。なお、図９（ｂ）では、（５）の条件に基づく辺が実線で示され、（６−１）の条件に基づく辺が破線で示され、（６−２）の条件に基づく辺が一点鎖線で示されている。
【００３５】
ここで、図９（ｂ）のようなグラフが作成された段階で、グラフ保存部２２は、グラフをグラフ格納部３０に格納する。この場合、グラフ保存部２２は、図９（ｂ）のグラフを、一例として図１０に示すようなデータ構造で保存する。本実施形態では、後述するようにグラフからノードを削除する処理を実行するため、ノードを削除する場合に、関連する辺の情報と削除するノードと辺で接続されているノードの情報とに効率よくアクセスできるようなデータ構造としている。具体的には、図１０のように、各ノードのデータには、0x1、0x2…のようなアドレスが付与されている。また、各ノードのデータは、要素ＩＤ、データＩＤ、リスト実線、リスト破線、リスト一点鎖線の各項目を有している。要素ＩＤには、ｘ、ｙ、ｚのいずれかが格納され、データＩＤには、データ自身のＩＤが格納される。また、リスト実線、リスト破線、リスト一点鎖線には、辺で接続されているノードのアドレスが格納される。
【００３６】
図４に戻り、次のステップＳ２６では、ノード削除部２４が、満たすべき２項間の条件を満たさないノードがあるか否かを判断する。すなわち、図１０において、同一の要素ＩＤの他のノードの所定のリストにはアドレスが格納されているにも関わらず、自己の所定のリストにはアドレスが格納されていないノードがあるか否かを判断する。ここでの判断が肯定された場合には、ステップＳ２８に移行し、ノード削除部２４は、条件を満たさないノードを削除し、ステップＳ２６に戻る。そして、ノード削除部２４は、満たすべき２項間の条件の全てを満たさないノードがなくなるまで（削除するノードが存在しなくなるまで）ステップＳ２６を繰り返す。
【００３７】
例えば、図１０において、要素ＩＤ＝ｘのアドレス0x1、0x2、0x4のノードの項目「リスト破線」にはアドレスが格納されているにも関わらず、アドレス0x3のノード（データＩＤ＝１０）の項目「リスト破線」には、アドレスが格納されていない。また、要素ＩＤ＝ｚのアドレス0x9、0x10、0x11のノードの項目「リスト一点鎖線」にはアドレスが格納されているにも関わらず、アドレス0x8のノード（データＩＤ＝１）の項目「リスト一点鎖線」には、アドレスが格納されていない。すなわち、図１１（ａ）に示すように、ノード（データＩＤ＝１０）には、破線の辺が接続されておらず、ノード（データＩＤ＝１）には、一点鎖線の辺が接続されていないので、ノード削除部２４は、これらのノード（データＩＤ＝１０，１）を削除する（図１１（ｂ）参照）。なお、実際には、ノード削除部２４は、グラフ格納部３０にアクセスして、図１０のデータの中から削除対象のノードのデータを削除するとともに、削除したノードのアドレスを他のノードのデータの「リスト実線」、「リスト破線」、「リスト一点鎖線」の各項目から削除する。
【００３８】
図１１（ｂ）のようにノード（データＩＤ＝１０，１）を削除した後のグラフにおいては、新たに満たすべき２項間の条件を満たさないノードが出現する場合がある。図１２（ａ）の場合、ノード（データＩＤ＝９）に実線の辺が接続されていないことが分かる。したがって、ノード削除部２４は、図１２（ｂ）のように、ノード（データＩＤ＝９）を削除する。
【００３９】
また、ノード（データＩＤ＝９）を削除した後のグラフにおいては、図１３（ａ）に示すように、ノード（データＩＤ＝３，８）に一点鎖線の辺が接続されていない。このため、ノード削除部２４は、図１３（ｂ）に示すように、ノード（データＩＤ＝３，８）を削除する。
【００４０】
更に、ノード（データＩＤ＝３，８）を削除した後のグラフにおいては、図１４（ａ）に示すように、ノード（データＩＤ＝６）に破線の辺が接続されていない。このため、ノード削除部２４は、図１４（ｂ）に示すように、ノード（データＩＤ＝６）を削除する。
【００４１】
以上のように、グラフ格納部３０に格納されているグラフが、図１４（ｂ）に示すような状態になった段階で、削除できるノードが無くなるので、図４のステップＳ２６の判断は否定され、ステップＳ３０に移行することになる。
【００４２】
ステップＳ３０に移行すると、出力生成部２６は、グラフ格納部３０に格納されているグラフ（ノードの削除が完了したグラフ）に基づいてデータの組み合わせの候補を列挙する（決定する）。ここでは、一例として、図１４（ｂ）のグラフに残っているノード（データ）の全通りの組み合わせ（図１４（ｃ）参照）を組み合わせの候補として列挙する。
【００４３】
次いで、ステップＳ３２では、出力生成部２６が、列挙した組み合わせの候補のうち、検索条件を全て満たす組み合わせをクライアント５０（表示処理部５４）に対して出力する。具体的には、出力生成部２６は、各組み合わせが（１）〜（７）の全条件（特に（５）〜（７）の２項間、３項間の条件）を満たすか否かを判断する。この場合、図１５に示すように（ｘ，ｙ，ｚ）＝（２，５，７）は、（７）の条件を満たさず、（ｘ，ｙ，ｚ）＝（２，５，１１）は、（５）の条件を満たさず、（ｘ，ｙ，ｚ）＝（１２，５，１１）は、（７）の条件を満たさない。したがって、出力生成部２６は、組み合わせ（ｘ，ｙ，ｚ）＝（１２，５，７）を、条件を全て満たす組み合わせとして表示処理部５４に出力する。なお、表示処理部５４は、出力生成部２６からデータの組み合わせを受信すると、クライアント５０のディスプレイ１９３上に検索結果として、（ｘ，ｙ，ｚ）＝（１２，５，７）を表示する。
【００４４】
なお、上記説明では、図１４（ｂ）のグラフに含まれるノードの全通りの組み合わせを条件を満たす組み合わせの候補とする場合について説明したが、これに限られるものではない。例えば、図１４（ｂ）では、データＩＤ＝２とデータＩＤ＝１１のノードが実線の辺で接続されていないので、データＩＤ＝２のノードとデータＩＤ＝１１のノードを含む組み合わせ（２，５，１１）を候補から除外することとしてもよい。このようにすることで、出力生成部２６は、組み合わせの候補のうち（７）の条件を満たす組み合わせを出力すればよいため、処理の簡素化を図ることができる。
【００４５】
以上、詳細に説明したように、本実施形態によると、グラフ生成部２０は、単項の条件を満たすデータをノードとして抽出するとともに、２項間の条件を満たすノード間を辺（リンク）で連結してグラフを作成し（Ｓ２２，Ｓ２４）、ノード削除部２４は、ノードが満たすべき２項間の条件を満たさないノードをグラフから削除する処理（Ｓ２８）を、削除するノードが存在しなくなるまで（ステップＳ２６の判断が否定されるまで）繰り返す。そして、出力生成部２６は、ノード削除部２４がノードを削除した後のグラフに基づいて、データの組み合わせの候補を列挙し（Ｓ３０）、列挙した候補と入力された条件とに基づいて条件を満たすデータの組み合わせを出力する。このように、本実施形態では、グラフのノードを削除する処理を繰り返すことにより、データの組み合わせの候補を絞り込むことができる。そして、出力生成部２６は、絞り込んだ後の組み合わせの中から条件を満たす組み合わせを検索するので、データの全通りの組み合わせの中から条件を満たすデータの組み合わせを検索する場合と比べて、短時間で条件を満たすデータの組み合わせを見つけ出し、出力することができる。
【００４６】
また、本実施形態では、条件変換部１４が、検索条件に３項間の条件が含まれる場合に、該３項間の条件を単項の条件又は２項間の条件に変換する（Ｓ１４）。これにより、３項間の条件であっても、グラフを用いたデータの組み合わせの候補を絞り込む処理に用いることができる。したがって、データの組み合わせの候補の絞り込み精度を向上することができる。
【００４７】
また、本実施形態では、条件削除部１６は、ステップＳ１４の処理の後、変換後の条件に冗長な条件が含まれている場合に、該冗長な条件を削除する（Ｓ１８）ので、グラフ生成部２０やノード削除部２４が無駄な処理を実行するのを抑制することができる。
【００４８】
なお、上記実施形態では、ステップＳ１４において、条件変換部１４が３項間の条件を変換する場合について説明したが、これに限られるものではない。例えば、４項間の条件、５項間の条件…であってもこれらの条件が同値条件などであれば単項又は２項間の条件に変換することが可能である。なお、この場合においても、変換後の条件に冗長な条件が含まれる場合には、条件削除部１６が該冗長な条件を削除するようにすればよい。これにより、無駄な処理の実行を抑制し、処理の簡素化を図ることが可能となる。
【００４９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、処理装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体（ただし、搬送波は除く）に記録しておくことができる。
【００５０】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ（Digital Versatile Disc）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）などの可搬型記録媒体の形態で販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００５１】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００５２】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【００５３】
なお、以上の実施形態の説明に関して、更に以下の付記を開示する。
（付記１）  複数のデータの中から、入力された条件のうち１つのデータに関する条件を満たすデータをノードとして抽出するとともに、２つのデータ間に関する条件のいずれかを満たすノード間をリンクで連結してグラフを作成する工程と、
ノードが満たすべき２つのデータ間に関する条件を満たさないノードを前記グラフから削除する処理を、削除するノードが無くなるまで繰り返す工程と、
前記削除する処理を行った後のグラフからデータの組み合わせの候補を決定する工程と、
前記決定する工程で決定された前記組み合わせの候補から、入力された前記条件に基づいて、前記条件を満たすデータの組み合わせを出力する工程と、
をコンピュータが実行することを特徴とするデータ出力方法。
（付記２）  入力された前記条件に３つ以上のデータ間に関する条件が含まれる場合に、１つのデータに関する条件又は２つのデータ間に関する条件に変換する工程を前記コンピュータが更に実行することを特徴とする付記１に記載のデータ出力方法。
（付記３）  前記変換する工程における変換後の条件に冗長な条件が含まれている場合に、該冗長な条件を削除する工程を前記コンピュータが更に実行することを特徴とする付記２に記載のデータ出力方法。
（付記４）  複数のデータの中から、入力された条件のうち１つのデータに関する条件を満たすデータをノードとして抽出するとともに、２つのデータ間に関する条件のいずれかを満たすノード間をリンクで連結してグラフを作成し、
ノードが満たすべき２つのデータ間に関する条件を満たさないノードを前記グラフから削除する処理を、削除するノードが無くなるまで繰り返し、
前記削除する処理を行った後のグラフからデータの組み合わせの候補を決定し、
前記決定する処理で決定された前記組み合わせの候補から、入力された前記条件に基づいて、前記条件を満たすデータの組み合わせを出力する、
処理をコンピュータに実行させることを特徴とするデータ出力プログラム。
（付記５）  入力された前記条件に３つ以上のデータ間に関する条件が含まれる場合に、１つのデータに関する条件又は２つのデータ間に関する条件に変換する処理を前記コンピュータに更に実行させることを特徴とする付記４に記載のデータ出力プログラム。
（付記６）  前記変換する処理における変換後の条件に冗長な条件が含まれている場合に、該冗長な条件を削除する処理を前記コンピュータに更に実行させることを特徴とする付記５に記載のデータ出力プログラム。
【符号の説明】
【００５４】
９０  ＣＰＵ（コンピュータ）
１２  条件読み取り部
１４  条件変換部
１６  条件削除部
２０  グラフ生成部
２４  ノード削除部
２６  出力生成部
【図１】
2015022372.tif 000003
【図２】
2015022372.tif 000004
【図３】
2015022372.tif 000005
【図４】
2015022372.tif 000006
【図５】
2015022372.tif 000007
【図６】
2015022372.tif 000008
【図７】
2015022372.tif 000009
【図８】
2015022372.tif 000010
【図９】
2015022372.tif 000011
【図１０】
2015022372.tif 000012
【図１１】
2015022372.tif 000013
【図１２】
2015022372.tif 000014
【図１３】
2015022372.tif 000015
【図１４】
2015022372.tif 000016
【図１５】
2015022372.tif 000017