2012-03-10 12 views
2

Jenaを使用してfloat,intまたはdateなどの数値をResourceに追加するにはどうすればよいですか?Jena:プロパティに数値を追加する方法は?

私はresource.addProperty(Property, String, RDFDataType)を使用しなければならないと仮定しますが、上記のデータ型に対して正しいRDFDataTypeをインスタンス化するにはどうすればよいですか?

答えて

13

型付きリテラルの '公式' のドキュメントはこちらです: http://incubator.apache.org/jena/documentation/notes/typed-literals.html

あなたはaddLiteralを使用することができますし、例えば、イエナモデルメソッドを追加:

Model model = ... 

    model.addLiteral (subject, predicate, 10); 
    model.addLiteral (subject, predicate, 0.5); 
    model.addLiteral (subject, predicate, (float)0.5); 
    model.addLiteral (subject, predicate, ResourceFactory.createTypedLiteral(20)); 
    model.addLiteral (subject, predicate, ResourceFactory.createTypedLiteral(0.99)); 
    model.addLiteral (subject, predicate, true); 
    model.add (subject, predicate, ResourceFactory.createTypedLiteral("2012-03-11", XSDDatatype.XSDdate)); 
    model.add (subject, predicate, ResourceFactory.createTypedLiteral("P2Y", XSDDatatype.XSDduration)); 

RDFDatatypeはインターフェイスなので、直接インスタンス化することはできません。しかし、そのインタフェースを実装しているクラスを見てください。 XSDDatatypeはそのクラスの1つです。他にもあります。

完全な例をご覧になりたい場合は、ここをクリックしてください: https://github.com/castagna/jena-examples/blob/master/src/main/java/org/apache/jena/examples/ExampleDataTypes_01.java ExampleDataTypes_01.javaの出力は、次のRDF(Turtleフォーマットを使用してシリアライズされたもの)です。

@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> . 
@prefix example: <http://example.org/> . 

example:s 
     example:p1 "10"^^xsd:int ; 
     example:p2 "0.5"^^xsd:double ; 
     example:p3 "0.5"^^xsd:float ; 
     example:p4 "20"^^xsd:int ; 
     example:p5 "0.99"^^xsd:double ; 
     example:p6 "true"^^xsd:boolean ; 
     example:p7 "2012-03-11"^^xsd:date ; 
     example:p8 "P2Y"^^xsd:duration . 
1

これらはRDFのliteralsです。たとえば、rdf:valueプロパティを使用して、数値をリテラルとしてリソースに追加できます。これらのリテラルにdatatypesを指定することができます(例:xsd:int)。

関連する問題