3

約 100 の SPARQL クエリの結果をチェックする JUnit テストを書いています。

for(String query: queries)
{
 QueryEngineHTTP qe = new QueryEngineHTTP(endpoint, query);
 ResultSet rs = qe.execSelect();
 while(rs.hasNext()) {...}
}

パフォーマンスを最適化するために、いくつかのクエリを実行したいのですが、すべてを一度に並列に実行するわけではありません。Jena やその他のライブラリにこのためのメカニズムはありますか? スレッド プールを使用することもできますが、最適化されたソリューションの方が優れていると思います。

  • オーバーヘッドを最小限に抑える
  • そのようなプロトコルが存在する場合に備えて、すべてのクエリを一度にサーバーに渡すことで遅延を最小限に抑えます
  • エンドポイントあたりの同時クエリの最大量を指定します。これにより、DBpedia に 50 個のクエリ、LinkedGeoData に 50 個のクエリがある場合、一度に 5 個ずつ実行されます。
  • クエリの実行時間を概算して、より高速なクエリを最初に開始できるようにする
  • SPARQL エンドポイント キャッシュに最適なクエリ順序を決定する
4

1 に答える 1

2

私が仕事の一環として開発し、私の会社が BSD ライセンスの下でリリースしたオープン ソース ツールを見てみるといいかもしれません

探しているすべての機能を備えているわけではありませんが、Jena を使用しており、Java 同時実行フレームワークを利用して並行クエリを実行する機能がいくつかあるため、開始するための便利なコードが提供されます。

于 2012-07-24T16:15:15.157 に答える