Jena: Как добавить свойства с числовыми значениями?

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

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


person Pedro    schedule 10.03.2012    source источник


Ответы (2)


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

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

    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 .
person castagna    schedule 11.03.2012

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

person zazi    schedule 10.03.2012
comment
как мы можем напечатать тип данных для строкового значения? например model.addLiteral (субъект, предикат, тестовая строка); он должен печатать вот так, но не печатать: example:p11 test str^^xsd:string ; - person MaxSteel; 09.04.2020