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