使用dbpedia作为终点为jena(对于sparql)添加超时?

时间:2011-01-18 23:46:55

标签: java timeout sparql jena dbpedia

我想知道是否有办法使用Jena通过dbpedia进行sparql查询并使用http://dbpedia.org/sparql中给出的超时设置(如果你看到这个页面,你可以看到有一种方法设置超时),这是必要的,因为我想做一个大的查询,我已经尝试了几次(通过页面),没有设置超时,我无法得到结果(它总是一个事务超时异常)

编辑:我使用java。

2 个答案:

答案 0 :(得分:3)

要执行查询,我想您正在使用:

QueryExecutionFactory.sparqlService(String service, Query query) 

你可以尝试的一件事是:

QueryEngineHTTP objectToExec=QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql",YOUR_QUERY);
objectToExec.addParam("timeout","5000"); //5 sec
resultset=objectToExec.execSelect();

似乎QueryEngineHTTP实现了QueryExecution,其addParam方法。没有该方法的描述,但我假设在HTTP请求中添加了一个参数。

让我知道它是否有效!!

<强>被修改 修复错误实际上是另一种方式... QueryEngineHTTP实现QueryExecution

答案 1 :(得分:0)

我会这样做:

String service = "http://dbpedia.org/sparql";
QueryExecution qexec = QueryExecutionFactory.create(query, service) ;
qexec.setTimeout(10, TimeUnit.MINUTES);

ResultSet results = qexec.execSelect() ;
String result = ResultSetFormatter.asText(results);

如果达到超时限制,则抛出org.apache.jena.query.QueryCancelledException。