我有一个基于 jsp 的 web 应用程序,它使用 tomcat 作为 j2ee 服务器,请告诉我实现语义搜索的必要步骤?
我在下面添加了代码。
public String queryOntology(String val) throws OWLOntologyCreationException {
OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
OWLDataFactory dataFactory = manager.getOWLDataFactory();
File ontologyFile = new File("D:\\onto.owl");
OWLOntology psychiatricOntology = manager.loadOntologyFromOntologyDocument(ontologyFile);
//OWLReasoner rStructral = new StructuralReasonerFactory().createReasoner(psychiatricOntology);
OWLReasoner rHermit = new Reasoner.ReasonerFactory().createReasoner(psychiatricOntology);
try {
QueryEngine queryEng = QueryEngine.create(manager, rHermit);
Query query = Query.create("SELECT ?c WHERE { Class(?c) }");
QueryResult result = queryEng.execute(query);
return result.toString();
} catch (QueryParserException ex) {
//return ex.getMessage();
} catch (QueryEngineException ex) {
ex.getMessage();
} finally {
rHermit.dispose();
//rStructral.dispose();
}
return null;
}
上面的代码片段显示了该方法为执行的查询返回一个字符串值并且它被正确返回。但是当尝试在 java servlet 中检索该值时会导致错误。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
String val = request.getParameter("query");
PrintWriter out = response.getWriter();
getInfo gi = new getInfo();
request.getRequestDispatcher("header.jsp").include(request, response);
out.print("<div id=content>");
out.print(val);
try {
//gi.createIndex();
//List<String> str = gi.createIndexSearcher(val);
//out.print(str);
out.print(gi.queryOntology(val));
} catch (OWLOntologyCreationException ex) {
Logger.getLogger(Search.class.getName()).log(Level.SEVERE, null, ex);
}
out.print("</div>");
request.getRequestDispatcher("footer.jsp").include(request, response);
}
上面的代码在 servlet 中使用。我该如何解决这个问题?提前致谢
这是我得到的错误屏幕的屏幕截图。http://tinypic.com/r/2cnxj87/8