読者です 読者をやめる 読者になる 読者になる

inohilog

/var/log/inohiro

卒業研究で書いたプログラムを一部公開してみた

Programming Research Ruby
  • 言語は ruby.O/R Mapper として,sequel を使ってる
    • Java とかでやればもっと速く処理できるかな
    • MySQL (InnoDB) のチューニングもやってみたが
  • github の educational account (https://github.com/edu) をもらって,コードと論文はそこに置いてある
    • 今回は,private な研究用リポジトリから,一部外に持ってきたという感じ
    • 一部分析対象のデータ依存なコードだったところを,直したりした
  • vertical.rb - RDFを読んで,垂直表現で関係データベースに挿入する(mainが長すぎるが,なんとかならないものか)
  • horizontal.rb - 垂直表現のテーブルから,水平表現のテーブルを作成する
    • RDFスキーマにかっちりハマっていないデータを表現できるので,すぐにテーブルのスキーマを作ることができない
    • そのため,垂直表現で関係データベースに入れて,主語(subject)毎に必要な述語(predicaten)と目的語(object)のペアを求め,水平表現としてのスキーマを作る
  • duplicator.rb - 垂直表現のテーブルから,水平表現のテーブルへデータをコピー
  • generetadObservation_deleter.rb - 述語(predicate)が 'generetadObservation' となっているトリプルを削除する
    • 手法が十分でないため,'rdf:type' が定義されていない観測所(system)に関するデータは削除する
  • relational_creator - 水平表現のテーブルから,他テーブルとの関係(relationship)を探し,関係を保存するテーブルに入れておく
  • その他
    • geonames_getter.rb - GeoNames (http://www.geonames.org/) のダンプデータから作成したデータベースから,任意の地点から地球(最上位レイヤ)までの階層構造を得る
    • time_divider.rb - データ型 xsd:dateTime で記述されている値(すなわち日時)から階層構造を得る
    • util.rb - データベース接続のためのユーティリティ,その他ヘルパメソッドなど