Вы не говорите, как вы генерируете свой вывод, но наиболее вероятное объяснение состоит в том, что вы используете формат вывода по умолчанию 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