2

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

提前谢谢了!

4

1 回答 1

3

您没有说明如何生成输出,但最可能的解释是您使用的是默认输出格式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 和使用 SPARQL 的 XML 编码查询您的模型结果集作为 XML 管道的输入。SPARQL 的XML 编码比完整的 RDF/XML 更规则,并且为后续 XML 处理提供了更好的基础。

于 2011-03-26T11:03:38.610 回答