查询开放的RDF存储库

查询开放的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

我试图查询一个打开的RDF存储库,它加载了一个turtle文件。当我通过查询选择all时—“选择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");
    }

}
这将持续进入异常部分并抛出错误——“查询错误”。
出了什么问题?

看起来您没有定义
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");