2012-03-10 5 views
2

Как добавить числовые значения, такие как float, int или date в Resource с использованием Jena?Jena: Как добавить свойства с числовыми значениями?

Я предполагаю, что мне нужно будет использовать resource.addProperty(Property, String, RDFDataType), но как создать экземпляр правильного типа RDFDataType для вышеупомянутых типов данных?

ответ

13

'официальной' документацию по типизированных литералов здесь: http://incubator.apache.org/jena/documentation/notes/typed-literals.html

Вы можете использовать addLiteral и добавить методы в Jena модели, например:

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 является одним из этих классов. Есть и другие.

Если вы хотите увидеть полный пример, смотрите здесь: 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

Это literals в RDF. Вы можете использовать, например, свойство rdf:value, чтобы добавить числовые значения в качестве литералов к вашему ресурсу. Вы можете указать datatypes на этих литералах, например, xsd:int.

Смежные вопросы