ray denenberg ralph levan interoperability standards & searching multiple repositories workshop...
TRANSCRIPT
Ray Ray DenenbergDenenberg
Ralph LeVanRalph LeVan
Interoperability Standards & Searching Multiple Repositories
Workshop 20Workshop 20
March 25, 2006; WashingtonMarch 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 ......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.50Z39.50
TCPTCP
Classic Classic Z39.50Z39.50
SRW: over SOAP/HTTP
Z39.50Z39.50
TCPTCP
Classic Classic Z39.50Z39.50
SRWSRW
TCPTCP
““Search and Search and Retrieve web Retrieve web Service”Service”
SOAPSOAP
HTTPHTTP
SRU: over HTTP
Z39.50Z39.50
TCPTCP
Classic Classic Z39.50Z39.50
SRUSRU
TCPTCP
““Search and Search and Retrieve via URL”Retrieve via URL”
HTTPHTTP
<SOAP:Envelope> <SOAP:Body> <SRW:searchRetrieveRequest xmlns:SRW="http://www.loc.gov/zing/srw/v1.0/"><SRW:query>dinosaurs</SRW:query><SRW:startRecord>1</SRW:startRecord> <SRW:maximumRecords>10</SRW:maximumRecords> <SRW:recordSchema>mods/</ SRW:recordSchema> </SRW:searchRetrieveRequest> </SOAP:Body></SOAP:Envelope>
SRW -in a SOAP EnvelopeSRW -in a SOAP Envelope
…..Same request via SRU:
http://acme.com/sru?http://acme.com/sru?query= query= dinosaurs &&maximumRecords=maximumRecords=1010&&startRecord=startRecord=11&&recordSchema=recordSchema=modsmods
ZINGZING
ZINGZING
““Z39.50 Z39.50 (international) Next (international) Next
Generation”Generation”
ZINGZING
ZINGZING
srwsrw srusru
ZINGZING
srwsrw srusru
cqlcql
ZINGZING
srwsrw srusru
cqlcql
““Common Query Language”Common Query Language”
ZINGZING
srwsrw srusru
cqlcql
““Common Query Language”Common Query Language” --> --> ““Contextual Query Language”Contextual Query Language”
ZINGZING
srwsrw srusru
cqlcql
ZOOMZOOM
ez3950ez3950
zeeRexzeeRex
RecordRecordUpdateUpdate
ZINGZING
srwsrw srusru zeeRexzeeRex
Z39.50 Explain: Z39.50 Explain: explained and re-explained and re-engineered in XMLengineered in XML
ZINGZING
srwsrw srusru zeeRexzeeRex
Z39.50Z39.50
ZINGZING
srwsrw srusru zeeRexzeeRex
ZINGZING
srwsrw srusru ZOOMZOOM
Z39.50 Object Z39.50 Object Oriented ModelOriented Model
ZINGZING
srwsrw srusru ZOOMZOOM
Z39.50Z39.50
ZINGZING
srwsrw srusru ZOOMZOOM
ZINGZING
srwsrw srusru
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:
http://acme.com/sru?http://acme.com/sru?query= query= dinosaurs &&maximumRecords=maximumRecords=1010&&startRecord=startRecord=11
&&recordSchema=recordSchema=modsmods
Record Schemas dc mods onix marcxml ead
www.loc.gov/sru/record-schemas.html
request via SRU:
http://acme.com/sru?http://acme.com/sru?query= query= dinosaurs &&maximumRecords=maximumRecords=1010&&startRecord=startRecord=11&&recordSchema=recordSchema=modsmods
request via SRU:
http://acme.com/sru??version=1.1version=1.1& operation=searchRetrieve& operation=searchRetrieve
&query= &query= dinosaurs &&maximumRecords=maximumRecords=1010&&startRecord=startRecord=11&&recordSchema=recordSchema=modsmods
http://z3950.loc.gov:7090/voyager
http://z3950.loc.gov:7090/voyager?version=1.1& operation=explain
http://z3950.loc.gov:7090/voyager?version=1.1& operation=searchRetrieve&query=dinosaur
explain:explain:
Search for Search for “dinosaur”:“dinosaur”:
http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=dinosaur
&maximumRecords=1
http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=dinosaur
&maximumRecords=1&recordSchema=dc
Search for “dinosaur”, return 1 record, marcxml:Search for “dinosaur”, return 1 record, marcxml:
Search for “dinosaur”, return 1 record, dc:Search for “dinosaur”, return 1 record, dc:
http://z3950.loc.gov:7090/voyager?version=1.1http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=dinosaur&&operation=searchRetrieve&query=dinosaur&
startRecord=2&maximumRecords=1&startRecord=2&maximumRecords=1&recordSchema=dcrecordSchema=dc
return second record:return second record:
http://z3950.loc.gov:7090/voyager?version=1.1http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=dinosaur&&operation=searchRetrieve&query=dinosaur&
startRecord=3&maximumRecords=2&startRecord=3&maximumRecords=2&recordSchema=dcrecordSchema=dc
Records three and four:Records three and four:
<zs:records><zs:records> <zs:record><zs:record> <zs:recordSchema>info:srw/schema/1/dc-v1.1</zs:recordSche<zs:recordSchema>info:srw/schema/1/dc-v1.1</zs:recordSchema>ma> <zs:recordPacking>xml</zs:recordPacking><zs:recordPacking>xml</zs:recordPacking> <zs:recordData><zs:recordData> <srw_dc:dc xsi:schemaLocation=“... <srw_dc:dc xsi:schemaLocation=“... <title>Abbott & Costello cartoons.</title><title>Abbott & Costello cartoons.</title> <creator>Copyright Collection (Library of Congress) <creator>Copyright Collection (Library of Congress) DLC</creator>DLC</creator> (etc.) ..........(etc.) .......... </srw_dc:dc></srw_dc:dc> </zs:recordData></zs:recordData><zs:recordPosition>3</zs:recordPosition><zs:recordPosition>3</zs:recordPosition></zs:record</zs:record>><<zs:record>zs:record> <zs:recordSchema>info:srw/schema/1/dc-v1.1</zs:recordSche<zs:recordSchema>info:srw/schema/1/dc-v1.1</zs:recordSchema>ma> <zs:recordData><zs:recordData> ............ </zs:recordData></zs:recordData><zs:recordPosition>4</zs:recordPosition><zs:recordPosition>4</zs:recordPosition></zs:record></zs:record></zs:records></zs:records>
http://z3950.loc.gov:7090/voyager?version=1.1http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=dinosaur&operation=searchRetrieve&query=dinosaur&maximumRecords=1&recordSchema=mods&maximumRecords=1&recordSchema=mods
MODS record:MODS record:
http://z3950.loc.gov:7090/voyager?version=1.1http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=title=dinosaur&operation=searchRetrieve&query=title=dinosaur
&maximumRecords=10&recordSchema=mods&maximumRecords=10&recordSchema=mods
Fielded Query: ‘title=dinosaur’Fielded Query: ‘title=dinosaur’
CQLCQL
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
((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
title = cat Search Clause
<index> <relation> <search term>
Search Clause
title = cattitle = cat
indexindex relationrelation search termsearch term
title = cattitle = cat
subject = dogsubject = dog
andand
search clauses linked by a booleansearch 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”
http://z3950.loc.gov:7090/voyager?version=1.1http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=&operation=searchRetrieve&query=titletitle=dinosaur=dinosaur
&maximumRecords=10&recordSchema=mods&maximumRecords=10&recordSchema=mods
Fielded Query (title)Fielded Query (title)
Recall......Recall......
http://z3950.loc.gov:7090/voyager?version=1.1http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&query=&operation=searchRetrieve&query=dc.titledc.title=dinosaur=dinosaur
&maximumRecords=10&recordSchema=mods&maximumRecords=10&recordSchema=mods
Same as:Same as:
http://z3950.loc.gov:7090/voyager?http://z3950.loc.gov:7090/voyager?version=1.1& operation=explainversion=1.1& operation=explain
http://z3950.loc.gov:7090/voyager?version=1.1http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&&operation=searchRetrieve&query=bath.name=dinosaurquery=bath.name=dinosaur
&maximumRecords=10&recordSchema=mods&maximumRecords=10&recordSchema=mods
Qualified Index: bath.name=dinosaurQualified Index: bath.name=dinosaur
http://z3950.loc.gov:7090/voyager?version=1.1http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&&operation=searchRetrieve&
query=bath.name all “dinosaur%20barney”query=bath.name all “dinosaur%20barney”&maximumRecords=10&recordSchema=mods&maximumRecords=10&recordSchema=mods
bath.name all “dinosaur bath.name all “dinosaur barney”barney”
http://z3950.loc.gov:7090/voyager?version=1.1http://z3950.loc.gov:7090/voyager?version=1.1&operation=searchRetrieve&&operation=searchRetrieve&
query=bath.name exact dinosaurquery=bath.name exact dinosaur&maximumRecords=10&recordSchema=mods&maximumRecords=10&recordSchema=mods
bath.name exact dinosaurbath.name exact dinosaur
www.loc.gov/z3950/agency/zing/
www.loc.gov/z3950/agency/zing/srw/
www.loc.gov/standards/sru/
SRU CQL Explain Operation Scan Operation SRW
“SRW/U” “SRU”
SRW “SRU over SOAP”
and in addition “SRU via Post”