Summonのパーマリンク(訂正あり)

【後日談】

library labsのsnowy0118さんに

とご指摘をいただき、確認してみるとたしかに! すんません。。

この形式が正しいパーマリンクのようです。

http://<図書館ID>.summon.serialssolutions.com/document/show?id=<レコードID>

詳細画面を表示するように設定しているSummon(例えば佛教大学や鹿児島大学はそうなっていた)ではふつうにこのURL(後ろにクエリがつくけど)でレコードが表示されるんですね……認識してなかった。詳細画面を表示しない設定になっていても、このパーマリンクは有効みたい(でもユーザは気づかないだろう)。

そんなわけで、以下は(詳細画面を表示しない設定になっている状況で)どうやってIDを調べたらいいのかという情報としてお読みください。






詳細画面という概念のないSummonで各レコードにリンクをはる方法(パーマリンク)は見かけたことがなかったが、方法を見つけたのでメモしておく。これをパーマリンクと言えるのかどうかは分からないけど実用には足るよね。これでメールでのコミュニケーションが取りやすくなるかな……。


Summon 1.0の場合

f:id:kitone:20140717111515p:plain

パーマリンクの形式

http://kyushu.summon.serialssolutions.com/search?s.q=ID%3A<ID>

ここで「%3A」は「:」。「ID:」の部分は必要なようだ。

IDは「FETCH-kyushu_dspace_oai_catalog_lib_kyushu_u_ac_jp_2324_1403427011」[*1]というような文字列で、

http://kyushu.summon.serialssolutions.com/search?s.q=ID%3AFETCH-kyushu_dspace_oai_catalog_lib_kyushu_u_ac_jp_2324_1403427011

でリンクがはれる。

IDの調べ方

適当なキーワード(上の例なら「etale cohomology」とか)を使って、リンクしたいレコードが含まれるように検索し、HTMLソースを見る。

すると、各レコードは

<div class="document" id="FETCH-kyushu_dspace_oai_catalog_lib_kyushu_u_ac_jp_2324_1403427011" type="eBook">
...
</div>

という単位の繰り返しになっているのが分かる。このidの中身をコピペする。



Summon 2.0の場合

f:id:kitone:20140717111530p:plain

パーマリンクの形式

http://tsukuba.summon.serialssolutions.com/#!/search?q=id%3A<ID>

「q」を「s.q」にしても、「#!/」を除いても動作するので、Summon 1.0の形式でも大丈夫のようだ。ただし、2.0では「q」のほうが自然っぽいし、「#!/」がないとアクセス後にURLの末尾にごちゃごちゃとフラグメント(?)がつくのでこのままにしておくのがいいかなと思った。

http://tsukuba.summon.serialssolutions.com/#!/search?q=id%3AFETCH-tsukuba_catalogbook_5696601

でリンクがはれる。

IDの調べ方

Summon 2.0ではページロード後に非同期にデータを読み込んでいるため(静的な)ソースを見ても分からない。Chromeなら「要素を検証」、Firefoxなら「インスペクタ」のような手段で現時点でのソースを確認できる。この手のツールを日常的に使っている図書館員がどれくらいいるか分からないけど、Summon 1.0に比べてちょっとハードル上がるか。

いずれにせよ、各レコードは

<li ng-repeat="item in feed.items" ng-include="templateFor(item)" class="ng-scope">
<div class="documentSummary grid" id="FETCH-tsukuba_catalogbook_5696601" document-summary="" previewable="" saveable="" document="item.document">
...
</div>
</li>

という単位の繰り返しになっていることが分かる。このidをコピペする。


きっかけ

Summon APIのドキュメントを見ていたら、サンプルコード

public function getRecord($id, $raw = false)
{
	$this->debugPrint("Get Record: $id");

	// Query String Parameters
	$options = array('s.q' => sprintf('ID:"%s"', $id));
	$options['s.role'] = $this->authedUser ? 'authenticated' : 'none';
	return $this->call($options, 'search', 'GET', $raw);
}

という部分があり、もしかしたらこれ使えるんじゃね?と気づいたしだい。


*1:なお、このレコードは九大コレクションからOAI-PMHでハーベストしたレコードで、「FETCH」や「oai」のあたりはそれに対応しているんだろう。IDの「catalog_lib_kyushu_u_ac_jp_2324_1403427」は http://hdl.handle.net/2324/1403427 という元々のURLから来ているはず。末尾の「011」はよく分からない。