Upload
horvadam
View
26
Download
1
Tags:
Embed Size (px)
Citation preview
ZING: the Next Generation of ZING: the Next Generation of Z39.50Z39.50
ADLUG Users Group MeetingADLUG Users Group Meeting
San Sebastian, 8-10 September, 2004San Sebastian, 8-10 September, 2004
ÁdámÁdám HorváthHorváth
NSZLNSZL
33 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
ContentsContents
Why does Z39.50 need renewal Why does Z39.50 need renewal
What is ZINGWhat is ZING
Technical aspectsTechnical aspects
Social contextSocial context
Amicus/LibriVision and ZINGAmicus/LibriVision and ZING
Experimental SRW client of NSZLExperimental SRW client of NSZL
44 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
Why does Z39.50 need renewalWhy does Z39.50 need renewal
There are problems with Z39.50There are problems with Z39.50Not popular with the web communityNot popular with the web community– Connection-based sessionsConnection-based sessions– Binary encodingBinary encoding– Transmitted directly over TCP/IPTransmitted directly over TCP/IP
ComplicatedComplicated
55 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
The complexity of Z39.50The complexity of Z39.50
11 Native Services11 Native Services– Init, Search, Present, DeleteResultSet, Init, Search, Present, DeleteResultSet,
AccessControl, ResourceControl, AccessControl, ResourceControl, TriggerResourceControl, ResourceReport, TriggerResourceControl, ResourceReport, Scan, Sort, Segment.Scan, Sort, Segment.
7 Extended Services7 Extended Services– PersistentResultSet, PersistentQuery, PersistentResultSet, PersistentQuery,
PeriodicQuerySchedule, ItemOrder, PeriodicQuerySchedule, ItemOrder, DatabaseUpdate, ExportSpecification, DatabaseUpdate, ExportSpecification, ExportInvocationExportInvocation
66 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
The complexity of Z39.50The complexity of Z39.50
A 156 page standardA 156 page standardVocabulary from the OSI communityVocabulary from the OSI community– Target, Origin, APDU, A-association, Z-Target, Origin, APDU, A-association, Z-
association...association...Records described with ASN.1Records described with ASN.1Attribute SetsAttribute Sets
77 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
Strengths of Z39.50Strengths of Z39.50
Result SetsResult SetsAbstractionAbstraction– Abstract Access Points (Attribute Sets)Abstract Access Points (Attribute Sets)– Abstract Record SchemasAbstract Record Schemas
ExplainExplain
88 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
ContentsContents
Why does Z39.50 need renewal Why does Z39.50 need renewal
What is ZINGWhat is ZING
Technical aspectsTechnical aspects
Social contextSocial context
Amicus/LibriVision and ZINGAmicus/LibriVision and ZING
Experimental SRW client of NSZLExperimental SRW client of NSZL
99 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
What is ZING?What is ZING?
ZING: ZING: ZZ39.50 39.50 IInternational: nternational: NNext ext GGenerationeneration
New web based Search and Retrieve New web based Search and Retrieve protocol familyprotocol family
Keeps the strengths of Z39.50Keeps the strengths of Z39.50Eliminates the complexity of Z39.50Eliminates the complexity of Z39.50
1010 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
What is ZING?What is ZING?
Protocol familyProtocol family– SRW - Search/Retrieve Web ServiceSRW - Search/Retrieve Web Service– SRU - Search and Retrieve URL ServiceSRU - Search and Retrieve URL Service– CQL - Common Query LanguageCQL - Common Query Language– ZeeRex - Z39.50 Explain, Explained and Re-ZeeRex - Z39.50 Explain, Explained and Re-
Engineered in XMLEngineered in XML– ZOOM : the Z39.50 Object Orientation ModelZOOM : the Z39.50 Object Orientation Model– ez3950 : simple implementation over SOAP ez3950 : simple implementation over SOAP
using XERusing XER
Protocol familyProtocol family– SRW - Search/Retrieve Web ServiceSRW - Search/Retrieve Web Service– SRU - Search and Retrieve URL ServiceSRU - Search and Retrieve URL Service– CQL - Common Query LanguageCQL - Common Query Language– ZeeRex - Z39.50 Explain, Explained and Re-ZeeRex - Z39.50 Explain, Explained and Re-
Engineered in XMLEngineered in XML– ZOOM : the Z39.50 Object Orientation ModelZOOM : the Z39.50 Object Orientation Model– ez3950 : simple implementation over SOAP ez3950 : simple implementation over SOAP
using XERusing XER
1111 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
SRW SRW Search/Retrieve Web ServiceSearch/Retrieve Web Service
What is SRWWhat is SRW– XML oriented protocolXML oriented protocol– Performs searches and other information Performs searches and other information
retrieval operationsretrieval operations
1212 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
SRW and Z39.50SRW and Z39.50
Z39.50 concepts retained in SRWZ39.50 concepts retained in SRW– Result setsResult sets– Abstract access pointsAbstract access points– Abstract record schemasAbstract record schemas– ExplainExplain– DiagnosticsDiagnostics
1313 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
SRW and Z39.50SRW and Z39.50
SRW differences from Z39.50SRW differences from Z39.50– Result sets named by serverResult sets named by server– No explicit concept of connection, session No explicit concept of connection, session
or stateor state– No distinction between server and databaseNo distinction between server and database– Single record syntax: XMLSingle record syntax: XML• Schemas are XML schemas: DC, MODS, Schemas are XML schemas: DC, MODS,
MarcXMLMarcXML
– Simplified explainSimplified explain
1414 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
SRW and Z39.50SRW and Z39.50
SRW differences from Z39.50 (cont’d)SRW differences from Z39.50 (cont’d)– String queryString query• SRW querySRW query
– <SRW:query>(<SRW:query>(titletitle == information information ANDAND titletitle == retrieval) retrieval) </SRW:query></SRW:query>
• Z39.50 queryZ39.50 query– @and@and @attr 6=1 @attr 3=3 @attr 2=3@attr 6=1 @attr 3=3 @attr 2=3 @attr 1=4@attr 1=4
”information" ”information" @attr 6=1 @attr 3=3 @attr 2=3@attr 6=1 @attr 3=3 @attr 2=3 @attr 1=4@attr 1=4 ”retrieval"”retrieval"
1515 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
SRW operationsSRW operations
searchRetrieve OperationsearchRetrieve Operation– searchRetrieveRequestsearchRetrieveRequest– searchRetrieveResponsesearchRetrieveResponse
scan Operationscan Operation– scanRequestscanRequest– scanResponsescanResponse
explain Operationexplain Operation– explainRequestexplainRequest– explainResponseexplainResponse
1616 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
SRW sample search requestSRW sample search request
<SOAP:Envelope <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body><SOAP:Body>
<SRW:searchRetrieveRequest <SRW:searchRetrieveRequest xmlns:SRW="http://www.loc.gov/zing/srw/">xmlns:SRW="http://www.loc.gov/zing/srw/">
<SRW:version>1.1</SRW:version><SRW:version>1.1</SRW:version>
<SRW:query>(dc.author exact "jones" and dc.title >= <SRW:query>(dc.author exact "jones" and dc.title >= "smith")</SRW:query>"smith")</SRW:query>
<SRW:startRecord>1</SRW:startRecord><SRW:startRecord>1</SRW:startRecord>
<SRW:maximumRecords>10</SRW:maximumRecords><SRW:maximumRecords>10</SRW:maximumRecords>
<SRW:recordSchema>info:srw/schema/1/mods-v3.0</SRW:recordsSch<SRW:recordSchema>info:srw/schema/1/mods-v3.0</SRW:recordsSchema>ema>
</SRW:searchRetrieveRequest></SRW:searchRetrieveRequest>
</SOAP:Body></SOAP:Body>
</SOAP:Envelope></SOAP:Envelope>
1717 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
SRU SRU Search/Retrieve URL ServiceSearch/Retrieve URL Service
Search requestSearch request– Coded in the URL and sent as HTTP GETCoded in the URL and sent as HTTP GET
ResponseResponse– SRW without the SOAP wrapperSRW without the SOAP wrapper
Example for a search requestExample for a search request
http://www.loc.gov/sru.cgi? http://www.loc.gov/sru.cgi? operation=searchRetrieve&query=dc.title=cat&maximumRecordsoperation=searchRetrieve&query=dc.title=cat&maximumRecords=10&recordSchema=DC&sortKeys=title,dc&startRecord=1=10&recordSchema=DC&sortKeys=title,dc&startRecord=1
1818 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
CQL - Common Query LanguageCQL - Common Query Language
Loosely based on CCL searchLoosely based on CCL searchCan be simple for every day useCan be simple for every day use– This is a valid query: This is a valid query: programming languageprogramming language
Can be very complexCan be very complex– dc.author=(kern* or ritchie) and (bath.title dc.author=(kern* or ritchie) and (bath.title
exact "the c programming language" or exact "the c programming language" or dc.title=elements prox///4 dc.title=elements prox///4 dc.title=programming) and subject dc.title=programming) and subject any/relevant "style design analysis"any/relevant "style design analysis"
1919 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
CQL - Common Query LanguageCQL - Common Query Language
Many shortcutsMany shortcuts– Index and relation can be omittedIndex and relation can be omitted• E.g.: E.g.: “bird dog”“bird dog”• Full version: Full version: cql.serverChoice scr “bird dog”cql.serverChoice scr “bird dog”
– Relationship typesRelationship types• all all
– E.g.: E.g.: dc.title all “bird dog”dc.title all “bird dog”– Full version: Full version: dc.title = “bird”dc.title = “bird” andand dc.title = “dog”dc.title = “dog”
• any any – E.g.: E.g.: dc.title any “bird dog”dc.title any “bird dog”– Full version: Full version: dc.title = “bird”dc.title = “bird” oror dc.title = “dog”dc.title = “dog”
2020 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
CQL - Common Query LanguageCQL - Common Query Language
Context setsContext sets– Contexts may be applied to indexes, Contexts may be applied to indexes,
relations, relation modifiers and boolean relations, relation modifiers and boolean modifiers. They are of the form modifiers. They are of the form prefix.valueprefix.value, , where prefix is a short name for a unique where prefix is a short name for a unique context set identifier, defined either in the context set identifier, defined either in the query or by the server.query or by the server.
– PurposePurpose• Make a distinction between two identical index Make a distinction between two identical index
names: names: dc.titledc.title, , foo.titlefoo.title
2121 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
CQL - Common Query LanguageCQL - Common Query Language
RelationsRelations– <, >, <=,<, >, <=, and and >=>=
retain their regular meaningsretain their regular meanings– ==• For word adjacency, when the term is a list of For word adjacency, when the term is a list of
words.words.• Otherwise, for exact equality of valueOtherwise, for exact equality of value
– allall, , anyany• ““all of these items" or "any of these items”all of these items" or "any of these items”• E.g.: E.g.: dc.title all “bird dog” dc.title any “bird dog”dc.title all “bird dog” dc.title any “bird dog”
2222 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
CQL - Common Query LanguageCQL - Common Query Language
Relations (cont’d)Relations (cont’d)– exactexact• is used for exact string matchingis used for exact string matching
– scrscr• is used to mean "server choice relation”is used to mean "server choice relation”
– within within • may be used with a search term that has multiple may be used with a search term that has multiple
dimensionsdimensions
– enclosesencloses• database's term fully encloses the search termdatabase's term fully encloses the search term
2323 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
CQL - Common Query LanguageCQL - Common Query Language
Pattern matchingPattern matching– ?? matches any single character matches any single character– ** matches any sequence of characters matches any sequence of characters
E.g.: E.g.: ?in?s*r?in?s*r – ^̂ word anchoring word anchoring• ^bird^bird must be the first in field must be the first in field• bird^bird^ must be the last in field must be the last in field• ^bird^^bird^ must be the only word in field must be the only word in field
2424 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
ContentsContents
Why does Z39.50 need renewal Why does Z39.50 need renewal
What is ZINGWhat is ZING
Technical aspectsTechnical aspects
Social contextSocial context
Amicus/LibriVision and ZINGAmicus/LibriVision and ZING
Experimental SRW client of NSZLExperimental SRW client of NSZL
2525 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
Bath profile in context setBath profile in context set
Defines indexesDefines indexes– It uses the DC context set when appropriateIt uses the DC context set when appropriate– Creates some bath indexes: bath.issnCreates some bath indexes: bath.issn
Defines relationsDefines relations– exact, =, exact, =, <, <=, >=, >, <, <=, >=, >, withinwithin
Defines usage of wildcards and anchorsDefines usage of wildcards and anchorsDefines schemasDefines schemas– MarcXML, DCMarcXML, DC
2626 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
DevelopersDevelopers
Principal Editor of the SRW 1.1 Principal Editor of the SRW 1.1 Specification Specification – Rob SandersonRob Sanderson
WSDL/Schema Editor WSDL/Schema Editor – Matthew DoveyMatthew Dovey
2727 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
DevelopersDevelopers
Additional Contributors to Version 1.1: Additional Contributors to Version 1.1: – Eliot Christian Eliot Christian – Ray DenenbergRay Denenberg– Adam DickmeissAdam Dickmeiss– Janifer GatenbyJanifer Gatenby– Ralph LeVanRalph LeVan– Mike TaylorMike Taylor– Theo Van VeenTheo Van Veen
2828 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
DevelopersDevelopers
Additional Contributors to the Additional Contributors to the Intellectual Development of SRW: Intellectual Development of SRW: – Larry DixsonLarry Dixson– Sebastian HammerSebastian Hammer– Poul Henrik Jorgensen Poul Henrik Jorgensen – Alan KentAlan Kent– Bill MoenBill Moen– Pat StevensPat Stevens
2929 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
Early implementersEarly implementers
Library of CongressLibrary of CongressKoninklijke Bibliotheek Koninklijke Bibliotheek OCLC/PICA OCLC/PICA OCLC Research OCLC Research Index Data Index Data The European Library projectThe European Library projectNational Széchényi LibraryNational Széchényi Library
3030 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
ToolsTools
CQL-JavaCQL-Java– CQL parser for JavaCQL parser for Java
Python CQL ParserPython CQL Parser– A Python Library for parsing CQL and A Python Library for parsing CQL and
XCQL. Includes CQL to RPN transformation XCQL. Includes CQL to RPN transformation for PyZ3950for PyZ3950
YAZ Proxy from IndexdataYAZ Proxy from Indexdata– SRU/SRW server to allow any Z39.50 server SRU/SRW server to allow any Z39.50 server
to also support the ZING protocolsto also support the ZING protocols
3131 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
InformationInformation
http://www.loc.gov/zinghttp://www.loc.gov/zing
3232 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
ContentsContents
Why does Z39.50 need renewal Why does Z39.50 need renewal
What is ZINGWhat is ZING
Technical aspectsTechnical aspects
Social contextSocial context
Amicus/LibriVision and ZINGAmicus/LibriVision and ZING
Experimental SRW client of NSZLExperimental SRW client of NSZL
3333 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
ZING compliant AmicusZING compliant Amicus
Developing a ZING server for AmicusDeveloping a ZING server for Amicus– It could be fully ZING compliantIt could be fully ZING compliant
The use of a YAZ ProxyThe use of a YAZ Proxy– The proxy translates SRW/SRU into Z39.50The proxy translates SRW/SRU into Z39.50– LicenseLicense• Amicus users can use it freely (Amicus users can use it freely (GPL license)GPL license)• LibriCore would need special agreement LibriCore would need special agreement
– Problems in matching CQL and attribute Problems in matching CQL and attribute setssets
3434 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
CQL and attribute setsCQL and attribute sets
RelationsRelations– ““all” and “any” have no equivalent relation all” and “any” have no equivalent relation
attributeattributeRelation modifiersRelation modifiers– fuzzy has no equivalent relation attributefuzzy has no equivalent relation attribute
3535 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
CQL and attribute setsCQL and attribute sets
IndexesIndexes– CQL is based on DC indexesCQL is based on DC indexes– Not all of them have USE attribute equivalentsNot all of them have USE attribute equivalents• E.g.: dc.coverage, dc.rights, etc.E.g.: dc.coverage, dc.rights, etc.
Pattern matchingPattern matching– AnchorsAnchors• ‘‘Position last’ has no equivalent position attributePosition last’ has no equivalent position attribute
– Wildcard Wildcard **• CQL search terms like CQL search terms like b*db*d cannot be expressed by cannot be expressed by
truncation attributestruncation attributes
3636 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
LibriVision as a ZING clientLibriVision as a ZING client
LibriVision was designed as a LibriVision was designed as a multiprotocol productmultiprotocol product
It might be easy to incorporate the SRW It might be easy to incorporate the SRW or SRU protocolor SRU protocol
Tools are availableTools are available It could be developed by LibriCoreIt could be developed by LibriCore
3737 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
ContentsContents
Why does Z39.50 need renewal Why does Z39.50 need renewal
What is ZINGWhat is ZING
Technical aspectsTechnical aspects
Social contextSocial context
Amicus/LibriVision and ZINGAmicus/LibriVision and ZING
Experimental SRW client of NSZLExperimental SRW client of NSZL
3838 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
Experimental SRW client of NSZLExperimental SRW client of NSZL
Web based clientWeb based clientTools usedTools used– YAZ Proxy, PHP, Sablotron, Expat, Java, YAZ Proxy, PHP, Sablotron, Expat, Java,
SaxonSaxonPlatformsPlatforms– WindowsWindows– LinuxLinux
3939 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
Experimental SRW client of NSZLExperimental SRW client of NSZL
Flow of informationFlow of information
Web
client
Web
client
YA
Z P
roxy
YA
Z P
roxy
Z39.50
Z39.50
serverserver
SRW SearchRetrieve RequestSRW SearchRetrieve Request Z39.50 Search RequestZ39.50 Search Request
SRW SearchRetrieve ResponseSRW SearchRetrieve Response
Z39.50 Present RequestZ39.50 Present Request
Z39.50 Search ResponseZ39.50 Search Response
Z39.50 Present ResponseZ39.50 Present Response
4040 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
Experimental SRW client of NSZLExperimental SRW client of NSZL
The target databaseThe target database– AmicusAmicus• The Z server used to be ZEDLIB made by The Z server used to be ZEDLIB made by
CrossnetCrossnet– Anonymous login (solved)Anonymous login (solved)– Present problem (solved)Present problem (solved)
4141 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
Experimental SRW client of NSZLExperimental SRW client of NSZL
Extra featureExtra feature– FRBR display is integrated into the clientFRBR display is integrated into the client
Main purposeMain purpose– To learn about this new protocol in depthTo learn about this new protocol in depth
Live demoLive demo– http://w3.oszk.hu/zingamicus/index.phphttp://w3.oszk.hu/zingamicus/index.php
4242 ZING: the Next Generation of Z39.50 - Ádám Horváth - ZING: the Next Generation of Z39.50 - Ádám Horváth - NSZLNSZL
[email protected]@oszk.hu
Thank you for your attentionThank you for your attention