Создание вложенных тегов в RDF-файле с помощью Jena

Я новичок в Jena, и теперь я застрял со следующей проблемой. В основном мне нужно создать RDF с вложенными элементами, например:

<rdf:description about="http://www.acme.com">
    <dc:country>
      <dc:capital>London</dc:capital>
      <dc:language>English</dc:language>  
    <dc:country>
</rdf:description>

Может быть, это тривиально, однако я не смог этого сделать. Я прочитал несколько руководств, но ни одного примера для такого элемента не было. Может ли кто-нибудь предоставить мне рабочий пример в java, способный производить такой вывод?

Спасибо заранее!


person Lorenzo    schedule 25.03.2011    source источник


Ответы (1)


Вы не говорите, как вы генерируете свой вывод, но наиболее вероятное объяснение состоит в том, что вы используете формат вывода по умолчанию RDF/XML. Если вместо этого вы позвоните

yourModel.write( outStream, "RDF/XML-ABBREV" );

вы получите более компактную структуру, которая, скорее всего, будет содержать вложенные элементы в соответствии с вашим примером.

Однако есть «однако».

Вы не говорите, почему вам «нужно создавать RDF с вложенными элементами». Все выходные данные, генерируемые Jena, семантически эквивалентны на уровне троек RDF. Любой совместимый RDF-процессор создаст ту же модель, анализируя модель, сериализованную как RDF/XML, сокращенную или нет, Turtle, n-triples и т. д. Поэтому, если вы передаете вывод другому процессу RDF, не имеет значения, будет ли ваш вывод имеет вложенные структуры или нет.

Однако, если вы надеетесь передать вывод в цепочку инструментов XML, это может быть сложнее. Кодирование RDF XML общеизвестно сложно. Кроме того, модуль записи XML Jena не гарантирует сериализацию элементов в определенном порядке. В зависимости от содержимого Model, которое вы пишете, структура XML может выглядеть совсем иначе. Это может затруднить, например, написание таблиц стилей XSLT.

Если вы планируете передавать RDF XML в свою цепочку инструментов XML, я бы рекомендовал либо создать собственный модуль записи, который выдает надежный вывод в формате, на который могут полагаться ваши инструменты XML, либо, возможно, запросить вашу модель с помощью SPARQL и использовать XML-кодирование SPARQL. набор результатов в качестве входных данных для конвейера XML. кодирование XML в SPARQL является более регулярным, чем полное RDF/XML, и является лучшей основой для последующей обработки XML.

person Ian Dickinson    schedule 26.03.2011
comment
(+1) Отличное объяснение Ян. Просто дополнительный комментарий, Лоренцо, вы можете взглянуть на jena.sourceforge.net/tutorial/RDF_API/ в качестве начального указателя, чтобы увидеть, как писать RDF с помощью Jena. - person Manuel Salvadores; 27.03.2011