安装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