Создание вложенных тегов в файле RDF с использованием Jena - PullRequest
2 голосов
/ 25 марта 2011

Я новичок в Йене, и теперь я застрял со следующей проблемой. В основном мне нужно создать 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, способный произвести такой вывод?

Большое спасибо заранее!

1 Ответ

3 голосов
/ 26 марта 2011

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

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

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

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

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

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

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

...