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

12.ステートメントの追加(Model)

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

12.1. Modelのメソッドを使用したステートメントの追加

Model インターフェースを使用してステートメントを追加する場合は、add メソッドを使います。 このメソッドには大きく3通りの引数のとり方があります。 主語、述語、目的語に相当するオブジェクトを直接引数にとるもの、 後述の Statement 関連のインタフェース引数とるもの、他の Model をとるものです。

各要素を直接引数とする場合は、基本的に先述の Resource の addProperty メソッドと変わりありません。 第一引数はステートメントの主語となるResource、第二引数は述語となるプロパティ、第三引数は目的語です。

  • Model add(Resource s, Property p, java.lang.Object o)
  • Model add(Resource s, Property p, RDFNode o)
  • Model add(Resource s, Property p, java.lang.String o)
  • Model add(Resource s, Property p, java.lang.String o, java.lang.String l)
  • Model add(Resource s, Property p, 基本データ型/*int, double等*/ o)

Statement インタフェース関連の引数とる場合は、 Statement を実装したオブジェクトの表すステートメントを、 RDF モデルに追加します。 また引数が複数のステートメントを含む List や配列、StmtIterator の場合は、 その引数が含む全てのステートメントを追加します。

  • Model add(Statement s)
  • Model add(Statement[] statements)
  • Model add(java.util.List statements)
  • Model add(StmtIterator iter)

他の Model オブジェクトを引数にとる場合、そのモデルに含まれるステートメントを全て追加します。 基本的には具体化されたステートメントも追加の対象になります。 suppressReifications を trueに すると追加されなくなります。

  • Model add(Model m)
  • Model add(Model m,boolean suppressReifications)

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 から一度ステートメントを生成してからさらに追加しています。



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

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