SRU

Table of Contents


1. URL

https://kn.ndl.go.jp/api/sru

2. リクエスト形式

https://kn.ndl.go.jp/api/sru?[引数]=[値]
引数を複数使用する場合は&で連結します。
https://kn.ndl.go.jp/api/sru?[引数1]=[値]&[引数2]=[値]&...

3. 引数

本システムでは、以下の引数に対応しています。 (省略可能な引数については、[]内に省略した場合に適応されるデフォルトの値を記載しています。)

operation
必須。"searchRetrieve"のみサポートしています。
version
SRUのバージョンを指定します。1.1又は1.2をサポートしています。 バージョン1.1と1.2では、検索結果のソート条件の与え方に違いがあります。 [1.2]
query
必須。CQL形式による検索クエリを記述します。 詳細は後述します。
startRecord
検索結果の開始順位を1~1000の範囲で指定できます。[1]
maximumRecords
返却される検索結果レコードの数を1~200の範囲で指定できます。[200]
recordPacking
検索結果に含まれる各レコードを、整形式のXMLで受け取りたい場合は"xml"を、<,>,&等をエスケープした文字列として受け取りたい場合は"string"を指定してください。 [string]
recordSchema
返却される検索結果レコードを記述する、メタデータスキーマを選択できます。 Simple DC形式での出力には"dc"を、NDL大震災アーカイブ独自形式での出力には"ndlkn"を、それぞれ指定してください。 [dc]
sortKeys
検索結果のソート条件を指定できます。versionに1.1を指定した場合のみ使用可能となります。
path
ソートに用いる資料の属性を指定できます。 "score"(検索クエリへの適応度)、"title"(資料のタイトル)、"creator"(著者・撮影者等)、"publisher"(出版者・公開者等)、"date"(撮影日・公開日等)のいずれか一つを指定してください。 [score]
ascending
ソート結果を降順で出力するか、昇順で出力するかを選択できます。"0"を指定した場合は降順、"1"を指定した場合は昇順で出力されます。 ただし、pathに"score"を指定した場合は、0のみを指定可能です。[0]

4. 検索クエリ(CQL: Contextual Query Language)

4.1. 検索クエリの形式

query=[検索式]
検索式はCQLを用い記述します。

検索式が複数ある場合は、△and△で連結します(△は半角スペース)。
query=[検索式1]△and△[検索式2]・・・

ただし、以下の場合は除きます。
  • sortByと他の参照名を連結する場合
  • △で連結します。
  • 同一検索クエリ内で複数使用できる参照名を連結する場合 △and△だけでなく、△or△でも連結できます。

※リクエストURLの[引数]=[値]の部分は、[引数]がquery、[値]が、[検索式]となるので、リクエストURLは、以下のようになります。
引数がqueryのみの場合 https://kn.ndl.go.jp/api/sru?query=[検索式]
https://kn.ndl.go.jp/api/sru?query=[検索式1]△and△[検索式2]・・・
query以外の引数が含まれる場合
https://kn.ndl.go.jp/api/sru?[引数1]=[値]&[引数2]=[値]・・・&query=[検索式]
https://kn.ndl.go.jp/api/sru?[引数1]=[値]&[引数2]=[値]・・・&query=[検索式1]△and△[検索式2]・・・

4.2. 指定できるCQL項目

参照名 内容 検索式
titleタイトル4.4、4.5参照
creator著者、撮影者等4.4、4.5参照
publisher出版者、公開者等4.4、4.5参照
subject主題・分類4.4、4.5参照
place場所4.4、4.5参照
from日付での絞込み検索を行う際の、開始日。YYYY-MM-DD 形式で指定。
YYYYあるいはYYYY-MM 形式でも指定可能。
その場合、YYYY は YYYY-01-01、YYYY-MM は YYYY-MM-01 を指定したとみなされる。
from=[値]
until日付での絞込み検索を行う際の、終了日。YYYY-MM-DD 形式で指定。
YYYYあるいはYYYY-MM 形式でも指定は可能。
その場合、YYYY は YYYY-01-01、YYYY-MM は YYYY-MM-01 を指定したとみなされる。
until=[値]
anywhere簡易検索と同等4.5参照
identifier識別子。震災IDを指定。
震災IDは、詳細画面のURL:http://kn.ndl.gojp/xxxxのxxxxの部分。
identifier=[値]
mediatype資料種別。値により資料種別を指定。
指定できる値は、1・・・文書資料、 2・・・Webサイト、 3・・・写真、 4・・・音声・動画、 99・・・その他
mediatype=[値]
dpid検索対象データベース。リポジトリIDを指定。dpid=[値]
language言語。ISO639-2形式で指定。language=[値]
openAccess"1"を指定した場合、「Web閲覧可」のデータのみ返却する。openAccess=[値]
sortByソートに用いる参照名を指定。
使用できる参照名は"title"、"creator"、"publisher"、"date"、"score"のいずれか1つ。
並び順条件は、昇順・・・sort.ascending、降順・・・sort.descending
sortBy△[ソート基準となる参照名]/[並び順条件]

4.3. 各CQL項目の検索条件

参照名 一致条件(^,exact) 複数値指定 複数回指定
title
creator
publisher
place
subject
from× (下限値指定)××
until× (上限値指定)××
anywhere× (部分一致)
identifier× (完全一致)××
mediatype× (完全一致)×
dpid× (完全一致)×
language× (完全一致)×
openAccess× (完全一致)×
sortBy---

4.4. 検索一致条件の指定

参照名 "title"、"creator"、"publisher"、"place"、"subject" の項目は、4.3に示すとおり前方一致(^)、部分一致、完全一致(exact)のいずれかの一致条件を指定できます。
指定しない場合は部分一致とみなされます。

検索式の記述方法は、以下のとおりです。
前方一致 : [参照名]=^[値]  例:title=^津波
部分一致 : [参照名]=[値]  例:title=津波
完全一致 : [参照名]△exact△[値](△は半角スペース、以下同じ)  例:title exact 津波

4.5. 複数値の指定方法

検索クエリ内で、参照名に対し値を複数指定したい場合、以下のいずれかの方法を用います。
  • 同一参照値内での複数値指定
  • 上表の【複数値指定】の値が「○」のもののみ可能
  • 同一検索クエリ内での参照名複数回指定
  • 上表の【複数回指定】の値が「○」のもののみ可能

4.5.1. 複数値指定

参照名 "title"、"creator"、"publisher"、"place"、"subject"、"anywhere"の項目は、参照名を繰り返すことなく、検索条件として複数の値を指定できます。
値間の論理条件としてand又はorを選択でき、対応する演算子としてallとanyを用います。

検索式の記述方法は

and : [参照名]△all "[値] △[値]" 例:title all "津波 地震"
or : [参照名]△any "[値] △[値]" 例:title or "津波 地震"

4.5.2. 複数回指定

参照名 "title","creator","publisher","place","subject","anywhere"に加え、"mediatype","dpid", "language", "openAccess"
については、同一検索クエリ内で参照名を複数回使用できます。
また、同一の参照名同士の連結は、△and△だけでなく、△or△も使用できますが、同一検索クエリ内では、andとorを両方使用することはできません。
(例)
例1:title=津波 or title=地震
例2:title=津波 or creator=山田
(使用できない例)
title=津波 or title=地震 and from=2011-03-11 and until=2011-03-30 sortBy title/sort.ascending

4.6. 検索条件の複数指定

複数の検索一致条件を同時に用いたり、検索一致条件と参複数値指定を同時に行う場合等は、参照名を複数回指定することで検索クエリを作成します。
例:行頭に「津波」という文字列があるタイトル、又は、タイトルに「火山」の文字列が含まれる場合
title=^津波 or title=火山
例:行頭に「津波」という文字列があるタイトルで、なおかつ、タイトルに「火山」又は「地震」の文字列が含まれる場合
title=^津波 and title any "火山 地震"

5. データ返却形式

version
SRUのバージョン "1.1"又は"1.2"のうち、リクエスト時に指定した値が返却されます。
numberOfRecords
検索結果総件数
records
検索結果レコードリスト
record
検索結果レコード
recordSchema
レコードのXMLスキーマ
recordPacking
"xml"又は"string"のうち、リクエスト時に指定した値が返却されます。
recordData
レコードの書誌情報
recordPosition
レコードの検索結果における順位
nextRecordPosition
次のレコードの開始順位  例: startRecord=1、 maximumRecords=200とした場合に、検索結果が201件以上あると nextRecordPosition=201として返却されます。
deagnostics
エラーメッセージリスト
extraResponseData
ファセット等の、付加的な情報

6. リクエスト例とその返戻

SRUへのリクエストの例として、タイトルに「図書館」と「仙台」を含むレコードを、タイトルの昇順で2件出力させてみます。「タイトルに「図書館」と「仙台」を含むレコードのタイトルの昇順での出力」を表す検索クエリは

query=title=図書館 and title=仙台 sortBy title/sort.ascending

となります。
上記の検索クエリのうち、CQLを使用し記述した部分

title=図書館 and title=仙台 sortBy title/sort.ascending

をURLエンコードし、maximumRecordsの値に"2"を指定した以下のURL

https://kn.ndl.go.jp/api/sru?
operation=searchRetrieve&version=1.2&startRecord=1&maximumRecords=2&recordPacking=xml&recordSchema=ndlkn&
query=title%3D%E5%9B%B3%E6%9B%B8%E9%A4%A8+and+title%3D%E4%BB%99%E5%8F%B0+sortBy+title%2Fsort.ascending
にアクセスすると、目的のレコードを得ることができます。



Copyright © 2013- National Diet Library. All Rights Reserved. 国立国会図書館 〒100-8924 東京都千代田区永田町1-10-1 電話:03-3581-2331(代表)