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 库可以更好地处理这个问题?

4

2 回答 2

6

我认为你这样做是错误的。

嵌套是一个只有在谈论树时才有意义的概念。但是 RDF 不是关于树的,而是关于三元组的。暂时忘掉 XML 的结构,想想在 XML 中编码的三元组。我觉得model.write(System.out, "N-TRIPLES");最有用的。

您首先需要了解您希望 RDF/XML 文件表达哪些三元组。只要它表达了正确的三元组,一个节点是否嵌套在另一个节点中或事物出现的顺序无关紧要。这些纯粹是“修饰”问题,例如缩进。

于 2012-05-07T05:01:49.820 回答
0

同时,在 RDF4J 中,我发现org.eclipse.rdf4j.rio.rdfxml.util.RDFXMLPrettyWriter可以完全按照我的意愿进行操作,生成一个漂亮的嵌套干净且紧凑的嵌套配置 RDFXML 文档。

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

于 2018-06-22T14:16:13.603 回答