关于rdf不懂的同学可以移步至《语义网知识表示方法:RDF,RDFS与OWL》
我们这里主要介绍D2R,使用D2R将关系数据库中的数据映射到RDF中
D2R 主要包括 D2R Server, D2RQ Engine 以及 D2RQ Mapping 语言。
- D2R 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 格式的 Mapping 规则。
D2R 的主体构架
如何使用 D2R
环境准备
在使用 D2R 之前,先要进行准备工作,即对 D2R 的环境进行下载和安装:
- 下载 D2R的环境
- 下载与你目前使用的数据库版本相匹配的驱动(我这里是清华镜像站的mysql驱动地址 ),将其 jar 文件放在 D2R Server 的 lib 目录下面。D2R 目前已经详细测试过 Oracle, MySQL, PostgreSQL, Microsoft SQL Server。因为D2R自带mysql驱动所以这一步可以省略
使用 D2R 可以对关系型数据库的数据进行两种方案的转化与访问。第一种方案是将关系型数据库的数据转换为虚拟的 RDF 数据进行访问,分为两个步骤,第一步是生成 Mapping 文件,第二步是使用 Mapping 文件对关系型数据进行转换与访问。我们可以通过 D2R server 访问关系型数据,或者通过在自己的 Java application 中调用 Jena/Seasame 的 API 去访问数据。第二种方案是直接将关系型数据库的数据包装成真实的 RDF 文件,以供一些可以访问 RDF Store 的接口访问。由于一般来讲,当对外提供服务,查询操作比较频繁的情况下,最好是将RDB的数据直接转为RDF,会节省很多SPARQL到SQL的转换时间;但是如果数据库的数据规模都比较大,且内容经常发生变化,转换为虚拟的 RDF 数据空间复杂度会更低,更新内容更加容易,因此第一种方案的应用更加广泛。我们在这里只介绍第一种方案,并分下述两个步骤进行介绍。
生成 Mappping file
D2R 提供了生成 Mapping 文件的执行脚本。我们需要在命令行中进入您所下载的 D2R 所在的路径,执行下面的命令:
generate-Mapping [-u username] [-p password] [-d driverclass] [-o outfile.n3] [-b base uri] jdbcURL
参数意义如下:
jdbcURL
JDBC 链接数据库的 URL
1 2 3 4 5 6 |
|
-u username
数据库用户登录名
-p password
数据库用户登录密码
-d driverclass
数据库驱动类名
1 2 3 4 5 |
|
-o outfile.n3
Mapping file 的输出文件,后缀名可以是其他,如:ttl
-b base uri
Base uri 作为词汇的命名空间,默认为 http://localhost:2020/
词汇的前缀按照
http://
baseURI
/vocab/resource/
模式生成。base uri 需要与 server 的 uri 相一致。
例如 : 现在有一个名为 Academic 的mysql数据库,执行下面命令便可以根据Academic的Schema生成一个Mapping文件存储在Academic.n3中