12.ステートメントの追加(Model)2006.03.13 株式会社四次元データ 中井隆史
Jena 12章 ステートメントの追加(Model)
12.1. Modelのメソッドを使用したステートメントの追加Model インターフェースを使用してステートメントを追加する場合は、add メソッドを使います。 このメソッドには大きく3通りの引数のとり方があります。 主語、述語、目的語に相当するオブジェクトを直接引数にとるもの、 後述の Statement 関連のインタフェース引数とるもの、他の Model をとるものです。 各要素を直接引数とする場合は、基本的に先述の Resource の addProperty メソッドと変わりありません。 第一引数はステートメントの主語となるResource、第二引数は述語となるプロパティ、第三引数は目的語です。
Statement インタフェース関連の引数とる場合は、 Statement を実装したオブジェクトの表すステートメントを、 RDF モデルに追加します。 また引数が複数のステートメントを含む List や配列、StmtIterator の場合は、 その引数が含む全てのステートメントを追加します。
他の Model オブジェクトを引数にとる場合、そのモデルに含まれるステートメントを全て追加します。 基本的には具体化されたステートメントも追加の対象になります。 suppressReifications を trueに すると追加されなくなります。
Resorce のところでも使用した、 「"http://tech.4dd.co.jp"の作者の名前は"四次元太郎"でそのメールアドレスは"yojigen@4dd.co.jp"です」 と言う RDF モデルの例を、 Model のメソッドを使用して書くと次のようになります。 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.rdf.model.Statement;
6: import com.hp.hpl.jena.vocabulary.DC;
7: import com.hp.hpl.jena.vocabulary.VCARD;
8:
9: public class RDFSample3 {
10: public static void main(String[] args) {
11: Model model = ModelFactory.createDefaultModel();
12:
13: Resource tech = model.createResource("http://tech.4dd.co.jp");
14: Resource yojigen = model.createResource();
15:
16: model.add(tech, DC.creator, yojigen);
17:
18: Statement smt2 = model.createStatement(yojigen
19: , VCARD.NAME, "四次元太郎");
20: model.add(smt2);
21: Statement smt3 = model.createStatement(yojigen
22: , VCARD.EMAIL, "yojigen@4dd.co.jp");
23: model.add(smt3);
24:
25: try{
26: RDFWriter writer = model.getWriter("RDF/XML-ABBREV");
27: writer.setProperty("showXMLDeclaration","true");
28: writer.write(model, System.out, "");
29: }catch(Exception e) {
30: e.printStackTrace();
31: }
32: }
33: }
16行目で、「"http://tech.4dd.co.jp" の作者が、ある匿名リソースである」というステートメントを、model に追加します。 ここでは add メソッドに直接主語や述語、目的語を指定しています。 一方18から23行目では、 model から一度ステートメントを生成してからさらに追加しています。 |
![]()
![]()
|