1. 程式人生 > >用d2rq轉換MySQL為RDF資料

用d2rq轉換MySQL為RDF資料

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