RDF の処理用に Jena を試しているのですが,簡単な RDF の出力に成功したので,今度は独自ネームスペースを追加してみました。
独自ネームスペースを追加するにあたり,以下のものを想定しました。
Jena で独自ネームスペースを追加する場合,専用のクラスを定義して,各語彙をスタティック変数として宣言するようです。上記の条件を満たすネームスペース用のクラスは,以下のようになります。
public class PROFILE { private static Model m_model = ModelFactory.createDefaultModel(); public static final String NS = "http://shinn.boo.jp/elements/1.0/"; public static final Resource NAMESPACE = m_model.createResource(NS); public static String getURI() { return NS; } public static final Property flickr = m_model.createProperty(NS + "flickr"); public static final Property mixi = m_model.createProperty(NS + "mixi"); public static final Property gree = m_model.createProperty(NS + "gree"); }
定義したネームスペースを利用して,「このブログの作成者は【SHINN】で,タイトルは【SHINN::Scribble】であり,Flickr の URL は 【http://www.flickr.com/photos/shinichi/】 である」という RDF を作成してみます(Model 生成部分は省略)。
model.setNsPrefix("profile", "http://shinn.boo.jp/elements/1.0/"); Resource myBlog = model.createResource( "http://shinn.boo.jp/blog/"); myBlog.addProperty(DC.creator, "SHINN"); myBlog.addProperty(DC.title, "SHINN::Scribble"); Resource flickr = model.createResource( "http://www.flickr.com/photos/shinichi/"); model.add(myBlog, PROFILE.flickr, flickr);
生成した RDF を出力すると以下のようになり,想定したとおりです。
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:profile="http://shinn.boo.jp/elements/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="http://shinn.boo.jp/blog/"> <dc:creator>SHINN</dc:creator> <dc:title>SHINN::Scribble</dc:title> <profile:flickr rdf:resource="http://www.flickr.com/photos/shinichi/"/> </rdf:Description> </rdf:RDF>
独自ネームスペースの追加は,想像していたよりも簡単でした。次は SPARQL を発行して結果を出力しようと思います。