JP2014194772A - グラフデータベースクエリ処理方法及び装置 - Google Patents

グラフデータベースクエリ処理方法及び装置 Download PDF

Info

Publication number
JP2014194772A
JP2014194772A JP2014065175A JP2014065175A JP2014194772A JP 2014194772 A JP2014194772 A JP 2014194772A JP 2014065175 A JP2014065175 A JP 2014065175A JP 2014065175 A JP2014065175 A JP 2014065175A JP 2014194772 A JP2014194772 A JP 2014194772A
Authority
JP
Japan
Prior art keywords
triple
subquery
query
result
pattern
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
JP2014065175A
Other languages
English (en)
Inventor
Bo Hu
ヒュー・ボ
Carvalho Nuno
カルヴァーリョ・ヌノ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2014194772A publication Critical patent/JP2014194772A/ja
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24526Internal representations for queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24535Query rewriting; Transformation of sub-queries or views
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】トリプルとしてエンコードされたグラフデータのデータベースのための検索方法及び装置を提供する。
【解決手段】当該方法は、クエリを、一部又は全部の検索結果が一致しなければならない複数のトリプルパターンを有する、複数の結果基準に分けるステップを有し、同じ単一値トリプルパターン要素を有する又は可変値トリプルパターン要素として同じ変数IDを指定する2以上のトリプルパターンをそれぞれ有する1又は複数のサブクエリを形成するステップを有するサブクエリ形成ステップと、複数の記憶サーバの各々に各形成したサブクエリを発行するステップを有するサブクエリ発行ステップと、少なくとも1つの形成されたサブクエリを満たすトリプルをを前記複数の記憶サーバからのサブクエリ結果として受信し及び前記クエリに対する応答としてクエリ結果を準備するために前記サブクエリ結果を用いるステップを有するクエリ結果準備ステップと、を有する。
【選択図】図1

Description

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

Claims (15)

  1. トリプルとしてエンコードされたグラフデータのデータベースのための検索方法であって、各トリプルは3つのトリプル要素を有し、複数の記憶サーバに格納され、前記方法は、
    クエリを複数の結果基準に分けるステップを有する分割ステップであって、前記結果基準は、一部又は全部の検索結果が一致しなければならない複数のトリプルパターンを有し、各トリプルパターンは、それぞれ3つのトリプル要素のうちの異なる1つに対応する3つのトリプルパターン要素を有し、
    各トリプルパターン要素は、
    トリプルが前記トリプルパターンに一致しなければならない対応するトリプル要素の単一の値を指定する単一値トリプルパターン要素、又は
    変数IDを指定する可変値トリプルパターン要素であって、前記IDは前記トリプルパターンに一致するトリプルの対応するトリプル要素の値に起因する、可変値トリプルパターン要素、である、分割ステップと、
    同じ単一値トリプルパターン要素を有する又は可変値トリプルパターン要素として同じ変数IDを指定する2以上のトリプルパターンをそれぞれ有する1又は複数のサブクエリを形成するステップを有するサブクエリ形成ステップと、
    前記複数の記憶サーバの各々に各形成されたサブクエリを発行するステップを有するサブクエリ発行ステップと、
    少なくとも1つの形成されたサブクエリを前記複数の記憶サーバからのサブクエリ結果として受信するステップと、前記クエリに対する応答としてクエリ結果を準備するために前記サブクエリ結果を用いるステップと、を有するクエリ結果準備ステップと、
    を有する方法。
  2. 結果基準は1又は複数のフィルタリング条件を更に有し、各フィルタリング条件は、前記変数IDの中からの1又は複数の特定のIDについて、トリプルが前記クエリ結果に含まれるために、前記IDの要因となったトリプル要素の値が含まれなければならない範囲を定め、
    前記サブクエリ形成ステップは、1又は複数のサブクエリを形成するステップを更に有し、各サブクエリは、変数IDを可変値トリプルパターン要素として指定するトリプルパターンと前記指定したIDの範囲を定めるフィルタリング条件とを有する、
    請求項1に記載の方法。
  3. 前記サブクエリ形成ステップは、前記フィルタリング条件のうちの1つが、変数の別のIDに関連するトリプルが前記クエリ結果に含まれるために、前記IDの要因となったトリプル要素の値が含まれなければならない範囲を定めるとき、前記ID及び前記別のIDのサブクエリを単一のサブクエリに結合するステップを更に有する、請求項2に記載の方法。
  4. 前記サブクエリ形成ステップは、各単一値トリプルパターン要素又は1より多い結果基準に現れる変数IDについて、該単一値トリプルパターン要素又は変数IDを有する全ての結果基準のコピーを有するサブクエリを形成するステップを更に有する、請求項1乃至3のいずれか一項に記載の方法。
  5. 前記クエリ結果準備ステップは、可変値トリプルパターン要素として同じ変数IDを有する2以上のトリプルパターンを有する形成されたサブクエリの各々について、
    前記記憶サーバの各々から、前記2以上のトリプルパターンのうちの少なくとも1つを満たす全てのトリプルのコピーを有する個々のトリプルパターン結果を受信するステップと、
    前記受信した個々のトリプルパターン結果から、該サブクエリのサブクエリ結果として格納されたトリプルのコピーを除去するステップと、
    前記サブクエリの結果基準を満たすトリプルについて残りの受信した個々のトリプルパターン結果を検索し、該トリプルをサブクエリ結果として格納するステップと、
    を有する、請求項1乃至4のいずれか一項に記載の方法。
  6. 前記分割ステップ、サブクエリ形成ステップ、サブクエリ発行ステップ、及びクエリ結果準備ステップは、中央データベース制御部で実行される、請求項1乃至5のいずれか一項に記載の方法。
  7. 各記憶サーバで、
    前記形成されたサブクエリを受信するステップと、
    前記受信したサブクエリの各々の結果基準を満たすトリプルについて、前記記憶サーバに格納されたトリプルをスキャンするステップと、
    各受信したサブクエリについて、前記サブクエリの結果基準を満たすトリプルのコピーを、前記サブクエリのサブクエリ結果として、他の記憶サーバ及び/又は前記中央データベース制御部へ転送するステップと、
    を更に有する請求項1乃至6のいずれか一項に記載の方法。
  8. 前記スキャンするステップは、
    前記受信した形成されたサブクエリの中からそれぞれ異なるトリプルパターンを識別するステップと、
    より多くの可変値トリプルパターン要素を有するトリプルパターンがより少ない可変値トリプルパターン要素を有するトリプルパターンより低く優先順位付けされるよう、前記識別された異なるトリプルパターンを優先順位付けするステップと、
    優先度の順に、前記トリプルパターン毎に、中間トリプル結果セットを得るために、前記トリプルパターンに一致するトリプルについて、前記記憶サーバに格納されたトリプルをスキャンするステップと、
    1より多いトリプルパターンを有するサブクエリ内の各トリプルパターンの前記中間トリプル結果セットを結合することにより、及びフィルタリング条件を有するサブクエリ内の各トリプルパターンの前記中間トリプル結果セットにフィルタリング条件を適用することにより、サブクエリ結果を得るステップと、
    を更に有する請求項7に記載の方法。
  9. 前記記憶サーバの各々で、可変値トリプルパターン要素として同じ変数IDを指定する2以上のトリプルパターンを有するサブクエリについて、前記2以上のトリプルパターンのうちの1つを第1のトリプルパターンとして割り当てるステップと、他の記憶サーバの各々から前記サブクエリ内の1又は複数の他のトリプルパターンの各々について中間トリプル結果セットを得るステップと、前記記憶サーバにある前記第1のトリプルパターンに一致すると分かった各トリプルについて、前記サブクエリを満たすトリプルのペア又はグループを識別するために、前記の得られた中間トリプル結果セットをスキャンするステップと、を更に有する請求項8に記載の方法。
  10. 前記クエリ結果準備ステップは、前記クエリに従って前記サブクエリの各々のサブクエリ結果を結合することにより、クエリ結果を得るステップを有する、請求項1乃至9のいずれか一項に記載の方法。
  11. 前記クエリはSPARQLクエリである、請求項1乃至10のいずれか一項に記載の方法。
  12. トリプルとしてエンコードされたグラフデータのデータベースのためのデータベース制御部であって、各トリプルは3つのトリプル要素を有し、複数の記憶サーバに格納され、前記データベース制御部は、
    クエリを複数の結果基準に分けるよう構成されるクエリ分割モジュールであって、前記結果基準は、一部又は全部の検索結果が一致しなければならない複数のトリプルパターンを有し、各トリプルパターンは、それぞれ3つのトリプル要素のうちの異なる1つに対応する3つのトリプルパターン要素を有し、
    各トリプルパターン要素は、
    トリプルが前記トリプルパターンに一致しなければならない対応するトリプル要素の単一の値を指定する単一値トリプルパターン要素、又は
    変数IDを指定する可変値トリプルパターン要素であって、前記IDは前記トリプルパターンに一致するトリプルの対応するトリプル要素の値に起因する、可変値トリプルパターン要素、である、クエリ分割モジュールと、
    同じ単一値トリプルパターン要素を有する又は可変値トリプルパターン要素として同じ変数IDを指定する2以上のトリプルパターンをそれぞれ有する1又は複数のサブクエリを形成するよう構成されるサブクエリ形成モジュールと、
    前記複数の記憶サーバの各々に各形成されたサブクエリを発行するよう構成されるサブクエリ発行モジュールと、
    少なくとも1つの形成されたサブクエリを前記複数の記憶サーバからのサブクエリ結果として受信し、前記クエリに対する応答としてクエリ結果を準備するために前記サブクエリ結果を用いるよう構成されるクエリ結果準備モジュールと、
    を有するデータベース制御部。
  13. 請求項12に記載のデータベース制御部と、前記トリプルを格納する複数の記憶サーバと、を有するデータ記憶システム。
  14. 1又は複数のコンピューティング装置により実行されると、前記1又は複数のコンピューティング装置に請求項1乃至11のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
  15. 1又は複数のコンピューティング装置により実行されると、前記1又は複数のコンピューティング装置に請求項12に記載のデータベース制御部又は請求項13に記載のデータ記憶システムとして動作させる、コンピュータプログラム。
JP2014065175A 2013-03-28 2014-03-27 グラフデータベースクエリ処理方法及び装置 Ceased JP2014194772A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP13161804.3 2013-03-28
EP13161804.3A EP2784697A1 (en) 2013-03-28 2013-03-28 Graph database query handling method and apparatus

Publications (1)

Publication Number Publication Date
JP2014194772A true JP2014194772A (ja) 2014-10-09

Family

ID=48044654

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014065175A Ceased JP2014194772A (ja) 2013-03-28 2014-03-27 グラフデータベースクエリ処理方法及び装置

Country Status (3)

Country Link
US (1) US9454567B2 (ja)
EP (1) EP2784697A1 (ja)
JP (1) JP2014194772A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101633055B1 (ko) * 2015-04-28 2016-06-23 (주) 다이퀘스트 Sparql에서의 인덱스 시퀀스들의 조인 방법 및 장치
JP2016521419A (ja) * 2013-05-03 2016-07-21 フェイスブック,インク. オンライン・ソーシャル・ネットワーク上での検索クエリ対話
US9690826B2 (en) 2013-05-03 2017-06-27 Facebook, Inc. Using inverse operators for queries
JP2019144853A (ja) * 2018-02-21 2019-08-29 キヤノン株式会社 墨消し処理を行う情報処理装置、その制御方法及びプログラム
US10402412B2 (en) 2013-05-03 2019-09-03 Facebook, Inc. Search intent for queries
JP2021111419A (ja) * 2020-01-15 2021-08-02 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド グラフデータベースのトラバース方法、装置、機器及び記憶媒体

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140310302A1 (en) * 2013-04-12 2014-10-16 Oracle International Corporation Storing and querying graph data in a key-value store
US10360215B1 (en) * 2015-03-30 2019-07-23 Emc Corporation Methods and apparatus for parallel evaluation of pattern queries over large N-dimensional datasets to identify features of interest
US11222072B1 (en) * 2015-07-17 2022-01-11 EMC IP Holding Company LLC Graph database management system and method for a distributed computing environment
US11256746B2 (en) 2016-04-25 2022-02-22 Oracle International Corporation Hash-based efficient secondary indexing for graph data stored in non-relational data stores
JP6282714B1 (ja) * 2016-11-25 2018-02-21 ヤフー株式会社 算出装置、算出方法、及び算出プログラム
US10394895B2 (en) * 2016-11-28 2019-08-27 International Business Machines Corporation Identifying relationships of interest of entities
US10496647B2 (en) * 2017-04-18 2019-12-03 Microsoft Technology Licensing, Llc Delay detection in query processing
US10445319B2 (en) 2017-05-10 2019-10-15 Oracle International Corporation Defining subgraphs declaratively with vertex and edge filters
CN110309334B (zh) * 2018-04-20 2023-07-18 腾讯科技(深圳)有限公司 图数据库的查询方法、系统、计算机设备和可读存储介质
US20230009946A1 (en) * 2021-07-12 2023-01-12 International Business Machines Corporation Generative relation linking for question answering

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130262443A1 (en) * 2012-03-30 2013-10-03 Khalifa University of Science, Technology, and Research Method and system for processing data queries
WO2013175611A1 (ja) * 2012-05-24 2013-11-28 株式会社日立製作所 データの分散検索システム、データの分散検索方法及び管理計算機

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100902650B1 (ko) 2008-01-04 2009-06-15 숭실대학교산학협력단 온톨로지 기반 하이브리드 추론 시스템 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130262443A1 (en) * 2012-03-30 2013-10-03 Khalifa University of Science, Technology, and Research Method and system for processing data queries
WO2013175611A1 (ja) * 2012-05-24 2013-11-28 株式会社日立製作所 データの分散検索システム、データの分散検索方法及び管理計算機

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
QUILITZ, BASTIAN AND LESER, ULF: ""Querying Distributed RDF Data Sources with SPARQL"", THE SEMANTIC WEB: RESEARCH AND APPLICATIONS, ESWC 2008, JPN6017038250, pages 524 - 538, ISSN: 0003657356 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017216004A (ja) * 2013-05-03 2017-12-07 フェイスブック,インク. 検索クエリ対話
US10402412B2 (en) 2013-05-03 2019-09-03 Facebook, Inc. Search intent for queries
US9471692B2 (en) 2013-05-03 2016-10-18 Facebook, Inc. Search query interactions on online social networks
JP2016224981A (ja) * 2013-05-03 2016-12-28 フェイスブック,インク. オンライン・ソーシャル・ネットワーク上での検索クエリ対話
US9690826B2 (en) 2013-05-03 2017-06-27 Facebook, Inc. Using inverse operators for queries
US9697291B2 (en) 2013-05-03 2017-07-04 Facbook, Inc. Search query interactions
JP2016521419A (ja) * 2013-05-03 2016-07-21 フェイスブック,インク. オンライン・ソーシャル・ネットワーク上での検索クエリ対話
US10423687B2 (en) 2013-05-03 2019-09-24 Facebook, Inc. Search query interactions
US10417222B2 (en) 2013-05-03 2019-09-17 Facebook, Inc. Using inverse operators for queries
KR101633055B1 (ko) * 2015-04-28 2016-06-23 (주) 다이퀘스트 Sparql에서의 인덱스 시퀀스들의 조인 방법 및 장치
JP2019144853A (ja) * 2018-02-21 2019-08-29 キヤノン株式会社 墨消し処理を行う情報処理装置、その制御方法及びプログラム
JP7140507B2 (ja) 2018-02-21 2022-09-21 キヤノン株式会社 墨消し処理を行う情報処理装置、その制御方法及びプログラム
JP2021111419A (ja) * 2020-01-15 2021-08-02 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド グラフデータベースのトラバース方法、装置、機器及び記憶媒体
JP7150902B2 (ja) 2020-01-15 2022-10-11 ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド グラフデータベースのトラバース方法、装置、機器及び記憶媒体
US11734076B2 (en) 2020-01-15 2023-08-22 Beijing Baidu Netcom Science And Technology Co., Ltd. Method and apparatus for traversing graph database based on allocation of threads to operators

Also Published As

Publication number Publication date
EP2784697A1 (en) 2014-10-01
US9454567B2 (en) 2016-09-27
US20140297621A1 (en) 2014-10-02

Similar Documents

Publication Publication Date Title
JP2014194772A (ja) グラフデータベースクエリ処理方法及び装置
Zhang et al. EAGRE: Towards scalable I/O efficient SPARQL query evaluation on the cloud
Özsu A survey of RDF data management systems
JP6160277B2 (ja) リコンシリエーション処理を実行する方法、制御部、プログラム及びデータ記憶システム
Hammoud et al. DREAM: distributed RDF engine with adaptive query planner and minimal communication
JP5765416B2 (ja) 分散ストレージシステムおよび方法
US20140344287A1 (en) Database controller, method, and program for managing a distributed data store
US7577637B2 (en) Communication optimization for parallel execution of user-defined table functions
JP6281225B2 (ja) 情報処理装置
CN103678520A (zh) 一种基于云计算的多维区间查询方法及其系统
Chen et al. SparkRDF: elastic discreted RDF graph processing engine with distributed memory
CN107784030B (zh) 一种处理连接查询的方法及装置
Goasdoué et al. CliqueSquare: efficient Hadoop-based RDF query processing
CN104731969A (zh) 分布式环境下海量数据连接聚集查询方法、装置和系统
JP2004110219A (ja) データ処理システム及びジョイン処理方法
CN114328576A (zh) 一种基于星际文件系统的分布式协同查询处理系统
Khelil et al. Combining graph exploration and fragmentation for scalable RDF query processing
CN116541427B (zh) 数据查询方法、装置、设备及存储介质
US11922222B1 (en) Generating a modified component for a data intake and query system using an isolated execution environment image
Nam et al. A parallel query processing system based on graph-based database partitioning
JP2018049394A (ja) データベース管理装置、データベース管理方法、およびデータベース管理プログラム
Rababa et al. Optimizations for filter-based join algorithms in MapReduce
US11720591B1 (en) Virtual metrics
Kondylakis et al. Enabling joins over cassandra NoSQL databases
EP1879119A1 (en) Negative key mapping

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171010

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171211

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180605

A045 Written measure of dismissal of application [lapsed due to lack of payment]

Free format text: JAPANESE INTERMEDIATE CODE: A045

Effective date: 20181030