(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024081623
(43)【公開日】2024-06-18
(54)【発明の名称】分散グラフデータベースの要約生成
(51)【国際特許分類】
G06F 16/28 20190101AFI20240611BHJP
【FI】
G06F16/28
【審査請求】未請求
【請求項の数】15
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023205231
(22)【出願日】2023-12-05
(31)【優先権主張番号】22306798
(32)【優先日】2022-12-06
(33)【優先権主張国・地域又は機関】EP
(71)【出願人】
【識別番号】500102435
【氏名又は名称】ダッソー システムズ
【氏名又は名称原語表記】DASSAULT SYSTEMES
(74)【代理人】
【識別番号】110000752
【氏名又は名称】弁理士法人朝日特許事務所
(72)【発明者】
【氏名】エリック ヴァレット・グレニソン
(72)【発明者】
【氏名】アレクサンドラ デニュー
(72)【発明者】
【氏名】フレデリック ラベイト
(72)【発明者】
【氏名】アルバン ローラー
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175CA05
5B175FB01
(57)【要約】 (修正有)
【課題】RDFタプルの組を含むグラフデータベースの要約を生成するコンピュータ実装方法、コンピュータプログラム、コンピュータ可読記憶媒体及びシステムを提供する。
【解決手段】方法は、グラフデータベースを取得するステップS10と、確率的フィルタの組を含む要約を生成するステップS20と、を含む。組の各確率的フィルタは、グラフデータベースに存在する少なくとも1つのRDFタプルが、偽陽性の可能性を有する確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを決定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
一組のRDFタプルを含むグラフデータベースの要約を生成するためのコンピュータ実装方法であって、
グラフデータベースを取得するステップと、
確率的フィルタの組を含む要約を生成するステップであって、前記組の各確率的フィルタは、前記グラフデータベース内に存在する少なくとも1つのRDFタプルが、偽陽性の可能性を有する前記確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを決定する、要約を生成するステップと
を含むコンピュータ実装方法。
【請求項2】
前記確率的フィルタの組が、前記RDFタプルの組の各述語(P)について、
第1の基本グラフパターン((S, P, ?O))に対応する第1のフィルタであって、RDFタプルの前記組内の前記述語及び任意の主語を含む第1のフィルタ、及び/又は
第2の基本グラフパターン((?S, P, O))に対応する第2のフィルタであって、RDFタプルの前記組内の前記述語及び任意の目的語を含む第2のフィルタ
を含む
請求項1に記載のコンピュータ実装方法。
【請求項3】
前記確率フィルタの組が、
RDFタプルの前記組の各述語(P)について、前記述語並びにRDFタプルの前記組内の任意の主語及び/又は目的語を含む第3の基本グラフパターンに対応する第3のフィルタ、好ましくは、前記主語及び/又は前記目的語はURIのタイプである第3のフィルタ
を含む
請求項1に記載のコンピュータ実装方法。
【請求項4】
前記確率的フィルタの組が、
前記グラフデータベース内の各目的語の非URIタイプごとに、前記各目的語を含む、第4の基本グラフパターン(?S, ?P, O)に対応する第4のフィルタ
を含む
請求項1又は3に記載のコンピュータ実装方法。
【請求項5】
前記確率的フィルタの組が、
第5の基本グラフパターン((S, ?P, ?O))に対応する第5のフィルタであって、主語として空白ノードを含む題5のフィルタ
を含む
請求項1、3、又は4に記載のコンピュータ実装方法。
【請求項6】
前記要約が、さらに、
各述語に対する前記グラフデータベース内のRDFタプルのそれぞれの数を示す値、及び/又は
前記組の各確率フィルタの役割を定義するメタデータ
を含む
請求項1~5のいずれか一項に記載のコンピュータ実装方法。
【請求項7】
前記組の各確率的フィルタが、
第1のサイズの配列
1つ以上のハッシュ関数
を含み、
各確率的フィルタは、前記グラフデータベース内に存在する少なくとも1つのRDFタプルが確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを、
第2のサイズのそれぞれの出力を得るために、前記グラフデータベースの各RDFタプルを前記確率的フィルタの各ハッシュ関数に入力すること、及び
それぞれの出力を配列に格納すること
により決定するように構成される
請求項1~6のいずれか一項に記載のコンピュータ実装方法。
【請求項8】
前記1つ又は複数のハッシュ関数の前記数が、前記第2のサイズに基づいており、好ましくは、前記第2のサイズに比例し、より好ましくは、前記第2のサイズは、10~18ビットの間であり、さらにより好ましくは、前記第2のサイズは、15ビットである
請求項7に記載のコンピュータ実装方法。
【請求項9】
前記グラフデータベースが、パーティションの組を備えるパーティショニングされたグラフデータベースであり、
前記生成するステップが、前記パーティショニングされたグラフデータベースの各パーティションについて要約を生成するステップをさらに含む
請求項1~9のいずれか一項に記載のコンピュータ実装方法。
【請求項10】
請求項9に記載のコンピュータ実装方法によって生成された、パーティショニングされたグラフデータベースの要約の集合を使用するコンピュータ実装方法であって、
前記パーティショニングされたグラフデータベース及び前記パーティショニングされたグラフデータベースの前記生成された要約の組を取得するステップと、
1つ又は複数の基本グラフパターンを含むクエリを、前記パーティショニングされたグラフデータベースによって受信するステップと、
基本グラフパターンごとに、前記生成された要約の組に基づいて、パーティションの前記組の1つ又は複数のパーティションを識別するステップであって、前記1つ又は複数のパーティションが、クエリに答える、前記取得されたパーティショニングされたグラフデータベースのすべてのRDFタプルを備える、識別するステップと、
一組の識別された1つ以上のパーティション上で前記受信したクエリを実行するステップと
を有するコンピュータ実装方法。
【請求項11】
前記生成された組の要約に基づいて、前記組のパーティションの1つ以上のパーティションを識別するステップが、
前記生成された組の要約の各々に対し、前記要約のパーティションに存在する少なくとも1つのRDFタプルが、前記確率的フィルタの前記それぞれの基本グラフパターンに対応するかどうか、前記要約の前記確率的フィルタの組の各フィルタによって決定するステップ
を含む請求項10に記載のコンピュータ実装方法。
【請求項12】
1つ又は複数のパーティションを識別した後、前記組の前記識別された1つ又は複数のパーティション上で前記受信されたクエリを実行する前に、
前記基本グラフパターンの組の1つの基本グラフパターンについて、識別された1つ又は複数のパーティションが空の組を形成するかどうかを決定するステップと、
前記識別された1つ又は複数のパーティションが空集合を形成するとき、前記基本グラフパターンの集合から前記基本グラフパターンを除去することによって、受信されたクエリのそれぞれのクエリプランを最適化するステップと
をさらに備える、請求項9又は10に記載のコンピュータ実装方法。
【請求項13】
請求項1~9のいずれか一項に記載のコンピュータ実装方法及び/又は請求項10~12のいずれか一項に記載のコンピュータ実装方法を実行するための命令を含むコンピュータプログラム。
【請求項14】
請求項13に記載のコンピュータプログラムを記録したコンピュータ可読記憶媒体。
【請求項15】
請求項13に記載のコンピュータプログラムが記録されたメモリに結合されたプロセッサを含むシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータプログラム及びシステムの分野に関し、より具体的には、グラフデータベースの要約を生成するための方法、システム、及びプログラムに関する。
【背景技術】
【0002】
物体の設計、エンジニアリング及び製造のために、多数のシステム及びプログラムが市場に提供されている。CADはコンピュータ支援設計(Computer-Aided Design)の頭字語であり、たとえば、オブジェクトを設計するためのソフトウェアソリューションに関する。CAMは、コンピュータ支援製造(Computer-Aided Manufacturing)の頭字語であり、例えば、製造プロセス及び動作を定義するためのソフトウェアソリューションに関する。CAMは、コンピュータ支援製造(Computer-Aided Manufacturing)の頭字語であり、例えば、製造プロセス及び動作を定義するためのソフトウェアソリューションに関する。このようなコンピュータ支援設計システムでは、技術の効率の点でグラフィカルユーザーインターフェイスが重要な役割を果たす。これらの技術は、製品ライフサイクル管理(PLM)システム内に組み込まれてもよい。PLMとは、企業が製品データを共有し、共通の処理を適用し、企業知識を活用して、長期的な企業のコンセプトを越えて、コンセプトから生涯にわたる製品の開発に役立てることを支援するビジネス戦略のことをいう。ダッソー・システムズが(CATIA、ENOVIA、DELMIAの商標のもと)提供するPLMソリューションでは、製品エンジニアリングの知識を編成するエンジニアリングハブと、製造エンジニアリングの知識を管理する製造ハブと、エンジニアリングハブ及び製造ハブへの企業の統合及び接続とを可能にする企業ハブが提供される。全体として、システムは最適化された製品定義、製造準備、生産、及びサービスを駆動する動的な知識ベースの製品作成及び意思決定サポートを可能にするために、製品、プロセス、リソースをリンクするオープンオブジェクトモデルを提供する。
【0003】
グラフデータベースは、ディスク又はSSD上にデータを記憶するデータベースとは対照的に、インメモリデータベース、すなわち、主にデータ記憶のためにメモリに依存する専用ビルトデータベースにおけるアプリケーションに特に適合される。一般的な用途では、RDFグラフデータベースは、何十億個ものタプルとテラバイトの大きさの大規模なデータセットを扱うことができる必要がある(例えば、Microsoft Academic Knowledge Graph.Retrieved May 10、2022、https://makg.org/rdf-dumpsから、80億を超えるトリプルでは、標準的なTTLフォーマットで1.2TBのストレージを必要とする)。そのような大規模データベースの性能及びスケーラビリティを維持するために、データが異なる物理的位置にわたって記憶される分散型アプローチが必要とされる。物理的位置にわたるデータの分布は、データベースのいくつかの態様、又は受信されたクエリ(例えば、書き込み又は読み取り)に対するレスポンスを最適化するようにすることができる。一般に、そのような分布は、必ずしも知られていないか、又は強制され得ない。概して、そしてクエリ回答の最適化に対処するために、従来技術の方法は、大規模なデータベースの要約技術を、クエリに回答する際の代表的な代用として利用する。
【0004】
文献HOSE, Katja et SCHENKEL, Ralf. “Towards benefit-based RDF source selection for SPARQLqueries.” In: Proceedings of the 4th International Workshop on Semantic Web Information Management. 2012. p. 1-8は、線源の重複を考慮に入れたスケッチベースのクエリ経路指定方式を提案する。提案された戦略は、スケッチを使用し、所与の予算のために可能な限り多くの結果を取り出すか、又は結果のすべて又はある割合を取り出すために必要な要求の数を最小化するかのいずれかに向けて調整されてもよい。
【0005】
文献STEFANONI, Giorgio, MOTIK, Boris, and KOSTYLEV, Egor V. “Estimating the cardinality of conjunctive queries over RDF data using graph summarization.” In: Proceedings of the 2018 World Wide Web Conference. 2018. p. 1043-1052は、グラフの要約に基づく原則的なカーディナリティ推定技術を開示している。この技法は、可能な世界セマンティックを使用してRDFグラフの要約を解釈し、要約によって表されるすべてのRDFグラフにわたって予想されるカーディナリティを計算するものとして推定問題を形式化する。
【0006】
文献ZOUAGHI, Ishaq, MESMOUDI, Amin, GALICIA, Jorge, et al. “Query optimization for large scale clustered RDF data.” In: DOLAP. 2020. p. 56-65は、グラフベースのクエリ実行を一般的に示す論理構造を提案する。この文献では、元のグラフで検出された依存関係をより適切にキャプチャするために、3つのクラスタについて収集された統計を定義し、これらの論理構造に基づいて実行計画を再定義する。この文書は、カスタマイズされたコストモデルに基づいて、最適な実行計画を選択するためのアルゴリズムを導入する。
【0007】
上述の方法は、拡張性が制限されているか、又は分散グラフデータベースに適用されるように適合されていない。この文脈内で、RDFタプルの組を含むグラフデータベースの要約を生成するための改善された方法が依然として必要とされている。
【発明の概要】
【0008】
したがって、RDFタプルの組を含むグラフデータベースの要約を生成するためのコンピュータ実装方法が提供され、本方法は、グラフデータベースを取得するステップと、確率的フィルタの組を含む要約を生成するステップとを含む。組の各確率的フィルタは、グラフデータベースに存在する少なくとも1つのRDFタプルが、偽陽性の可能性を有する確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを決定する。
【0009】
この方法は、以下のうちの1つ又は複数を含むことができる:
・前記確率的フィルタの組が、前記RDFタプルの組の各述語について、第1の基本グラフパターンに対応する第1のフィルタであって、RDFタプルの前記組内の前記述語及び任意の主語を含む第1のフィルタ、及び/又は第2の基本グラフパターンに対応する第2のフィルタであって、RDFタプルの前記組内の前記述語及び任意の目的語を含む第2のフィルタを含む。
・前記確率フィルタの組が、RDFタプルの前記組の各述語(P)について、前記述語並びにRDFタプルの前記組内の任意の主語及び/又は目的語を含む第3の基本グラフパターンに対応する第3のフィルタ、好ましくは、前記主語及び/又は前記目的語はURIのタイプである第3のフィルタを含む。
・前記確率的フィルタの組が、前記グラフデータベース内の各目的語の非URIタイプごとに、前記各目的語を含む、第4の基本グラフパターン(?S, ?P, O)に対応する第4のフィルタを含む。
・前記確率的フィルタの組が、第5の基本グラフパターンに対応する第5のフィルタであって、主語として空白ノードを含む題5のフィルタを含む。
・前記要約が、さらに、各述語に対する前記グラフデータベース内のRDFタプルのそれぞれの数を示す値、及び/又は前記組の各確率フィルタの役割を定義するメタデータを含む。
・前記組の各確率的フィルタが、第1のサイズの配列、及び1つ以上のハッシュ関数を含み、各確率的フィルタは、前記グラフデータベース内に存在する少なくとも1つのRDFタプルが確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを、
第2のサイズのそれぞれの出力を得るために、前記グラフデータベースの各RDFタプルを前記確率的フィルタの各ハッシュ関数に入力すること、及びそれぞれの出力を配列に格納することにより決定するように構成される。
・前記1つ又は複数のハッシュ関数の前記数が、前記第2のサイズに基づいており、好ましくは、前記第2のサイズに比例し、より好ましくは、前記第2のサイズは、10~18ビットの間であり、さらにより好ましくは、前記第2のサイズは、15ビットである。
・前記グラフデータベースが、パーティションの組を備えるパーティショニングされたグラフデータベースであり、前記生成するステップが、前記パーティショニングされたグラフデータベースの各パーティションについて要約を生成するステップをさらに含む。
【0010】
さらに、上述のグラフデータベースの要約を生成するための、本方法によって生成されたパーティショニングされたグラフデータベースの要約の集合を使用する(又は使用の)コンピュータ実装方法が提供される。この方法は、前記パーティショニングされたグラフデータベース及び前記パーティショニングされたグラフデータベースの前記生成された要約の組を取得するステップと、1つ又は複数の基本グラフパターンを含むクエリを、前記パーティショニングされたグラフデータベースによって受信するステップと、基本グラフパターンごとに、前記生成された要約の組に基づいて、パーティションの前記組の1つ又は複数のパーティションを識別するステップであって、前記1つ又は複数のパーティションが、クエリに答える、前記取得されたパーティショニングされたグラフデータベースのすべてのRDFタプルを備える、識別するステップと、一組の識別された1つ以上のパーティション上で前記受信したクエリを実行するステップとをさらに備える。
【0011】
使用方法は、以下の1つ以上を含んでもよい。
・前記生成された組の要約に基づいて、前記組のパーティションの1つ以上のパーティションを識別するステップが、前記生成された組の要約の各々に対し、前記要約のパーティションに存在する少なくとも1つのRDFタプルが、前記確率的フィルタの前記それぞれの基本グラフパターンに対応するかどうか、前記要約の前記確率的フィルタの組の各フィルタによって決定するステップを含む。
・1つ又は複数のパーティションを識別した後、前記組の前記識別された1つ又は複数のパーティション上で前記受信されたクエリを実行する前に、前記基本グラフパターンの組の1つの基本グラフパターンについて、識別された1つ又は複数のパーティションが空の組を形成するかどうかを決定するステップと、前記識別された1つ又は複数のパーティションが空集合を形成するとき、前記基本グラフパターンの集合から前記基本グラフパターンを除去することによって、受信されたクエリのそれぞれのクエリプランを最適化するステップとを含む。
【0012】
上記の方法及び/又は上記の使用方法を実行するための命令を含むコンピュータプログラムがさらに提供される。
【0013】
さらに、コンピュータプログラムが記録されたコンピュータ可読記憶媒体が提供される。
【0014】
さらに、メモリに結合されたプロセッサ及びを含むシステムが提供され、メモリは、その上に記録されたコンピュータプログラムを有する。
【図面の簡単な説明】
【0015】
【
図2】要約アプローチにおける従来技術の分類を示す。
【
図3】ブルームフィルタの要素当たりのビット数に対する、アクセスされたパーティションの総数及び所望のデータを含むパーティションの数を提示する実験例を示す。
【発明を実施するための形態】
【0016】
図1のフローチャートに関連して、一連のRDFタプルを含むグラフデータベースの要約を生成するコンピュータ実装方法が提案される。本方法は、グラフデータベースを取得するステップと、確率的フィルタの組を含む要約を生成するステップとを含む。その組の各確率的フィルタは、グラフデータベースに存在する少なくとも1つのRDFタプルが、偽陽性の可能性を有する確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを決定する。
【0017】
それ自体知られているように、「グラフデータベースの要約」とは、データベースと比較してサイズが縮小されたグラフデータベースの情報の抽出を意味する。そのような要約は、グラフデータベースのより小さいサイズのグラフの形成であってもよい。グラフデータベースの要約(すなわち、グラフデータベースの要約を提供すること)は、例えば、データベース上のクエリに応答する速度及びI/Oコストを改善するために、クエリエンジンによってデータベースにアクセスする効率的な解決策を提供する。そのような改善は、グラフデータベースの要約が、前記データベースのより小さな要約を調べることによって、データベースに記憶された情報を部分的に閲覧することを可能にするという事実に依拠する。データベースの要約は、前記データベースのアプリケーションに応じて、アプリオリに、又はデータベースの展開中に、要約に記憶された情報の抽出を変更することによって、変更することができる。
【0018】
「偽陽性の可能性」とは、グラフデータベース内に存在する少なくとも1つのRDFタプルがそれぞれの基本グラフパターンに対応するかどうかを決定する偽陽性の可能性を意味する。言い換えれば、本方法は、グラフデータベース内に存在する少なくとも1つのRDFタプルが確率的フィルタのそれぞれの基本グラフパターンに対応すると誤って判定する可能性がある。逆に、本方法は、確率的フィルタのそれぞれの基本グラフパターンに対応する1つのRDFタプルがグラフデータベース内に存在しないと誤って決定することができず、すなわち、決定は、偽陰性の可能性に関係しない。
【0019】
そのような方法は、RDFタプルの組を含むグラフデータベースの要約を生成するための改善された解決策を構成する。本解決策は、確率的フィルタの組を含むグラフデータベースの要約を生成することによって、そのような改善された解を得る。そのような確率的フィルタの組は、グラフデータベースの任意の標準構造(すなわち、スキーマ)を課す必要なしに、大規模データベースのスケーラブルな要約を大幅に小さいサイズで提供する。したがって、確率的フィルタの各組は、グラフデータベースに存在するRDFタプルに関してのみ生成することができるので、それらが確率的フィルタのそれぞれの基本グラフパターンに対応する場合、本方法は、分散データベースの区分化のいかなる情報も提供されることなく、分散グラフデータベースに適用することができる。「分散データベース」とは、データが、例えばシステム管理者によって、異なる物理的位置にわたって(すなわち、異なるパーティション内に)記憶されるデータベースを意味する。
【0020】
特に、生成された要約がグラフデータベース内に存在する少なくとも1つのRDFタプルが確率的フィルタのそれぞれの基本グラフパターンに対応するかどうか、偽陽性の可能性を用いて決定することができるので、本方法は、クエリエンジンによってグラフデータベース上のクエリに答える際の最適化を提供する。言い換えれば、要約は、決定において偽陰性の可能性を除外するので、本方法は、該データベースの要約が、その組のそれぞれの確率的フィルタのそれぞれの基本グラフパターンに対応する該グラフデータベース中に少なくとも1つのRDFタプルが存在しないことを示す場合、RDFグラフデータベース上でクエリ(又はそれに対応する基本グラフパターン)を実行する必要性を除去することによって、クエリ回答を改善する。これは、クエリに応答する際にクエリエンジンによって生成された要約を活用することが、クエリのためのデータベースへの不必要なアクセスの著しい低減(又は場合によっては排除)につながるので、特に有益である。「クエリのための不必要なアクセス」とは、そのクエリに答えるのに寄与しないアクセスを意味する。このような不必要なアクセスは、クエリに応答するためのそれぞれのデータが1つ以上の物理的格納場所(又は等価的にパーティション)に存在せず、それによって前記物理的格納場所にクエリすることが前記クエリに応答することに寄与しない分散(グラフ)データベースのケースにおいて特に重要であってもよい。
【0021】
「データベース」とは、検索及び検索のために編成されたデータ(すなわち、情報)の任意の集合(例えば、グラフ指向データベース)を意味する。当技術分野で知られているように、グラフ指向データベースは、グラフ理論を使用するオブジェクト指向データベースであり、したがって、ノード及び円弧を用いて、データを表現及び記憶することを可能にする。グラフは、ストア内のデータアイテムを、ノードとエッジの集合に関連付け、エッジは、ノード間のリレーションシップを表す。リレーションシップにより、ストア内のデータを直接リンクさせることができ、多くの場合、1回の操作で検索することができる。グラフデータベースは、データ間の関係を優先順位として保持する。これは、暗黙的な接続によってデータをリンクする他のデータベースモデル(たとえば、リレーショナルデータベース)とは異なる。グラフデータベースは、メモリに格納されると、コンピュータによる迅速な検索及び検索を可能にする。特に、グラフデータベースは、様々なデータ処理操作に関連する関係の迅速な検索、修正、及び削除のために構造化される。グラフ指向データベースはグラフデータベースとも呼ばれ、「グラフ指向データベース」及び「グラフデータベース」という表現は同義である。
【0022】
例では、グラフデータベースは、RDFグラフデータベースであってもよい。RDFグラフは、グラフの記憶及び検索に使用される従来のデータモデルである。RDFグラフは、有向のラベル付きグラフデータフォーマットである。このようなフォーマットは、ウェブにおける情報を表現するために広く使用されている。標準仕様は、情報のRDF表現をグラフとして指定するためにW3Cによって公開されており、例えば、”RDF1.1 Concepts and Abstract Syntax”, W3C Recommendation 25 February 2014(又は、それに加えて、RDFスターのドラフトバージョン)を参照されたい。RDFグラフデータベースは、数十億のタプルを有することができ、例えば、UniProtデータセットは、タンパク質配列及び機能情報のリソースである。
【0023】
使用される抽象構文のコア構造は、それぞれが述語を含むタプルの組である。そのようなRDFタプルの組は、RDFグラフと呼ばれる。
【0024】
例えば、RDFタプルは、ノード及び辺を含む3つ又は4つの要素を含むことができる。例では、各RDFタプル(又は各RDFタプルの要素)は、主語、述語、及び目的語を含むトリプルであってもよい。そのような実例では、RDFグラフは、それぞれのトリプルがノード-アーク-ノード結合として表される、ノード及び有向アーク図として視覚化されてもよい。代替的に、RDFトリプルは、主語及び目的語である2つのノードと、述語であるそれらを接続する円弧とによって視覚化されてもよい。
【0025】
例では、RDFタプルは、RDFクワッドであってもよい。RDFクワッドは、RDFトリプルにグラフラベルを追加することによって得ることができる。そのような例では、RDFタプルは、RDFグラフを含む。標準仕様は、RDFクワッド(Nクワッドとも呼ばれる)を指定するためにW3Cによって公開されており、例えば、“RDF1.1 N-Quads, A line-based syntax for RDFdatasets”, W3C Recommendation 25 February 2014を参照されたい。RDFクワッドは、RDFトリプルにグラフ名を追加することによって得ることができる。グラフ名は、空(すなわち、デフォルト又は無名グラフ)又はIRI(例えば、述語)のいずれかであってもよい。各クワッドのグラフ名は、クワッドがデータセットの一部であるグラフである。以下では、RDFタプル(又はタプル)という用語は、一方又は他方の使用が明示的に言及されない限り、RDFトリプル又はRDFクワッドを無差別に指す。
【0026】
グラフデータベースのクエリエンジンに考えられる最適化は、グラフデータベースがオープンワールド又はクローズドワールドと対話しているという仮定によって影響を受ける。それ自体知られているように、知識表現のために使用される論理の形式的システムにおいて、オープンワールド仮定(OWA)は、文の真理値が真であることが知られているかどうかにかかわらず真であり得るという仮定である。それは、クローズドワールドの仮定とは逆であり、真であると言う文は真であることが知られている。一方、クローズドワールドシステムは、すべて(例えば、フレーム上のスロット、OOクラス上の分野、又はDB内の列)を配置することを要求する。OWAはデフォルトで不完全な情報を想定しており、意図的に過小指定されており、他のユーザーが再利用及び拡張できるようになっている。セマンティックウェブは、再利用可能な形態で知識及びデータが分散されたコンピュータ理解可能なウェブのビジョンであり、セマンティックウェブに対するW3C推奨であるRDFは、オープンワールド仮定に従う。これは、データモデリング及びデータ記憶におけるより大きな柔軟性を可能にする。ただし、SQLを使用したリレーショナルモデルと同様に、クローズドワールド仮定の制約は、データの格納方法に関する詳細を提供するため、クエリの最適化に役立つ。例えば、クエリはSPARQLクエリである。SPARQLは、RDFデータをクエリするためのW3C推奨であり、RDFトリプルのトリプルパターンの上に構築されたグラフマッチング言語である。SPARQLは、データがRDFとしてネイティブに格納されているか、ミドルウェアを介してRDFとして表示されているかにかかわらず、さまざまなデータソース間でクエリを表現できるRDFデータ用のクエリである。SPARQLは主にグラフのホモモルフィズムに基づいている。グラフのホモモルフィズムは、2つのグラフ間のマッピングで、それらの構造を尊重する。より具体的には、隣接する頂点を隣接する頂点にマッピングする2つのグラフの頂点セット間の関数である。
【0027】
SPARQLには、必須及び任意選択のグラフパターンとその接続及び分離を照会する能力が含まれている。また、集約、サブクエリ、否定、表現による値の作成、拡張可能な値のテスト、抽出側RDFグラフによるクエリの制約もサポートしている。RDFトリプルのトリプルパターンとは、それぞれの主語、述語、又は目的語が(クエリの)可変であり得るRDFトリプルを意味する。つまり、SPARQLクエリは、SPARQLで考えられる8 つのトリプルパターンに応答する必要がある。このような8つのトリプルパターンには、(S, P, O)、(S, P, O)、(S,P, ?O)、(S, ?P, ?O)、(?S, P, O)、(?S, ?P,O)、(?S,P, ?O)、(?S,P, ?O)、及び(?S, ?P, ?O)が含まれ、これらの変数の前に記号?が付されている。変数は、トリプルパターンの出力であり、SPARQLクエリの出力であってもよい。いくつかの実施形態では、変数は、選択クエリの出力であってもよい。SPARQLクエリの出力は、変数(例えば、総和のようなアグリゲータ)を使用して構築されてもよい。クエリ内の変数は、グラフ準同型(すなわち、クエリの結果を得るために必須の中間ノード)を構築するために使用されてもよい。いくつかの実施形態では、クエリ内の変数は、出力にも中間結果にも使用されないことがある。基本グラフパターン(BGP)は、8つのトリプルパターンのうちの1つであってもよい。SPARQLは、いくつかのBGPと、場合によっては他の演算子とを結合することによって、より複雑なクエリを構築することができる。したがって、競合SPARQLエンジンは、少なくとも高速トリプルパターンソリューション及び効率的な結合方法を必要とする。さらに、クエリオプティマイザは、BGPに参加する中間結果の回数を最小限に抑える効率的な実行プランを構築する必要がある。
【0028】
例では、グラフデータベースは、既存のトリプルストアを有する。トリプルストア(RDFストアとも呼ばれる)は、当技術分野で知られているように、セマンティッククエリを介してトリプルを記憶及び検索するための、専用に構築されたデータベースである。トリプルストアは、上述のSPARQLの8つの基本的なトリプルパターンに少なくとも答えることができる。それはまた、トリプルパターンと共にフィルタリング制約(例えば、「x > 5」)に答えることができる。このようなトリプルストアは、クエリエンジンによってSPARQLクエリが実行されるストレージエンジンであると考えられる。ストレージエンジン(「データベースエンジン」とも呼ばれる)は、当技術分野で知られているように、データベース管理システム(DBMS)がデータベースからデータを作成、読み取り、更新及び削除(CRUD)するために使用する基礎となるソフトウェアコンポーネントである。さらに、例では、トリプルストアは、分散データベースである。
【0029】
図1に戻ると、ステップS10において、本方法は、データベースを取得することを含む。「グラフデータベースを取得する」とは、データベースを本方法に提供することを意味する。例では、そのような取得又は提供は、そのデータベースを(例えば、オンラインデータベース又はオンラインクラウドから)ダウンロードすること、又はメモリ(例えば、不揮発性メモリ)からデータベースを取り出すことのいずれかを意味するか、又は含むことができる。
【0030】
ステップS20において、本方法は、確率的フィルタの組を含む要約を生成することを含む。データベースのための「確率的フィルタ」とは、エンティティ又はパターン(例えば、RDFグラフパターン)がデータベース内に存在する確率を決定する統計的指標を意味する。上述のように、組の各確率的フィルタは、グラフデータベースに存在する少なくとも1つのRDFタプルが、偽陽性の可能性を有する確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを決定する。それによって、「確率的フィルタのそれぞれの基本グラフパターン」とは、確率的フィルタがデータベース内に存在する確率を決定するパターンを意味する。言い換えれば、組の各確率的フィルタは、データセット内のその存在を決定するために基本グラフパターンに構成されるか、又は対応する。基本グラフパターン(又はBGP)は、上述した8つのトリプルパターンのうちの1つであってもよい。
【0031】
例では、確率的フィルタの組は、(データベースの)RDFタプルの組の各述語について、述語とRDFタプルの組内の任意の主語とを含む第1の基本グラフパターンに対応する第1のフィルタを含む。言い換えれば、その組内の第1のフィルタは、RDFタプルの組のすべての述語について既知の主語及び既知の述語を有するRDFグラフデータベースの3つのフィルタを返すように構成されるか、又はすべての述語又はPsについてフォーム(S, P, ?O)の基本グラフパターンに対応するクエリを等価的に実行するように構成される。追加又は代替として、確率的フィルタの組は、(データベースの)RDFタプルの組の述語ごとに、述語及びRDFタプルの組内の任意の物体を備える第2の基本グラフパターンに対応する第2のフィルタを備えることができる。言い換えれば、その組内の第2のフィルタは、RDFタプルの組のすべての述語について既知の目的語及び既知の述語を有するRDFグラフデータベースのトリプルを返すように、又はすべての述語又はPについて形式(?S, P, O)の基本グラフパターンに対応するクエリを等価的に実行するように構成される。
【0032】
上記で説明した例のいずれかと組み合わせ可能な例では、確率的フィルタの組は、RDFタプルの組の各述語について、述語と、RDFタプルの組内の任意の主語及び/又は目的語とを備える第3の基本グラフパターンに対応する第3のフィルタを備える。そのような実例では、その組内の第3のフィルタは、RDFタプルの組のすべての述語について既知の述語を有するRDFグラフデータベースのトリプルを返すように、又はすべての述語又はPについて形成の基本グラフパターン(?S, P, ?O)に対応するクエリを等価的に実行するように構成される。好ましい例では、第3のフィルタは、その主語及び/又は目的語がURIのタイプであるとき、そのようなトリプルを戻すように構成される。
【0033】
上記で説明した例のいずれかと組み合わせ可能な例では、確率的フィルタの組は、グラフデータベース内のそれぞれの目的語の非URIタイプごとに、第4の基本グラフパターンに対応する第4のフィルタを備えてもよい。第4の基本グラフパターンは、それぞれの(すなわち、非URI)目的語を備えてもよい。言い換えると、その組内の第4のフィルタは、形式(?S, ?P, O)に対応するクエリを実行するように構成される。ここで、目的語OはURIタイプではない(すなわち、目的語Oはリテラルタイプである)。
【0034】
上記で説明した例のいずれかと組合せ可能な例では、確率的フィルタの組は、第5の基本グラフに対応する第5のフィルタを備えてもよい。第5の基本グラフパターンは、主語として空白ノードを含む。それ自体知られているように、RDFでは、空白ノード(bnodeとも呼ばれる)は、URI又はリテラルが与えられないリソースを表すRDFグラフ内のノードであり、(RDF標準による)RDFトリプルの主語又は目的語としてのみ使用することができる。言い換えると、組の第5のフィルタは、Sが空白ノードである場合、フォーム(S, ?P, ?O)の基本的なグラフパターンに対応するクエリを実行するように構成される。
【0035】
例では、(生成された)要約は、各述語について、グラフデータベース内のRDFタプルのそれぞれの数を示す値をさらに備えることができる。これは、クエリに関連する述語が存在しない場合に、不必要なアクセス回数を減らすことによって、改善された解決策を構成する。例えば、クエリのパターンがシェイプ(?S,P, ?O)である場合、クエリエンジンは、要約の述語Pのトリプルの個数を表す値を読み取り、その値が0である場合、すなわち、データベース内に述語Pを含むトリプルの個数がない場合、データベースへの接続を回避することができる。そのような値は、以下で説明するように、要約のメタデータ部分に記憶されてもよい。
【0036】
そのような値は、データベース内に存在する述語の追加の要約を提供することによって、方法を改善する。そのような追加の要約は、フィルタの組を適応させるためにさらに使用されてもよい。例えば、本方法は、多数のトリプルを有する述語、例えば、閾値よりも大きい(例えば、データベース内のトリプルの総数の5、10、又は20パーセントよりも大きい)トリプルの数を有する述語について、フィルタをフィルタの組に追加することができる。言い換えれば、フィルタの組は、rdf:typeのためのブルームフィルタを備えるように適合されてもよい。
【0037】
上記で説明した例のいずれかと組み合わせ可能な例では、要約は、組の各確率的フィルタの役割及び/又はデータベースのサイズを定義するメタデータ(又は同等に統計)をさらに備えてもよい。これは、パーティションへの不必要なアクセスの回数を減らすことによって、クエリ回答の最適化における改善された解決策を構成する。メタデータのサイズが小さい(たとえば、しきい値よりも小さい)場合、方法はデータベースへのアクセスを回避することができるので、そのような減少が達成される。メタデータは、メモリ内の組の各確率的フィルタの位置を参照するデータを含むことができる。代替的に又は追加的に、メタデータは、データベースに関する情報、例えば、バージョン、要約内の述語の数、及び/又は要約内の(データ)タイプの数を含むことができる。さらに代替的に又は追加的に、メタデータは、比較演算子をサポートする(データ)タイプについて、データベース内のデータタイプのそれぞれの最小値及びそれぞれの最大値を備えることができる。そのようなそれぞれの最小/最大値は、さらなるフィルタリングを可能にし、それによって、データベースへの不必要なアクセスのさらなる低減を可能にする。本方法は、クエリエンジンが述語メタデータを使用して、データベース上の目的語のそれぞれの最小値及び最大値を見つけるときに、このようなさらなるフィルタリングを達成することができ、したがって、本方法は、目的語の値が、それぞれの最小値及びそれぞれの最大値によって定義される範囲内にない場合、データベースへの不必要なアクセスを回避することを可能にする。
【0038】
例では、組の各確率的フィルタは、第1のサイズの配列と、1つ又は複数のハッシュ関数とを備えてもよい。各確率的フィルタは、グラフデータベース内に存在する少なくとも1つのRDFタプルが確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを決定するように構成される。各確率的フィルタは、この決定を、グラフデータベースの各RDFタプルを確率的フィルタの各ハッシュ関数に入力して、第2のサイズのそれぞれの出力を取得し、配列にそれぞれの出力を記憶することにより行う。例では、第2のサイズは、第1のサイズよりも小さいか、又は第1のサイズに等しく、それによって、本方法は、必要とされる記憶に関して、効率的に生成される要約を構成する。
【0039】
例では、1つ又は複数のハッシュ関数の数は、第2のサイズに基づく。いくつかの好ましい例では、1つ又は複数のハッシュ関数の数は、第2のサイズに比例する。いくつかのより好ましい例では、第2のサイズは、10~18ビットであり、さらにより好ましくは、第2のサイズは、15ビットである。
【0040】
例では、(生成された)要約は、フィルタバッファと、位置配列とを備えてもよい。フィルタバッファは、フィルタの組の連結を備えることができ、位置配列は、フィルタバッファ内の各フィルタのそれぞれの位置を備えることができる。例では、位置配列は、上述のように、要約のメタデータの一部であってもよい。
【0041】
例では、フィルタの組のうちの少なくとも1つのフィルタは、ブルームタイプである。それ自体知られているように、ブルームフィルタは、空間効率の良い確率的データ構造であり、これは、要素が組のメンバであるかどうかをテストするために使用される。ブルームフィルタは、(テストの結果として)偽陽性一致を提供し得るが、偽陰性は不可能である。
【0042】
例では、グラフデータベースは、パーティションの組を備えるパーティショニングされたグラフデータベースであってもよい。そのような例では、要約を生成することは、パーティショニンググラフデータベースの各パーティションについて要約を生成することをさらに含み得る。そのような例では、組の各要約は、確率的フィルタの組を備え、組の各フィルタは、パーティション内に存在する少なくとも1つのRDFタプルが、偽陽性の可能性を有する基本グラフパターンに対応するかどうかを決定するように構成される。上述のように、パーティショニングされたデータベースは、同等に分散データベースと呼ばれることがあり、パーティショニングされたデータベースの各パーティションは、異なる物理アドレスに記憶されることがある。
【0043】
また、上述のように生成されたパーティショニンググラフデータベースの一組の要約を使用するコンピュータ実装方法も提供される。このような使用法は、パーティショニンググラフデータベースと、パーティショニンググラフデータベースの生成された一組の要約とを取得するステップと、パーティショニンググラフデータベースによって、1つ以上の基本グラフパターンを含むクエリを受信するステップとを含む。パーティショニンググラフデータベース及びパーティショニンググラフデータベースの生成された要約の組を取得するステップは、上述の生成方法に従って実行される。使用する方法は、基本グラフパターンごとに、生成された要約の組に基づいて、パーティションの組の1つ又は複数のパーティションを識別するステップであって、1つ又は複数のパーティションが、クエリに答える、取得されたパーティショニンググラフデータベースのすべてのRDFタプルを備える、識別するステップと、その組の識別された1つ又は複数のパーティション上で受信されたクエリを実行するステップとをさらに備える。
【0044】
例では、要約の生成された組に基づいてパーティションの組の1つ又は複数のパーティションを識別するステップは、要約の生成された組の要約の各要約について、要約のパーティション内に存在する少なくとも1つのRDFタプル(たとえば、トリプル)が確率的フィルタのそれぞれの基本グラフパターンに対応する場合、要約の確率的フィルタの組の各フィルタによって決定するステップを備えてもよい。
【0045】
例示的に、使用する方法は、1つ又は複数のパーティションを識別した後、組の識別された1つ又は複数のパーティション上で受信クエリを実行する前に、基本グラフパターンの組の基本グラフパターンについて、識別された1つ又は複数のパーティションが空の組を形成するかどうかを決定するステップをさらに備えてもよい。例示的に、前記決定することの後に、決定するステップは、識別された1つ又は複数のパーティションが空の組を形成するとき、基本グラフパターンの組から基本グラフパターンを除去することによって、受信されたクエリのそれぞれのクエリプランを最適化するステップをさらに備えてもよい。そのような例では、基本グラフパターンは、(?S, P, O)、(S,P, ?O)及び/又は(?S,P, ?O)のタイプ、又はこれらのタイプの任意の組合せであってもよい。
【0046】
本方法は、コンピュータに実装される。これは、本方法のステップ(又は実質的に全てのステップ)が少なくとも1つのコンピュータ又は任意のシステムによって実行されることを意味する。したがって、本方法のステップはコンピュータによって、場合によっては完全に自動的に、又は半自動的に実行される。例では、方法のステップのうちの少なくともいくつかのトリガがユーザ/コンピュータ対話を介して実行されてもよい。必要とされるユーザ/コンピュータ対話のレベルは予測される自動化のレベルに依存し、ユーザの希望を実施する必要性とバランスをとることができる。例では、このレベルがユーザ定義及び/又は事前定義されてもよい。
【0047】
方法のコンピュータ実装の典型的な例は、この目的のために適合されたシステムを用いて方法を実行することである。システムはメモリに結合されたプロセッサと、グラフィカルユーザインタフェース(GUI)とを備えることができ、メモリには、本方法を実行するための命令を含むコンピュータプログラムが記録されている。メモリはまた、データベースを記憶してもよい。メモリは、そのような記憶のために適合された任意のハードウェアであり、場合によっては、いくつかの物理的に異なる部分(例えば、プログラムのためのもの、及び場合によってはデータベースのためのもの)を含む。
【0048】
図4は、システムがクライアントコンピュータシステム、例えばユーザのワークステーションであるシステムの一例を示す。
【0049】
この例のクライアントコンピュータは、内部通信バス1000に接続された中央処理装置(CPU)1010と、やはりバスに接続されたランダムアクセスメモリ(RAM)1070とを備える。クライアントコンピュータには、さらに、BUSに接続されたビデオRAM 1100に関連するグラフィカルプロセッシングユニット(GPU)1110が設けられている。ビデオRAM 1100は、当技術分野ではフレームバッファとしても知られている。大容量記憶装置コントローラ1020は、ハードドライブ1030などの大容量記憶装置へのアクセスを管理する。コンピュータプログラム命令及びデータを有形に具現化するのに適した大容量メモリデバイスは、例として、EPROM、EEPROM、及びフラッシュメモリデバイスなどの半導体メモリデバイス、内部ハードディスク及びリムーバブルディスクなどの磁気ディスク、光磁気ディスクを含む、すべての形態の不揮発性メモリを含む。前述のいずれも、特別に設計されたASIC(特定用途向け集積回路)によって補足されるか、又はその中に組み込まれてもよい。ネットワークアダプタ1050は、ネットワーク1060へのアクセスを管理する。クライアントコンピュータは、カーソル制御デバイス、キーボードなどの触覚デバイス1090も含むことができる。ユーザがディスプレイ1080上の任意の所望の位置にカーソルを選択的に位置決めすることを可能にするために、カーソル制御装置がクライアントコンピュータ内で使用される。さらに、カーソル制御装置はユーザが様々なコマンドを選択し、制御信号を入力することを可能にする。カーソル制御装置は、システムに制御信号を入力するための多数の信号発生装置を含む。典型的にはカーソル制御装置がマウスであってもよく、マウスのボタンは信号を生成するために使用される。代替的に又は追加的に、クライアントコンピュータシステムは、センシティブパッド及び/又はセンシティブスクリーンを含むことができる。
【0050】
コンピュータプログラムはコンピュータによって実行可能な命令を含むことができ、命令は、上記装置に本方法を実行させるための手段を含む。プログラムは、システムのメモリを含む任意のデータ記憶媒体に記録可能であってもよい。プログラムは例えば、デジタル電子回路において、又はコンピュータハードウェア、ファームウェア、ソフトウェアにおいて、又はそれらの組み合わせにおいて実装されてもよい。プログラムは装置、例えば、プログラマブルプロセッサによる実行のための機械可読記憶デバイスに有形に具現化された製品として実装されてもよい。方法のステップは入力データに対して動作し、出力を生成することによって、方法の機能を実行するための命令のプログラムを実行するプログラマブルプロセッサによって実行されてもよい。したがって、プロセッサはプログラム可能であり、データ記憶システム、少なくとも1つの入力デバイス、及び少なくとも1つの出力デバイスからデータ及び命令を受信し、それらにデータ及び命令を送信するように結合されてもよい。アプリケーションプログラムは、高レベルの手続き型又はオブジェクト指向プログラミング言語で、あるいは必要に応じてアセンブリ言語又は機械語で実装することができる。いずれの場合も、言語は、コンパイル言語又はインタープリタ言語であってもよい。プログラムはフルインストールプログラムであってもよいし、更新プログラムであってもよい。システム上にプログラムを適用すると、いずれにしても、この方法を実行するための命令が得られる。コンピュータプログラムは、代替的に、クラウドコンピューティング環境のサーバ上に記憶され、実行されてもよく、サーバは、1つ以上のクライアントとネットワークを介して通信している。そのような場合、処理装置は、プログラムに含まれる命令を実行し、それによって、方法をクラウドコンピューティング環境上で実行させる。
【0051】
ここで、上述した本発明の実施例の実装の例を説明する。
【0052】
実装の実例は、非常に大きなデータセットを扱うことができる必要があるメモリデータベース内のRDFに関連している。そのようなスケーラビリティ要件は、分散データベースの開発を必要とする。そのような例はまた、未知のパーティショニングスキームを有する分散データベースに特有の柔軟性及び性能の必要性を満たすために、分散データベースに関連する。
【0053】
RDFは、知識グラフを表すためのW3C標準である。知識グラフは、数十億のトリプル(例えば、MAG、UniProt)を有することができる。利用可能なRDFデータ量の急増は、そのようなデータソースを探索し、照会し、理解する必要性を正当化する。RDFグラフの複雑な構造とその不均一性のため、探索と理解のタスクは、スキーマが構造を理解するための第1ステップとして機能できるリレーショナルデータベースよりも著しく困難である。これらのタスクを容易にするために、要約がRDFデータに適用されている。その目的は、RDF知識ベースから簡潔で有意義な情報を抽出し、その内容を可能な限り忠実に表現することである。RDFグラフの要約は、例えば、索引付け、クエリの大きさの推定、BGPのより具体的な作成、ソース選択、グラフ視覚化、語彙使用解析、及び/又はスキーマ(又はオントロジー)ディスカバリなどの分野で知られている多くのアプリケーションを有することができる。
【0054】
本実装の具体的な実例は、分散RDFデータベース上でのSPARQLクエリの最適化へのRDFグラフ要約の適用に関する。分散データベースは、データが異なる物理的位置にわたって記憶されるデータベースである。そのようなデータベースでは、データは、同じ物理的位置(例えば、データセンター)に位置する複数のコンピュータに記憶されてもよく、又は相互接続されたコンピュータのネットワーク上に分散されてもよい。さらに、RDFグラフ要約を使用することによって分散RDFデータベース上のSPARQLクエリを最適化することは、どの物理位置(「パーティション」とも呼ばれる)がクエリに応答するために必要なデータを保持する(又は保持することができる)かを見つけること、及びクエリされるパーティションの数を最小限に抑え、ネットワーク上でフェッチされる中間結果の数を最小限に抑えるためにクエリプランを最適化することを意味する。
【0055】
実装では、分散RDFデータベースは、データの未知の分割方式を有し、そのような分割は実施されない。本実装の例では、そのようなスキーマは、知られているが、データベースの別の態様、例えば、(分散RDFデータベース上のクエリを最適化すること以外の)書き込み処理能力を最適化するように選択される。さらに、実装は、グラフの内容についての仮定を考慮しない。言い換えれば、グラフデータベースは、関連するオントロジー(又は「スキーマ」)を有していてもよいし、有していなくてもよい。グラフデータベースが何らかの暗示的なトリプル(すなわち、データベース上に推論を適用することによって得られるトリプル)を有する実装の実例では、グラフは飽和している(すなわち、全てのトリプルがコンクリート化されている)。実装では、分散RDFデータベースは、デプロイされると、読み取り専用になる。また、実装では、上述したように、主にグラフのホモモルフィズムに基づいて、RDF用のクエリをSPARQLと呼ぶ。
【0056】
実装は、分散RDFデータベース上でのクエリの最適化におけるグラフ要約の分野により関連している。この分野における著作物の分類を
図2に示す。実装は、特に、
図2の「クエリ回答」に関連する。
【0057】
クエリ回答は、以下のようにさまざまな方法が考えられる。
・典型的には元のグラフよりもはるかに小さい要約グラフを生成することを目的とする構造的方法であって、元のグラフの特定の興味深い特性(接続性、経路、特定のグラフパターン、頻繁なノードなど)が要約グラフに保持されるようにする。これらの特性は、要約を構築するために考慮される。そのような方法は、データベースのオントロジー/スキーマに大きく依存し、構造がほとんど又は全くないグラフにはあまり適していない。さらに、そのような方法は、十分に一般的ではなく、高い計算コストを必要とする。
・RDFグラフから頻繁なパターンを抽出し、これらのパターンを使用して元のRDFグラフを表すパターンマイニング法。通常、RDF/OWL KB文脈における知識パターンと呼ばれる頻出パターンは、共通のタイプの組及び共通のプロパティの組を共有するRDFデータグラフにおけるインスタンスの組を特徴付ける。これは通常、スターBGPとしてモデル化される。そのような方法は、十分に一般的ではなく、高い計算コストを必要とする。
・RDFグラフの含有率を定量的に集計する統計的集計方法そのような方法は、概念的にはパターンマイニングに近いが、統計的要約方法は、計算コストを低減するのに役立つ要約の構造的完全性の問題に敏感ではないという点で、パターンマイニングを上回る利点を有する。
【0058】
構造的及びパターンマイニングアプローチは、ネイティブグラフデータベースにあまり適していない関係アプローチを適応させようとすること、又は特定のタイプのクエリ(例えば、チェーンクエリの星)に焦点を当てようとすることの両方の欠点を有する。それによって、そのような方法は、計算コストと、サポートされるデータ及びクエリの多様性との両方に関してスケーラブルではない。本実装は、特に統計的要約の分野に関する。
【0059】
実装は、ブルームフィルタ(https://en.wikipedia.org/wiki/Bloom_filter)を利用して、パーティションが入力クエリに応答するために必要なデータを有し得るかどうかを決定する。しかし、ブルームフィルタは、リンクされたオープンデータの文脈においてこの決定を実行し、それをソース選択及びソース間の重複の検出として使用する。ブルームフィルタは、所与のクエリの成果の要約であり、したがって、(クエリ最適化のために作用する)クエリを計算することを必要とする。そのようなブルームフィルタは、それらが表すすべての「ソース」(例えば、分散データベース内のパーティション)の代表ではない。ブルームフィルタの既知のアプリケーションは、異なるデータベース間のデータ統合問題の解決策を提供しようとするものである。言い換えれば、ブルームフィルタからなる要約は、いくつかのデータベース上で実行される実行クエリにおけるソリューションを提供し、このソリューションは、潜在的に異なった実装を有する(すなわち、各々のデータベースの実装の細部に頼ることができず、任意のデータを得るためにクエリを使用しなければならない)、データベースが同じデータを含み得る(すなわち、それらは、より大きなデータベースのパーティションではない)。しかしながら、本実装は、パーティションに分割された単一のデータベース上でクエリを実行するための改善された解決策を提供する。
【0060】
実装は、分散型SPARQLクエリの実行に使用される分割数を最適化するために、データの分布やデータの形状、又はクエリの形状を前提とせずに、統計的グラフの要約を定義しようとする。要約は、非常に大量のデータ(例えば、数十億トリプル)に対するソリューションのスケーラビリティ、及びクエリエンジンオプティマイザにおけるその使用(すなわち、約10ミリ秒の要約上のクエリのレスポンスタイム)を保証しなければならない。
【0061】
そのような統計的要約を定義するために、実装は、SPARQLのグラフホモモルフィズムの性質に結び付けられた構造を有するブルームフィルタを使用して、ネイティブSPARQLクエリエンジンの自然なパラダイムにできるだけ近くなるようにする(文献中のいくつかの他の手法が、SPARQLクエリがSQLに変換されるリレーショナルクエリエンジンのために最適化されるとき)。実装はまた、TTLプレーンファイルフォーマットの元のデータセットと比較して0.1%のオーダーの大きさの要約を作成することによって、手法のスケーラビリティを保証する。
【0062】
最初に、実装は、述語(すなわち、グラフの様々なエッジラベル)を区切る。実験は、述語の数が、主語/目的語の数(すなわち、グラフのノードの数)よりもはるかに少ないことを示している。この数は10Kのオーダーである。したがって、実装は、SPARQLクエリを発行するノードに、クラスターのメモリ内に存在しない述語を効率的にフィルタリングすることができる。
【0063】
次に、所与のノード(主語/目的語)が所与のパーティション内に存在し得るかどうかを知ることが問題である。ブルームフィルタ内の偽陽性の回数を制限するために、実装は、RDFデータタイプ(https://www.w3.org/TR/rdf11-concepts/#section-Datatypes (Link))ごとに1つのブルームフィルタを有する。この第1段階では、実装は元のデータセットの10%以下に縮小し、レスポンスタイムは約1 msであったことが実験により示された。
【0064】
ノードの潜在的な存在が確立されると、実装は、基本的なグラフパターンがパーティション内に潜在的なヒットを有するかどうかを検証する。この目的のために、実装は、上記の8つの基本的なグラフパターンに効率的に答えるために、追加のブルームフィルタを追加する。これは、ネイティブSPARQLクエリエンジンに統合され、数十億トリプルの読み取り専用分散データベース上の分散SPARQLクエリが、クラスター内の必須パーティションのみを要求し、約0.1%の誤検出誤差が許容されることを保証する。
【0065】
実装は、クエリエンジンが、ほとんどの不必要なパーティションアクセスを排除し、データセットの任意の起こり得るパーティショニングに対処することを可能にする。実装は、データセットがどのようにパーティション分割されたかについての知識を必要としない。パーティショニングでパターンを検出しようとするソリューションと比較すると、実装はパーティショニングでパターンを検出できる必要がないため、データセットに依存しない。さらに、実装は、パターンを探索する必要がなく、パーティションのデータを一度読み取るだけであるので、実装の生成は、簡単かつ効率的に発明の概要を生成することができる。パーティションのサイズ(元のTTLデータセットの0.1%未満、現行の実装では最も小型のパーティション形式の10%未満)と比較して、要約のサイズが小さいため、実装が提供するソリューションは、非常に大きなデータセットにスケーラブルになる。さらに、高速読み取り時間(典型的な読み取りのみでは、約10ハッシュの計算を必要とする)により、実装をクエリオプティマイザ又はクエリエグゼキュータで使用することが可能になる。
【0066】
要約の内容
実装の要約は、クエリエンジンからのデータパーティションへの不必要なアクセスを回避するためのものである。分散システムでは、パーティションは、アクセスするのにコストがかかり(それらの物理的位置は、ネットワーク上にあってもよく、レイテンシコストを導入する)、すべてローカルストレージに完全にコピーするには大きすぎる(基本的には、データが最初に分散される理由である)。代わりに、セクションごとに、クエリエンジンは、データピースが対応するセクション上に存在する可能性を有するかどうかを示すはるかに小さい要約(以下の「ブルームフィルタの大きさ」の節で説明するように)を作成し、記憶する。
【0067】
実装は、偽陽性であるが偽陰性ではない統計的手法を提供する。言い換えれば、(要約によって提供される)回答は、「確実にそうではない」又は「可能性がある」のいずれかである。あるパターンがパーティションに存在しないことが分かっている場合、クエリエンジンは、このパターンに対応するデータを取得しようとするときに、パーティションにアクセスしようとしない。
【0068】
実際には、本発明の要約は、各ブルームフィルタの役割を決定するブルームフィルタ及びメタデータの組を含むファイルである。ブルームフィルタは、いくつかの要素がその組の一部であるかどうかを決定するためにハッシュを使用する既知の確率的データ構造(https://en.wikipedia.org/wiki/Bloom_filter)である。ブルームフィルタは、偽陽性を返す確率を有するが、それらが要約するパーティションよりもはるかに少ないメモリを使用する(以下の「ブルームフィルタのサイズ」のセクションで説明する)。実装は、これらのブルームフィルタを利用して、要素が要約に対応するパーティション内に存在する可能性があるかどうかをローカルかつ安価に記憶する。
【0069】
ブルームフィルタの基本構造は、ビットの単純な配列であり、その特性は、この配列のサイズ、それが含む要素の数、及び要素を追加するか、又はその存在をテストするときに適用されるハッシュ関数の数である。ブルームフィルタに対する2つの基本操作は、要素を挿入し、要素がブルームフィルタに以前に挿入されているかどうかをクエリすることである。
【0070】
上述のように、ブルームフィルタによるクエリは、偽陽性(すなわち、価値が付加されていないときに価値が付加されたという回答)を返すことができるが、偽陰性ではない。ブルームフィルタのエントリのサイズ及び数が与えられると、ハッシュ関数の数は、誤検出の確率が選択された閾値を下回ることを確実にするように選択されてもよい。
【0071】
実装において、RDFグラフが与えられると、RDFグラフの要約は以下を含む。
・「述語」ブルームフィルタ:このグラフ内の各述語について、対応するブルームフィルタの要素は、グラフ内のこの述語の主語又は目的語のいずれかであるすべてのURIである。
・「目的語」ブルームフィルタ:URIを除く各タイプについて、対応するブルームフィルタの要素は、グラフ内の任意のトリプルの目的語であるこのタイプのすべてのリテラルである。
・「空白のノードの主語」ブルームフィルタ:その要素は、グラフ内の任意の3倍の主語であるすべての空白のノードである。これは、対象のブルームフィルタと等価である。なぜなら、対象に許可される唯一の非URIタイプは空白ノードであるからである。
・グラフ内の各述語のトリプル数。
【0072】
ブルームフィルタのそのようなリストは、クエリエンジンが、パーティション内のS,P, ?Oパターン又は?S,P, ?Oパターンの存在について、S(それぞれO)がURIである場合、及び(?S, ?P, ?O)(又は(S, ?P, ?O))の存在について、要約をクエリすることを可能にする。
【0073】
本実装では、ブルームフィルタの他の組も考えられ、例えば、所与のRDFグラフの要約は、URIのみではなく、すべての主語及び目的語についての述語によってブルームフィルタを分割することができる。ブルームフィルタの数が多いこれらのケースでは、フィルタリングのパフォーマンスを向上させるために、より多くのメモリが必要になる。さらに、要約は、多数のトリプルを有する傾向がある特定の述語のための特定のブルームフィルタを含むことができる。特に、要約は、rdf:typeのための特定のブルームフィルタを有することができる。そのような場合、要約は、より具体的なデータパターンに対応するブルームフィルタ、例えば、形状{?s <P1> ?o1; <P2> ?o2}のクエリを最適化するための追加の助けとして、2つの具体的な述語に同時に従うすべてのURIのためのブルームフィルタを有することができる。
【0074】
パーティションへのアクセス回数を減らすためのさらなる最適化として、実装内の要約は、それらのサイズ(すなわち、メタデータ又は統計のサイズ)が小さければ、追加のメタデータ又は統計を含むこともできる。例えば、実装は、比較演算子を支持するタイプについて、パーティション上の最低値及び最高値を記憶し、何らかのさらなるフィルタリングを可能にする。
【0075】
クエリ実行中のパーティションへのアクセスを減らすための要約の使用
実装の最も基本的な使用方法は、クエリの実行に表示される。SPARQLクエリの基本動作は、(S, P, O)、(S, ?P,O)、(S,P, ?O)、(S, ?P, ?O)、(?S, P, O)、(?S,P, ?O)、(?S, ?P, ?O)、(?S, ?P, ?O)のトリプルパターンにマッチするトリプルパターンを見つけることである。これらのうち、最も頻度の高いパターンは(?S, P, O)、(S,P, ?O)、(?S,P, ?O)である。
【0076】
これらの3つのケースでは、述語は既知であり、2つの最初のケースでは、主語又は目的語のいずれかが既知である。それによって、本実装によるクエリエンジンは、それぞれのパーティションの要約を局所的に保持する。要約はパーティション自体よりもはるかに小さいので、パーティションが大きすぎて同じノードに収まらない場合でも、これは起こり得る。
【0077】
P及びOが既知である形状(?S, P, O)のパターンが与えられると、OがURIである場合、クエリエンジンは、パーティションごとにPに対応する述語ブルームフィルタを照会する。そうでない場合、クエリは、パーティションごとにOの種類に対応する目的語ブルームフィルタをクエリする。ブルームフィルタは、決して偽陰性を与えないので、クエリエンジンは、要約が「真」をクエリに返したパーティションからデータをクエリするだけでよいことを知る。誤検出は、パーティションへの不必要なアクセスを引き起こす可能性がある。
【0078】
同様に、パターンがシェイプ(S,P, ?O) の場合、SがURIの場合、クエリはPの述語ブルームフィルタをクエリする。それ以外の場合、Sは空白ノードのみとなり、クエリはパーティションごとに「空白ノード主語」ブルームフィルタをクエリする。
【0079】
最後に、パターンがシェイプ(?S,P, ?O)の場合、クエリは、要約の述語メタデータからこの述語のトリプルの個数を読み取る。パーティションのトリプル回数が0の場合、クエリエンジンはパーティションにアクセスする必要はない。
【0080】
さらに、タイプが比較演算子をサポートするオブジェクトの場合、クエリエンジンは述語メタデータを使用して、パーティション上のオブジェクトの最小値及び最大値を見つけることもできる。オブジェクトがこの範囲に収まらない場合、パーティションを読み取る必要はない。
【0081】
実際には、本実装によるクエリエンジンは、最初に、いくつかのパターンのリストを生成し(例えば、既定の構成は、最大8192パターンのリストである)、これらのパターンのすべてについて要約を確認する。要約が少なくとも1つのパターンに対して肯定的である場合、クエリエンジンは対応するパーティションを照会し、そうでない場合、それは無視する。データベース内のトリプルを少なくする必要がある小さなクエリでは、ほとんどのパーティションアクセスを削除するだけで十分である。より大きなクエリは、読み取る必要があるデータが不利にパーティショニングされている場合でも、多くのパーティションに接続する必要がある。しかし、未知の分割方式の大きなクエリであっても、全ての分割アクセスの少なくとも25 %が排除されることが実験により示された。
【0082】
本実装によれば、要約は、セクションへのアクセス回数を低減するために他の方法で使用されてもよく、使用は、このセクションで説明されたものに限定されない。
【0083】
要約を使用したクエリの最適化
また、実装は、クエリ最適化を改善するために、クエリの実施までに要約を使用してもよい。言い換えれば、クエリコンパイル中に、クエリがパターン(?S, P, O)を含む場合(P及びOは、実行時だけでなく、コンパイル時に既知である)、このパターンに対応するすべてのパーティションについての要約をクエリすることができる。すべての要約クエリが偽を返した場合、そのパターンはどのパーティションにも存在せず、クエリから完全に削除できる。同様に、実装は、(S,P, ?O)及び(?S,P, ?O)パターンを検査することができる。
【0084】
本実装によれば、要約は、クエリを最適化するために他の方法で使用することができ、使用は、このセクションで説明したものに限定されない。
【0085】
ブルームフィルタのサイズ
本実装によれば、ブルームフィルタのサイズ(すなわち、基礎となるビット配列のサイズ)は、誤検出の可能性を最小化するためにブルームフィルタが採用すべきハッシュ関数の最適な個数を決定する。ハッシュ関数の数が間違っていると、偽陽性の確率が高まる。さらに、使用するハッシュ関数が多すぎると、読み取り操作のパフォーマンスが低下する。実際には、周知の公式(https://en.wikipedia.org/wiki/Bloom_filter参照)によれば、最適なハッシュ関数の数は、ブルームフィルタにおける要素当たりのビット数のln(2)倍に等しい。このような最適な個数は、
図3において実験的に決定され、これは、実装の実例において、要素当たり15ビット及び15*ln(2)ハッシュ関数が、最良の投資収益を提供することを示す。
【0086】
上述のように、
図3は、要素当たりのビット数を決定するために使用される実験データの例を示す。要素当たり15ビットでは、アクセスされるパーティションの数は、実際に読み取る必要があるパーティションの数よりもはるかに多くない(約10 %高い)。要素当たりより多くのビットを有することは、これをあまり改善しない。この15bit/エントリのサイズは、実装の最もスペース効率の良いフォーマットでは、パーティションそのもののサイズの約7 %であり、対応する未加工のTTLファイルのサイズの0.1 %未満である。
【0087】
本実装は、主語、目的語、及び述語ブルームフィルタの要素ごとに様々な個数のビットを実験的に選択することによって、より細かい調整を適用することができる。
【0088】
要約ファイルの構造
実装によれば、要約ファイルは、1つの要約の完全なデータを格納する。データは、ブルームフィルタ、任意のメタデータ、及びハッシュ関数を検索するために必要とされるすべての情報を含む。次に、要約ファイルのレイアウト例を説明する。
【0089】
要約ファイルには、ヘッダ、位置配列、ブルームフィルタバッファの3つの主要なセクションがある。ブルームフィルタバッファは、要約ファイル内のすべてのブルームフィルタの連結である。位置配列は、バッファ内の各ブルームフィルタの位置と、ブルームフィルタバッファの合計サイズの位置を提供する。ヘッダに含まれるメタデータは、位置配列内の位置によって個々のブルームフィルタを参照し、例えば、位置配列が4つのエントリ[0; 544; 832; 2112; 2144]を含む場合、要約は以下の4つのブルームフィルタを含む。
・ブルームフィルタ0:ブルームフィルタバッファの位置0から開始し、位置543で終了する。
・ブルームフィルタ1:位置544で始まり、位置831で終わる。
・ブルームフィルタ2:位置832で始まり、位置2111で終わる。
・ブルームフィルタ3:位置2112で始まり、位置2143で終わる。
【0090】
各ブルームフィルタの長さは、その開始位置及び終了位置から自明に推定可能である。
【0091】
ヘッダは、順に以下の情報を含む。
・グローバル・メタデータ:特に、ファイルのバージョン、発明の概要内の述語の数、要約内のタイプの数、ブルームフィルタを読み書きするために使用されるハッシュ関数の数。
・述語及びタイプのブルームフィルタのハッシュ情報。この情報は、(https://en.wikipedia.org/wiki/Hash_functionで定義されているような)ハッシュ関数のうちいくつ、どの関数がブルームフィルタを作成するために使用され、ブルームフィルタを読み取るために必要とされるのかをエンコードする。例えば、実装は、いくつかの異なったソルト(すなわち、ハッシュ化の直前にハッシュ化するためのエントリと連結された小さな文字列、https://en.wikipedia.org/wiki/Salt_(cryptography)参照)していくつかのハッシュ関数を提供する。そのため、ハッシュ関数の数や各ハッシュ関数のソルトを存続させれば十分である。
・各述語のテーブル。このテーブルは、述語の名前、この述語に対応するブルームフィルタのインデックス、及び述語のメタデータ(上述のとおり)を含む。
・「主語空白ノード」ブルームフィルタのインデックス。
・各タイプのテーブル。このテーブルは、タイプの名前、このタイプに対応する目的語ブルームフィルタのインデックス、及びこのタイプのメタデータ(上述のとおり)を含む。
【0092】
要約ファイルの一部読み込み
本実装の実施例では、I/O及びメモリを低減するために最適化を適用することができる。要約ファイルの最大の部分は、ブルームフィルタバッファである。典型的なデータセットでは、主語及び目的語の数は、述語及びタイプの数よりも大きい数桁のオーダーである。したがって、要約ファイルのヘッダ及び位置配列セクションは、一般に、全ファイルのサイズの一部を有する。I/O使用量とメモリ使用量の両方を最適化するために、要約ファイルはクエリエンジンによって全体的にロードされる必要はない。
【0093】
このような例によれば、クエリエンジンは、全ての場合において、要約ファイルのヘッダ及び位置配列をロードする。ブルームフィルタの1つをクエリする必要がある場合、クエリエンジンは、位置配列内のブルームフィルタの位置を見つけ、ブルームフィルタをメモリにロードする。加えて、ブルームフィルタは、数倍(単一のクエリの実行中に、また、クエリにわたって)読み取られる可能性が高いので、実装は、メモリが利用可能である場合、多くの頻繁に使用されるブルームフィルタを(例えば、最も速い利用可能である)メモリ内に保持するために、何らかの形態のキャッシュシステムに専念する。実装は、ファイルをメモリマッピングし、利用可能なときにオペレーティングシステムキャッシュページをRAMに保存することによって、これを実現する。
【0094】
そのような実装は、いかなるパーティショニングスキームも課すことなく、クエリ中にそのパーティションのすべてに接近する必要のない分散クエリエンジンを提供する。
【手続補正書】
【提出日】2024-01-15
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
一組のRDFタプルを含むグラフデータベースの要約を生成するためのコンピュータ実装方法であって、
グラフデータベースを取得するステップと、
確率的フィルタの組を含む要約を生成するステップであって、前記組の各確率的フィルタは、前記グラフデータベース内に存在する少なくとも1つのRDFタプルが、偽陽性の可能性を有する前記確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを決定する、要約を生成するステップと
を含むコンピュータ実装方法。
【請求項2】
前記確率的フィルタの組が、前記RDFタプルの組の各述語(P)について、
第1の基本グラフパターン((S, P, ?O))に対応する第1のフィルタであって、RDFタプルの前記組内の前記述語及び任意の主語を含む第1のフィルタ、及び/又は
第2の基本グラフパターン((?S, P, O))に対応する第2のフィルタであって、RDFタプルの前記組内の前記述語及び任意の目的語を含む第2のフィルタ
を含む
請求項1に記載のコンピュータ実装方法。
【請求項3】
前記確率フィルタの組が、
RDFタプルの前記組の各述語(P)について、前記述語並びにRDFタプルの前記組内の任意の主語及び/又は目的語を含む第3の基本グラフパターンに対応する第3のフィルタ、好ましくは、前記主語及び/又は前記目的語はURIのタイプである第3のフィルタ
を含む
請求項1に記載のコンピュータ実装方法。
【請求項4】
前記確率的フィルタの組が、
前記グラフデータベース内の各目的語の非URIタイプごとに、前記各目的語を含む、第4の基本グラフパターン(?S, ?P, O)に対応する第4のフィルタ
を含む
請求項1に記載のコンピュータ実装方法。
【請求項5】
前記確率的フィルタの組が、
第5の基本グラフパターン((S, ?P, ?O))に対応する第5のフィルタであって、主語として空白ノードを含む題5のフィルタ
を含む
請求項1に記載のコンピュータ実装方法。
【請求項6】
前記要約が、さらに、
各述語に対する前記グラフデータベース内のRDFタプルのそれぞれの数を示す値、及び/又は
前記組の各確率フィルタの役割を定義するメタデータ
を含む
請求項1に記載のコンピュータ実装方法。
【請求項7】
前記組の各確率的フィルタが、
第1のサイズの配列
1つ以上のハッシュ関数
を含み、
各確率的フィルタは、前記グラフデータベース内に存在する少なくとも1つのRDFタプルが確率的フィルタのそれぞれの基本グラフパターンに対応するかどうかを、
第2のサイズのそれぞれの出力を得るために、前記グラフデータベースの各RDFタプルを前記確率的フィルタの各ハッシュ関数に入力すること、及び
それぞれの出力を配列に格納すること
により決定するように構成される
請求項1に記載のコンピュータ実装方法。
【請求項8】
前記1つ又は複数のハッシュ関数の前記数が、前記第2のサイズに基づいており、好ましくは、前記第2のサイズに比例し、より好ましくは、前記第2のサイズは、10~18ビットの間であり、さらにより好ましくは、前記第2のサイズは、15ビットである
請求項7に記載のコンピュータ実装方法。
【請求項9】
前記グラフデータベースが、パーティションの組を備えるパーティショニングされたグラフデータベースであり、
前記生成するステップが、前記パーティショニングされたグラフデータベースの各パーティションについて要約を生成するステップをさらに含む
請求項1に記載のコンピュータ実装方法。
【請求項10】
請求項9に記載のコンピュータ実装方法によって生成された、パーティショニングされたグラフデータベースの要約の集合を使用するコンピュータ実装方法であって、
前記パーティショニングされたグラフデータベース及び前記パーティショニングされたグラフデータベースの前記生成された要約の組を取得するステップと、
1つ又は複数の基本グラフパターンを含むクエリを、前記パーティショニングされたグラフデータベースによって受信するステップと、
基本グラフパターンごとに、前記生成された要約の組に基づいて、パーティションの前記組の1つ又は複数のパーティションを識別するステップであって、前記1つ又は複数のパーティションが、クエリに答える、前記取得されたパーティショニングされたグラフデータベースのすべてのRDFタプルを備える、識別するステップと、
一組の識別された1つ以上のパーティション上で前記受信したクエリを実行するステップと
を有するコンピュータ実装方法。
【請求項11】
前記生成された組の要約に基づいて、前記組のパーティションの1つ以上のパーティションを識別するステップが、
前記生成された組の要約の各々に対し、前記要約のパーティションに存在する少なくとも1つのRDFタプルが、前記確率的フィルタの前記それぞれの基本グラフパターンに対応するかどうか、前記要約の前記確率的フィルタの組の各フィルタによって決定するステップ
を含む請求項10に記載のコンピュータ実装方法。
【請求項12】
1つ又は複数のパーティションを識別した後、前記組の前記識別された1つ又は複数のパーティション上で前記受信されたクエリを実行する前に、
前記基本グラフパターンの組の1つの基本グラフパターンについて、識別された1つ又は複数のパーティションが空の組を形成するかどうかを決定するステップと、
前記識別された1つ又は複数のパーティションが空集合を形成するとき、前記基本グラフパターンの集合から前記基本グラフパターンを除去することによって、受信されたクエリのそれぞれのクエリプランを最適化するステップと
をさらに備える、請求項9に記載のコンピュータ実装方法。
【請求項13】
請求項1~9のいずれか一項に記載のコンピュータ実装方法及び/又は請求項10~12のいずれか一項に記載のコンピュータ実装方法を実行するための命令を含むコンピュータプログラム。
【請求項14】
請求項13に記載のコンピュータプログラムを記録したコンピュータ可読記憶媒体。
【請求項15】
請求項13に記載のコンピュータプログラムが記録されたメモリに結合されたプロセッサを含むシステム。
【外国語明細書】