java - 在 JSP View 中访问 RDF 模型的最佳方法是什么?

标签 java spring rdf jena sesame

我正在编写一个 Java Web 应用程序,该应用程序从 URI 获取 RDF 数据并将它们存储在 Jena Model 对象中。目前模型包含普通三元组,一些空白节点,没有推理。 (这里已经描述过1)。使用 Sesame 也是一种选择。

数据收集后,应用程序会按指定顺序显示一些收集到的信息。有必要仅使用谓词和指定主语和谓语的过滤器在模型上构建过滤器(因为我们将从多个来源收集数据);在每种情况下,都会显示对象文字或 URI。

从 JSP View 一般访问模型内​​容的最佳方式是什么(无需为每个函数编写自定义标记)?

JSP-View 看起来像这样:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
    <head></head>
    <body>
        <img src="${modelBean.model.depictionPred}"/>
        Name: <c:out value="${modelBean.model.namePred}"/><br/>
        Life dates: <c:out value="${modelBean.model.birthPred}"/>-<c:out value="${modelBean.model.deathPred}"/><br/>
        Links: <a href="${modelBean.model.linkPred}">Linktext</a><br/>
        ...
    </body>
</html>

Jena-Servlet 收集数据:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            ModelBean modelBean = new ModelBean();
            Model model = ModelFactory.createDefaultModel();
            model.read("http://dbpedia.org/resource/Ludwig_van_Beethoven");
            modelBean.setModel(model);
            request.setAttribute("modelBean", modelBean);
            RequestDispatcher rd = request.getRequestDispatcher("/view.jsp");
            rd.forward(request, response);
        }

Servlet 的 Sesame 变体:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        ModelBean modelBean = new ModelBean();

        URL url = new URL("http://dbpedia.org/resource/Ludwig_van_Beethoven");
        URLConnection conn = url.openConnection();
        conn.addRequestProperty("Accept", RDFFormat.TURTLE.getDefaultMIMEType());
        InputStream is = conn.getInputStream();
        try {
           Model model = Rio.parse(is, url.toString(), RDFFormat.forMIMEType(conn.getContentType()));
        } catch (RDFParseException ex) {
           Logger.getLogger(ModelViewTester.class.getName()).log(Level.SEVERE, null, ex);
        } 
        finally {
           is.close(); 
        }
        modelBean.setModel(model);
        request.setAttribute("modelBean", modelBean);
        RequestDispatcher rd = request.getRequestDispatcher("/view.jsp");
        rd.forward(request, response);
    }

最佳答案

除了通过向 bean 方法的调用提供参数可能实现某些功能之外(请参阅 How to call parameterized method from JSP using JSTL/EL ),我担心您必须创建自定义标记,或者需要重新考虑您的访问策略。

例如,您可以在 servlet 端提取相关数据,然后将要显示的相关属性放入响应中,而不是将整个 RDF Model 放入您的响应中您的 View 响应,作为单独的 bean 属性。

关于java - 在 JSP View 中访问 RDF 模型的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21782861/

相关文章:

asp.net - MVC2 - 使用 RDF 和命名空间使用 RSS 提要 http ://www. w3.org/1999/02/22-rdf-syntax-ns#'

rdf - 我如何在 OWL 中声明属性必须具有一组有序值?

java - java中的自定义解释器

java - 制作正方形网格时我缺少什么?

java - 将文本添加到 JTextArea 而不向上滚动(java swing)

java - Spring Boot - 使用上下文路径时根级别的静态内容

pipe - 如何将数据传输到 rapper(Redland 的命令行 RDF 解析器)

java - 如何显示jmx MBean的类描述、属性描述和操作描述

javascript - 如何使用 Thymeleaf 在字符串段落中创建超链接(<an></a>)

java - Spring WebFlow validator 的配置问题