Как преобразовать RDF в строку

Я создаю некоторый файл RDF с библиотекой JENA: _1 _... как мне преобразовать его в строку?

Спасибо


person hudi    schedule 11.04.2012    source источник


Ответы (2)


Попробуйте что-то вроде этого:

String syntax = "RDF/XML-ABBREV"; // also try "N-TRIPLE" and "TURTLE"
StringWriter out = new StringWriter();
model.write(out, syntax);
String result = out.toString();

При этом используются встроенные средства записи Jena, которые уже могут выводить графы RDF в различных поддерживаемых синтаксисах RDF, таких как RDF / XML и Turtle и N-Triples. Если захочется просто сбросить в System.out, то еще проще:

model.write(System.out, "RDF/XML-ABBREV");
person cygri    schedule 12.04.2012

Модель RDF - это набор утверждений. Каждый раз, когда вы добавляете свойство в модель, создается Заявление ... и Заявление в модели RDF также называется «Тройным», поскольку оно состоит из 3 частей: Тема (Ресурс), Предикат (свойство) и объект (RDFNode - может быть ресурсом). Вы можете вызвать метод toString для этих объектов, как показано в приведенном ниже коде:

// list the statements in the Model
StmtIterator iter = model.listStatements();

// print out the predicate, subject and object of each statement
while (iter.hasNext()) {
    Statement stmt      = iter.nextStatement();  // get next statement
    Resource  subject   = stmt.getSubject();     // get the subject
    Property  predicate = stmt.getPredicate();   // get the predicate
    RDFNode   object    = stmt.getObject();      // get the object

    System.out.print(subject.toString());
    System.out.print(" " + predicate.toString() + " ");
    if (object instanceof Resource) {
       System.out.print(object.toString());
    } else {
        // object is a literal
        System.out.print(" \"" + object.toString() + "\"");
    }

    System.out.println(" .");
} 

Обратите внимание на метод toString в приведенном выше коде.

Источник / ссылка: Jena - RDF (проверьте раздел «Заявления»).

person bchetty    schedule 11.04.2012
comment
rdf - это xml, а xml - это некоторая строка, поэтому будет полезен некоторый метод toString. Кстати, можете ли вы объяснить мне различие между Ресурсом и буквальным? - person hudi; 12.04.2012
comment
Это не подходящий способ сериализации модели в RDF. Как показывает cygri, модели могут записывать себя в потоки вывода / средства записи в любом поддерживаемом синтаксисе RDF, не делайте этого вручную. - person Michael; 12.04.2012
comment
Этот код взят из документации по фреймворку JENA. В приведенном выше сообщении есть ссылка, где вы можете это проверить. - person bchetty; 12.04.2012
comment
Ну, это пример из учебника, который показывает, как использовать Jena API. Я согласен с @Michael, что вы никогда не должны делать это вручную - вы можете сделать то же самое в одной строке, используя model.write(). - person cygri; 12.04.2012