0

我在这里遇到了一个问题,看起来很简单,但是因为我对 Sparal 查询不太熟悉,所以我找不到解决方案。

让我解释一下我的问题。我想在 HTML 表中显示 SPARQL 查询的结果。我已经创建了我的查询并且它已成功执行,但我不知道如何在网页上将结果显示为 HTML 表格。

例如,我希望一个单元格包含一个名称,另一个单元格显示有关具有该名称的人的所有信息或描述……这个名称取自我的本体。我想知道这是否可能。如果是,我该怎么做?

4

1 回答 1

3

Jena 默认不提供将查询结果输出为 HTML 的方法。但是,可以让它生成 XML。你需要一个ResultSetFormatter. 这是一个例子:

Dataset ds = TDBFactory.createDataset(dbDirectory.getAbsolutePath());
Model model = ds.getDefaultModel();
String query = "SELECT * WHERE {?subject ?predicate ?object .}";
execution = QueryExecutionFactory.create(query, model.getUnionGraph());
ResultSet results = execution.execSelect();
resultString = ResultSetFormatter.asXMLString(results);

(为清楚起见省略了异常捕获)

您将以这种方式获得的 XML 将具有非常简单的形式。这是我上面使用的查询的示例:

<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  <head>
    <variable name="subject"/>
    <variable name="predicate"/>
    <variable name="object"/>
  </head>
  <results>
    <result>
      <binding name="subject">
        <uri>http://blahblahblah</uri>
      </binding>
      <binding name="predicate">
        <uri>http://foobar</uri>
      </binding>
      <binding name="object">
        <uri>http://fizzbuzz</uri>
      </binding>
    </result>
    <result>
      <binding name="subject">
        <uri>http://yadayada</uri>
      </binding>
      <binding name="predicate">
        <uri>http://example</uri>
      </binding>
      <binding name="object">
        <literal>This is a literal, expect them to pop up here and there too</literal>
      </binding>
    </result>
    <!-- and the results continue like this -->
  </results>
</sparql>

从这里到 HTML 表是应用 XSL 转换的问题。使用 XPath 或 XML 解析器读取数据并将其传递给 JSP 也很容易。

另一种选择是使用ResultSetFormatter来返回 aModel并使用Jena 提供的迭代器来构造一个表。

于 2012-11-12T23:17:24.717 回答