查询开放的RDF存储库
我试图查询一个打开的RDF存储库,它加载了一个turtle文件。当我通过查询选择all时—“选择s WHERE{s?p?o}”;然后一切正常,但当我使用一个复杂的查询时,它就不工作了。我附上查询部分的代码-查询开放的RDF存储库,rdf,sparql,sesame,openrdf,Rdf,Sparql,Sesame,Openrdf,我试图查询一个打开的RDF存储库,它加载了一个turtle文件。当我通过查询选择all时—“选择s WHERE{s?p?o}”;然后一切正常,但当我使用一个复杂的查询时,它就不工作了。我附上查询部分的代码- private static void queryingRDF(Repository repo) { try{ RepositoryConnection con = repo.getConnection(); try{ Stri
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");
}
}
这将持续进入异常部分并抛出错误——“查询错误”。
出了什么问题?看起来您没有定义
uml
或cp
前缀。我想在你的提问中找到这样一句话:
PREFIX uml: <http://example.com/uml>
调用
setNamespace
无法解决此问题。SPARQL查询需要语法完整,这意味着需要将前缀声明添加到查询中。谢谢@JeenBroekstra。我以前没有使用过这个Java库,我假设这是一种在实际查询之外设置名称空间的方法。相反,检查它的stacktrace,例如打印出来:e.printStackTrace()
,或者至少看看异常消息:System.out.println(e.getMessage())代码>。确切的消息和stacktrace通常包含关于到底出了什么问题的有用信息。
con.setNamespace("uml", "http://example.com/uml");