4

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

编辑:我使用java。

4

2 回答 2

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

于 2011-01-19T10:36:31.660 回答
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。

于 2016-07-04T07:59:07.807 回答