用d2rq轉換MySQL為RDF資料
阿新 • • 發佈:2018-12-16
安裝d2rq
轉換
在本地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