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