【问题标题】:How to get nested RDF/XML from Jena?如何从 Jena 获取嵌套的 RDF/XML?
【发布时间】:2012-05-07 02:30:42
【问题描述】:

我需要创建如下所示的 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 库可以更好地处理这个问题?

【问题讨论】:

    标签: java rdf jena


    【解决方案1】:

    我认为你的做法是错误的。

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

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

    【讨论】:

    • 感谢您的解释!这是一个学校项目,所以结构的要求给了我:)。但我现在确实和我的教授谈过了,改变了。
    • 完全同意cygri,也试试model.write(System.out, "TURTLE"); (更“人性化”的序列化)并忘记学习 RDF 看它的 RDF/XML 序列化。要求改变“奇怪的要求”是件好事。 ;-)
    • 在“启发”你的教授方面做得很好!你绝对应该为此 +1 ;-)
    【解决方案2】:

    同时在 RDF4J 中,我发现 org.eclipse.rdf4j.rio.rdfxml.util.RDFXMLPrettyWriter 完全符合我的要求,生成了一个漂亮的嵌套干净且紧凑的嵌套配置 RDFXML 文档。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      相关资源
      最近更新 更多