2011-01-18 42 views
4

我想知道是否有方法使用Jena通過dbpedia執行sparql查詢並使用http://dbpedia.org/sparql中給出的超時設置(如果看到此頁面,可以看到有一種方法可以在那裏設置超時),這是需要的,因爲我想做一個大的查詢,我已經嘗試了幾次(通過頁面),沒有設置超時,我無法得到結果(它總是一個事務超時異常)使用dbpedia作爲終點將超時添加到jena(用於sparql)?

編輯:我用java。

回答

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

+0

有沒有方法,如QueryExecution中的addParam – zfm 2011-01-19 17:29:19

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。