Я пытаюсь создать запрос SPARQL с помощью Йены для запросов DBpedia.
Запрос работает, когда я использую его с автономными инструментами (Мерцание), но когда я включаюсь, он в этом Java кодирует его, возвращает пустое множество.
String sparqlQueryString1 = "PREFIX dbont: <http://dbpedia.org/ontology/> " +
"PREFIX dbp: <http://dbpedia.org/property/>" +
"PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>" +
" SELECT ?musician ?place" +
" FROM<http://dbpedia.org/resource/Daphne_Oram>" +
" WHERE { " +
" ?musician dbont:birthPlace ?place ." +
" }";
Query query = QueryFactory.create(sparqlQueryString1);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://dbpedia.org/sparql", query);
ResultSet results = qexec.execSelect();
ResultSetFormatter.out(System.out, results, query);
qexec.close() ;
Какие-либо идеи, что я делаю неправильно?
Проблема заключается в вашем предложении FROM <...>
. Удалите его, и все будет хорошо. Имея это предложение, я подозреваю, что конечная точка ограничивает запрос графом с таким именем, но такого графа не существует и, следовательно, нет результата.
Непонятно то, что похоже, что запрос работает с формой по адресу http://dbpedia.org/sparql . Однако там установлен URI графа по умолчанию, поэтому запрос также проходит по этому графу. Очистите его, и запрос не будет работать. В качестве альтернативы вы можете настроить его на получение удаленных данных. Это приводит к названию rdf, в котором упоминаются три места рождения.
Если вы пытаетесь найти место рождения этого музыканта, используйте:
{ <http://dbpedia.org/resource/Daphne_Oram> dbont:birthPlace ?place . }