BIBFRAME Scribeを手元の環境で動かす

AngularJSの勉強を兼ねてBIBFRAME Scribeを手元の環境(MacBook Air)にインストールしてみた。しかし、このシステムはまだソースを公開していないので、実際に動くところまで行くのにだいぶ時間がかかった。

最初にブラウザから「別名で保存」でソースを持ってきたところ、AngularJSで書かれた部分がすべて展開されてしまっており、どこから手を付けたらよいかまったくわからなかった(いくらなんでも汚すぎるソースではないかと思っていた)。1週間ちかく悩んで、結局「ページのソースを表示」だと展開されないことがわかり、ようやくソースを読み始めることができた。

ほどなく取りあえず動くようになったが、新規リソースの追加が入れ子になると(つまり、リソースのフィールドにリソースがあると)子のリソースの入力内容が親のリソースフィールドに設定されないという問題が発生した。ちなみに、これはオリジナルシステムでも発生している。これは子リソースの保存時に自分がどこから呼ばれたかがわからないのが原因だった。原因は比較的すぐ分かったが、その解決方法がなかなかわからなかった。結局、あらたな$scopeプロパティを用意して子リソースを呼ぶ際に戻り先を書いておき、子リソースの保存時にこのプロパティの有無を見て保存するようにすれば良いことがわかった。

次にこのシステムでは入力画面はInstance単位でできているが、Instanceフィールドだけでなく、Workフィールドも初期設定時にマージして入力できるようにしている。で、登録時にはどのような方法でWorkとInstanceを分けているのかと思ったら、すべてのフィールドのサブジェクトがWorkIDで分かれていなかった。しかし、オリジナルシステムでは分かれている。RDFの登録を行うサーバプログラムで処理をしているのか、その後修正したのかわからない(最初にアクセスした当時と現在では出力されるRDFが違うような気がする)が、サーバプログラムにはN3形式のグラフを送っているのでサーバ側よりクライアント側で対応した方が簡単だと思われたので、初期設定時にIntanceフィールドIDを保存しておき、N3作成時にこれを参照してサブジェクトを決めることにした。

というわけで1ヶ月近くかかってようやくまともに動くようになった。ただ、オリジナルシステムが公開されるまで手元の修正版も公開できない。


プロフィール
新着エントリ
アーカイブ