如何将 RDF 图映射到目标 XML 模式?

How to map an RDF graph to a target XML schema?

给定一个 RDF 数据图,OWL ontology 描述了该数据图中使用的 类 和属性,是否有算法、工具或映射语言可以在对应于目标 XML 架构的 XML 文档中序列化此数据?

我正在考虑在 ontology 类 和属性上使用类似 JAXB 的注释来驱动 XML 序列化。

通常,给定这张图

@prefix data: <http://exemple.fr/data/>
@prefix onto: <http://exemple.fr/ontology.owl#>

data:1 a onto:Work .
data:1 onto:type "book" .
data:1 onto:date "2017-01-01"^^xsd:date .
data:1 onto:has_expression data:2 .
data:2 a onto:Expression .
data:2 onto:language "fr" .

我想生成 XML 类似于以下内容:

<Work URI="http://exemple.fr/data/1" date="2017-01-01">
  <type>book</type>
  <Expression URI="http://exemple.fr/data/2">
    <lang>fr</lang>
  </Expression>
</Work>

请注意这与预期的 RDF/XML 序列化有何不同:自定义属性保存 URI 而不是 rdf:about;一些属性序列化为 XML 属性,其他属性序列化为 XML 元素; onto:has_expression 未序列化;使用元素“lang”代替“language”。

请注意,我正在寻找 "RDF2XML" 映射, 而不是 XML2RDF mapping/conversion 或 "Object2RDF"映射。

我找不到任何东西。如果其他人已经徒劳地搜索过这个答案,我会接受答案 "No, there is no such thing"。

有几个选项。当然,您可以简单地使用任何具有 RDF 解析器和 DOM 库的编程语言,并以特殊方式构建您的 XML 树。

但我能想到的最好的工具是 XSPARQL,一种扩展 XQuery 以包含 SPARQL 的语言。有了它,您应该能够轻松地查询 RDF 并生成 XML。您也可以执行相反的操作(使用 XQuery 原语查询 XML 并生成三元组)。 XSPARQL 直到最近才得到维护和扩展,但据我所知,过去两年似乎没有发生任何新事情。

另一种选择是SPARQL template。它肯定不如 XSPARQL 广为人知,并且可能不如 XSPARQL 稳定。 SPARQL模板的原理是查询RDF数据,并利用结果生成任意字符串。因此,您可以使用它将 RDF 转换为您喜欢的任何格式,只要该格式具有一定的规律性即可。

请注意,我没有以任何方式参与这两项技术的开发。还要考虑到它们主要是学术研究人员的工作,这意味着它们(还没有?)处于 industry-ready 产品阶段。