2012-05-16 17 views
5

Fondamentalmente ho la seguente query, e funziona in tutti i tester SPARQL online senza problemi, ma quando utilizzo Java e Jena 2.6.4, non ottengo mai risultati. Ho scritto i valori nella query a scopo dimostrativo.Query SPARQL che usa Jena senza risultati - ma funziona online

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 

Alcuni Java, nota ho provato l'accesso a questo un paio di modi diversi, ma sto usando SPARQL tutto il progetto e non hanno problemi.

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

appena provato lo SPARQL contro dbpedia.org via Virtuoso endpoint e ottenuto risultati. Tuttavia, ciò che non è chiaro dal codice è come la query SPARQL è assegnata a s2 e come i dati entrano nel modello. – MikeJ

risposta

9

A meno che non si sta caricando l'intero insieme di dati DBpedia in un modello locale, per ottenere lo stesso effetto di esecuzione della query nel DBpedia SPARQL formare dovrete Inviate a punto finale DBpedia SPARQL. Ho eseguito il seguente modifica del programma:

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) ; 
    } 
} 

ed ho ottenuto il seguente risultato:

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 
| 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ì, ho provato questo approccio ma non ha funzionato, dopo aver copiato quell'esempio senza risultati, ho cancellato tutte le istruzioni di importazione e ho risolto il problema. Grazie mille :) – Ash

Problemi correlati