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 を発行して結果を出力しようと思います。
