Запрос DBpedia, выдающий мне ошибку при использовании jena - PullRequest
0 голосов
/ 21 мая 2018

Когда я запускаю этот запрос на 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" ) 
  }

, он дает хорошие результаты, но тот же запрос выдает ошибку при использовании 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) ;

он дает мнеследующие ошибки

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

1 Ответ

0 голосов
/ 21 мая 2018

DBPedia имеет ряд предопределенных префиксов пространства имен , который включает

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

, которых нет у Йены.Следовательно, вы должны указать это для использования Jena до вашего SELECT.Т.е.

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