firebone
firebone

Reputation: 117

DBpedia query giving me error when using jena

When i run this query on dbpedia.org

SELECT DISTINCT ?resource ?label ?location 
WHERE 
  { 
    <http://dbpedia.org/resource/New_York_City> geo:geometry ?sourcegeo . 
    ?resource geo:geometry ?location ; 
                                 rdfs:label ?label . 
    FILTER( bif:st_intersects( ?location, ?sourcegeo, 20 ) ) . 
    FILTER( lang( ?label ) = "en" ) 
  }

it is producing results fine but same query gives me error when using java jena api.

 String s2 = "SELECT DISTINCT ?resource ?label ?location \r\n" + 
        "WHERE \r\n" + 
        "  { \r\n" + 
        "    <http://dbpedia.org/resource/New_York_City> geo:geometry ?sourcegeo . \r\n" + 
        "    ?resource geo:geometry ?location ; \r\n" + 
        "                                 rdfs:label ?label . \r\n" + 
        "    FILTER( bif:st_intersects( ?location, ?sourcegeo, 20 ) ) . \r\n" + 
        "    FILTER( lang( ?label ) = \"en\" ) \r\n" + 
        "  }\r\n" + 
        "";

    Query query = QueryFactory.create(s2); //s2 = the query above
    QueryExecution qExe = QueryExecutionFactory.sparqlService( "http://dbpedia.org/sparql", query );
    ResultSet results = qExe.execSelect();
    ResultSetFormatter.out(System.out, results, query) ;

it gives me the following errors

Exception in thread "main" org.apache.jena.query.QueryParseException: Line 4, column 49: Unresolved prefixed name: geo:geometry
    at org.apache.jena.sparql.lang.ParserBase.throwParseException(ParserBase.java:521)
    at org.apache.jena.sparql.lang.ParserBase.resolvePName(ParserBase.java:286)
    at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.PrefixedName(SPARQLParser11.java:4857)
    at org.apache.jena.sparql.lang.sparql_11.SPARQLParser11.iri(SPARQLParser11.java:4841) and it goes on

Upvotes: 0

Views: 247

Answers (1)

Henriette Harmse
Henriette Harmse

Reputation: 4787

DBPedia has a number of Predefined Namespace Prefixes, which includes

PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>,

which Jena does not have. Hence you have to specify it for use Jena before your SELECT. I.e.

String s2 = "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>\r\n" +
            "SELECT DISTINCT ?resource ?label ?location \r\n" + 
            ... etc

Upvotes: 2

Related Questions