我正在尝试获取在端点linkedlifedata.com/sparql上进行的查询的结果集,并且我想要获取的对象是“指示”,这是一个段落。我如何在netbeans中打印它?代码是: -
String qs1 = "PREFIX skos: <http://www.w3.org/2004/02/skos/core#>"+
"PREFIX drugbank: <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/>"+
"select ?indication"+
"where {"+
"?drug drugbank:indication ?indication."+
"?drug drugbank:genericName ?drugname."+
"filter(regex(?drugname, 'Omalizumab','i'))"+
"}LIMIT 100 ";
com.hp.hpl.jena.query.Query query = QueryFactory.create(qs1);
QueryExecution qexec = QueryExecutionFactory.sparqlService("http://linkedlifedata.com/sparql", query);
String o;
try{
ResultSet results = qexec.execSelect();
for ( ; results.hasNext() ; )
{
QuerySolution soln = results.nextSolution() ;
o = soln.get("indication").toString();
System.out.println(o);
}
}
finally {
qexec.close();
}
}
我应用了上述方法。但它显示的是nullpointer异常。查询运行正常(在端点上检查)。我之前使用isLiteral()函数获得了drugname(一个小字符串),但是对于作为段落的“indication”,它没有发生。 PLZ HELP,IT'S URGENT.Thanx
答案 0 :(得分:2)
在我跑步之前,我根本没有发现这一点。你的问题是:
"select ?indication"+
"where {"+
选择行末尾没有空格,因此查询实际上是:
... select ?indicationwhere { ... }
因此没有?indication
的绑定和空指针异常。在那里贴上换行符或空格。