(57)【要約】      （修正有）【課題】トリプルとしてエンコードされたグラフデータのデータベースのための検索方法及び装置を提供する。【解決手段】当該方法は、クエリを、一部又は全部の検索結果が一致しなければならない複数のトリプルパターンを有する、複数の結果基準に分けるステップを有し、同じ単一値トリプルパターン要素を有する又は可変値トリプルパターン要素として同じ変数ＩＤを指定する２以上のトリプルパターンをそれぞれ有する１又は複数のサブクエリを形成するステップを有するサブクエリ形成ステップと、複数の記憶サーバの各々に各形成したサブクエリを発行するステップを有するサブクエリ発行ステップと、少なくとも１つの形成されたサブクエリを満たすトリプルをを前記複数の記憶サーバからのサブクエリ結果として受信し及び前記クエリに対する応答としてクエリ結果を準備するために前記サブクエリ結果を用いるステップを有するクエリ結果準備ステップと、を有する。【選択図】図１
2014194772.tif 000002
【特許請求の範囲】
【請求項１】
トリプルとしてエンコードされたグラフデータのデータベースのための検索方法であって、各トリプルは３つのトリプル要素を有し、複数の記憶サーバに格納され、前記方法は、
クエリを複数の結果基準に分けるステップを有する分割ステップであって、前記結果基準は、一部又は全部の検索結果が一致しなければならない複数のトリプルパターンを有し、各トリプルパターンは、それぞれ３つのトリプル要素のうちの異なる１つに対応する３つのトリプルパターン要素を有し、
各トリプルパターン要素は、
トリプルが前記トリプルパターンに一致しなければならない対応するトリプル要素の単一の値を指定する単一値トリプルパターン要素、又は
変数ＩＤを指定する可変値トリプルパターン要素であって、前記ＩＤは前記トリプルパターンに一致するトリプルの対応するトリプル要素の値に起因する、可変値トリプルパターン要素、である、分割ステップと、
同じ単一値トリプルパターン要素を有する又は可変値トリプルパターン要素として同じ変数ＩＤを指定する２以上のトリプルパターンをそれぞれ有する１又は複数のサブクエリを形成するステップを有するサブクエリ形成ステップと、
前記複数の記憶サーバの各々に各形成されたサブクエリを発行するステップを有するサブクエリ発行ステップと、
少なくとも１つの形成されたサブクエリを前記複数の記憶サーバからのサブクエリ結果として受信するステップと、前記クエリに対する応答としてクエリ結果を準備するために前記サブクエリ結果を用いるステップと、を有するクエリ結果準備ステップと、
を有する方法。
【請求項２】
結果基準は１又は複数のフィルタリング条件を更に有し、各フィルタリング条件は、前記変数ＩＤの中からの１又は複数の特定のＩＤについて、トリプルが前記クエリ結果に含まれるために、前記ＩＤの要因となったトリプル要素の値が含まれなければならない範囲を定め、
前記サブクエリ形成ステップは、１又は複数のサブクエリを形成するステップを更に有し、各サブクエリは、変数ＩＤを可変値トリプルパターン要素として指定するトリプルパターンと前記指定したＩＤの範囲を定めるフィルタリング条件とを有する、
請求項１に記載の方法。
【請求項３】
前記サブクエリ形成ステップは、前記フィルタリング条件のうちの１つが、変数の別のＩＤに関連するトリプルが前記クエリ結果に含まれるために、前記ＩＤの要因となったトリプル要素の値が含まれなければならない範囲を定めるとき、前記ＩＤ及び前記別のＩＤのサブクエリを単一のサブクエリに結合するステップを更に有する、請求項２に記載の方法。
【請求項４】
前記サブクエリ形成ステップは、各単一値トリプルパターン要素又は１より多い結果基準に現れる変数ＩＤについて、該単一値トリプルパターン要素又は変数ＩＤを有する全ての結果基準のコピーを有するサブクエリを形成するステップを更に有する、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記クエリ結果準備ステップは、可変値トリプルパターン要素として同じ変数ＩＤを有する２以上のトリプルパターンを有する形成されたサブクエリの各々について、
前記記憶サーバの各々から、前記２以上のトリプルパターンのうちの少なくとも１つを満たす全てのトリプルのコピーを有する個々のトリプルパターン結果を受信するステップと、
前記受信した個々のトリプルパターン結果から、該サブクエリのサブクエリ結果として格納されたトリプルのコピーを除去するステップと、
前記サブクエリの結果基準を満たすトリプルについて残りの受信した個々のトリプルパターン結果を検索し、該トリプルをサブクエリ結果として格納するステップと、
を有する、請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
前記分割ステップ、サブクエリ形成ステップ、サブクエリ発行ステップ、及びクエリ結果準備ステップは、中央データベース制御部で実行される、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
各記憶サーバで、
前記形成されたサブクエリを受信するステップと、
前記受信したサブクエリの各々の結果基準を満たすトリプルについて、前記記憶サーバに格納されたトリプルをスキャンするステップと、
各受信したサブクエリについて、前記サブクエリの結果基準を満たすトリプルのコピーを、前記サブクエリのサブクエリ結果として、他の記憶サーバ及び／又は前記中央データベース制御部へ転送するステップと、
を更に有する請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記スキャンするステップは、
前記受信した形成されたサブクエリの中からそれぞれ異なるトリプルパターンを識別するステップと、
より多くの可変値トリプルパターン要素を有するトリプルパターンがより少ない可変値トリプルパターン要素を有するトリプルパターンより低く優先順位付けされるよう、前記識別された異なるトリプルパターンを優先順位付けするステップと、
優先度の順に、前記トリプルパターン毎に、中間トリプル結果セットを得るために、前記トリプルパターンに一致するトリプルについて、前記記憶サーバに格納されたトリプルをスキャンするステップと、
１より多いトリプルパターンを有するサブクエリ内の各トリプルパターンの前記中間トリプル結果セットを結合することにより、及びフィルタリング条件を有するサブクエリ内の各トリプルパターンの前記中間トリプル結果セットにフィルタリング条件を適用することにより、サブクエリ結果を得るステップと、
を更に有する請求項７に記載の方法。
【請求項９】
前記記憶サーバの各々で、可変値トリプルパターン要素として同じ変数ＩＤを指定する２以上のトリプルパターンを有するサブクエリについて、前記２以上のトリプルパターンのうちの１つを第１のトリプルパターンとして割り当てるステップと、他の記憶サーバの各々から前記サブクエリ内の１又は複数の他のトリプルパターンの各々について中間トリプル結果セットを得るステップと、前記記憶サーバにある前記第１のトリプルパターンに一致すると分かった各トリプルについて、前記サブクエリを満たすトリプルのペア又はグループを識別するために、前記の得られた中間トリプル結果セットをスキャンするステップと、を更に有する請求項８に記載の方法。
【請求項１０】
前記クエリ結果準備ステップは、前記クエリに従って前記サブクエリの各々のサブクエリ結果を結合することにより、クエリ結果を得るステップを有する、請求項１乃至９のいずれか一項に記載の方法。
【請求項１１】
前記クエリはＳＰＡＲＱＬクエリである、請求項１乃至１０のいずれか一項に記載の方法。
【請求項１２】
トリプルとしてエンコードされたグラフデータのデータベースのためのデータベース制御部であって、各トリプルは３つのトリプル要素を有し、複数の記憶サーバに格納され、前記データベース制御部は、
クエリを複数の結果基準に分けるよう構成されるクエリ分割モジュールであって、前記結果基準は、一部又は全部の検索結果が一致しなければならない複数のトリプルパターンを有し、各トリプルパターンは、それぞれ３つのトリプル要素のうちの異なる１つに対応する３つのトリプルパターン要素を有し、
各トリプルパターン要素は、
トリプルが前記トリプルパターンに一致しなければならない対応するトリプル要素の単一の値を指定する単一値トリプルパターン要素、又は
変数ＩＤを指定する可変値トリプルパターン要素であって、前記ＩＤは前記トリプルパターンに一致するトリプルの対応するトリプル要素の値に起因する、可変値トリプルパターン要素、である、クエリ分割モジュールと、
同じ単一値トリプルパターン要素を有する又は可変値トリプルパターン要素として同じ変数ＩＤを指定する２以上のトリプルパターンをそれぞれ有する１又は複数のサブクエリを形成するよう構成されるサブクエリ形成モジュールと、
前記複数の記憶サーバの各々に各形成されたサブクエリを発行するよう構成されるサブクエリ発行モジュールと、
少なくとも１つの形成されたサブクエリを前記複数の記憶サーバからのサブクエリ結果として受信し、前記クエリに対する応答としてクエリ結果を準備するために前記サブクエリ結果を用いるよう構成されるクエリ結果準備モジュールと、
を有するデータベース制御部。
【請求項１３】
請求項１２に記載のデータベース制御部と、前記トリプルを格納する複数の記憶サーバと、を有するデータ記憶システム。
【請求項１４】
１又は複数のコンピューティング装置により実行されると、前記１又は複数のコンピューティング装置に請求項１乃至１１のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【請求項１５】
１又は複数のコンピューティング装置により実行されると、前記１又は複数のコンピューティング装置に請求項１２に記載のデータベース制御部又は請求項１３に記載のデータ記憶システムとして動作させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データマイニングの分野に関し、より詳細には、グラフデータベースクエリの処理に関する。
【背景技術】
【０００２】
分散型コンピューティング環境における性能ボトルネックは、通信ネットワーク帯域幅及び処理能力を含む。ＳＰＡＲＱＬクエリのようなクエリのクエリ評価を配信するとき、中間結果がフェッチされ共同操作のために処理サーバへ転送されることにより、ネットワークトラフィックの有意な増大が引き起こされる。（複数の結合変数を有する）複雑なクエリパターンでは、これは、装置間で膨大なデータの転送を生じ、その多くは最終クエリ結果に含まれない。したがって、不要なネットワークトラフィックを意味する。さらに、ボトルネックの処理は、特定の処理サーバに一連の検索動作を膨大な検索空間で実行するよう要求することにより引き起こされ得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
開示の方法及び装置は、上述の問題を解決することを目的とする。
【課題を解決するための手段】
【０００４】
本発明の実施形態は、トリプルとしてエンコードされたグラフデータのデータベースのための検索方法を含む。各トリプルは３つのトリプル要素を有し、複数の記憶サーバに格納される。当該方法は、クエリを複数の結果基準に分けるステップを有し、前記結果基準は、一部又は全部のクエリ結果が一致しなければならない複数のトリプルパターンを有し、各トリプルパターンは、それぞれ３個のトリプル要素のうちの異なる１つに対応する３個のトリプルパターン要素を有する。各トリプルパターン要素は、トリプルが前記トリプルパターンに一致しなければならない対応するトリプル要素の単一の値を指定する単一値トリプルパターン要素、又は変数ＩＤを指定する可変値トリプルパターン要素を有し、前記ＩＤは、トリプルのうちの前記トリプルパターンに一致する対応するトリプル要素の値に起因する。方法は、同じ単一値トリプルパターン要素を有する又は可変値トリプルパターン要素として同じ変数ＩＤを指定する２以上のトリプルパターンをそれぞれ有する１又は複数のサブクエリを形成するステップを有するサブクエリ形成ステップと、複数の記憶サーバの各々に各形成したサブクエリを発行するステップを有するサブクエリ発行ステップと、少なくとも１つの形成されたサブクエリを満たすトリプルをを前記複数の記憶サーバからのサブクエリ結果として受信し及び前記クエリに対する応答としてクエリ結果を準備するために前記サブクエリ結果を用いるステップを有するクエリ結果準備ステップと、を更に有する。
【図面の簡単な説明】
【０００５】
本発明の好適な特徴は、単なる例として添付の図面を参照して以下に説明される。
【図１】本発明を実施する方法における方法のステップのフローチャートを示す。
【図２】本発明の実施形態の例示的なシステムアーキテクチャを示す。
【図３】第１の例示的なクエリパターングラフを示す。
【図４】代替の例示的なクエリパターングラフを示す。
【図５】第１の例に対応するサブクエリを示す。
【発明を実施するための形態】
【０００６】
＜発明の概要＞
本発明の実施形態は、トリプルとしてエンコードされたグラフデータのデータベースのための検索方法を含む。各トリプルは３つのトリプル要素を有し、複数の記憶サーバに格納される。当該方法は、クエリを複数の結果基準に分けるステップを有し、前記結果基準は、一部又は全部のクエリ結果が一致しなければならない複数のトリプルパターンを有し、各トリプルパターンは、それぞれ３個のトリプル要素のうちの異なる１つに対応する３個のトリプルパターン要素を有する。各トリプルパターン要素は、トリプルが前記トリプルパターンに一致しなければならない対応するトリプル要素の単一の値を指定する単一値トリプルパターン要素、又は変数ＩＤを指定する可変値トリプルパターン要素を有し、前記ＩＤは、トリプルのうちの前記トリプルパターンに一致する対応するトリプル要素の値に起因する。方法は、同じ単一値トリプルパターン要素を有する又は可変値トリプルパターン要素として同じ変数ＩＤを指定する２以上のトリプルパターンをそれぞれ有する１又は複数のサブクエリを形成するステップを有するサブクエリ形成ステップと、複数の記憶サーバの各々に各形成したサブクエリを発行するステップを有するサブクエリ発行ステップと、少なくとも１つの形成されたサブクエリを満たすトリプルをを前記複数の記憶サーバからのサブクエリ結果として受信し及び前記クエリに対する応答としてクエリ結果を準備するために前記サブクエリ結果を用いるステップを有するクエリ結果準備ステップと、を更に有する。
【０００７】
トリプル要素は、一般的に、主語、目的語、又は述語を表す。トリプル要素の特定のインスタンスは、トリプル要素の値として参照される。例えば、３つのトリプル要素は、主語、目的語及び述語であっても良い。したがって、特定のトリプルは、主語、目的語及び述語の各々の値を有する。記載されるエンティティは、トリプルの主語として表されても良い。識別されたプロパティの範囲は、目的語として表されても良い。また、範囲とエンティティとの間の関係は、述語として表されても良い。トリプルは、グラフデータを複数の主語−述語−目的語の表現として特徴付けることにより、グラフデータのエンコードを提供する。例えば、主語は、（例えば、ＵＲＩを介して）ウェブリソースを示しても良く、述語はリソースの個々の特性、特徴又は状況を示し、目的語は、該特性、特徴又は状況のインスタンス、範囲、又は例を示す。言い換えると、トリプルステートメントの集合は、元来、方向性グラフデータを表す。ＲＤＦ標準は、このようなトリプルの形式的構造を定める。本発明の実施形態におけるトリプルは、ＲＤＦトリプルであっても良い。
【０００８】
分割ステップは、トリプルがクエリ結果に含まれるために満たさなければならない結果基準を抽出するために、一連の処理ルールを受信したクエリに適用することにより、受信したクエリの論理的分析を有しても良い。
【０００９】
トリプルパターンは、それぞれトリプル要素に対応する３つのトリプルパターン要素を有する。各トリプルパターン要素は、結合（単一値トリプルパターン要素）又は非結合（可変値トリプルパターン要素）である。変数ＩＤは、非結合トリプルパターン要素に起因する。したがって、トリプルパターン結果が格納され処理されるとき（又はトリプルパターンが属するサブクエリの結果が格納されるとき）、非結合トリプル要素の値（インスタンス）は変数ＩＤの要因となる。
【００１０】
サブクエリ形成ステップは、１又は複数のトリプルパターン要素を介して論理的にリンク付けされるトリプルパターンを結合するメカニズムを提供する。いかなる特定のトリプルパターンも１より多いサブクエリに現れ得るので、トリプルパターンのコピーが用いられる。２つのトリプルパターン間の論理的リンクは、特定の（つまり主語又は目的語又は述語のうちの１つの）トリプルパターン要素の同じ結合値、又は（主語、述語又は目的語かにかかわらず）両方のトリプルパターンに現れる変数ＩＤであっても良い。変数ＩＤを介してリンク付けされたトリプルパターンは、互いに一致するトリプルのセットを制限し、したがって相互依存する。
【００１１】
サブクエリ結果の受信は、クエリ結果を見付けるために必要な処理を低減するメカニズムを提供する。クエリを個々のトリプルパターンに分割し、次に結果の結合及び合成の全てを中央で行う従来の方法は、中間結果、つまり単一トリプルパターンに一致するトリプルを、クエリ結果に包含されるためにクエリ内に設定された基準を満たすクエリ結果に結合し及びフィルタリングする装置に重い処理負荷を課す。有利なことに、本発明の実施形態の方法でサブクエリを形成し発行することにより、処理負荷の一部は記憶サーバ間で分散され、全体のクエリ応答時間が短縮される。
【００１２】
分散型トリプルデータベースのクエリを処理する知られている手順では、クエリ評価は、個々のトリプルパターンとして、該個々のトリプルパターンがどのように相互に関連するかの指示を有しないで、トリプルパターンを全てのデータノードへ送信することにより実行される。次に、クエリ結果を得るために、結合及びフィルタリング操作が中央で実行される。トリプルパターン間の相互関係の知識の欠落により、非効率が生じる。全てのトリプルパターン結果がネットワークを渡って送信されるので、ネットワークトラフィックは高くなる。さらに、結合操作（可変値トリプル要素により結合された２つのトリプルパターン）のための検索空間は、全ての候補トリプルのデカルト積である。したがって、処理コストは高くなる。本発明の実施形態は、フィルタリングをローカルに実行させてネットワークトラフィックを低減し、個々の記憶サーバからのサブクエリ結果は、結合されるべき２つのトリプルパターンからの結果を要求する操作のための検索空間を削減する。
【００１３】
クエリ結果準備ステップは、形成されたサブクエリのうちの１つの結果基準を満たす１又は複数のトリプルを格納する複数の記憶サーバの中の任意の記憶サーバから、該１又は複数のトリプルのコピーを受信するステップと該コピーを対応するサブクエリのサブクエリ結果として格納するステップとを含むサブクエリ結果収集ステップを有する。このようなステップは、サブクエリ結果が受信され体系化されることを可能にする。
【００１４】
任意で、実施形態はクエリを処理するよう構成されても良く、結果基準は１又は複数のフィルタリング条件を更に有し、各フィルタリング条件は、前記変数のＩＤの中からの１又は複数の特定のＩＤについて、トリプルが前記クエリ結果に含まれるために、前記ＩＤの要因となったトリプル要素の値が含まれなければならない範囲を定め、前記サブクエリ形成ステップは、１又は複数のサブクエリを形成するステップを更に有し、各サブクエリは、変数ＩＤを可変値トリプルパターン要素として指定するトリプルパターンと前記指定したＩＤの範囲を定めるフィルタリング条件とを有する。
【００１５】
有利なことに、記憶サーバは、個々の記憶サーバからの結果を結合する装置でではなく、記憶サーバ自身で結果をフィルタリングするために必要な情報を提供されるので、トリプルパターンに加えてフィルタリング条件を含むサブクエリを形成することは、処理を並列化する更なる機会を提供する。さらに、サブクエリ結果をサブクエリを発行する装置に返送する前に、記憶サーバでフィルタリングを実行するために、転送されるトラフィック量が削減される。全体としての記憶システムの性能は、中央集中型の方法ではなく分散型の方法でフィルタリングすることにより達成されるネットワークトラフィックの削減により向上される。
【００１６】
前記サブクエリ形成ステップの適応として、前記フィルタリング条件のうちの１つが、トリプルが変数の別のＩＤに関連する前記クエリ結果に含まれるために、前記ＩＤの要因となったトリプル要素の値が含まれなければならない範囲を定めるとき、サブクエリ形成ステップは、前記ＩＤ及び前記別のＩＤのサブクエリを単一のサブクエリに結合するステップを有する。
【００１７】
変数ＩＤ自体がフィルタリング条件によりリンク付けされる該変数ＩＤを含むトリプルパターン間の論理的リンクが存在することが理解できる。例えば、第１のトリプルパターンは、第１の変数ＩＤが指定される非結合目的語要素を有し、第２のトリプルパターンは、第１の変数ＩＤと異なる第２の変数ＩＤが指定される非結合主語要素を有しても良い。フィルタリング条件は、第１の変数ＩＤの要因となった値が第２の変数ＩＤの要因となった値と等しくてはならないことを指定しても良い。したがって、フィルタリング条件は、２つのトリプルパターンの結果の相互依存性、−第１のトリプルパターンに一致するトリプルは、第２のトリプルパターンの結果に依存する−をサブクエリがこれらのトリプルにより満たされるか否かを決定するために導入する。。さらに、いずれかのトリプルパターンに一致する特定のトリプルは、それらがサブクエリのフィルタリング条件を満たさない場合、クエリ結果から除外されてもよいことが理解される。したがって、これらの特定のトリプルを結果を結合する装置へ送信する必要がなく、全体のネットワークトラフィックが削減される。
【００１８】
更なる任意段階として、前記サブクエリ形成ステップは、各単一値トリプルパターン要素又は１より多い結果基準に現れる変数のＩＤについて、該単一値トリプルパターン要素又は変数のＩＤを有する全ての結果基準のコピーを有するサブクエリを形成するステップを有しても良い。
【００１９】
方法の全体的な性能は、単一のサブクエリに結合される結果基準間の論理的リンクが維持されることを保証しながら、サブクエリの数を減少させることにより更に効率的にされる。サブクエリの数を減少させることは、ネットワークトラフィック及び記憶サーバにおけるスキャンを削減することが理解される。したがって、特定の共通の変数ＩＤ又は特定のトリプルの共通の単一値によりリンク付けされた結果基準の全ての結合することによりサブクエリを形成することは（及び２つの変数ＩＤが、どちらかの変数ＩＤを有する全てのトリプルパターンを単一のサブクエリに結合するフィルタリング条件で結合される場合）、本発明の実施形態の性能の利益を最大化する。
【００２０】
前記クエリ結果準備ステップは、可変値トリプルパターン要素として同じ変数のＩＤを有する２以上のトリプルパターンを有する形成されたサブクエリの各々について、前記記憶サーバの各々から、前記２以上のトリプルパターンのうちの少なくとも１つを満たす全てのトリプルのコピーを有する個々のトリプルパターン結果を受信するステップと、前記受信した個々のトリプルパターン結果から、該サブクエリのサブクエリ結果として格納されたトリプルのコピーを除去するステップと、前記サブクエリの結果基準を満たすトリプルについて残りの受信した個々のトリプルパターン結果を検索し、該トリプルをサブクエリ結果として格納するステップと、を更に有しても良い。
【００２１】
サブクエリのトリプルパターンのいずれかを満たすクエリ結果が存在するが、他の記憶サーバからのトリプルパターンのいずれかに一致するトリプルを検索することなしに、同じサブクエリの一部を形成するフィルタリング条件が満たされるか否かは決定できなくても良い。このような場合には、サブクエリ結果を集めるステップの上述の追加段階は、トリプルパターン結果を効率的な方法でサブクエリ結果に統合するメカニズムを提供する。本発明の実施形態は、単一の記憶サーバからのトリプルパターンに一致するトリプルに基づきサブクエリを満たすと既に分かっているトリプルを除去することにより、検索空間を削減できる。
【００２２】
本発明を実施する方法は、グラフデータベースを符号化するトリプルの記憶が複数の記憶ユニットの間に分散されている限り、システムアーキテクチャの範囲で実行されても良い。中央データベース制御部は、単一の装置として実現され得る論理的エンティティであり、又は１より多い装置の機能として協調して提供されても良い。任意で、分割ステップ、サブクエリ形成ステップ、サブクエリ発行ステップ、及びサブクエリ結果を集めるステップは、中央データベース制御部で実行されても良い。中央データベース制御部により実行される機能は、直列的方法で実行されても良い。一方で、記憶サーバに発行されるサブクエリは、複数の記憶サーバにより並列に処理され得る。
【００２３】
各記憶サーバに割り当てられることにより並列化される処理の観点で、実施形態は、各記憶サーバにおいて、前記形成されたサブクエリを受信するステップと、前記受信したサブクエリの各々の結果基準を満たすトリプルについて、前記記憶サーバに格納されたトリプルをスキャンするステップと、各受信したサブクエリについて、前記サブクエリの結果基準を満たすトリプルのコピーを、前記サブクエリのサブクエリ結果として、他の記憶サーバ及び／又は前記中央データベース制御部へ転送するステップと、を更に有しても良い。
【００２４】
複数の記憶サーバは、それらがそれぞれ、それら自身に格納されたトリプルをスキャンし及び個々の結果基準の結果をサブクエリ結果に結合するようされる自身の記憶管理機能を有する限り、分散される。したがって、記憶サーバにサブクエリを発行することにより、並列化の特定の指標が達成される。サブクエリ結果は、それらが特定のサブクエリに起因する方法で転送されても良い。
【００２５】
前記スキャンするステップは、前記受信した形成されたサブクエリの中からそれぞれ異なるトリプルパターンを識別するステップと、より多くの可変値トリプルパターン要素を有するトリプルパターンがより少ない可変値トリプルパターン要素を有するトリプルパターンより低く優先順位付けされるよう、前記識別された異なるトリプルパターンを優先順位付けするステップと、優先度の順に、前記トリプルパターン毎に、中間トリプル結果セットを得るために、前記トリプルパターンに一致するトリプルについて、前記記憶サーバに格納されたトリプルをスキャンするステップと、１より多いトリプルパターンを有するサブクエリ内の各トリプルパターンの前記中間トリプル結果セットを結合することにより、及びフィルタリング条件を有するサブクエリ内の各トリプルパターンの前記中間トリプル結果セットにフィルタリング条件を適用することにより、サブクエリ結果を得るステップと、を有しても良い。
【００２６】
有利なことに、性能の利益は、より少ない結果を有すると予想されるトリプルパターンを優先し、これらのパターンに一致するトリプルが最初に見付かるようにすることにより向上できる。したがって、トリプルに対して実行されるべき更なる論理的操作は、直ぐに開始できる。同時に、より多くの結果を生成すると予想される（したがって実行し結果を組み立てるのに長時間を要する）トリプルパターンに一致するトリプルのスキャンは進行中である。
【００２７】
結合トリプルパターン要素の数に基づく優先順位付けに加えて、膨大な数の結果を生成すると予想される特定の他のトリプルパターン要素は、該トリプルパターン要素を有するトリプルパターンに、同数の結合（単一値）トリプルパターン要素を有する他のトリプルパターンよりも低い優先度を与えさせる。例えば、トリプル要素の主語又は目的語に対応するトリプルパターン要素を有し、及びプレフィックスとして「ＲＤＦ」又は「ＲＤＦＳ」を含むトリプルパターンは、低い優先度を与えられても良い。これらの範囲内でトリプル要素の述語に対応するトリプルパターン要素は、「rdf:type」に与えられるより、「rdfs:label」に与えられるより、述語「rdfs:subclassof」に与えられる優先度がより高いように、優先順位付けされても良い。これらの更なるルールは、膨大な数の一致を返ししたがってスキャンに長時間を有するトリプルパターンを生み出し得るトリプルパターン要素を識別し、及びそれらを低い優先度に格下げするメカニズムを提供する。
【００２８】
実施形態は、各トリプルパターンの中間トリプル結果セットを、統合のために中央データベース制御部へ、又は中央データベース制御部によりトリプルパターンの結果を統合するために割り当てられた１又は複数の他の記憶サーバへ転送するステップを更に有しても良い。
【００２９】
特に、本発明を具現化する方法は、前記記憶サーバの各々で、可変値トリプルパターン要素として同じ変数ＩＤを指定する２以上のトリプルパターンを有するサブクエリについて、前記２以上のトリプルパターンのうちの１つを第１のトリプルパターンとして割り当てるステップと、他の記憶サーバの各々から前記サブクエリ内の１又は複数の他のトリプルパターンの各々について中間トリプル結果セットを得るステップと、前記記憶サーバにある前記第１のトリプルパターンに一致すると分かった各トリプルについて、前記サブクエリを満たすトリプルのペア又はグループを識別するために、前記の得られた中間トリプル結果セットをスキャンするステップと、を更に有しても良い。
【００３０】
このような方法で、第１のトリプルパターンとして割り当てられたトリプルパターンが各記憶サーバに存在するものと同じであることを保証するためのメカニズムが実施されても良い（これは、同じ選択ルールを適用することにより、又はネットワークに渡り互いに協調することにより達成され得る）。例えば、ネットワークトラフィックを削減するために（第１のトリプルパターン結果が他の記憶サーバへ転送されないので）、（複数の記憶サーバに渡る結果を集約することにより、又は決定部として動作し、記憶サーバ上で最多の一致を有するトリプルパターンを選択する１つの記憶サーバにより）最も多くの結果を有する２以上のとりの中からトリプルパターンを識別することは有利であり得る。
【００３１】
有利なことに、記憶サーバでローカルに統合するためにトリプルパターン結果を転送することは、統合処理を並列化し、したがって集中型処理で生じ得るボトルネックを減少する。
【００３２】
本発明の実施形態では、クエリはＳＰＡＲＱＬクエリであっても良い。ＳＰＡＲＱＬクエリは、グラフデータベースへの問い合わせのために最適化される。また、知られている技術が、個々のトリプルパターン及び結果基準をＳＰＡＲＱＬクエリから抽出するために適用できる。本発明を具現化する装置は、ＳＰＡＲＱＬクエリを受信しクエリ結果を返すＳＰＡＲＱＬインタフェースを有しても良い。
【００３３】
本発明の別の態様の実施形態は、トリプルとしてエンコードされたグラフデータのデータベースのためのデータベース制御部を含む。各トリプルは３つのトリプル要素を有し、複数の記憶サーバに格納される。当該データベース制御部は、クエリを複数の結果基準に分けるよう構成されるクエリ分割モジュールを有し、前記結果基準は、一部又は全部の検索結果が一致しなければならない複数のトリプルパターンを有し、各トリプルパターンは、それぞれ３個のトリプル要素のうちの異なる１つに対応する３個のトリプルパターン要素を有する。各トリプルパターン要素は、トリプルが前記トリプルパターンに一致しなければならない対応するトリプル要素の単一の値を指定する単一値トリプルパターン要素、又は変数のＩＤを指定する可変値トリプルパターン要素を有し、前記ＩＤは、トリプルのうちの前記トリプルパターンに一致する対応するトリプル要素の値に貢献している。データベース制御部は、同じ単一値トリプルパターン要素を有する又は可変値トリプルパターン要素として同じ変数ＩＤを指定する２以上のトリプルパターンをそれぞれ有する１又は複数のサブクエリを形成するよう構成されるサブクエリ形成モジュールと、複数の記憶サーバの各々に各形成したサブクエリを発行するよう構成されるサブクエリ発行モジュールと、少なくとも１つの形成されたサブクエリを満たすトリプルを前記複数の記憶サーバからのサブクエリ結果として受信し及び前記クエリに対する応答としてクエリ結果を準備するために前記サブクエリ結果を用いるよう構成されるクエリ結果準備モジュールと、を更に有する。
【００３４】
クエリ結果準備モジュールは、形成されたサブクエリのうちの１つの結果基準を満たす１又は複数のトリプルを格納する複数の記憶サーバの中の任意の記憶サーバから、該１又は複数のトリプルのコピーを受信するステップと該コピーを対応するサブクエリのサブクエリ結果として格納よう構成されるサブクエリ結果収集モジュールを有しても良い。
【００３５】
本発明の別の態様の実施形態は、本発明を具現化するデータベース制御部と、トリプルを格納する複数の記憶サーバと、を有するデータ記憶システムを有する。
【００３６】
本発明の別の態様の実施形態は、１又は複数のコンピューティング装置により実行されると、前記１又は複数のコンピューティング装置を本発明を具現化するデータベース制御部として機能させる、コンピュータプログラムを含む。
【００３７】
本発明の別の態様の実施形態は、１又は複数のコンピューティング装置により実行されると、前記１又は複数のコンピューティング装置を本発明を具現化するデータベース制御部又はデータ記憶システムとして機能させる、コンピュータプログラム又はコンピュータプログラムスーツを含む。
【００３８】
本発明の実施形態のサブクエリは、クエリの内部構造を反映する。サブクエリは、サブクエリは、記憶サーバへ関連グループとして渡されるトリプルパターンとフィルタリング条件とを有する。したがって、サブクエリは全体として、各記憶サーバでローカルに評価され、サブクエリを満たすトリプルセットが取得され他の装置に利用可能にされる。さらに、別個の記憶サーバからのトリプルパターンの結果を結合するステップに関連する処理は、性能を向上するために並列化されても良い。全体的なルールとして、並列方式でローカルに実行される処理が多いほど、より多くのネットワークトラフィックが削減され、より多くの処理ボトルネックが削減／回避できる。
【００３９】
＜発明の詳細な説明＞
図１は、本発明を実施する方法における方法のステップのフローチャートを示す。本発明を実施する方法は、例えば、コンピュータにより実施される方法であっても良い。ステップＳ１は、データベース制御部の専用機能モジュール、例えばクエリ分割モジュールにより実行されても良い。
【００４０】
ステップＳ１：クエリを結果基準に分ける。Ｓ１は、クエリを結果基準に分けるステップを有しても良い。結果基準は、一部又は全部のクエリ結果が一致しなければならない複数のトリプルパターンを有し、各トリプルパターンは、それぞれ３個のトリプル要素のうちの異なる１つに対応する３個のトリプルパターン要素を有する。各トリプルパターン要素は、トリプルが前記トリプルパターンに一致しなければならない対応するトリプル要素の単一の値を指定する単一値トリプルパターン要素、及び変数ＩＤを指定する可変値トリプルパターン要素、のうちの１つを有し、該ＩＤは、トリプルのうちのトリプルパターンに一致する対応するトリプル要素の値に起因する。
【００４１】
グラフデータベースクエリを個々のトリプルパターンに分けるために必要な処理ルール及び関連機能、並びに他の結果基準が確立される。例えば、クエリは、クエリを個々の結果基準に分けるためにＳＰＡＲＱＬクエリエンジンが存在するＳＰＡＲＱＬクエリであっても良い。
【００４２】
トリプルパターンに加えて、結果基準は、特定の変数ＩＤの要因となった値が取り得る値を制限するフィルタリング条件を有しても良い。フィルタリング条件は、１又は複数の絶対値を参照する値、又は別の変数ＩＤの要因となった値を参照する値を制限しても良い。
【００４３】
個々のトリプルパターンは、「ＯＲ」型の論理記述によりクエリ内で接続される。この場合、全部ではなく一部のクエリ結果のみが、個々のトリプルパターンに一致する必要があるだけである。つまり、必ずしも全部のクエリ結果がクエリ結果に含まれるために全ての結果基準を満たす必要はない。したがって、トリプルパターンは、それぞれ、一部又は全部のクエリ結果が一致しなければならないパターンを定める。クエリに従って結果を結合する際に、サブクエリ結果をどのように結合するかを決定する論理は、クエリから抽出され、サブクエリ結果に適用される。
【００４４】
ステップＳ２：結果基準からサブクエリを形成する。Ｓ２は、データベース制御部の専用機能モジュール、例えばサブクエリ形成モジュールにより実行されても良い。ステップＳ２で、サブクエリは、結果基準から形成される。各サブクエリは、トリプルパターンか、トリプルパターンとフィルタリング条件との組合せであり得る少なくとも２つの結果基準を有する。特定のサブクエリに結合された結果基準は、特定のトリプル要素を同じ値になるよう結合することにより、又は同じ変数ＩＤに関連付けることにより、（共通変数ＩＤによりリンク付けされる２つのトリプルパターンとして、又は変数ＩＤを指定するトリプルパターン及び変数ＩＤの要因となった値を制限するフィルタリング条件として、）論理的にリンク付けされる。任意で、サブクエリが、別の変数ＩＤの結果への参照により１つの変数ＩＤの要因となった値を制限するフィルタリング条件を含む場合、ある変数ＩＤ及び別の変数ＩＤの各々を含む又はそれらを関連付けるトリプルパターン及び他の制限条件は、単一サブクエリに含まれる。任意の単一の結果基準は、１より多いサブクエリに現れても良い。したがって、サブクエリは、結果基準のコピーを有すると考えられる。実際には、もちろん、結果基準は、通常処理動作中にメモリのある部分から別の部分へ及び処理コンポーネントへ及びそれから読み出し及び書き込みされるコンピュータメモリ上のストリング又は他のオブジェクト型として実現されても良い。したがって、結果基準自体又は結果基準のコピーの間の区別は重要ではない。
【００４５】
ステップＳ３：サブクエリを記憶サーバへ発行する。Ｓ３は、データベース制御部の専用機能モジュール、例えばサブクエリ形成モジュールにより実行されても良い。ステップＳ３は、複数の記憶サーバのうちの各々に、それぞれ形成したサブクエリを発行するステップを有しても良い。サブクエリを記憶サーバへ発行するステップは、単に記憶サーバへサブクエリのコピー又はバージョンを送信するステップを有しても良い。任意で、サブクエリを発行するステップは、サブクエリ結果をどのように構築するか、及びサブクエリ結果に加えてサブクエリ内の個々のトリプルパターンに一致するトリプルが必要か否かに関する情報を更に有しても良い。記憶サーバにより受け付けられ処理されるために、サブクエリは所定のフォーマットで提示されなければならない。このような例では、サブクエリを記憶サーバへ発行するステップは、サブクエリを各記憶サーバにより要求される書式にフォーマットするステップを有しても良い。サブクエリは、サブクエリを満たすトリプルがどこに書き込まれるべきかを表すアドレスと共に発行されても良い。
【００４６】
サブクエリを受信すると、記憶サーバは、それぞれ、サブクエリ結果について、自身に格納しているグラフデータベースを符号化するトリプルの一部をスキャンするよう構成される。記憶サーバは、サブクエリの論理に従ってトリプルパターン結果をサブクエリ結果に結合する前に、複数の受信したサブクエリ内の個々のトリプルパターンを識別し、個々のトリプルパターンの各々に一致する結果について格納されたトリプルをスキャンするよう構成される。これを行うとき、記憶サーバは、単一クエリから形成されたサブクエリに応答する際に、同じトリプルパターンに一致するトリプルについて２度スキャンする必要がないことを保証する。
【００４７】
記憶サーバは、サブクエリを満たすトリプルのコピーをサブクエリを発行した装置／機能モジュールに、又はサブクエリ内に含まれる情報で又はサブクエリと共に指定されるアドレスに返送するよう構成される。
【００４８】
ステップＳ４で、サブクエリ結果は、記憶サーバから集められる。サブクエリ結果を集めるステップは、サブクエリ結果を記憶サーバから受信するステップ、又は記憶サーバがサブクエリ結果を書き込むよう指示されたアドレスからサブクエリ結果を読み出すステップを有する。サブクエリは、各サブクエリに対する包括的な結果セットを得るために個々の記憶サーバからのサブクエリ結果が単に集約でき、次にクエリにより定められたロジックに従って結合できるようにしても良い。。代替で、個々の記憶サーバからのサブクエリ結果は、サブクエリに対する部分的な結果セットを表しても良く、中間結果のサブクエリを構成する個々のトリプルパターンとの統合が、サブクエリに対する包括的な結果セットを得るために必要とされても良い。このような場合には、個々の記憶サーバからのサブクエリ結果は、中間結果を統合する処理において検索空間を縮小するために用いることができる。
【００４９】
図２に、本発明を実施するシステムの論理的アーキテクチャを示す。提案のシステムは、３つの主な論理的構成要素、つまり論理グローバル記憶層２０、一群のスレーブサーバ３０、及び論理的中央マスタサーバ１０を有する。グローバル記憶サーバ２０及び中央マスタサーバ１０は、それらが拡張性の必要に依存して、ネットワークを通じて相互接続される物理的機械に分散される構成要素により実現されても良いという意味で論理的である。例えば、グローバル記憶層２０は、各スレーブサーバ３０内の専用記憶域、及び／又はマスタサーバ１０の記憶域、及び／又は専用の別個の記憶装置により実現されても良い。
【００５０】
マスタサーバ１０は、中央データベース制御部の例である。マスタサーバ１０は、記憶サーバとして機能してもしなくても良い。マスタサーバ１０の機能モジュールは、ＳＰＡＲＱＬインタフェース１２及びクエリパーティショナ１４を有する。ＳＰＡＲＱＬインタフェース１２は、アプリケーションからクエリを受信するよう構成される。クエリパーティショナ１４は、クエリ分割モジュール、サブクエリ形成モジュール、サブクエリ発行モジュール、及び／又はクエリ結果準備モジュールを結合するモジュールの例である。
【００５１】
スレーブサーバ３０は、記憶サーバの例であり、それぞれ格納されたトリプルに対するスキャンを調整し、結果をスキャンするために論理処理動作を適用するよう構成されるマップ／削減層３４を有する。中間結果、つまりスレーブサーバ３０で受信されたサブクエリを満たす又はサブクエリを部分的に満たすトリプルは、ローカル記憶層３２に格納される。さらに、スレーブサーバ３０は、データベース内のトリプルの一部が格納される記憶ユニットを有する。
【００５２】
論理的にスレーブサーバ３０及びマスタサーバ１０の各々はグローバル記憶層から読み出し／に書き込み可能なので、したがってグローバル記憶層２０はデータ交換のためのメカニズムの役目を果たすので、グローバル記憶層２０は、論理的にスレーブサーバ３０とマスタサーバ１０との間にある記憶層である。もちろん、グローバル記憶層２０を実現するために、マスタサーバ１０及びスレーブサーバ３０並びにそれらの相互接続を超えた追加ハードウェアが必要であっても良い。また、グローバル記憶層２０は、それら装置上の互いにアクセス可能な記憶場所を単に有しても良い。代替で、専用記憶ユニット又は記憶場所が、マスタサーバ１０、スレーブサーバ３０又は全く異なる装置のどこにあるかに関係なく、グローバル記憶層２０として提供されても良い。
【００５３】
格納されたトリプルにアクセスするアプリケーションは、ＳＰＡＲＱＬクエリをマスタサーバ１０へ送信する。マスタサーバ１０は、ＳＰＡＲＱＬインタフェース１２でＳＰＡＲＱＬクエリをパースし、クエリパーティショナ１４でクエリをトリプルパターンとフィルタリング条件とに区分する。トリプルパターンとフィルタリング条件は、次に別個に処理できるサブクエリを形成するために結合され得る。次に、サブクエリは、スレーブサーバ３０に発行される。
【００５４】
次に、スレーブサーバは、サブクエリを処理し、中間結果をローカル記憶層３２に格納する。ローカル記憶層３２の各インスタンスは、グローバル記憶層２０によりグローバルに視覚化され得る。グローバル記憶層２０は、スレーブサーバ及びマスタサーバが、ローカル記憶層に格納されたトリプルを読み出せるようにする。
【００５５】
クエリパーティショナ１４の機能を以下に詳細に説明する。クエリパーティショナ１４、詳細にはクエリパーティショナ１４のクエリ分割モジュールは、ＳＰＡＲＱＬクエリのようなクエリを受信し、クエリを個々のトリプルパターンに分割するよう構成される。ＳＰＡＲＱＬクエリのようなクエリを個々のトリプルパターンに分割する処理ルール及び手順が利用可能である。トリプルパターンは、クエリに対する応答を提供するために必要なトリプルの形式を定める。トリプルパターンは、単一の固定値が与えられる結合トリプル要素と、トリプル要素のインスタンスに起因する変数ＩＤにより示される可変トリプル要素との混合を含む。
【００５６】
以下の例では、個々のトリプルパターンは、サブクエリに形成される前に、クエリパターングラフ（ＱＰＧ）に結合される。ＱＰＧは、異なる個々のトリプルパターンがどのように互いに関連するかを表す概念的ツールである。本発明の実施形態は、個々のトリプルパターンから実際のＱＰＧを形成しても良くしなくても良い。しかしながら、それは、本発明の実施形態がどのように個々のトリプルパターンからサブクエリを形成するかの基本的な論理的ルールを説明する有用なメカニズムである。
【００５７】
概して、トリプルクエリパターンは、各トリプルパターンを頂点として、トリプルパターン間の共有変数又は共有結合値をエッジとして有するグラフとして考えられる。実施形態は、トリプルパターンＩＤのそれぞれ個々のトリプルパターンへの割り当てを含む方法で、クエリを個々のトリプルパターンに分割しても良い。
【００５８】
第１の例として、次の３個の個々のトリプルパターンを有するクエリを考える。各パターンは、パターンＩＤ（つまり、ｔｐ１、ｔｐ２、ｔｐ３）を割り当てられる。
【００５９】
tp１:(?x,p１,?y)
tp２:(s１,p２,?z)
tp３:(?x,p２,?z)
図３に、トリプルパターンｔｐ１、ｔｐ２、ｔｐ３のＱＰＧを示す。ＱＰＧのエッジは、共有変数又は共通の結合値の名前でラベル付けされる。疑義を回避するため、「？」は可変値トリプルパターン要素を表し、「？」に続く文字は可変値トリプルパターン要素のＩＤを表すことに留意する。結合値は、結合値が主語（subject）／述語（predicate）／目的語（object）であることを示すｓ／ｐ／ｏにより示される単一値トリプルパターン要素により表される。ｓ／ｐ／ｏに続く数字は、特定の値、つまりｓ／ｐ／ｏの特定のインスタンスを表す。与えられた例では、トリプルは、ストリングオブジェクトにより表されるので、「ｓ１」はストリングオブジェクトであり、特に主語の例である。特定の例では、同じ値を有するが異なるトリプル要素に関連する２つの結合値は、等しい又は共通であるとは考えられない。つまり、ｓ１及びｐ２が同じストリングである場合、それらは、３つのトリプルパターン要素ｓ／ｐ／ｏのうちの同じ１つを表さないので、２つのトリプルパターンにより共有される結合値であると考えられない。
【００６０】
図３に示すように、ＱＰＧは、３つのノード、つまりｔｐ１、ｔｐ２、と３を有する。変数ＩＤ「ｘ」がｔｐ１とｔｐ３の両方に現れるので、ｔｐ１は「ｘ」と示されるアークによりｔｐ３に接続される。ｔｐ３は、２つのアークにより（又は２つのラベルを有する１つのアークにより）ｔｐ２に接続される。２つのアークは、ｔｐ２とｔｐ３が両方とも述語トリプル要素の同じ結合値を有するために１つは「ｐ２」とラベル付けされ、変数ＩＤ「ｚ」がｔｐ２とｔｐ３の両方に現れるので１つは「ｚ」とラベル付けされる。
【００６１】
次に、サブクエリは、クエリパーティショナ１４により、例えばクエリパーティショナ１４に属するサブクエリ形成モジュールにより形成される。概念的には、サブクエリは、ＱＰＧを区分することにより掲載されると考えられる。もちろん、一実施形態では、サブクエリは、ＱＰＧを構築し次に区分することにより、又はＱＰＧ概念から引き出されると考えられ得るルールを用いて結果基準を単に結合することにより形成されても良い。
【００６２】
サブクエリは、以下のサブクエリ形成ルールを用いて形成されても良い。ここで、単一トリプルパターンは１より多いサブクエリにコピーされても良いことに留意する。先ず、頂点はエッジにグループ化され、特定のエッジラベルによりリンク付けされる全ての頂点が一緒にグループ化されるようにする。次に、２つの頂点を接続するエッジが複数のラベルを付されるとき、頂点（トリプルパターン）が同じフィルタにより接続されない限り、頂点（トリプルパターン）を別個のサブクエリに複製する。最後に、境界を共有する２つのサブクエリのエッジラベルが同じフィルタにより接続されていない限り、あるサブクエリを別のサブクエリと分けるために、必要に応じて境界にある頂点は複製される。図５は、上述のルールをトリプルパターンｔｐ１、ｔｐ２、ｔｐ３に適用することにより形成された３つのサブクエリを示す。
【００６３】
図５中、アークは、２つのトリプルパターンを１つのサブクエリに連結するエッジを示す。矢印は、２つのトリプルパターン間の優先度の順位を示す。特定の例では、ｔｐ２は、より多くのトリプルパターン要素を有し、したがってｔｐ１又はｔｐ３より高い優先度を提供される。実際に、ｔｐ１及びｔｐ３の各々は、１つの結合トリプルパターン要素のみを有する。スレーブサーバ３０は、多くの方法でつながりを切断するよう構成されても良い。幾つかの方法は、本願明細書で言及される。つながりは、明らかに任意の方法で、例えばトリプルパターンＩＤのアルファベット順により、又はトリプルパターンのトリプルパターン要素を連結することにより形成されるストリングの順により、切断されても良い。スレーブサーバは、全て、つながりを切断するために同じ手順を用いるよう構成され、それぞれ同じ順序でトリプルパターンをスキャンするようにしても良い。
【００６４】
クエリがフィルタリング条件を有するとき、フィルタリング条件は、モジュールを分割することによりクエリから抽出され、トリプルパターンに同じ方法で扱われる。トリプルパターン及びフィルタリング条件は、集合的に結果基準として表される。フィルタリング条件がクエリに含まれるとき、各フィルタリング条件は、ＱＰＧ内の頂点として含まれ、フィルタリングされる可変値に起因する変数ＩＤに基づき他の頂点に接続される。したがって、フィルタリング条件は、トリプルパターンと同じ方法で扱われると考えられる。
【００６５】
クエリの第１の例の代替として、例えば以下のトリプルパターンとフィルタリング条件の混合を含む結果基準に分割されるクエリを考える。
【００６６】
tp４:(?x,p１,o１)
tp５:(?y,p２,o２)
F１:(?x≠?y)
図４に、代替例の結果基準を用いて構築されたＱＰＧを示す。
【００６７】
サブクエリ形成ルールを代替例に適用すると、フィルタは「ｘ」を「ｙ」に関して又は逆にフィルタリングすることによりエッジ「ｘ」と「ｙ」を接続するので、形成されるサブクエリは実際には図４と同じである。
【００６８】
次に、サブクエリは、スレーブサーバによる処理のために、例えばサブクエリ発行モジュールによりスレーブサーバ３０に発行される。
【００６９】
記憶サーバの例であるスレーブサーバ３０は多数のサブクエリを受信し、異なる個々の結果基準を集合的なサブクエリから識別して、重複するスキャン及び処理を防ぎ、特定の優先順位付けを可能にしても良い。例えば、優先順位付けは、結果として生じると期待されるトリプルの数に基づいても良い。したがって、より多くのトリプルを返すと期待されるトリプルパターンは、少ないトリプルを返すと期待されるトリプルパターンの後に処理される（スレーブサーバの記憶部にある結果についてスキャンされる）。このように、より少ない結果を有するサブクエリの追加処理が遅れない。さらに、フィルタリング条件を適用するために必要な処理は優先順位付けされても良い。
【００７０】
以下は、結果基準を優先順位付けするための例示的なルールセットである。
（１）より多くの結合トリプル要素（主語、述語、目的語である）を有するトリプルパターンを選択する。
（２）フィルタリング条件は、同じサブクエリ内に現れるトリプルパターンよりも低い優先度を有する。より少ない変数を有するフィルタは、より速く処理されるので、より多くの変数を有するフィルタよりも高い優先度を有する。
（３）rdf:xxx/rdfs:xxx（つまり、RDF/RDFS名前空間が前に付く任意の特性−これらは、膨大数のトリプルを返すと予測されるので、優先順位を低くされる）の他の主語と目的語を選択することによりつながりを切断する。
（４）rdf:xxx/rdfs:xxxの他の種類の述語を選択することによりつながりを切断する。
ａ）rdf:xxx述語は、以下の順序の優先順位である。
rdfs:subclassof>rdfs:label>rdf:type（これは、膨大数の結果を返すと予測されるトリプルパターンとそうでないトリプルパターンの間を見分ける更なる手段を提供する）。
【００７１】
サブクエリの受信及び結果基準の優先順位付けは、各スレーブサーバにより、例えばマップ／削減層３４により実行される。優先順位付けが実行されると、最高優先順位を有するトリプルパターンがスキャンされ、以下同様である。代替で、トリプルパターンは、任意の順序でスキャンされても良い。トリプルパターンのスキャンは、トリプルパターンに一致するトリプルについてスレーブサーバに格納されたトリプルをスキャンすること、及びトリプルパターンに一致するトリプルのコピーを中間トリプル結果セットとして格納することを含む。各スレーブサーバは、該スレーブサーバに格納されたデータベース内のトリプルの部分をスキャンする。
【００７２】
スレーブサーバが各トリプルパターンについてトリプルの中間セットを有すると、各サブクエリについてサブクエリ内の結果基準の全てに一致する、したがってサブクエリ結果と考えられるトリプルセットを識別するために、トリプルパターン毎に更なる処理が実行される。サブクエリ結果は、マスタサーバのようなデータベース制御部へ及び／又はフェロースレーブサーバへ、例えばサブクエリ結果をグローバル記憶層２０に書き込むことにより、転送される。
【００７３】
幾つかの場合には、サブクエリは、純粋にローカルに評価できない。つまり、サブクエリからの及び他のスレーブサーバに格納された、トリプルパターンに一致するトリプルの何らかの知識が要求される。このような場合には、個々のスレーブサーバからのトリプルパターンの一致は、グローバル記憶層に書き込まれるか、又は他のスレーブサーバに利用可能にされる。次に、各スレーブサーバは、グローバル結果（分散型ネットワークに渡るトリプルパターンに一致するトリプルの集合体）を検索してサブクエリ結果を見付けるよう構成される。検索空間は、既にサブクエリ結果として、例えば前のローカル処理の結果として識別されたトリプルを除外することにより、削減される。さらに、スレーブサーバ間の特定の責任割り当ては、例えば中央データベース制御部により実行されても良い。したがって、処理作業は、スレーブサーバ間で重複しない。
【００７４】
このような場合を説明するために、以下の例を検討する。
【００７５】
tp６:(?x,p１,?y)
tp７:(?y,p２,?z)
ｔｐ６及びｔｐ７は、変数ＩＤ「ｙ」によりリンク付けされ、したがって１つのサブクエリに形成される。サブクエリがスレーブサーバへ送信されると、ｔｐ６又はｔｐ７が最初にスキャンされる。したがって、？ｙの中間結果セットが生成される。ｔｐ６及びｔｐ７のうちの２番目がスキャンされると、？ｙの結果リスト、したがって？ｘ及び？ｚが部分的にインスタンス化される。しかしながら、ｔｐ６又はｔｐ７のいずれの結果も、他のスレーブサーバに格納されたｔｐ６及びｔｐ７に一致するトリプルの知識を有しないで、サブクエリ全体を満たす可能性のあるトリプルのリストから除外できない。したがって、？ｘ及び？ｚの部分的インスタンス化は更なる統合操作の検索空間を削減するが、ｔｐ６及びｔｐ７に一致するトリプルは他のスレーブサーバに利用可能にされるので、？ｘ及び？ｚは完全にインスタンス化でき、これらのインスタンスを有するトリプルはサブクエリ結果として返される。
【００７６】
個々のサブクエリの結果が集められると、個々のサブクエリ結果は、クエリ結果セットを生成するために、クエリ自体の形式により決定される論理に従い処理され得る。例えば、クエリは、任意のサブクエリに一致するトリプルがクエリを満たしクエリ結果に含まれるように、構築されても良い。代替で、クエリ結果を見付けるために、サブクエリ結果又はフィルタリングの追加結合が要求されても良い。サブクエリ結果のクエリ結果への結合を決定する論理は、クエリ自体により定められる。したがって、マスタサーバ１０、又はクエリ計画、クエリ処理若しくはクエリ実行モジュール又はその処理は、得られたサブクエリをクエリ結果に結合するために必要な論理的処理を決定する機能を有する。クエリ結果の準備は、データベース制御部又はマスタサーバのような中央機能により実行されても良く、又は並列して動作する１又は複数のスレーブサーバにより実行されても良い。
【００７７】
上述の態様の何れにおいても、種々の特徴は、ハードウェアで、又は１若しくは複数のプロセッサで動作するソフトウェアモジュールとして実施されても良い。ある態様の特徴は、他の態様の特徴に適用されても良い。
【００７８】
本発明は、上述の任意の方法を実行するコンピュータプログラム又はコンピュータプログラムプロダクト、及び上述の任意の方法を実行するプログラムを格納しているコンピュータ可読媒体も提供する。本発明を実施するコンピュータ・プログラムは、コンピュータ可読媒体に格納されてもよい。或いは、例えば、インターネット・ウェブサイトから提供されるダウンロード可能なデータ信号のような信号形式又は任意の他の形式であってもよい。
【符号の説明】
【００７９】
１０  マスタサーバ
１２  ＳＰＡＲＱＬインタフェース
１４  クエリパーティショナ
２０  論理グローバル記憶層
３０  スレーブサーバ
３２  ローカル記憶層
【図１】
2014194772.tif 000003
【図２】
2014194772.tif 000004
【図３】
2014194772.tif 000005
【図４】
2014194772.tif 000006
【図５】
2014194772.tif 000007
【外国語明細書】
2014194772000001.pdf