3

我正在编写一个 JUnit 测试来检查大约一百个 SPARQL 查询的结果。

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

为了优化性能,我想并行执行一些查询,但不是一次全部执行。Jena 或其他库中是否有这种机制?我可以使用线程池,但我想优化的解决方案会更好,因为它可以:

  • 最小化开销
  • 如果存在这样的协议,通过一次向服务器提供所有查询来最小化延迟
  • 指定每个端点的最大并发查询数量,这样如果我有 50 个 DBpedia 查询和 50 个 LinkedGeoData 查询,它将一次运行 5 个
  • 近似查询的运行时间,以便它可以首先启动更快的查询
  • 确定最适合 SPARQL 端点缓存的查询顺序
4

1 回答 1

2

您可能想看看我在工作中开发的一个开源工具,我的公司在 BSD 许可下发布,非常简单地称为SPARQL Query Benchmarker

它没有您正在寻找的所有功能,但它使用 Jena 并且具有利用 Java 并发框架进行并发查询的一些能力,因此应该为您提供一些有用的代码来帮助您入门。

于 2012-07-24T16:15:15.157 回答