Spring MVC を介して Java モデルの RDF 表現を提供するにはどうすればよいですか?
Spring のコンテンツ ネゴシエーション メカニズムを使用して動作する JSON および XML 表現があり、RDF についても同じことをしたいと考えています。
Spring MVC を介して Java モデルの RDF 表現を提供するにはどうすればよいですか?
Spring のコンテンツ ネゴシエーション メカニズムを使用して動作する JSON および XML 表現があり、RDF についても同じことをしたいと考えています。
私はSpring MVCについて何も知らないことに言及して、これを序文にします。しかし、RDF としてシリアライズしたい Java オブジェクトがある場合は、Empireのようなライブラリー(私が作成者です) が役立つかもしれません。オブジェクトに注釈を付けて、何を RDF に変換するかを指定し、RdfGenerator
クラスを使用してオブジェクトを表す RDF グラフを返すことができます。その後、Sesame フレームワークのRIO RDF ライターのようなものを使用して、RDF シリアル化が要求されたものとしてグラフをシリアル化できます。
これは Spring MVC 固有のものではないことはわかっていますが、OutputStream と要求されたコンテンツ タイプを取得できれば、Empire と Sesame の RIO で動作させることができるはずです。
さらに、charset
パラメーターを追加する必要があります。StringHttpMessageConverterは、変更しない限り、デフォルトの文字エンコーディングとして ISO-8859-1 を使用します。出力形式が ISO-8859-1 とは異なる固定エンコーディング (UTF-8 など) の場合は、 で宣言する必要がありますproduces
。この動作は仕様と一致しています。たとえば、モデルに非 ASCII 文字が含まれていて、それが でエンコードされているturtle
場合、仕様では、メディア タイプtext/turtlecharset
には値が のパラメータが含まれている必要があると規定されていますUTF-8
。それ以外の場合はオプションです。
@RequestMapping(value = "your/service/location", method = RequestMethod.GET,
produces = { "text/turtle;charset=UTF-8"})
public @ResponseBody String getModelAsTurtle() throws IOException {
try (final ByteArrayOutputStream os = new ByteArrayOutputStream()) {
RDFDataMgr.write(os, model, RDFFormat.TURTLE_PRETTY);
return os.toString();
}
}