- 2008年12月30日 12:35 AM
- 未分類
先日の記事(PORTAのAPI使ってみた、けど。)のあと、いろいろ試してようやくまともに書誌情報が取得できたので、報告します。
解説すると長くなるので、とりあえずPHPのサンプルを各種。プログラマー各氏にはこのほうが話が早いかも。
FC2ブログの仕様上、拡張子がphpだとアップ出来ないのでtxtにしてます。
PORTAへのリクエストでは、書誌情報のスキーマがdcかdcndl_portaか選べ、そのパッキング方法をxmlとstringから選べる。はじめどれがいいかわかんなかったので、都合この組み合わせ4つのサンプルを用意した。
- スキーマ:dc パッキング:xml
porta_dc_xml.txt - スキーマ:dc パッキング:string
porta_dc_string.txt - スキーマ:dcndl_porta パッキング:xml
porta_dcndl_xml.txt - スキーマ:dcndl_porta パッキング:string
porta_dcndl_string.txt
また、先日の記事の追記でも書いたけど、PHPのSimpleXMLだと名前空間の扱いがめんどくさいので、名前空間付きの要素名を適当に置換するバージョンも2つのスキーマ向けに作った。
- スキーマ:dc パッキング:xml 名前空間付きの要素名を置換
porta_dc_replace.txt - スキーマ:dcndl_porta パッキング:xml 名前空間付きの要素名を置換
porta_dcndl_replace.txt
結局、最後のやつが一番使いやすい気がします。
あと、おまけ。
- 最後のやつの出力サンプル
porta_dcndl_replace.html
にしても、dc:identifierの種類が属性を参照しないとわからんとか、全角英数字を使ってるとか、複数の著者名と役割表示が1つの文字列にまとめられてるとか、Amazonに比べると扱いにくいこと扱いにくいこと。既存の目録規則やDublin Coreにとらわれずに、もっとまともな構造のデータで出力してくれると嬉しいんだけどなあ。
- 新しい: あけましておめでとうございます。
- 古い: 縦方向のスペースは貴重なリソース。
コメント:4
- Cloud 2009年1月28日
ラボ長さま、初めまして。サンプルありがとうございます!
おかげで「SOAPって何?」な自分でも無事XMLを
取得できました。
ただ、「$req = array(‘version’…);」に”sortKeys’ => ‘title,,0′
と追加してソートをしようとしているんですが
どうやっても出力順が変わりません。
さくさくとソートができればぐっと実用的になると思うんですが・・
ラボ長さまはソートできていますか?- ラボ長 2009年1月29日
Cloudさん、はじめまして。
たしかにsortKeysを指定してもソートできないですね。私もいろいろ試してみましたが、まだできてません。
ちょっと今後も調べてみます。- Cloud 2009年1月30日
お返事ありがとうございます。
私だけではないと分かったので、思い切って
PORTAのページから直接問い合わせてみました。
即返事が来て正常に動作しないことを確認したので
対応していただけるとのことでした。
しばらく待てばいいようですね。- Masa 2009年8月16日
こんにちわ、はじめまして。貴重な情報、ありがとうございます。
「スキーマ:dcndl_porta パッキング:xml 名前空間付きの要素名を置換」を基に
ISBNコードから書籍情報を取得してDBに入れるスクリプトを作成しました。
問題なく動作はするのですがPORTAからデータの取得まで5秒〜30秒ほどかかってしまいます。サーバーの応答速度の問題だとは思いますが、リクエストを変更するなどの方法で
改善する方法はあるのでしょうか。
トラックバック:1
- この記事のトラックバック URL
- http://penguinlab.jp/blog/post/190/trackback
- トラックバックの送信元リスト
- PORTAのPHPサンプル数種。 - 情報と音楽 より
- pingback - 7月のPORTAリニューアルについて – 情報と音楽 より 2009年10月27日
[...] SRWのリクエストをREST(URLによるリクエスト)にしたSRUに対応した。SRWはSOAPを使うため、何かとめんどくさいが、SRUはURLに検索式を埋め込むので非常に楽。また検索式もCQL1.2に対応することで、検索クエリ中に並べ替えを指定することができるようになった。前の記事にいただいたコメントにもあるようにSRW/CQL1.1のsortKeysによる並べ替えは現時点でも実装されていないが、このCQL1.2による並べ替えはちゃんと実装されている。 title = library でNDL蔵書目録を検索(タイトル昇順) http://api.porta.ndl.go.jp/servicedp/SRUDp?operation=searchRetrive&maximumRecords=10&recordSchema=dcndl_porta&query=title+%3D+library+AND+dpid+%3D+zomoku+AND+sortBy+%3D%22title%2Fsort.ascending%22 [...]
