RDB2RDF
官方 RDB2RDF 标准,W3C 的 RDB2RDF 工作小组制定的两个标准,用于将关系型数据库的数据转换为RDF格式的数据。
1、Direct Mapping of Relational Data to RDF
The Direct Mapping is an automatic mapping of a relational database to RDF.
ps:不可自定义的默认映射。当关系数据很好地规范化,有主键,外键等时,直接映射是合适的。缺点:不能把数据库的数据映射到自己定义的本体上。
2、R2RML: RDB to RDF Mapping Language
R2RML is a customizable language to map a relational database to RDF.
RDB2RDF工具
Ontop
Ontop is a Virtual Knowledge Graph system. It exposes the content of arbitrary relational databases as knowledge graphs. These graphs are virtual, which means that data remains in the data sources instead of being moved to another database.
Ontop translates SPARQL queries expressed over the knowledge graphs into SQL queries executed by the relational data sources. It relies on R2RML mappings and can take advantage of lightweight ontologies.
SparqlMap
A SPARQL to SQL rewriter based on R2RML specification.
D2RQ
D2RQ 提供了自己的 mapping language(D2RQ Mapping Language),其形式和 R2RML 类似。
Triplify
Triplify is a small PHP plugin for Web applications, which reveals the semantic structures encoded in relational databases by making database content available as RDF, JSON or Linked Data.
D2RQ
D2RQ的官方介绍是Accessing Relational Databases as Virtual RDF Graphs。http://d2rq.org/
D2RQ 工具,它的主要功能是提供以虚拟的、只读的RDF图形式进入到关系型数据库中。比如通过SPARQL端口查询,输入是SPARQL查询语言,D2RQ通过mapping文件将其转换为SQL语句在关系数据库上查询,因此实际上访问的是关系型数据库。同时也可以使用它从数据库创建 RDF 格式的文件。
D2RQ 由自己的mapping语言,R2RML-kit。它和W3C推荐的R2RML类似。可以通过D2RQ提供的工具来根据数据库自动生成mapping文件。也可以根据自己的需求去修改定制mapping文件。
D2RQ的框架
- D2RQ主要包括 D2RQ Server, D2RQ Engine 以及 D2RQ Mapping 语言。
- D2RQ Server是一个HTTP Server,它的主要功能提供对RDF数据的查询访问接口,以供上层的RDF浏览器、SPARQL查询客户端以及传统的HTML浏览器调用。
- D2RQ Engine的主要功能是使用一个可定制的D2RQ Mapping文件将关系型数据库中的数据换成RDF格式。D2RQ engine并没有将关系型数据库发布成真实的RDF数据,而是使用D2RQ Mapping文件将其映射成虚拟的RDF格式。该文件的作用是在访问关系型数据时将RDF数据的查询语言SPARQL转换为RDB数据的查询语言 SQL,并将SQL查询结果转换为RDF三元组或者SPARQL查询结果。D2RQ Engine是建立在Jena(Jena是一个创建Semantic Web应用的Java平台,它提供了基于RDF,SPARQL等的编程环境)的接口之上。
- D2RQ Mapping一种用于将关系数据库模式映射到 RDF 词汇表和 OWL 本体的声明性语言。
D2RQ提供的功能
- 使用 SPARQL 查询非 RDF 数据库
- 通过 Web 以链接数据的形式访问数据库的内容
- 以 RDF 格式创建数据库的自定义转储以加载到 RDF 存储中
- 使用 Apache Jena API 访问非 RDF 数据库中的信息
Ontop和D2RQ比较
R2RML的文档(W3C推荐的映射语言)相比D2RQ mapping的表达能力和文档更清晰,且表达能力更强。D2RQ翻译SPARQL2SQL的过程缺乏query optimization,在大数据情况下性能比较差,经常会出现timeout或OOM(内存消耗比较严重的情况)。此外,他不支持推理。虽然D2RQ可以将KG映射到Jena Model上,通过Jena Reasoner在其上做各种inference,但是效率有很大的问题。而Ontop是支持推理的(backward chaining)。
结论
以虚拟RDF图的方式访问关系数据库是其最主要的一个特性。它的机理就是通过mapping文件,把对RDF的查询等操作翻译成SQL语句,最终在RDB上实现对应操作。当对外提供服务,查询操作比较频繁的情况下,最好是将RDB的数据直接转为RDF,会节省很多SPARQL到SQL的转换时间。