Java Jena:得到一个空的结果集

Java Jena:得到一个空的结果集,java,rdf,sparql,jena,tdb,Java,Rdf,Sparql,Jena,Tdb,当我试图检索存储在jena模型中的数据时,得到的结果集是空的 这是加载数据的代码(为了简洁起见,我删除了导入) 这就是我从java程序读取数据的方式 public class ReadBasicQn { public static void main(String[] args) { String directory = "D:/mywork/dp/projs/static-risks/data/test"; Dataset dataset = TDBFactory.create

当我试图检索存储在jena模型中的数据时,得到的结果集是空的

这是加载数据的代码(为了简洁起见,我删除了导入)

这就是我从java程序读取数据的方式

public class ReadBasicQn {
public static void main(String[] args) {
    String directory = "D:/mywork/dp/projs/static-risks/data/test";
    Dataset dataset = TDBFactory.createDataset(directory);

    Model model = null;
    ResultSet rs;
    QueryExecution qexeExecution = null;
    try{
        /*model = ModelFactory.createDefaultModel();
        TDBLoader.loadModel(model, directory + "/Project_risk.ttl");*/

        model = dataset.getDefaultModel();

        String queryString = "PREFIX proj: <http://www.abc123.com/riskmodelling/static/risks#> ";
        queryString += "select ?risks where ";
        queryString += "{proj:PROJECT_NATURE proj:COMPLEX_FUNCTIONALITY ?risks}";


        String queryString2 = "SELECT * WHERE { ?s ?p ?o }";

        Query q = QueryFactory.create(queryString);
        qexeExecution = QueryExecutionFactory.create(q, model);
        rs = qexeExecution.execSelect();
        ResultSetFormatter.out(System.out, rs);
        qexeExecution.close();

        q = QueryFactory.create(queryString2);
        qexeExecution = QueryExecutionFactory.create(q, model);
        rs = qexeExecution.execSelect();
        ResultSetFormatter.out(System.out, rs);

        /*while(rs.hasNext()){
            QuerySolution qSol = rs.nextSolution();
            RDFNode n = qSol.get("risks");
            System.out.println(n);
        }*/

    }finally{
        qexeExecution.close();
    }
}

感谢您的帮助。我刚开始学Jena,所以可能我做了一些非常愚蠢的事情。

有个打字错误。前缀以
#
结尾,但在URI中有一个
。这是您的前缀声明和URI,已排列好:

prefix proj: http://www.abc123.com/riskmodelling/static/risks#>
             http://www.abc123.com/riskmodelling/static/risks:PROJECT_NATURE
                                                             ^
                                                             |
在您的URI中,它是风险[COLON]项目性质,而不是风险[HASH]项目性质。您需要将前缀更改为:

prefix proj: http://www.abc123.com/riskmodelling/static/risks:>
或者将数据更改为

Resource projectNatureRes = model.createResource(resourceURI+"#PROJECT_NATURE");
// ...and in a few other places, too

非常感谢。这是可行的,我没有意识到在查询中必须匹配前缀模式。
prefix proj: http://www.abc123.com/riskmodelling/static/risks#>
             http://www.abc123.com/riskmodelling/static/risks:PROJECT_NATURE
                                                             ^
                                                             |
prefix proj: http://www.abc123.com/riskmodelling/static/risks:>
Resource projectNatureRes = model.createResource(resourceURI+"#PROJECT_NATURE");
// ...and in a few other places, too