Open mitsuhashi opened 8 months ago
rundeckでturtleファイルのロードテストに失敗していた。2172行目のC0002883でパースエラー。
ttlファイルを調べると
rdf_portal@vs66:/mnt/nas05/togovar/public/virtuoso/medgen/20240305$ grep -A 6 C0002883 NAMES.ttl medgen:C0002883,"Anemia a mo:ConceptID ; dct:identifier "C0002883,"Anemia" ; rdfs:label " Hemolytic" ; mo:name [ rdfs:label " Hemolytic" ; dct:source mo:IdiopathicAcquired",MSH ; mo:suppress mo:N ] . rdf_portal@vs66:/mnt/nas05/togovar/public/virtuoso/medgen/20240305$
以下の、NAMES.csvを見ると
rdf_portal@vs66:~/rdf_portal-rdf/work/rdf-medgen_download/foo$ grep C0002883 NAMES.csv C0002883,"Anemia, Hemolytic, Idiopathic Acquired",MSH,N rdf_portal@vs66:~/rdf_portal-rdf/work/rdf-medgen_download/foo$
主語はC0002883,"Anemia, の後で区切っているが、C0002883,のところで区切り、labelとsourceも適切に処理される必要がある。ダブルクオートの場合を先に判定するために、以下のifとelsifを入れ替えた。
rdf_portal@vs66:~/rdf_portal-rdf/work/rdf-medgen/rdf_converter_medgen$ git diff rdf_converter_medgen.rb diff --git a/rdf_converter_medgen.rb b/rdf_converter_medgen.rb index 6c63eef..22c414a 100644 --- a/rdf_converter_medgen.rb +++ b/rdf_converter_medgen.rb @@ -50,9 +50,9 @@ module MedGen end def self.parse(line) - if /^(\S+),([^\".]+),(.+),(\w)[\r\n]*?$/ =~ line + if /^(\S+),\"(.+)\",(.+),(\w)[\r\n]*?$/ =~ line [$1, $2, $3, $4] - elsif /^(\S+),\"(.+)\",(.+),(\w)[\r\n]*?$/ =~ line + elsif /^(\S+),([^\".]+),(.+),(\w)[\r\n]*?$/ =~ line [$1, $2, $3, $4] elsif /^(\S+),\"(.+)[\r\n]*?$/ =~ line [$1, $2, "Unknown", "Unknown"] rdf_portal@vs66:~/rdf_portal-rdf/work/rdf-medgen/rdf_converter_medgen$
rundeckでturtleファイルのロードテストに失敗していた。2172行目のC0002883でパースエラー。
ttlファイルを調べると
以下の、NAMES.csvを見ると
主語はC0002883,"Anemia, の後で区切っているが、C0002883,のところで区切り、labelとsourceも適切に処理される必要がある。ダブルクオートの場合を先に判定するために、以下のifとelsifを入れ替えた。