0

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

我正在考虑本体类和属性上的类似 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 映射/转换或“Object2RDF”映射。

我什么也找不到。如果其他人已经徒劳地搜索了这个,我会接受“不,没有这样的事情”的答案。

4

1 回答 1

4

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

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

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

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

于 2017-01-17T19:26:18.497 回答