多くのSPARQLシステムでは、トリプルをグラフパターンで並べ替えてクエリを最適化できます。MarkLogicでのSPARQLクエリの最適化
Jenaでは、クエリの初期段階で結果セットを最も制限するトリプルパターンを配置することでクエリを最適化することができます(そして常に言及するようにしてください既にバインドされている変数)。明らかに、Marklogic SPARQLはトリプルパターンの順序に敏感です(私はいくつかのクエリを再配置して、それらが実行されることを発見しました)より速くまたは遅く、10倍も)。しかし、私は、シーケンスがより速くまたは遅くなるような韻や理由を見つけることはできません。私がJenaとうまく使用した経験則は、MarkLogicでは動作しません。
私はGoogledについて、MarkLogicのドキュメントを見て、これについてのアドバイスは見つかりませんでした。 MarkLogicのクエリエンジンの作者のいずれかにこれに関するメモを付けましたか?
"多くのSPARQLシステムでは、トリプルをグラフパターンで並べ替えることでクエリを最適化できます。"実際には、同等であるはずです。特定のパターンが見つかったことがありますか?たとえば一致回数の少ないトリプルを早くすると結果が速くなります。 –
SPARQLの唯一の要件は、クエリの順序に関係なく結果が同じであることです。パフォーマンスはまったく別の問題です。 – scotthenninger
ほとんどのApache Jenaストレージ・レイヤーは、バージョンによって部分的な並べ替えを実行します。しかしそれはかなり軽いです。部分的な並び替えに同じ重要度の2つのトリプルパターンがある場合、それらは指定された順序で残ります。 – AndyS