家計簿 on Kaibashira

Kaibashiraってのはずっと前に作ったRDFデータベース。最後に手を入れたのは去年の10月だ。もう1年1ヶ月経ってる。改めてPostgreSQLを8.2に入れ換えてKaibashiraを動かしてみようとしたら動かなかった。PostgreSQLなんて久しぶりだし、cygwinで使うことが多かったからGUIだとよく分からないな。
自分で書いたドキュメントを見ながらやってたけどそれじゃだめなようだ。そういえばデータベースを作ってからテストする前にテーブル作らないと駄目じゃないか。data/setup.sqlを実行してテーブルを作ると、それでもまだ動かない。とにかくデータベースのユーザーにいろいろ権限を加えると動くようになった。sequenceとか使わない方がいい気がしてきた。多めの権限が必要だったみたいだし、PostgreSQLに依存しちゃうし。まぁそのうち。
テストが一つ失敗する。変なデータの場合のテストだから動かなくても構わないところかな? これは無視しておこう。実装途中で忘れないようにわざと失敗するようにしてたんだろうな、きっと。
あとテストの中からデータベース名を指定しているところもあった。ここは直さないと。まぁそのうち。


テストは9割がた動くようだから問題なしと。
ソースはいじってないから昨日インストールした状態のままで使える。
2ヶ国語で書かれたrdocのドキュメントを見ながらリソースを作ってトリプルを作ってデータベースに追加してみた。よし、動く。


あとは家計簿のスキーマを考えないとな。ここで言うスキーマRDFスキーマのことだ。といっても行き当たりばったり作ってあとでクエリーで整えることもできるからあんまり考えず、まず商品のリソースがあって、値段のプロパティと数値のリテラル。名前のプロパティと文字列のリテラル。みたいにトリプルを追加していけばいいや。

品目のプロパティに食費とか光熱費とかの品目を表すリソース、買った日とか用途とか、いろいろいきあたりばったりに追加して行って、GUIができたら好きなプロパティについて表示できるようにすればいい。

商品そのもののリソースをどうしようか。試しにブランクノードで作ったら同じ日に同じものを同じ金額で複数買ったりするとそれぞれを区別して指定できなくなるな。適当なルールでリソースの名前を付けるか、日付と連番とかそんな感じで。でも区別できないままでもそれはそれで、どっちでもいいから一個だけ修正すれば区別できるようになるし、第一同じ日に同じ金額で買ったものを区別するひつようがあるとも思えない。大事なのはそれが買った数だけあるということだもんな。あとは名前と日付と値段だけは付け忘れないようにすれば問題ないだろう。


今日のところはここまで。仕事の終わるのが遅いのであんまり家で作業できない。最近寝る時間も削り気味だ。


実際のアプリケーションでは、家計簿だからまず日付が今日のものを列挙して、それぞれの名前と金額と品目を並べて、あと他にも表示したい項目があればそれも、なんならマウスで表示したい項目を選んでもいい。
一番下に集計なんだけど、SPARQLって集計はできないんだったか。これは自分で計算するしかないや。
月ごととかの集計をやりたかったら日付を条件式で指定して、その日付を持ち、型が商品で金額を持っているリソースを取得して、各リソースの金額を計算ってことになる。


ユーザーインターフェースさえ使いやすくできるなら最終的にはかなり自由なデータベースができるなぁ。