Итак, я делаю простой запрос. Мне нужны все uri/property/object определенного uri dbpedia, например: http://dbpedia.org/resource/Roger_Federer а>. Проблема в том, что он возвращает только его свойство, как мы видим в наборе результатов.
Класс:
public class SemanticCrawlerImpl implements SemanticCrawler {
public void search(Model graph, String resourceURI) {
graph.read(resourceURI);
// Create a new query
String queryString =
"SELECT ?url ?property ?object" +
"WHERE {" +
" <"+resourceURI+"> ?property ?object ." +
"}";
Query query = QueryFactory.create(queryString);
System.out.println("----------------------");
System.out.println("Query Result Sheet");
System.out.println("----------------------");
// Execute the query and obtain results
QueryExecution qe = QueryExecutionFactory.create(query, graph);
com.hp.hpl.jena.query.ResultSet results = qe.execSelect();
// Output query results
ResultSetFormatter.out(System.out, results, query);
qe.close();
}
}
Набор результатов
| url | property | objectWHERE |
=================================================================================
| | <http://dbpedia.org/property/medaltemplatesTitle> | |
| | <http://dbpedia.org/ontology/thumbnail> | |
| | <http://www.w3.org/2002/07/owl#sameAs> | |
| | <http://www.w3.org/2002/07/owl#sameAs> | |
| | <http://www.w3.org/2002/07/owl#sameAs> | |
| | <http://www.w3.org/2002/07/owl#sameAs> | |
| | <http://dbpedia.org/property/name> | |
| | <http://dbpedia.org/property/daviscupresult> | |
| | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | |
| | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | |
| | <http://dbpedia.org/property/hopmancupresult> | |
| | <http://dbpedia.org/ontology/wikiPageExternalLink> | |
| | <http://purl.org/dc/terms/subject> | |
| | <http://www.w3.org/2002/07/owl#sameAs> | |
| | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | |
| | <http://purl.org/dc/terms/subject> | |
| | <http://www.w3.org/2002/07/owl#sameAs> | |
| | <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> | |
| | <http://dbpedia.org/ontology/height> | |
| | <http://purl.org/dc/terms/subject> | |
| | <http://www.w3.org/2002/07/owl#sameAs> | |
| | <http://dbpedia.org/ontology/birthYear> | |
?object" + "WHERE
дает вамselect ?objectWHERE
, и вы не используете переменную?objectWHERE
.where
в запросах является необязательным (т. е. вы можете написатьselect ?a ?b { ... }
, что позволит избежать проблемы. Но вы все равно должны использовать новые строки в строке запроса, чтобы вы получали более точные сообщения об ошибках синтаксиса для номеров строк. Кроме того, конкатенация строк, например<"+resourceURI+">
подвержен ошибкам; вместо этого следует использовать ParameterizedSparqlString. - person Joshua Taylor   schedule 13.10.2014