com.hp.hpl.jena.query.Query query = QueryFactory.create(queryStr);
QueryExecution qe = QueryExecutionFactory.create(query,model);
com.hp.hpl.jena.query.ResultSet rs = qe.execSelect();
ResultSetFormatter.out(System.out, rs);
有什么想法吗?
com.hp.hpl.jena.query.Query query = QueryFactory.create(queryStr);
QueryExecution qe = QueryExecutionFactory.create(query,model);
com.hp.hpl.jena.query.ResultSet rs = qe.execSelect();
ResultSetFormatter.out(System.out, rs);
有什么想法吗?
我不懂Jena,但基本上你想要迭代 com.hp.hpl.jena.query.ResultSet 并将信息映射到一个 List<RowObject> 中,其中 RowObject 是您自己的模型类,表示您想在HTML表中显示的单个行。映射完成后,将 List<RowObject> 放入请求范围并将请求转发到JSP。
List<RowObject> results = getItSomeHow();
request.setAttribute("results", results); // Will be available as ${results} in JSP
request.getRequestDispatcher("page.jsp").forward(request, response);
然后在JSP中,使用JSTL的c:forEach标签来遍历List<RowObject>,输出HTML表格。
<table>
<c:forEach items="${results}" var="rowObject">
<tr>
<td>${rowObject.someProperty}</td>
<td>${rowObject.anotherProperty}</td>
...
</tr>
</c:forEach>
</table>
基于您的其他答案,以下是如何基于Jena的ResultSet创建一个List的方法:
List<RowObject> results = new ArrayList<RowObject>();
while (rs.hasNext()) {
RowObject result = new RowObject();
QuerySolution binding = result.nextSolution();
result.setInd(binding.get("ind"));
result.setSomethingElse(binding.get("something_else"));
// ...
results.add(result);
}
并将其显示如下:
...
<td>${rowObject.ind}</td>
<td>${rowObject.somethingElse}</td>
...
这段代码可以放在你的Servlet中,或者你也可以使用单独的Java类来实现。
com.hp.hpl.jena.query.Query query = QueryFactory.create(queryStr);
QueryExecution qe = QueryExecutionFactory.create(query,model);
com.hp.hpl.jena.query.ResultSet rs = qe.execSelect();
while(rs.hasNext()){
QuerySolution binding = rs.nextSolution();
System.out.println(binding.get("ind"));
}
注意:
“ind”是你在SPARQL查询SELECT子句中引用的变量。
谢谢!