I get a "java.net.NoRouteToHostException: Cannot assign requested address"
exception when I execute que following code:

import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.sparql.core.DatasetImpl;

public class Query {
        public static void main(String[] args) {
                String query = "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"
+
                                "PREFIX geopos: <
http://www.w3.org/2003/01/geo/wgs84_pos#>\n" +
                                "select ?s ?lat ?long where {\n" +
                                " SERVICE <
http://fuseki.mooo.com/lgd-dbpedia/sparql>  {\n" +
                                "  select * where {\n" +
                                "    ?s owl:sameAs ?geo .\n" +
                                "    FILTER regex(str(?geo),\"dbpedia\")\n"
+
                                "  } \n" +
                                " }\n" +
                                " SERVICE <
http://fuseki.mooo.com/dbpedia-geo/sparql> {\n" +
                                "  select * where{\n" +
                                "       ?geo geopos:lat ?lat ;\n" +
                                "       geopos:long ?long .\n" +
                                "  }    \n" +
                                " }     \n" +
                                "}      \n";

                long start = System.currentTimeMillis();
                QueryExecution exec =
QueryExecutionFactory.create(QueryFactory.create(query),
                                new
DatasetImpl(ModelFactory.createDefaultModel()));
                ResultSet rs = exec.execSelect();
                int n = 0;
                while (rs.hasNext()) {
                        rs.next();
                        System.out.print(++n + " ");
                }
                long time = System.currentTimeMillis() - start;
                System.out.println(n + " results found in " + time + "ms.");
        }
}

The same query runs perfectly when a do limit in the first SERVICE select:

                String query = "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"
+
                                "PREFIX geopos: <
http://www.w3.org/2003/01/geo/wgs84_pos#>\n" +
                                "select ?s ?lat ?long where {\n" +
                                " SERVICE <
http://fuseki.mooo.com/lgd-dbpedia/sparql>  {\n" +
                                "  select * where {\n" +
                                "    ?s owl:sameAs ?geo .\n" +
                                "    FILTER regex(str(?geo),\"dbpedia\")\n"
+
                                "  } *limit 20000* \n" +
                                " }\n" +
                                " service <
http://fuseki.mooo.com/dbpedia-geo/sparql> {\n" +
                                "  select * where{\n" +
                                "       ?geo geopos:lat ?lat ;\n" +
                                "       geopos:long ?long .\n" +
                                "  }    \n" +
                                " }     \n" +
                                "}      \n";


What can I do to fix the problem? It always occurs when the query is run,
even when the Fuseki Sparql Endpoint is running locally.
I did not observe any problem related to the network. The problem persists
when the code (query) is executed in different hosts.
I am using Jena classes from "fuseki-server.jar" in the client classpath.
I've also tested different Fuseki jar versions: 0.2.1, 0.2.2.
The full stack trace is this:

Exception in thread "main" HttpException: java.net.NoRouteToHostException:
Cannot assign requested address: java.net.NoRouteToHostException: Cannot
assign requested address
 at com.hp.hpl.jena.sparql.engine.http.HttpQuery.execGet(HttpQuery.java:216)
at com.hp.hpl.jena.sparql.engine.http.HttpQuery.exec(HttpQuery.java:157)
 at com.hp.hpl.jena.sparql.engine.http.Service.exec(Service.java:71)
at
com.hp.hpl.jena.sparql.engine.main.iterator.QueryIterService.nextStage(QueryIterService.java:53)
 at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.makeNextStage(QueryIterRepeatApply.java:113)
 at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterRepeatApply.hasNextBinding(QueryIterRepeatApply.java:65)
 at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108)
 at
com.hp.hpl.jena.sparql.engine.iterator.QueryIterConvert.hasNextBinding(QueryIterConvert.java:65)
 at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108)
at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40)
 at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108)
 at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.hasNextBinding(QueryIteratorWrapper.java:40)
 at
com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.hasNext(QueryIteratorBase.java:108)
 at
com.hp.hpl.jena.sparql.engine.ResultSetStream.hasNext(ResultSetStream.java:72)
at Query.main(Query.java:34)
Caused by: java.net.NoRouteToHostException: Cannot assign requested address
at java.net.PlainSocketImpl.socketConnect(Native Method)
 at
java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
at
java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
 at
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
 at java.net.Socket.connect(Socket.java:546)
at java.net.Socket.connect(Socket.java:495)
 at sun.net.NetworkClient.doConnect(NetworkClient.java:178)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:409)
 at sun.net.www.http.HttpClient.openServer(HttpClient.java:530)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:240)
 at sun.net.www.http.HttpClient.New(HttpClient.java:321)
at sun.net.www.http.HttpClient.New(HttpClient.java:338)
 at
sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:935)
 at
sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:876)
at
sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:801)
 at com.hp.hpl.jena.sparql.engine.http.HttpQuery.execGet(HttpQuery.java:199)
... 14 more

Best regards,
Regis.

Reply via email to