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