Java Jena:得到一个空的结果集
当我试图检索存储在jena模型中的数据时,得到的结果集是空的 这是加载数据的代码(为了简洁起见,我删除了导入) 这就是我从java程序读取数据的方式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
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