Запросы к открытому репозиторию RDF
Я пытаюсь запросить открытый репозиторий RDF, который загружается с файлом черепахи. Когда я выбираю все с помощью запроса - "SELECT? S WHERE {? S? P? O} "; тогда все работает нормально, но когда я использую немного сложный запрос, то он не работает. Я прилагаю код для части запроса -
private static void queryingRDF(Repository repo) {
try{
RepositoryConnection con = repo.getConnection();
try{
String queryString = "SELECT ?s WHERE { ?s uml:lineOfBusiness cp:lobEQUITIES .}" ;
TupleQuery tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
TupleQueryResult result = tupleQuery.evaluate();
try {
while(result.hasNext()){
BindingSet bindingSet = result.next();
Value valueOfX = bindingSet.getValue("s");
//Value valueOfY = bindingSet.getValue("p");
//Value valueOfZ = bindingSet.getValue("o");
//System.out.println(valueOfX + " " + valueOfY + " " + valueOfZ);
System.out.println(valueOfX) ;
}
}
finally {
result.close();
}
}
finally{
con.close();
}
}
catch(OpenRDFException e){
System.out.println("Query error");
}
}
Это постоянно попадает в раздел исключений и выдает ошибку - "Ошибка запроса". Что происходит не так?
1 ответ
Решение
Похоже, вы не определяете uml
или же cp
префиксы. Я ищу утверждение вроде этого в вашей строке запроса:
PREFIX uml: <http://example.com/uml>
или вызов RepositoryConnection::setNamespace, например так:
con.setNamespace("uml", "http://example.com/uml");