2012-03-30 62 views
1

我正在使用DBpedia数据集的项目,我想通过它们提供的sparql端点远程连接它们。现在我必须在大学代理服务器后面工作,并且无法让我的代码连接到DBpedia sparql端点。我到目前为止都试图通过System.getProperties()设置代理设置,但它仍然不起作用,并引发未知的主机异常。我在下面附加了我的代码段以及抛出的异常。任何建议都会受到欢迎。连接到代理防火墙后的DBpedia端点

System.getProperties().put("proxySet","true"); 
System.getProperties().put("http.proxyHost", "http://username:[email protected]"); 
System.getProperties().put("proxyPort",8080); 
String q= "SELECT ?p ?o WHERE { <http://dbpedia.org/resource/Mendelian_inheritance> ?p ?o . }"; 
Query query = QueryFactory.create(q); 
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query); 
ResultSet results = qexec.execSelect(); 
while (results.hasNext()) { 
QuerySolution result = results.nextSolution(); 
RDFNode s = result.get("s"); 
RDFNode p = result.get("p"); 
RDFNode o = result.get("o"); 
System.out.println(" { " + s + " " + p + " " + o + " . }"); 
} 

正被抛出的异常如下:

Exception in thread "main" HttpException: java.net.UnknownHostException: dbpedia.org: java.net.UnknownHostException: dbpedia.org 
    at com.hp.hpl.jena.sparql.engine.http.HttpQuery.execGet(HttpQuery.java:203) 
    at com.hp.hpl.jena.sparql.engine.http.HttpQuery.exec(HttpQuery.java:144) 
    at com.hp.hpl.jena.sparql.engine.http.QueryEngineHTTP.execSelect(QueryEngineHTTP.java:141) 
    at project6.Main.main(Main.java:53) 
Caused by: java.net.UnknownHostException: dbpedia.org 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
    at java.net.Socket.connect(Socket.java:529) 
    at java.net.Socket.connect(Socket.java:478) 
.... 

正如页脚我试图SPARQL URL设置为http://dbpedia.org/snorql

回答

1

也许你应该使用“把http.proxyPort”而不是“proxyPort”。 :-) 而且,System有一个你可以使用的setProperty(String key,String value)方法。

+0

啊,道歉,一个人试过它,它仍然没有工作。 – 2012-04-01 17:30:25

+1

我的建议是删除Jena,DBPedia,并尝试使用URL和openConnection来查看是否可以从Java程序实际使用您的Web代理。你尝试过吗? – castagna 2012-04-01 17:33:08

+0

是的,试着首先得到一个简单的URL连接。问题不在于DBpedia,而在于代理设置。 – cygri 2012-04-02 09:49:33