Ray Denenberg Ralph LeVan Interoperability Standards & Searching Multiple Repositories Workshop 20 March 25, 2006; Washington
SRW (Brief) History
late 90’s ….. Initiatives to make Z39.50…. Simpler More comprehensible More easily implemented Web compatible …..while retaining the rich semantics developed over many years
Fast Forward......
SRW/U SRW Search and Retrieve Web Service SRU Search and Retrieve via URL SRW/U Search and Retrieve for the Web
Z39.50 TCP Classic Z39.50
SRW: over SOAP/HTTP Z39.50 TCP Classic Z39.50 SRW TCP “Search and Retrieve web Service” SOAP HTTP
SRU: over HTTP Z39.50 TCP Classic Z39.50 SRU TCP “Search and Retrieve via URL” HTTP
dinosaurs 1 10 mods/ SRW -in a SOAP Envelope
…..Same request via SRU: query= query= dinosaurs &maximumRecords=10 &startRecord=1 &recordSchema=mods
ZING
ZING “Z39.50 (international) Next Generation”
ZING
ZING srwsru
ZING srwsru cql
ZING srwsru cql “Common Query Language”
ZING srwsru cql “Common Query Language” --> “Contextual Query Language”
ZING srwsru cql ZOOM ez3950 zeeRex Record Update
ZING srwsruzeeRex Z39.50 Explain: explained and re-engineered in XML
ZING srwsruzeeRex Z39.50
ZING srwsruzeeRex
ZING srwsruZOOM Z39.50 Object Oriented Model
ZING srwsruZOOM Z39.50
ZING srwsruZOOM
ZING srwsru
SRW/U retains these Z39.50 concepts………. result sets abstract access points abstract record schemas application level diagnostics “Explain”
….. But differs from Z39.50 in these respects: Web-based Connectionless XML CQL
….. But differs from Z39.50 in these respects: Web-based Connectionless XML: Protocol (no ASN.1) + records (no “record syntax”) CQL user-friendly query
Z39.50 SRW/U Connections/Sessions/State Multiple services bound together in a single protocol Distinct Search and Present services Databases Record Syntaxes RPN ASN.1/BER Connectionless, stateless Different Z39.50 services are different web services Search/Present bound in a single web service Servers Just one: XML String query language XML
request via SRU: query= query= dinosaurs &maximumRecords=10 &startRecord=1 &recordSchema= mods
Record Schemas dc mods onix marcxml ead
request via SRU: query= query= dinosaurs &maximumRecords=10 &startRecord=1 &recordSchema=mods
request via SRU: & operation=searchRetrieve &query= &query= dinosaurs &maximumRecords=10 &startRecord=1 &recordSchema=mods
version=1.1& operation=explain version=1.1& operation=explain version=1.1& operation=searchRetrieve&query=dinosaur version=1.1& operation=searchRetrieve&query=dinosaurexplain: Search for “dinosaur”:
&operation=searchRetrieve&query=dinosaur &maximumRecords=1 &operation=searchRetrieve&query=dinosaur &maximumRecords=1&recordSchema=dc Search for “dinosaur”, return 1 record, marcxml: Search for “dinosaur”, return 1 record, dc:
&operation=searchRetrieve&query=dinosaur& startRecord=2&maximumRecords=1& recordSchema=dc return second record: &operation=searchRetrieve&query=dinosaur& startRecord=3&maximumRecords=2& recordSchema=dc Records three and four:
<zs:records> info:srw/schema/1/dc-v1.1 info:srw/schema/1/dc-v1.1 xml xml <srw_dc:dc xsi:schemaLocation=“... <srw_dc:dc xsi:schemaLocation=“... Abbott & Costello cartoons. Abbott & Costello cartoons. Copyright Collection (Library of Congress) DLC Copyright Collection (Library of Congress) DLC (etc.) (etc.) <zs:recordPosition>3</zs:recordPosition> info:srw/schema/1/dc-v1.1 info:srw/schema/1/dc-v <zs:recordPosition>4</zs:recordPosition></zs:record></zs:records>
&operation=searchRetrieve&query=dinosaur &maximumRecords=1&recordSchema=mods MODS record:
&operation=searchRetrieve&query=title=dinosaur &maximumRecords=10&recordSchema=mods Fielded Query: ‘title=dinosaur’
CQL
Sample CQL Queries Cat cat and dog title = cat dc.title = cat
Sample CQL Queries Cat (simple) cat and dog title = cat dc.title = cat
Sample CQL Queries Cat (simple) cat and dog (boolean) title = cat dc.title = cat
Sample CQL Queries Cat (simple) cat and dog (boolean) title = cat (index) dc.title = cat
Sample CQL Queries Cat (simple) cat and dog (boolean) title = cat (index) dc.title = cat (index qualified)
Boolean cat and dog cat or dog Cat not dog cat not dog and fish or frog
((cat not dog) and fish) or frog (cat not dog) and (fish or frog)
Fielded/index Search title = cat
Fielded/index Search title = cat dc.title = cat bib.title = cat Bath.keyTitle Bath.
title = cat Search Clause
Search Clause
title = cat indexrelation search term
title = cat subject = dog and search clauses linked by a boolean
Relations Title = "the complete dinosaur" title all "complete dinosaur“ title any "dinosaur bird reptile" title exact "the complete dinosaur"
Relations Title = "the complete dinosaur" title all "complete dinosaur“ title any "dinosaur bird reptile" title exact "the complete dinosaur"
= Title = "the complete dinosaur“
= Title = "the complete dinosaur“ matches “a day in the life of the complete dinosaur“ and “the complete dinosaur goes to Paris“
= Title = "the complete dinosaur“ matches “a day in the life of the complete dinosaur“ and “the complete dinosaur goes to Paris“ but not “the complete and unabridged dinosaur"
All Title all "complete dinosaur“ matches “the complete and unabridged dinosaur"
Title all "dinosaur bird reptile“ does not match “the complete dinosaur"
Any Title any "dinosaur bird reptile“ does match “the complete dinosaur"
Exact title exact "the complete dinosaur" matches "the complete dinosaur"
Exact title exact "the complete dinosaur" matches "the complete dinosaur" (but does not match: “ a day in the life of the complete dinosaur" )
The anchor character ^
Recall ……. Title = "the complete dinosaur“ matches “a day in the life of the complete dinosaur“
Anchoring title=" ^ the complete dinosaur“ would not match “a day in the life of the complete dinosaur” would match “the complete dinosaur goes to paris”
Right Anchoring title="the complete dinosaur ^ " would not match “the complete dinosaur goes to Paris”
&operation=searchRetrieve&query=title=dinosaur &maximumRecords=10&recordSchema=mods Fielded Query (title) Recall......
&operation=searchRetrieve&query=dc.title=dinosaur &maximumRecords=10&recordSchema=mods Same as: version=1.1& operation=explain version=1.1& operation=explain
&operation=searchRetrieve& query=bath.name=dinosaur &maximumRecords=10&recordSchema=mods Qualified Index: bath.name=dinosaur
&operation=searchRetrieve& query=bath.name all “dinosaur%20barney” query=bath.name all “dinosaur%20barney” &maximumRecords=10&recordSchema=mods bath.name all “dinosaur barney”
&operation=searchRetrieve& query=bath.name exact dinosaur query=bath.name exact dinosaur &maximumRecords=10&recordSchema=mods bath.name exact dinosaur
SRU CQL Explain Operation Scan Operation SRW
“SRW/U” “SRU” SRW “SRU over SOAP” and in addition “SRU via Post”