D2RQ的下载和使用

1. d2rq的简介

d2rq平台一个能够把关系数据库当作虚拟的,只读的rdf图来访问的一个平台.它提供了基于rdf的访问模式,但不需要把数据以rdf的形式存储.
以虚拟RDF图的方式访问关系数据库是其最主要的一个特性。它的机理就是通过mapping文件,把对RDF的查询等操作翻译成SQL语句,最终在RDB上实现对应操作。在做知识图谱项目的时候,我们可以灵活地选择数据访问方式。当对外提供服务,查询操作比较频繁的情况下,最好是将RDB的数据直接转为RDF,会节省很多SPARQL到SQL的转换时间。
使用d2rq,你可以

  • 使用saprql查询非rdf数据库
  • 把数据库的内容当作链接来访问
  • 把数据库的内容以rdf的形式转化出来
  • 使用apache jena api 访问非rdf数据库

2. d2rq的下载
查看如下官方网站

下载到喜欢的地方,解压
我的是下载到了D:\d2rq
3. 下载安装数据库
我的是windows版本的mysql数据库下载
数据库基本操作简单入门
我数据库是建好了两个表一个是person表,一个是user表

4. 下载jdbc驱动包
d2rq需要与java、mysql进行联合应用,因此需要JDBC driver,将mysql-connector-java-5.1.44.jar 点击下载 文件放入d2rq解压后的/lib文件夹中。
个人建议用上面这个版本,因为其他或者最新的,都会报一个错误

5. 创建映射文件
用generate-mapping工具为数据库创建mapping file(映射文件)
切换到D:\d2rq\d2rq-0.8.1 目录下,用命令行执行如下指令

.\generate-mapping -u root -p 123456 -o lsy.ttl jdbc:mysql:///lsy?useSSL=false
//-u root 是数据库的登录名
//-p 123456 是登录密码
//-o name.ttl 是映射文件的名称
//jdbc:mysql:///lsy 指定数据库的名称
//?useSSL=false 避免提示警告

6. 启动d2r server
执行命令: .\d2r-server lsy.ttl
打开网址 http://localhost:2020/,出现如下界面

最上面的home可以查看所有关联的表,下面第三点sparql endpoint 可以使用sparql语言查询数据,如果不懂语法的,请先学习

7. 转存为rdf文件
运行dump-rdf工具,执行如下的指令:

.\dump-rdf -o lsy.nt lsy.ttl
//-o lsy.nt 这是rdf的一种保存格式
//一般有 有“TURTLE”, “RDF/XML”, “RDF/XML-ABBREV”, “N3”, 和“N-TRIPLE”。“N-TRIPLE”是默认的输出格式

8. 映射文件的理解
详见官方文档 d2rq-language
它的映射主体框架如下

先是数据库的映射,然后是类型的映射(也就是资源类型),接下来就是在资源和属性值之间搭一个桥梁propertyBridge

@prefix map: <#> .
@prefix db: <> .
@prefix vocab: <http://solicucu/vocab/> .
//上面的http://solicucu是自己最随便写的,可以不写,那么他就会生成以文件存储的实际位置开头
//下面这些是常用的命名空间,自动生成的
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix d2rq: <http://www.wiwiss.fu-berlin.de/suhl/bizer/D2RQ/0.1#> .
@prefix jdbc: <http://d2rq.org/terms/jdbc/> .//整个映射的主要模式:
//把每个表映射成一个类
//每一行是一个资源
//每一列就是资源的属性
map:database a d2rq:Database; //把数据库名映射为databased2rq:jdbcDriver "com.mysql.jdbc.Driver";d2rq:jdbcDSN "jdbc:mysql:///lsy?useSSL=false";d2rq:username "root";d2rq:password "123456";jdbc:autoReconnect "true";  jdbc:zeroDateTimeBehavior "convertToNull";.//"建立person表的映射"
# Table person
map:person a d2rq:ClassMap;  //每个表都是一个ClassMapd2rq:dataStorage map:database;  //指明来自哪个数据库d2rq:uriPattern "http://solicucu/person/#@@person.username|urlify@@";//uriPattern 这个是对资源的标识前面一段可以自己修改,否则默认为文件存储位置//值得一说的是@@ 之间是表示取标识串里面的值,也就是数据库里面对应的值//urlify 表示自动采用urlencode编码,而且会把空格转化为_d2rq:class vocab:person;//指明资源的类型,对应rdf:typed2rq:classDefinitionLabel "person";//指明类型定义的标签,对应与rdfs:label//定义每一个资源标签的属性    .
map:person__label a d2rq:PropertyBridge;d2rq:belongsToClassMap map:person;d2rq:property rdfs:label;d2rq:pattern "person #@@person.username@@"; //标签的模式.
//属性值的映射
map:person_username a d2rq:PropertyBridge; //指明是一个属性d2rq:belongsToClassMap map:person;  //指明属于哪个类别的d2rq:property vocab:person_username; //指明属性的标识名字d2rq:propertyDefinitionLabel "person username"; //属性标签d2rq:column "person.username"; //指定属性的值,注意一定要用双引号表示取其中的值.
map:person_name a d2rq:PropertyBridge;d2rq:belongsToClassMap map:person;d2rq:property vocab:person_name;d2rq:propertyDefinitionLabel "person name";d2rq:column "person.name";.
map:person_age a d2rq:PropertyBridge;d2rq:belongsToClassMap map:person;d2rq:property vocab:person_age;d2rq:propertyDefinitionLabel "person age";d2rq:column "person.age";d2rq:datatype xsd:integer; //注明数据类型.
map:person_phone a d2rq:PropertyBridge;d2rq:belongsToClassMap map:person;d2rq:property vocab:person_phone;d2rq:propertyDefinitionLabel "person phone";d2rq:column "person.phone";.# Table user
map:user a d2rq:ClassMap;d2rq:dataStorage map:database;d2rq:uriPattern "http://solicucu/user/#@@user.username|urlify@@";d2rq:class vocab:user;d2rq:classDefinitionLabel "user";.
map:user__label a d2rq:PropertyBridge;d2rq:belongsToClassMap map:user;d2rq:property rdfs:label;d2rq:pattern "user #@@user.username@@";.
map:user_username a d2rq:PropertyBridge;d2rq:belongsToClassMap map:user;d2rq:property vocab:user_username;d2rq:propertyDefinitionLabel "user username";d2rq:column "user.username";.
map:user_password a d2rq:PropertyBridge;d2rq:belongsToClassMap map:user;d2rq:property vocab:user_password;d2rq:propertyDefinitionLabel "user password";d2rq:column "user.password";.

9. 对应生成的rdf文件

<http://solicucu/person/#chacha> <http://solicucu/vocab/person_phone> "15200823423" .
<http://solicucu/person/#chacha> <http://solicucu/vocab/person_age> "19"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://solicucu/person/#chacha> <http://solicucu/vocab/person_name> "scc" .
<http://solicucu/person/#chacha> <http://solicucu/vocab/person_username> "chacha" .
<http://solicucu/person/#chacha> <http://www.w3.org/2000/01/rdf-schema#label> "person #chacha" .
<http://solicucu/person/#chacha> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://solicucu/vocab/person> .
<http://solicucu/person/#littlejun> <http://solicucu/vocab/person_phone> "15200823421" .
<http://solicucu/person/#littlejun> <http://solicucu/vocab/person_age> "19"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://solicucu/person/#littlejun> <http://solicucu/vocab/person_name> "lhj" .
<http://solicucu/person/#littlejun> <http://solicucu/vocab/person_username> "littlejun" .
<http://solicucu/person/#littlejun> <http://www.w3.org/2000/01/rdf-schema#label> "person #littlejun" .
<http://solicucu/person/#littlejun> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://solicucu/vocab/person> .
<http://solicucu/person/#yuqin> <http://solicucu/vocab/person_phone> "15768169184" .
<http://solicucu/person/#yuqin> <http://solicucu/vocab/person_age> "19"^^<http://www.w3.org/2001/XMLSchema#integer> .
<http://solicucu/person/#yuqin> <http://solicucu/vocab/person_name> "yuqing" .
<http://solicucu/person/#yuqin> <http://solicucu/vocab/person_username> "yuqin" .
<http://solicucu/person/#yuqin> <http://www.w3.org/2000/01/rdf-schema#label> "person #yuqin" .
<http://solicucu/person/#yuqin> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://solicucu/vocab/person> .
<http://solicucu/user/#chacha> <http://solicucu/vocab/user_password> "888888" .
<http://solicucu/user/#chacha> <http://solicucu/vocab/user_username> "chacha" .
<http://solicucu/user/#chacha> <http://www.w3.org/2000/01/rdf-schema#label> "user #chacha" .
<http://solicucu/user/#chacha> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://solicucu/vocab/user> .
<http://solicucu/user/#littlejun> <http://solicucu/vocab/user_password> "888888" .
<http://solicucu/user/#littlejun> <http://solicucu/vocab/user_username> "littlejun" .
<http://solicucu/user/#littlejun> <http://www.w3.org/2000/01/rdf-schema#label> "user #littlejun" .
<http://solicucu/user/#littlejun> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://solicucu/vocab/user> .
<http://solicucu/user/#yuqin> <http://solicucu/vocab/user_password> "888888" .
<http://solicucu/user/#yuqin> <http://solicucu/vocab/user_username> "yuqin" .
<http://solicucu/user/#yuqin> <http://www.w3.org/2000/01/rdf-schema#label> "user #yuqin" .
<http://solicucu/user/#yuqin> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://solicucu/vocab/user> .
<http://solicucu/vocab/user_password> <http://www.w3.org/2000/01/rdf-schema#label> "user password" .
<http://solicucu/vocab/user_password> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
<http://solicucu/vocab/person_age> <http://www.w3.org/2000/01/rdf-schema#label> "person age" .
<http://solicucu/vocab/person_age> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
<http://solicucu/vocab/person> <http://www.w3.org/2000/01/rdf-schema#label> "person" .
<http://solicucu/vocab/person> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
<http://solicucu/vocab/user> <http://www.w3.org/2000/01/rdf-schema#label> "user" .
<http://solicucu/vocab/user> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> .
<http://solicucu/vocab/person_username> <http://www.w3.org/2000/01/rdf-schema#label> "person username" .
<http://solicucu/vocab/person_username> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
<http://solicucu/vocab/person_phone> <http://www.w3.org/2000/01/rdf-schema#label> "person phone" .
<http://solicucu/vocab/person_phone> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
<http://solicucu/vocab/person_name> <http://www.w3.org/2000/01/rdf-schema#label> "person name" .
<http://solicucu/vocab/person_name> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
<http://solicucu/vocab/user_username> <http://www.w3.org/2000/01/rdf-schema#label> "user username" .
<http://solicucu/vocab/user_username> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .
<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> .

D2RQ的下载和使用实例教程相关推荐

  1. Asp.net实现MVC处理文件的上传下载删除功能实例教程

    上传于下载功能是程序设计中非常常见的一个功能,在ASP.NET程序开发中有着非常广泛的应用.本文就以实例形式来实现这一功能. 一.概述 如果你仅仅只有Asp.net Web Forms背景转而学习As ...

  2. ajax资料收集-Ajax文章(教程和实例)---Ajax资源下载(源码和教程)---Ajax规范标准

    CSDN Blog Ajax文章搜索: http://search.csdn.net/search/ajax/1/blog/ 专题:Ajax技术应用开发 http://www.51cto.com/ht ...

  3. Silverlight实例教程 - Out of Browser开篇

    众所周知,学习一门IT技术,最关键的是实践,无论是软件开发还是网络调试,只要在真实环境下勤于动手和思考,很快就能掌握一门技术,Silverlight也不例外.为了帮助更多朋友快速学习掌握Silverl ...

  4. Silverlight实例教程 - Out of Browser在线更新和Silent安装

    通过前几篇的学习和实践,相信大家可以很轻松的创建个性化Silverlight Out of Browser应用.上周,在银光中国网论坛有人问到对于Silverlight Out of Browser应 ...

  5. smarty实例教程

    一.什么是smarty? smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到 ...

  6. XAML实例教程系列 – 对象和属性

    在前一篇已经介绍XAML概念:"XAML语言是Extensible Application Markup Language的简称,英文发音是"zammel",中文称为&q ...

  7. Windows 8实例教程系列 - 理解应用框架

    Windows 操作系统之所以风靡世界,是因为其"易学易用",从用户的角度出发,让数以万计的非IT人员使用计算机实现娱乐,工作等目的.Windows 8继承Windows桌面的优点 ...

  8. mysql主备数据库配置文档_MySQL数据库配置主从服务器实现双机热备实例教程

    网站:bbs.osyunwei.com 程序在:Web服务器192.168.21.129上面 数据库在:MySQL服务器192.168.21.169上面 实现目的:增加一台MySQL备份服务器(192 ...

  9. 一起谈.NET技术,Silverlight实例教程 - Out of Browser的Debug和Notifications窗口

    Silverlight 实例教程索引 Silverlight 实例教程 - Out of Browser开篇 Silverlight 实例教程 - Out of Browser配置,安装和卸载 Sil ...

最新文章

  1. “社区之星”成长故事征集
  2. c#实例 让你明白什么是继承
  3. GMF Labels
  4. 【视频课】深度学习必备基础,如何使用好数据?
  5. 使用Docker打包发布Django应用
  6. BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc
  7. Angular NgModule里定义的注解和NgModuleRef$1运行时
  8. Java学习笔记_数组
  9. 比特精灵最新稳定版v3.6.0.401(转)
  10. 将具体处理交给子类——模板方法模式
  11. InfoWorld 2020 年公布最佳开源软件
  12. 聊聊手游的那些惊喜与惊吓
  13. Java编程:查找算法——顺序查找、二分查找、插值查找、斐波那契查找
  14. 基于Python的优化函数可视化
  15. 实验室信息管理系统是基础软件吗
  16. win7电脑误删鼠标键盘驱动_电脑usb驱动误删鼠标键盘怎么解决?
  17. 简单聊聊为什么说外包不好?
  18. 光伏电子工程的设计与实施2022——单片机力控部分实现思路
  19. Python利用PCA压缩图片
  20. 3DCNN参数解析:2013-PAMI-3DCNN for Human Action Recognition

热门文章

  1. Java程序员最新职业规划,深度集成!
  2. php 取奇数,PHP提取奇数或偶数下标元素
  3. 人本主义流派,罗杰斯人本主义理论,马斯洛的人本主义人格理论
  4. Sightseeing trip POJ - 1734 Floyd 最小环
  5. 基础拾掇之http基础应用详解
  6. 几个免费的国外图像库
  7. v4l2 spec 中文 Ch02
  8. 归一化,正则化等梯度下降优化详解(4)机器学习
  9. Parallel的使用 之Parallel.forrech
  10. 基于QT的多场景机动车防碰撞算法仿真测试平台