Java 使用Jena在RDF文件中创建嵌套标记

Java 使用Jena在RDF文件中创建嵌套标记,java,xml,rdf,jena,Java,Xml,Rdf,Jena,我是耶拿的新手,现在我遇到了以下问题。 基本上,我需要创建具有嵌套元素的RDF,例如: <rdf:description about="http://www.acme.com"> <dc:country> <dc:capital>London</dc:capital> <dc:language>English</dc:language> <dc:country> <

我是耶拿的新手,现在我遇到了以下问题。 基本上,我需要创建具有嵌套元素的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的工作示例来产生这样的输出吗


非常感谢

您没有说明如何生成输出,但最可能的解释是您使用的是默认输出格式
RDF/XML
。相反,如果你打电话

yourModel.write( outStream, "RDF/XML-ABBREV" );
根据您的示例,您将获得一个更紧凑的结构,该结构很可能包含嵌套元素

然而,有一个“然而”

您不会说为什么“需要创建具有嵌套元素的RDF”。Jena生成的所有输出在RDF三元组级别上语义等价。任何兼容的RDF处理器都将通过解析序列化为RDF/XML、缩写与否、Turtle、n-triples等的模型来生成相同的模型。因此,如果您将输出交给另一个RDF进程,则输出是否具有嵌套结构无关紧要

但是,如果您希望将输出提供给XML工具链,那么这可能会更加困难。众所周知,RDF XML编码非常复杂。此外,Jena XML编写器不保证按特定顺序序列化元素。根据您正在编写的
模型的内容,XML结构可能会有很大的不同。例如,这会使编写XSLT样式表变得棘手

如果您计划将RDF XML导入XML工具链,我建议您创建一个自定义编写器,以XML工具可以依赖的格式生成可靠的输出,或者使用SPARQL查询您的模型,并使用SPARQL结果集的XML编码作为XML管道的输入。SPARQL比完整的RDF/XML更规则,是后续XML处理的更好基础。

(+1)很好的解释。Lorenzo,这只是一个附加的注释,您可能想看看如何使用Jena编写RDF,作为初始指针。