文章目录
简介
在上一文章中我们定义了本体结构、并且把数据保存在mysql中,其ER图如下:
为了把RDB(关系型数据库)转换成RDF(三元组形式),同时把RDB中数据映射到我们定义的本体上面一一对应。
我们使用D2RQ工具将RDB数据转换到RDF形式。
D2RQ有一个比较方便的地方,可以根据已定义的数据库自动生成预定义的mapping文件,用户可以在mapping文件上修改,把数据映射到自己的本体上。
D2RQ 的框架如下图所示:
[外链图片转存失败(img-N2dneh1H-1566956663833)(http://pelhans.com/img/in-post/kg_from_0/d2rq_architecture.png)]
1. D2RQ下载安装
d2rq的下载,查看如下官方网站:http://d2rq.org/
2. D2RQ安装
下载到喜欢的地方,解压即可算是安装,我的是解压到了D:\Programming\d2rq-0.8.1
3. D2RQ的使用
3.1 D2RQ使用第一步:生成mapping
- D2RQ使用第一步:生成mapping文件:
下载D2RQ,进入其目录,运行下面的命令根据我们的mysql数据库生成的默认mapping文件(当前文件夹下):
generate-mapping -u root -p root -o Hr_HG_QA_mapping.ttl jdbc:mysql:///hr_kg_qa_db
参数解读:root是mysql的用户名,没有密码则不输入,-o指定输出文件路径及名称,jdbc:mysql:///kg_demo_movie 指定我们要映射的数据库。
3.2 D2RQ使用第二步:修改mapping文件
- D2RQ使用第二步:修改mapping文件
将mapping文件中的数据列名 对应到 我们设计的本体文件中。修改规则如下
- 首先,为了表达简练,我们给本体的IRI设置一个前缀。
@prefix: <http://www.hr_kg_qa.com#> .
- 将数据库自动生成的id和label属性删除,因为我们不需要这两个属性。
- vocab 这个我们不用,因此删除开头和正文中带有 vocab 的部分。
- 把默认的映射词汇改为我们本体.owl中的词汇即可:修改类型值,将vocab:xxxx修改为我们owl文件中定义的类 和属性。例如将d2rq:class vocab: Leave;修改为d2rq:class :Leave;(千万别忘记删除属性第三行的vocab)
- 将连接表(连接两个实体关系的表)属性从类d2rq:ClassMap改为属性d2rq:PropertyBridge 。在处理外键的时候要注意当前编辑的属性的domain和range,belongsToClassMap是domain,refersToClassMap是range。
#这个例子是 外键 是自己表的主键, 该表必须与自身相连。需要用到d2rq:alias 声明自己
map:leave_LeaveTogetherWith a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:leave;
d2rq:property :LeaveTogetherWith;
d2rq:refersToClassMap map:leave;
d2rq:join "leave.LeaveTogetherWith => LeaveTogetherWith.id";
d2rq:alias "leave AS LeaveTogetherWith";
.
更多规则可参考:http://link.zhihu.com/?target=http%3A//d2rq.org/d2rq-language
3.3 D2RQ使用第三步:生成RDF文件
- D2RQ使用第三步 根据修改后的mapping文件生成RDF
使用下面的命令将我们的数据转为RDF:
在D2RQ目录右键 shift -> 在此处打开命令窗口。运行以下命令,则在当前文件夹内生成 三原则文件:“Hr_HG_QA.nt ”
dump-rdf.bat -o Hr_HG_QA.nt Hr_HG_QA_mapping.ttl
参数解读:.nt 这是rdf的一种保存格式
命令将数据转换为Ntriples。这一步比较慢,如果sql中的数据很多,则生成的文件也比较大,因此要做好预留空间。
原文链接:https://lookme.blog.csdn.net/article/details/89553244
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。