如何从Jena获得嵌套的RDF / XML?

时间:2012-05-07 02:30:42

标签: java rdf jena

我需要创建如下所示的RDF:

<rdf:Description rdf:about='uri1'>
  <namespace:level1>
    <rdf:Description>
      <namespace:blankNode rdf:resource='uri2'/>
      <namespace:text></namespace:text> 
    </rdf:Description>
  </namespace:level1>
</rdf:Description>

<rdf:Description rdf:about="uri2">
  some properties here
</rdf:Description>

如您所见,有嵌套结构以及空白节点。 (我不知道这是否是我的结构中“blankNode”属性的确切术语。)如果我使用

model.write(System.out, "RDF/XML-ABBREV");

然后甚至空白节点都是嵌套的,这是我不想要的。有没有办法让Jena使用这种结构?或者是否有其他Java库可以更好地处理这个?

2 个答案:

答案 0 :(得分:6)

我认为你的方式是错误的。

嵌套是一个在谈论树木时才有意义的概念。但RDF不是关于树木,而是关于三元组。暂时关注XML的结构,并考虑在XML中编码的三元组。我发现model.write(System.out, "N-TRIPLES");对此最有用。

首先需要了解您希望RDF / XML文件表达的三元组。只要它表达了正确的三元组,一个节点是否嵌套在另一个节点内或者出现的顺序并不重要。这些都是纯粹的“装饰性”问题,如缩进。

答案 1 :(得分:0)

与此同时,在RDF4J中,我发现org.eclipse.rdf4j.rio.rdfxml.util.RDFXMLPrettyWriter确实可以完成我想要的事情,生成了一个很好的嵌套的,干净的,紧凑的,嵌套配置的RDFXML文档。

虽然我同意@cygri,但通常非常需要(例如在咨询情况下)拥有易于读取的RDFXML,并且Writer经常吐出难以消化的RDF(可能是由于流和内存消耗/速度的优化) )。