知识图谱构建——D2R的使用(二)

D2R简介和使用

上一节介绍了关系型数据库mysql和nosql类型数据库导入电影数据的过程。下面介绍从关系型数据库进行知识抽取的过程D2R转换。
在这里插入图片描述

D2R介绍

D2R:Database to RDF是从抽取关系型抽取知识的一种方式。数据库表名直接映射到RDF中的类,字段映射到类的属性。类之间的关系可以从表示关系的表中得出。
D2RQ主要包括 D2R Server, D2RQ Engine 以及 D2RQ Mapping 语言。
官网:http://d2rq.org/
架构如下图:
在这里插入图片描述
具体安装教程参考:D2RQ安装及使用

数据转化流程

首先要开启mysql 服务器,将mysql数据转换成RDF数据的命令:

generate-mapping -u root -p root -o kg_movie.ttl jdbc:mysql:///kg_movie

执行完毕后,生成了映射文件kg_movie.ttl [在d2rp目录下],做以下修改:
1.删除/注释掉第一个黄色框里的内容
2.添加第二个黄色框里的内容
3.第三、四个黄框 是和第一个对应 就是把文件里面vocab 全部删除 [这一步可以打开notepad++ 直接 ctrl+F 替换 vocab 为空 ]
在这里插入图片描述
在这里插入图片描述修改完成后的文件已经放在github上。
接下来开始转化为RDF、通过使用如下命令将kg_movie.ttl转化为kg_movie.nt的RDF文件。

dump-rdf.bat -o kg_movie.nt kg_movie.ttl

导出的n-triple 文件在目录中可以看到。
在这里插入图片描述
以上两部分完成对数据的转换。

D2R-SPARQL 查询

可以利用D2R-server提供sparql查询:在主目录下输入命令

d2r-server.bat kg_movie.ttl

在这里插入图片描述打开浏览器:http://localhost:2020
在这里插入图片描述
可以查看相关数据:
在这里插入图片描述
在这里插入图片描述
点击主页面的Sparql endpoint 即可进行sparql 查询:
在这里插入图片描述

但是这在查询另一个演员时,显示结果确是一样,原因还没搞懂。【之后搞明白原因再更新】
在这里插入图片描述

Python脚本进行交互

构建基于知识图谱的应用,我们希望将SPARQL查询集成在代码当中,对其进行包装便于后续开发。这里介绍一个Python第三方库:SPARQLWrapper。如其名,这是一个Python下的包装器,可以让我们十分方便地和endpoint进行交互。下面是通过SPARQLWrapper,向D2RQ endpoint发送查询“巩俐参演的评分大于7的电影有哪些”,得到结果的代码。

from SPARQLWrapper import SPARQLWrapper, JSON

sparql = SPARQLWrapper("http://localhost:2020/sparql")
sparql.setQuery("""
    PREFIX : <http://www.kgdemo.com#>
    PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>

    SELECT ?n WHERE {
      ?s rdf:type :Person.
      ?s :personName '巩俐'.
      ?s :hasActedIn ?o.
      ?o :movieTitle ?n.
      ?o :movieRating ?r.
    FILTER (?r >= 7)
    }
""")
sparql.setReturnFormat(JSON)
results = sparql.query().convert()

for result in results["results"]["bindings"]:
    print(result["n"]["value"])

运行结果:

2046
Memoirs of a Geisha
荆轲刺秦王
大红灯笼高高挂
霸王别姬
活着
唐伯虎点秋香
秋菊打官司
菊豆
Hong gao liang
画魂
风月
Piao Liang Ma Ma
The Hand

以上就是D2R的使用方法 。
所有数据在这里:https://github.com/HoloLen/KG-demo-movie

参考

https://blog.csdn.net/weixin_41104835/article/details/88615715

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bulldozer++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值