目录
2.1 使用 D2R server 默认的数据处理和访问方式浏览 Linked data。
一、D2R是什么
在我的理解中,DR2是一个能够将关系数据库中的内容转换成RDF三元组的工具,由于知识图谱中储存的数据通常为三元组格式,而我们通过爬虫获取到的内容大多储存在关系数据库如Mysql中,以不同的表的形式来区分,所以需要进行转换。
D2R 主要包括 D2R Server, D2RQ Engine 以及 D2RQ Mapping 语言。
D2R Server 是一个 将关系数据发送到语义网的工具,该工具可以让RDF浏览器和HTML浏览器访问数据库,并使用SPARQL查询语句查询数据库。
D2RQ Engine是建立在 Jena(Jena 是一个创建 Semantic Web 应用的 Java 平台,它提供了基于 RDF,SPARQL 等的编程环境)的接口之上,它的主要功能是使用一个可定制的 D2RQ Mapping 文件将关系型数据库中的数据换成 RDF 格式。D2RQ engine 并没有将关系型数据库发布成真实的 RDF 数据,而是使用 D2RQ Mapping 文件将其映射成虚拟的 RDF 格式。该文件的作用是在访问关系型数据时将 RDF 数据的查询语言 SPARQL 转换为 RDB 数据的查询语言 SQL,并将 SQL 查询结果转换为 RDF 三元组或者 SPARQL 查询结果。
D2RQ Mapping 语言是一个用于描述关系数据模式与RDF词汇表之间关系的语言,是一个Turtle格式的RDF文档。D2RQ Mapping定义了一个虚拟的RDF图,该图包含了数据库的信息。与SQL中的视图的不同就是视图的虚拟数据结构是虚拟关系表,D2RQ Mapping的虚拟数据结构是RDF图。在D2R中,可以使用SPARQL、LINKED DATA SERVER 、RDF产生器、HTML接口,JENA API访问该虚拟图。可用文本编译器直接编写D2RQ Mapping程序。
D2RQ Mapping的主要功能是定义将关系型数据转换成 RDF 格式的 Mapping 规则。
二、D2RQ安装与准备工作
1. 下载D2RQ 官方网站:http://d2rq.org/
下载后得到了d2rq-0.8.1.zip的压缩文件,d2rq不需要安装,直接将其解压到运行目录,放在哪儿都可以。
2.配置与关系数据库相对应的驱动
下载与你目前使用的数据库版本相匹配的驱动,将其 jar 文件放在 D2R Server 的 lib 目录下面,我使用的是Mysql数据库,D2R Server下载时已经包括了MySQL驱动。
三、使用D2RQ
1.新建Mapping执行文件
D2R 提供了生成 Mapping 文件的执行脚本。我们需要在命令行中进入所下载的 D2R 所在的路径,执行下面的命令:
generate-Mapping [-u username] [-p password] [-d driverclass] [-o mapping.tti] [-b base uri] jdbcURL
参数意义如下:
-u username:数据库用户登录名
-p password:数据库用户登录密码
-d driverclass:数据库驱动类名 -d为MySQL可以跳过
MySQL: com.mysql.jdbc.Driver
PostgreSQL: org.postgresql.Driver
Oracle: oracle.jdbc.OracleDriver
Microsoft SQL Server: com.microsoft.sqlserver.jdbc.SQLServerDriver
DB2:com.ibm.db2.jcc.DB2Driver
-o mapping.ttl:生成的mapping文件的执行脚本
-b base uri:Base uri 作为词汇的命名空间,默认为 http://localhost:2020/
词汇的前缀按照
http://
baseURI
/vocab /resource/
模式生成。base uri 需要与 server 的 uri 相一致。
jdbcURL:JDBC 链接数据库的 URL
MySQL: jdbc:mysql://servername/databasename
PostgreSQL: jdbc:postgresql://servername/databasename
Oracle: jdbc:oracle:thin:@servername:1521:databasename
Microsoft SQL Server: jdbc:sqlserver://servername;databaseName=databasename
(包含分号,使用时需要用引号引起来)
DB2:jdbc:db2:// servername:50000/ databasename
比如输入以下命令,新建Mapping文件
generate-mapping -u root -p 123456 -o kg_movie_mapping.ttl jdbc:mysql:///kg_movie
如何数据库中的列存在中文,应最后在url后面指定编码格式?useUnicode=true&characterEncoding=utf8
2.使用 Mapping 文件对数据进行转化与访问
生成 Mapping 文件后,我们便希望通过 Mapping 文件对关系型数据库的数据进行转换和访问,这里有两种方式,一种是通过 D2R Server 自动调用 D2RQ Engine 对数据进行转换访问,另一种在自己的 Java application 中通过 Jena/Seasame 的 API 去使用 D2RQ Engine。
2.1 使用 D2R server 默认的数据处理和访问方式浏览 Linked data。
该方法很简单,不需要自己写代码,只需要在命令行下面进入 D2R 所在文件路径,执行下面的命令启动 D2R Server:d2r-server Mapping.ttl其中 Mapping.ttl 即为上一节中生成 Mapping 文件。然后在 Web 浏览器中访问 http://localhost:2020, 便可以默认的 HTML 浏览器、DF 浏览器以及 SPARQL 查询端对我们的数据进行访问。