0

ここで問題が発生しました。簡単に見えますが、Sparal クエリに詳しくないため、解決策を見つけることができませんでした。

私の問題を説明しましょう。SPARQL quer の結果を HTML テーブルに表示したいと考えています。クエリを作成し、正常に実行されましたが、結果を HTML テーブルとして Web ページに表示する方法がわかりません。

たとえば、1 つのセルに名前を含め、別のセルにその名前を持つ人々に関するすべての情報または説明を表示する必要があります...この名前は私のオントロジーから取得されます。それが可能かどうか疑問に思います。はいの場合、どうすればできますか?

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に渡すことも簡単です。

もう1つのオプションは、を使用しResultSetFormatterてaを返し、Jenaが提供するイテレータModelを使用してテーブルを作成することです。

于 2012-11-12T23:17:24.717 に答える