国立国会図書館サーチから書誌情報を抜く

CiNii に続いて NDL から書誌情報を取得する方法を検討する。 以下、調査結果を記す。

最初に注意しなければならないのは、API を提供しているのは 国立国会図書館サーチ(NDLサーチ)であり、NDL-OPAC ではない、 ということだ。なぜこれが重要かと言うと、両者は検索する データベースの範囲が異なり、そのため ID の体系が異なるからである。

ID

NDL-OPAC の書誌ID は、たとえば 000001887364 のような形式になっており、 http://id.ndl.go.jp/bib/000001887364 というURLで書誌ページにアクセスできる。 一方、NDLサーチの方では ID は R100000002-I000001887364-00 という形式で、 書誌ページの URL は http://iss.ndl.go.jp/books/R100000002-I000001887364-00 となる。ここで R100000002 というのは NDL-OPAC を表すリポジトリ番号で、 つまり R100000002-I000001887364-00 という ID は、 NDL-OPAC 内の 000001887364 番のレコードを指している。 末尾の 00 の意味は不詳であるが、おそらく分冊になっていたり別冊が あったりする場合に使用するのではなかろうか。

雑誌記事の場合、NDL-OPAC の記事登録IDは 026093161 のような形式になっており、 http://id.ndl.go.jp/bib/026093161 というURLで書誌ページにアクセスできる。 NDL-OPAC では図書用の書誌ID と記事用の記事登録IDは区別する必要はなく、 ユーザインターフェイス上ではシームレスに扱われている。 一方、NDLサーチの方では、雑誌記事は別リポジトリになっており、 R000000004 というリポジトリ番号が割り当てられている。 従って ID は R000000004-I026093161-00 となり、書誌ページのURLは http://iss.ndl.go.jp/books/R000000004-I026093161-00 となる。NDL-OPAC の ID を NDLサーチに流用する場合は、 図書か記事かをユーザの側が意識してリポジトリ番号を選ぶ必要がある。

書誌データの取得

NDLサーチのサイトに 外部提供インタフェース(API) というページがあって、ここに OAI-PMH 云々と書かれているので、 OAI-PMH を使わなければ書誌データが取れないのかと思ったが、 別にそんなことはなく、書誌ページの URL の末尾に .rdf または .json を 付加すれば良い。RDF形式の方は OAI-PMH API でメタデータ形式として dcndl を指定した時と同じ内容になるようだ。JSON 形式は内容をかなり 簡素化して返す。

実用上は JSON 形式の簡素化データで問題ないが、ひとつだけ懸念すべき点があった。 それは図書と記事の判別である。図書と記事では書誌の項目が異なっていたので 区別する必要がある。RDF形式では

<dcndl:materialType rdf:resource="http://ndl.go.jp/ndltype/Book" rdfs:label= "図書"/>

のように、URI形式の識別子があるのでまったく問題がないが、JSON形式では URI形式の識別子がなく、日本語リテラル(上記の rdfs:label の内容)だけが 与えられるようになっている。日本語リテラルで判別するとすると、 エンコードや「・」(中点)の揺れが原因で文字列比較が失敗する可能性が 考えられ、出来るなら避けたいところである。そこで RDF形式で取得して こちらでパースすることを検討したが、それはやはり面倒くさいという 結論になった。NDL側で語彙統制している筈だから表記揺れは無いだろう、と 措定することにした。

ライブラリっぽいものが落ちてないかと探してみたが無さそうだ (まぁそうだろう)。自分で書かなければならないか。