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

5

我需要创建类似这样的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个回答

6
我认为你的方法不对。
嵌套是一个只在树形结构中有意义的概念。但RDF不是关于树的,而是关于三元组的。暂时忘记XML的结构,想想编码在XML中的三元组。我觉得model.write(System.out, "N-TRIPLES");对此非常有用。
你首先需要明确你的RDF/XML文件要表达哪些三元组。只要表达正确的三元组,节点是否嵌套或事物出现的顺序都无关紧要。这些纯粹是“美学”问题,就像缩进一样。

谢谢您的解释!这是为了一个学校项目,所以结构要求已经给我了 :). 但是我现在已经和我的教授交流并且得到了更改。 - user1355348
完全同意cygri的观点,还可以尝试model.write(System.out, "TURTLE")(一种更“人性化”的序列化方式),不必去学习RDF/XML序列化方式。要求改变“奇怪的需求”是好的。;-) - castagna
做得好,你成功“启发”了你的教授!你绝对值得一个+1的赞许;-) - cygri

0

与此同时,在RDF4J中,我发现org.eclipse.rdf4j.rio.rdfxml.util.RDFXMLPrettyWriter正好可以做我想要的事情,生成一个嵌套配置的漂亮、干净和紧凑的RDFXML文档。

虽然我同意@cygri的观点,但在咨询等情况下,通常非常希望有一个易于阅读的RDFXML,并且编写器经常会输出难以理解的RDF(可能是由于流式处理和优化内存消耗/速度)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接