我正在使用Jena API从Allegrograph Server获取RDF数据。我使用Jersey jar编写了一个REST Web服务来获取这些数据。
我的webservice的java代码如下所示:
@GET
@Path("/JENA")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public String getData() throws RepositoryException {
AGGraphMaker maker = new AGGraphMaker(conn);
AGGraph graph = maker.getGraph();
AGModel model = new AGModel(graph);
AGQuery agQuery = AGQueryFactory.create(query);
QueryExecution qe = AGQueryExecutionFactory.create(agQuery, model);
String result = null;
ByteArrayOutputStream byteArrayOutputStream = null;
try {
ResultSet rs = qe.execSelect();
While(rs.hasNext()){
byteArrayOutputStream = new ByteArrayOutputStream();
if("JSON".equalsIgnoreCase(outputFormat)){
ResultSetFormatter.outputAsJSON(byteArrayOutputStream, rs);
result = byteArrayOutputStream.toString();
System.out.println("Result is "+result);
} else if("XML".equalsIgnoreCase(outputFormat)){
ResultSetFormatter.outputAsXML(byteArrayOutputStream, rs);
result = byteArrayOutputStream.toString();
}else if("CSV".equalsIgnoreCase(outputFormat)){
ResultSetFormatter.outputAsCSV(byteArrayOutputStream, rs);
result = byteArrayOutputStream.toString();
}
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
当我在Tomcat服务器上部署此Web服务并使用Chrome和Firefox上的REST客户端应用程序对其进行测试时,我得不到SPARQL查询的结果。
但是相同的代码(在webservice代码和这个主要方法代码中完全没有区别)如果我在一个普通的java类中编写并运行它的main方法,我得到36个结果。我不确定是什么问题。
请帮助我。
答案 0 :(得分:0)
您需要将问题分开:
使用小功能单元并明确其职责是更好的。你肯定应该学习如何使用测试 - 这在中期内是一个巨大的胜利,即使它意味着更多的学习前面!