Webアプリ開発エンジニアのための技術情報サイト「テックスコア」

3. 簡単なRDFの処理

2006.01.11 株式会社四次元データ 中井隆史

3.1. Jena体験

それでは Jena の雰囲気を知ってもらうために、簡単なプログラムを作ってみましょう。 ここで作るのは下図のような RDF です。 「"http://tech.4dd.co.jp/"の作者は"urn:4dd:000"という URI で表される人物で、その人物の名前は四次元太郎、メールアドレスは"yojigen@4dd.co.jp"です。」 という内容を表します。

このようなモデルを Jena で生成し出力するコードは次のようになります。

1:  import com.hp.hpl.jena.rdf.model.Model;
2:  import com.hp.hpl.jena.rdf.model.ModelFactory;
3:  import com.hp.hpl.jena.rdf.model.RDFWriter;
4:  import com.hp.hpl.jena.rdf.model.Resource;
5:  import com.hp.hpl.jena.vocabulary.DC;
6:  import com.hp.hpl.jena.vocabulary.VCARD;
7:
8:
9:  public class RDFSample1 {
10:   public static void main(String[] args) {
11:     Model model = ModelFactory.createDefaultModel();
12:
13:     Resource tech = 
14:            model.createResource("http://tech.4dd.co.jp/");
15:     Resource creator = model.createResource("urn:4dd:000");
16:
17:     tech.addProperty(DC.creator,creator);
18:     creator.addProperty(VCARD.NAME,"四次元太郎");
19:     creator.addProperty(VCARD.EMAIL,"yojigen@4dd.co.jp");
20:	
21:     try{
22:       RDFWriter writer = model.getWriter("RDF/XML-ABBREV");
23:       writer.setProperty("showXMLDeclaration","true");
24:       writer.write(model,System.out,"");
25:     }catch(Exception e) {
26:       e.printStackTrace();
27:     }
28:   }
29: }

まず11行目で Model インタフェースを実装したオブジェクトを生成しています。 ModelFactory.createDefaultModel() はステートメントを含まない空の Model オブジェクトを生成します。

次に13-15行目でモデルに含まれるリソースを生成しています。 createResource(String uri) メソッドはモデルの中に uri で表されるリソースを生成します。 このとき model はまだステートメントを全く含まない状態です。

17-19行目では各リソースを主語とするプロパティをその目的語と共に追加しています。 こうすることで model にステートメントが追加されていき最終的に図1のグラフを表す RDF モデルが出来上がります。 ここで使っている DC.creator や VCARD.NAME は Dublin Core や VCARD で定義されたプロパティです。 このように Jena では、 RDF や RDFS、OWL、その他有用な語彙集の一部に含まれる語彙を、簡単に使用することができます。

22-24行目は RDF モデルを XML 形式で出力するための処理です。 この出力結果は次のようになります。

<?xml version="1.0"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:vcard="http://www.w3.org/2001/vcard-rdf/3.0#"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
  <rdf:Description rdf:about="urn:4dd:000">
    <vcard:NAME>四次元太郎</vcard:NAME>
    <vcard:EMAIL>yojigen@4dd.co.jp</vcard:EMAIL>
  </rdf:Description>
  <rdf:Description rdf:about="http://tech.4dd.co.jp/">
    <dc:creator rdf:resource="urn:4dd:000"/>
  </rdf:Description>
</rdf:RDF>

また、ここではリソースにプロパティと目的語を加えるという形を取りましたが、 次のように、モデルにステートメントを加えることでも同じ結果を得ることができます。

model.add(tech,DC.creator,creator);
model.add(creator,VCARD.NAME,"四次元太郎");
model.add(creator,VCARD.EMAIL,"yojigen@4dd.co.jp");


前のページへ TECHSCOREのTOPページへ 次のページへ
TECHSCORE PR
PR
PR
PR
PR
PR

techscore(トップページへ)
TECHSCORE書店
TECHSCOREトップページJavaSQLXMLリッチクライアントモデリングセマンティックWebその他技術Tuigwaa