BH11.11/コケ
提供:TogoWiki
極地研の南極で採取したコケのサンプルについて、データがエクセルの表で届いているのでDB化・RDF化したい。(加藤・山本 → 片山・西澤)
データ
% tsv2csv.rb antmoss_search_list.txt | lv -Ou8 | perl -pe 's/^(\d+)/$1\/$1/' > antmoss_search_list.csv
クレンジングを行なって元データを CSV に変換
% du -sh antmoss_search_list.csv 13M antmoss_search_list.csv % wc -l antmoss_search_list.csv 56591 antmoss_search_list.csv
13MB, 5万+エントリのデータ
% head antmoss_search_list.csv Number registered,Date Collected,Latitude,Longitude,Class,Sub Class,Order,Family,Genus,Specific Epithet,Variety,Floral Region,Floral Subsection,Locality,Sporophyte,Altitude,Collector,Determiner,Herbarium housed 19761002-0001,1961/02/10,54d 17m 0s S,36d 31m 0s W,[Musci],Bryidae,Grimmiales,Grimmiaceae,Racomitrium,austro-georgicum Par.,"",Am 6,South Georgia,"Stream from Hodges Glacier to Gull Lake, Cumberland East Bay. GR 130 124","partial shade, beside stream, moist, rock",107 m,S.W.Greene (1862),"",NIPR 19761002-0002,1961/02/02,54d 4m 0s S,37d 9m 0s W,[Musci],Bryidae,Grimmiales,Grimmiaceae,Racomitrium,heterostichoides Card.,"",Am 6,South Georgia,"Immediately east of end of whaling station plan, North shore of North Bay, Prince Olav Harbour. GR 090 148","partial shade, sea-shore, moist, rock",30 m,S.W.Greene (1657),"",NIPR
画像ファイルの ID、採取場所、種名、緯度経度 などが情報として含まれているようだ
TogoDB
http://togodb2.dbcls.jp/ にアップロードして RDF/XML, Turtle に変換する → 進行状況 https://skitch.com/toshiakikatayama/gk4hq/togodb-data-release-list
今回出会った問題点:
- TSV は CSV に変換してからアップロードする必要がある
- taxonomy の Class カラムは Ruby の予約語 class とかぶるのでリネームする必要がある
- Rails の規約上 moss というデータベース名を使うと Mo クラスになってしまって妙なエラーがでるので DB 名を変えざるを得ない
- UTF-8 に変換しておかないと RDB へのインポート時に落ちる
- 1カラム目の画像IDである 19761002-0001 を http://lod.ac/antmoss/images/19761002/19761002-0001.jpg にリンクするため、ディレクトリ名をデータに含める必要がある
- → 画像にリンクするには prefix: <a href="http://lod.ac/antmoss/images/{number_registered}.jpg"> suffix: </a> とするか prefix: <img src="http://lod.ac/antmoss/images/{number_registered}.jpg" height=100>
などとする。しかし prefix と suffix を分ける意味はあまりないので、管理画面にはテキストボックス1つあればよさそう。
今回気がついた課題:
- インポートの際に各カラムのデータ型を推定する部分が全データをチェックする仕様だと遅い(ので最初の1000行だけを見るとかに変更したい)
- 日付データがどのフォーマットで書かれていたら date や time 型として認識されるのかわからない
- 緯度経度や高度など単位を持つデータを DB 化するときに高度 123m など m がついていると integer として range 検索できずもったいない
- 緯度経度情報を google map にマッピングしたい → TogoDB2 の外部ウェブページへの埋め込み機能を利用して、JSON を取得し Java Script でデータを Google Map に渡すハックをユーザ側ですればできるかも
- RDB にインポートするボタンがわかりにくい
- RDB にインポートが完了したら管理画面に移行したい
- 管理画面のユーザ追加で http://openid.dbcls.jp/user/ まではデフォルト値として入っていて欲しい
- データベース名の制限、カラム名の制限などがユーザには分かりにくい
今後の要望:
- DBのメタデータ:データベースの各エントリのタイプを指定したい
- カラムのメタデータ:カラム毎に RDF のプロパティ(URI)を指定したい
- さらに、複数のプロパティ (rdf:label, dc:titleなど)を追加できるようにしたい
- そのときに、foaf: などを選択すると prefix.cc から http://xmlns.com/foaf/0.1/ を補完して欲しい(http://prefix.cc/foaf 参照)
- そして、foaf: で有効な property 名を↑URLから取得できる OWL をパースして提示・補完できるとよい → この機能は DBCLS, TogoDB でやるよりは Semantic Web 界の問題として prefix.cc もしくはそれをラッピングする新しいサービスとして外部機関に API を作って公開してもらいたい
TogoWS
BH11.11 の会期中に西澤さんに http://togows.dbcls.jp/convert/csv.ttl と http://togows.dbcls.jp/convert/csv.rdfxml を作って頂いた。
% head -1000 antmoss_search_list.csv > antmoss_search_list.csv.head % wget --post-file antmoss_search_list.csv.head http://togows.dbcls.jp/convert/csv.ttl % wget --post-file antmoss_search_list.csv.head http://togows.dbcls.jp/convert/csv.rdfxml
いちおうこれだけでどんな CSV ファイルでも RDF 化できる。
現状の制約:
- predicate を生成するのにカラム名が必須であるため、1行目はヘッダ行である必要がある
- ファイルの中身を post するのでファイル名を渡すことが出来ず DB 名(データセット名)を指定する方法がない(ため、現状では適当なハッシュ値を生成して利用している)
- → http://togows.dbcls.jp/convert/csv.ttl/dbname のように URI にオプションをつけることで指定するのがよい?
現状の問題点:
- RDF/XML では predicate がカラム名から適切に生成されないことがある(Turtle と使っているルーチンは同じなので RDF ライブラリの問題なのか謎→調査中)