Основываясь на использовании SPARQL и DBPedia, я хочу получить информацию обо всех церквях, расположенных в Париже. Если я запустил код ниже, он возвращает null
. Я не могу понять, что не так, потому что нет сообщения об ошибке.Запрос SPARQL возвращает null
package com.tests.example;
import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.query.QuerySolution;
import org.apache.jena.query.ResultSet;
import org.apache.jena.rdf.model.RDFNode;
public class JenaTestDBPedia {
public static void main(String[] args) {
String queryString=
"PREFIX p: <http://dbpedia.org/property/>" +
"PREFIX dbpedia: <http://dbpedia.org/resource/>" +
"PREFIX category: <http://dbpedia.org/resource/Category:>" +
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>" +
"PREFIX skos: <http://www.w3.org/2004/02/skos/core#>" +
"PREFIX geo: <http://www.georss.org/georss/>" +
"SELECT DISTINCT ?m ?n ?p ?d" +
"WHERE {" +
" ?m rdfs:label ?n." +
" ?m skos:subject ?c." +
" ?c skos:broader category:Churches_in_Paris." +
" ?m p:abstract ?d." +
" ?m geo:point ?p" +
" }";
Query query = QueryFactory.create(queryString);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
try {
ResultSet results = qexec.execSelect();
while(results.hasNext()) {
QuerySolution qs = results.next();
RDFNode type = qs.get("label");
System.out.println(type.toString());
}
}
finally {
qexec.close();
}
}
}
Update: Исправленный запрос (хотя это не работает):
"SELECT DISTINCT ?m ?n ?p ?d \n" +
"WHERE { \n" +
" ?m rdfs:label ?n." +
" ?m skos:subject ?c." +
" ?c skos:broader category:Churches_in_Paris." +
" ?m p:abstract ?d." +
" ?m geo:point ?p" +
" }";
Где у вас есть переменная 'label' в вашем запросе? Нигде, точно. Он называется 'n' в вашем запросе. – AKSW