2012-05-16 7 views
5

Básicamente tengo la siguiente consulta, y funciona en todos los comprobadores SPARQL en línea sin ningún problema, pero cuando uso Java y Jena 2.6.4, nunca obtengo ningún resultado. He escrito los valores en la consulta para fines de demostración.Consulta SPARQL utilizando Jena sin resultados, pero funciona en línea

PREFIX g: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX onto: <http://dbpedia.org/ontology/> 

SELECT ?subject ?stadium ?lat ?long 
WHERE 
    { ?subject g:lat ?lat . 
    ?subject g:long ?long . 
    ?subject <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> onto:Stadium . 
    ?subject rdfs:label ?stadium 
    FILTER (((((?lat >= 52.4814) && (?lat <= 57.4814)) && (?long >= -1.89358)) && (?long <= 3.10642)) && (lang(?stadium) = "en")) 
    } 
LIMIT 5 

Algunos de Java, tenga en cuenta que he intentado tener acceso a este algunas maneras diferentes, sin embargo estoy usando SPARQL lo largo del proyecto y no tienen problemas.

Query query = QueryFactory.create(s2); //s2 = the query above 
QueryExecution qExe = QueryExecutionFactory.create(query, model); 
ResultSet resultsRes = qExe.execSelect(); 

try { 
    while (resultsRes.hasNext()) {     
    QuerySolution soln = resultsRes.nextSolution(); 
    //never any results 
    } 
} catch (Exception ex) { 
    System.out.println(ex); 
} 
+0

sólo trató el SPARQL contra dbpedia.org a través de Virtuoso punto final y consiguieron resultados. Sin embargo, lo que no está claro de su código es cómo se asigna la consulta SPARQL a s2 y cómo los datos entran en el modelo. – MikeJ

Respuesta

9

A menos que vaya a cargar todo el conjunto de datos DBpedia en un modelo local, para obtener el mismo efecto que la ejecución de la consulta en el DBpedia SPARQL formar tendrá que enviar su consulta al punto final DBpedia SPARQL. Me encontré con la siguiente modificación de su programa:

package example; 

import com.hp.hpl.jena.query.*; 

public class AshTest 
{ 
    public static void main(String[] args) { 
     String s2 = "PREFIX g: <http://www.w3.org/2003/01/geo/wgs84_pos#>\n" + 
       "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n" + 
       "PREFIX onto: <http://dbpedia.org/ontology/>\n" + 
       "\n" + 
       "SELECT ?subject ?stadium ?lat ?long\n" + 
       "WHERE\n" + 
       " { ?subject g:lat ?lat .\n" + 
       " ?subject g:long ?long .\n" + 
       " ?subject <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> onto:Stadium .\n" + 
       " ?subject rdfs:label ?stadium\n" + 
       " FILTER (((((?lat >= 52.4814) && (?lat <= 57.4814)) && (?long >= -1.89358)) && (?long <= 3.10642)) && (lang(?stadium) = \"en\"))\n" + 
       " }\n" + 
       "LIMIT 5\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) ; 
    } 
} 

y obtuvo el siguiente resultado:

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
| subject              | stadium        | lat             | long             | 
====================================================================================================================================================================================================================== 
| <http://dbpedia.org/resource/Welford_Road_Stadium>   | "Welford Road Stadium"@en   | "52.6242"^^<http://www.w3.org/2001/XMLSchema#float> | "-1.13306"^^<http://www.w3.org/2001/XMLSchema#float> | 
| <http://dbpedia.org/resource/Hillsborough_Stadium>   | "Hillsborough Stadium"@en   | "53.4114"^^<http://www.w3.org/2001/XMLSchema#float> | "-1.50056"^^<http://www.w3.org/2001/XMLSchema#float> | 
| <http://dbpedia.org/resource/Gateshead_International_Stadium> | "Gateshead International Stadium"@en | "54.9611"^^<http://www.w3.org/2001/XMLSchema#float> | "-1.57972"^^<http://www.w3.org/2001/XMLSchema#float> | 
| <http://dbpedia.org/resource/Filbert_Street>     | "Filbert Street"@en     | "52.6236"^^<http://www.w3.org/2001/XMLSchema#float> | "-1.14056"^^<http://www.w3.org/2001/XMLSchema#float> | 
| <http://dbpedia.org/resource/Craven_Park,_Hull>    | "Craven Park, Hull"@en    | "53.7539"^^<http://www.w3.org/2001/XMLSchema#float> | "-0.264722"^^<http://www.w3.org/2001/XMLSchema#float> | 
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
+0

Sí, probé ese enfoque pero no funcionó, después de copiar el ejemplo sin resultados, eliminé todas las declaraciones de importación y eso solucionó el problema. Muchas gracias :) – Ash

Cuestiones relacionadas