用d2rq转换MySQL为RDF数据

安装d2rq

https://github.com/d2rq/d2rq 下载最新release即可

转换

在本地MySQL数据库中新建一个database,里面table是你要转换的数据。注意每个table的column中要指定一个primary key。

//链接数据库,把数据导出到ttl文件中
./generate-mapping -u root -p root -o mydb.ttl jdbc:mysql:///mydb
//以turtle格式转换为nt文件
./dump-rdf -f TURTLE -o dump.nt mydb.ttl
中文报错

如果数据表的列名是中文(名字 varchar(100) character set gbk),会报Column @@test.名字@@ not found in database (E86)此类的错,此时在转换时加上编码说明即可:
./generate-mapping -u root -p root -o mydb.ttl "jdbc:mysql:///mydb?useUnicode=true&characterEncoding=utf8"
注意要用双引号包裹起来,否则那个&变成bash命令的一部分了

精简一下

但是这个转换结果中有很多与实际数据无关的三元组,写个脚本删掉

fp = open('dump.nt', 'rb').readlines()

new = open('dump2.nt', 'wb')

length = len(fp)
# print fp[length]
n = 0
while n<length:
	if fp[n].startswith('vocab:'):
		n += 4
	elif fp[n].startswith('rdfs:'):
		n += 3
	else:
		new.write(fp[n])
		n += 1

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值