16. 型変換2006.04.11 株式会社四次元データ 中井隆史
Jena 16章 型変換
16.1. RDFNode.canAs と as メソッドRDFNode インタフェースは RDF の様々な概念の基となるインタフェースです。 そのため各概念の相互変換などを行うメソッドを持っています。
これらは例えば Property と Resource の相互変換を行う場合に使用します。 RDF ではプロパティをリソースとして使用したり、リソースをプロパティとして使用したりすることがあります。 これらを表すインタフェースは Property と Resource です。 Property は Resource のサブインタフェースです。 そのため Property を実装したオブジェクトは Resource のメソッドを使用したり、Resource 型の変数に代入したりできます。 しかし Java の仕様上、逆の操作はできません。 これを実現するのが RDFNode.as() メソッドです。 上述の Resource のオブジェクトを Property に変換することができます。 一方 canAs メソッドは事前にその変換が可能かどうかを調べることが可能します。 例えば目的語がリテラルかリソースかによって処理を分けたいときにしようできます。 同様の要求は問い合わせ処理を行う場合に頻出します。 次の例は RDFモデル中に出てくる作者 (dc:creator) がリソースの場合はURIを、リテラルの場合は値を表示し、 それ以外の場合は何も処理を行いません。 例
NodeIterator creators = model.listObjectsOfProperty(DC.creator);
while(creators.hasNext()){
RDFNode rdfNode = creators.nextNode();
if(rdfNode.canAs(Resource.class)){
Resource creator = (Resource)rdfNode.as(Resource.class);
System.out.println(creator.getURI());
} else if(rdfNode.canAs(Literal.class)){
Literal creator = (Literal)rdfNode.as(Literal.class);
System.out.println(creator.getString());
} else {
// Resource や Literal に変換できない場合は処理しない。
}
}
|
![]()
![]()
|