2

sparqlクエリのパフォーマンスを向上させたい。すべてのタイプのsparqlクエリを実行する必要があります。グラフには合計17,500,000のトリプルがあり、知識のみを含む他のグラフがあります。このグラフには、sameとsubclassOfプロパティが含まれています。このグラフのトリプルの合計は約50,000,000で、sparqlクエリでオンザフライ推論を使用しています。

私はデータベースとして名人を使用しています。推論機能があります。

推論を使用してクエリを実行すると、単純なクエリに80秒かかります。推論を使用しない場合は、10秒かかります。

Sparqlクエリ:

 DEFINE input:inference 'myrule' 
 select DISTINCT  ?uri1  ?uri2  
 from <GRAPH_NAME>  
 where {?uri1   rdf:type ezdi:Aspirin. 
 ?patient ezdi:is_treated_with ?uri1. 
 ?patient rdf:type ezdi:Patient. 
 ?uri2 rdf:type ezdi:Hypertension .
 ?patient ezdi:is_suffering_with ?uri2. 
 ?patient rdf:type ezdi:Patient  } ORDER BY ?patient

私は、巨匠によって提供されるすべての索引付けを行いました。システムには32GBのRAMが搭載されています。そして、NumberOfBuffer設定virtuoso.iniファイルを実行しました。

推論の問題は何なのかわかりません。しかし、私はsparqlクエリで推論を使用する必要があります。

あなたが何かを知っているなら、plzはあなたの考えを共有します。

ありがとうございました

4

2 に答える 2

3

5Mトリプルのオントロジーは非常に大きいですが、厳密に言えば、問題はありません。推論に関するパフォーマンスは、サイズよりもオントロジーの表現度にはるかに密接に関係しています。推論が難しいトリプルが数桁少ないオントロジーを作成できます。

そうは言っても、私が具体的に提案できることはあまりありません。Virtuoso固有のチューニングは開発者に任せるのが最善であるため、彼らのメーリングリストである程度の牽引力を得る可能性があります。

いくつかのカスタム推論「my_rule」を使用しているようですが、コメントではRDFSとsameAsも主張しています。おそらく、実際に使用している推論、オントロジーが該当するプロファイル(RDFSまたはOWL2 QL、RL、EL、DL)を理解し、推論が実際にどのように機能するかについて少し学ぶ必要があります。さらに、RDFSに加えて使用していると主張する平等推論は困難です。Virtuosoが同値関係を熱心に計算できる可能性があります。これにより、クエリのオーバーヘッドを削減できますが、これも、メーリングリストで取り上げる必要があります。

推論は決して簡単ではありません。また、より単純な、つまり表現力の低いオントロジーまたはデータの減少、あるいはその両方を使用する以外に、魔法のように推論を高速化する特効薬はありません。

最後に、 OWLIMStardogなど、推論用​​に設計された他のデータベースを試すこともできます。すべてのデータベースが同じように作成されているわけではありません。TBoxでVirtuosoがうまく処理できないものをエンコードした可能性はありますが、別のシステムで簡単に処理できます。

于 2012-10-22T00:29:49.233 に答える
2

あなたが説明するパフォーマンスの問題につながる可能性のある多くの要因があります。最も一般的なのは、INIファイルのNumberOfBuffers設定でエラーを発生させることです。これは、ここでは確認できないため、診断できません。

特にVirtuosoに関する質問は、一般に、公開されているOpenLinkディスカッションフォーラムVirtusoユーザーのメーリングリスト、または機密のサポートケースを通じて提起するのが最適です。これを持っていけば、もっと詳しくお手伝いできるはずです。

于 2012-11-05T21:26:28.450 に答える