iT邦幫忙

DAY 26
4

回應鐵人賽的文章變鐵人系列 第 26

[Reply] 用YAZ 透過Z39.50 從國圖查詢圖書資料

modernsarah 在 books。聯盟 一文中,
提到有關「書」的議題,
如何從書的國際標準碼來查詢書的資訊?
若電子書店裡沒有的話,
可往國家圖書館來查查看,
除了在 全國圖書書目資訊網 手動查詢之外,
若要用程式來查的話,
可透過 Z39.50 的通訊協定來查,
在此用Z39.50的client來做查詢。
安裝YAZ套件
在 Fedora 中,只要執行:
yum install yaz
即可安裝完成,
其他linux系統可用其套件管理安裝 YAZ

執行查詢
利用yaz-client 透過Z39.50的協定連結國圖:

$ yaz-client 192.83.186.170:210/INNOPAC
Connecting...OK.
Sent initrequest.
Connection accepted by v2 target.
ID     : Z39.50-III
Name   : z39-innopac
Version: 1
UserInformationfield:
{
    OCTETSTRING(len=52) Innovative Interfaces Inc. Z39.50 SERVER version 1.1
}
Guessing visiblestring:
'Innovative Interfaces Inc. Z39.50 SERVER version 1.1'
Options: search present scan namedResultSets
Elapsed: 0.057962
Z> set_auto_reconnect on
Set auto reconnect enabled.

上述的 set_auto_reconnect 指令,
可以記註連結的初始化動作,
因為若太久沒查詢的話,
會結束連結,
啟用此選項,
再一次的查詢,可不用再做連結的動作。

假設我們有本書的國際標準號:9789575279868 來查詢:

Z> find @attr 1=7 9789575279868
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 4, setno 1
records returned: 0
Elapsed: 0.031518

上面的第五行看到獲得4筆結果。

用這樣的方式來看第一筆:

Z> show 1
Sent presentRequest (1+1).
Records: 1
[INNOPAC]Record type: USmarc
01046cam0 2200313   4500
001 1189649
008                                    chi
010 0  $a 9789575279868 $b 平裝 $d 新臺幣590元
042    $a nbic
100    $a 20081129d2007    k  y0chiy08      e.
101 1  $a chi $c eng.
102    $a tw.
105    $a ak  z   000yy.
200 1  $a Ajax 與.NET 2.0深度整合應用 $f 丹尼爾.伍思頓(Daniel Woolston)著 $g 鄧 瑋敦,博碩文化譯
205    $a 初版
210    $a 臺北縣汐止市 $c 博碩 $d 2007[民96]
215 0  $a [560]面 $c 圖,表 $d 23公分 $e + 附光碟1張
260 1  $a 2007.
454  1 $1 2001  $a Pro Ajax and the .NET 2.0 platform$zeng.
606    $2 csh $a 網頁設計
606    $2 csh $a 全球資訊網
681    $a 312.91695 $b 2165 $v 增訂七版
700  1 $a 伍思頓 $c ((Woolston, Daniel) $4 著
702  1 $a 鄧 $b 瑋敦 $4 譯
712 02 $a 博碩文化 $4 譯
770  1 $a Woolston $b Daniel.
801  0 $a tw $b TMUE $c 20081129 $g CCR.
801  1 $a tw $b TMUE $c 20081129.
805    $a TPTC $d 312.91695 $e 2165 $t CCL $z 681.

nextResultSetPosition = 2
Elapsed: 0.024271

這樣就秀出了圖書館界所謂的MARC的格式。

查詢的語法
上述的關鍵查詢語法是:
find @attr 1=7 9789575279868
1=7 這簡直是個天書,
其根據是:
ATTRIBUTE SET BIB-1 (Z39.50-1995): SEMANTICS
或參考這個方便查詢的表格:
Bib-1 Attribute Set
所以此例是最簡單的查詢:
「使用」屬性 7 (ISBN) 為9789575279868。
如果要用書名查詢的話:

Z> find @attr 1=4 國際觀的第一本書
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 6, setno 1
records returned: 0
Elapsed: 0.090707

可查到6筆,再利用show 的指令逐一檢視。

系列文章


上一篇
[Reply] 你該知道的Unix的工具:lsof (二)
下一篇
[Reply] 用 Ruby 透過 Z39.50 從國圖查詢圖書資料
系列文
回應鐵人賽的文章變鐵人30

尚未有邦友留言

立即登入留言