希少疾病用医薬品・希少疾病用医療機器のデータをRDF化しよう。その6
日本語のデータをRDF化しよう。
基本的な手順は英語版の時と同じです。OpenRefineを使って,データを綺麗にし(下画像),Export→Templatingにて,json形式に出力します。
英語版の時と同様にprefixを入れ,以前に決めたpredicateを入れていったらOKです。
#!/usr/local/bin/ruby -Ku require "json" require "date" fp_json = [] open("orphan_j.json",'r'){|fp| fp_json = JSON.parse(fp.read) } puts "@prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix eob: <http://pashworth.org/orangebook#> . @prefix drgb: <http://bio2rdf.org/drugbank_vocabulary/> . @prefix drgn: <http://www.nibio.go.jp/drugVocabulary#> . @prefix odrgn: <http://www.nibio.go.jp/orphanDrugVocabulary#> . @prefix cc: <http://creativecommons.org/ns#> . @prefix dcterms: <http://purl.org/dc/terms/> . " puts fp_json.each do |key,val| val.each_with_index do |column,i| print "<http://www.nibio.go.jp/orphanDrugTarget#"+ i.to_s + "> drgn:designationFiscalYear \""+ column["Column 1"].to_s + "\";\n" print " drgn:designationDate \"" + column["Column 2"].to_s + "\"^^xsd:date;\n"; if column["Column 3"].nil? print " drgn:number \" \";\n" else print " drgn:number \"" + column["Column 3"] + "\";\n"; end ...中略 if column["Column 8"].nil? print "drgb:pharmacology \" \"; \n" else print " drgb:pharmacology \'\'\'" + column["Column 8"] + "\'\'\';\n"; end ...中略 print " drgn:revocationDate \"" + column["Column 23"].to_s + "\"^^xsd:date;\n"; print " drgn:status \"" + column["Column 24"].to_s + "\".\n"; puts puts end end puts "<http://www.nibio.go.jp/orphanDrug_j.ttl> dcterms:creator \"伊藤 真和吏 \" ; dcterms:publisher \"独立行政法人 医薬基盤研究所\" ;" print(" dcterms:date \"",Date.today.to_s,"\"^^xsd:date ;\n") puts " cc:license <http:\/\/creativecommons.org/licenses/by-sa/3.0> ."
このような形で,書いていけばOKです。
なお,print " drgb:pharmacology \'\'\'" + column["Column 8"] + "\'\'\';\n";
の部分ですが,記述が複数行にわたり,改行が必要な場合には,シングルクオテーション*3をすることが必要のようです。(そうしないと上手く,SPARQLで調べられませんでした…参考 Turtle literals←Thanks to @32nmさん!!)
実行結果はこのようになります。日本語だと,なんかより親しみが持てる感じがします(私だけ?)
@prefix dc: <http://purl.org/dc/elements/1.1/> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix eob: <http://pashworth.org/orangebook#> . @prefix drgb: <http://bio2rdf.org/drugbank_vocabulary/> . @prefix drgn: <http://www.nibio.go.jp/drugVocabulary#> . @prefix odrgn: <http://www.nibio.go.jp/orphanDrugVocabulary#> . @prefix cc: <http://creativecommons.org/ns#> . @prefix dcterms: <http://purl.org/dc/terms/> . @prefix db: <http://dbpedia.org/ontology/> . <http://www.nibio.go.jp/orphanDrugTarget#1> drgn:designationFiscalYear "1993"; drgn:designationDate "1993-11-15"^^xsd:date; drgn:number "(5薬B)第2号"; drgn:grantPeriod ""; drgb:name " "; dc:description "ゴーシェ病Ⅰ型患者の諸症状(貧血・血小板減少症、肝脾腫等)の改善"; drgn:designationApplicant "ジェンザイム・ジャパン㈱"; drgb:pharmacology '''ゴーシェ病Ⅰ型患者の諸症状(貧血、血小板減少症、肝脾腫及び骨症状)の改善'''; drgb:manufacturer "ジェンザイム・ジャパン㈱"; eob:approvalDate "1996-07-10"^^xsd:date; drgb:product "セレデース注50U"; drgb:product "セレデース注400U"; drgb:brand " "; drgn:HOT9 " "; drgn:approvedNameDrugPackageJ " "; drgn:approvedNameDrugPackage " "; drgn:JSCC " "; drgn:CODE106 " "; drgn:approvedName ""; drgn:approvedNameJ ""; drgn:CASNumber " "; drgn:clinicalTrialNumber " "; rdfs:comment "これらの2製剤については現在、供給されていませんが、代わりに指定番号(8薬)第81号の製剤が供給されています。"; drgn:revocationDate ""^^xsd:date; drgn:status "承認". drgn:specifiedDiseaseNumber " "; ・・・中略 <http://www.nibio.go.jp/orphanDrug_j.ttl> dcterms:creator "伊藤 真和吏 " ; dcterms:publisher "独立行政法人 医薬基盤研究所" ; dcterms:date "2013-09-04"^^xsd:date ; cc:license <http://creativecommons.org/licenses/by-sa/3.0> .
これでデータのRDF化がひと通り完成しました。バンザーイ。
(後で補足はするかもしれません。)
次回予告
せっかく,データをRDF化したので,次回はこれらのデータを使って,SPARQLでのクエリを投げてみましょうか(予定は未定,ちょっと遅くなるかもです。)SPARQLのクエリを投げると,より口語的な表現で,データを得ることが出来るようになります。ここがRDFの醍醐味の1つ,でもあるかもしれません。乞うご期待ください☆