270 likes | 524 Views
Unicorn, VuFind, and the DLF ILS-DI. SirsiDynix Northeast Regional User Group (SNRG) Lehigh University June 17, 2008. Jim Farrugia* Drew University jfarrugi@drew.edu *some slides ‘borrowed’ from a SuperConference 2008 talk presented by Tim McGeary . Outline. Non-technical overview
E N D
Unicorn, VuFind, and the DLF ILS-DI SirsiDynix Northeast Regional User Group (SNRG) Lehigh University June 17, 2008 Jim Farrugia* Drew University jfarrugi@drew.edu *some slides ‘borrowed’ from a SuperConference 2008 talk presented by Tim McGeary
Outline • Non-technical overview • VuFind goal and quick demo: http://www.vufind.org/demo • Getting VuFind and Unicorn talking to each other • Exporting and importing bib records • Two styles of “Unicorn drivers” • Next steps? MARC Holdings, Authority records, Patron records? • VuFind functions and the DLF ILS-DI Technical Recommendation • http://project.library.upenn.edu/confluence/download/attachments/5963787/DLF_ILS_Discovery_1.0.pdf
VuFind Goal: search, browse library e-resources • Achieved via… • + Search results give options for narrower and related searches • + Browse resources via facets • + Suggestions for similar resources (algorithmically generated) • + Live record status and location – Unicorn integration (focus of this talk) • Other features include … • + Saving resources to lists • + Localization and branding • + Persistent URLs (you can actually book mark a search!) • + OAI syndication • + Zotero compatible – Firefox extension for collecting, managing, • and editing research sources (http://www.zotero.org/)
VuFind demo • Maine demo site: http://www.vufind.org/demo/ • Sites using/testing VuFind: http://www.vufind.org/about.php
Id (e.g. OCLC # in 001) from: http://vufind.org/docs/VufindDiagram.jpg
Brief hit list Where the pieces come from … Unicorn.php vufind.pl Bib rec in SOLR Amazon book cover Callnum and item info retrieved live from Unicorn
During this time, VuFind & Unicorn cooperate Unicorn – here are bib ids for these records… Unicorn.php (on VuFind server) sends unique ids for the bib records to Unicorn; vufind.pl (on Unicorn server), returns xml data for callnums and items to VuFind. Vufind - here is callnum and item info Unicorn.php vufind.pl
Full record display: call/item info Hey, Unicorn – here is a bib id for this record… Similar communication between VuFind and Unicorn gives item info on Holdings tab. Vufind – I’m sending you callnum and item info Unicorn.php vufind.pl
Exporting and importing bib records Exporting Problem: embed a unique id for bib records in the export Solution: stick catalog key in a MARC field/subfield Importing Specify where to find the unique id (cat key) Some problems reported with large imports (1 million + recs) Automating both Drew exports and imports all bib recs (600,000+) nightly Export ~ 20 minutes; import ~ 30 minutes.
Two styles of Unicorn drivers Style 1 Unicorn.php, in VuFind, contains no “SD-proprietary” API stuff vufind.pl, on Unicorn server, invokes API commands Style 2 Unicorn.php, in VuFind, contains “SD-proprietary” API stuff No server-side script needed Pros/Cons Style 1 lets Unicorn.php be distributed as open source Style 2 needs no Unicorn server script, makes admins Discussion… Do you want to see some gory details?
Next steps: MARC holdings, authority records? MARC holdings Will take work, but should be doable within the same framework (with either style driver) Auth Recs I wouldn’t know where to start Note Neither MARC Holdings nor Auth Recs slated for version 1.0 (Confirmed by Andrew Nagy via email.)
DLF ILS-DI Technical Recommendation What API for interoperation between ILSs and discovery applications Common baselines for common operations Structure Levels of functionality Function specifications Bindings VuFind/Unicorn We implement two basic functions Other functionality may be in the works
Levels of interoperability (p.10) Level 1 Basic discovery interfaces “…minimal set of functions that are easily implemented and essential to support applications that provide discovery outside the ILS.” Level 2 Elementary OPAC supplement “…functions needed for a reasonably broad range of practical discovery applications that operate in tandem with the OPAC.” Level 3 Elementary OPAC alternative “…functions needed for a practical discovery application that can operate completely independently of the OPAC.” Level 4 Robust/domain specific discovery platforms “…functions required to build useful discovery applications beyond the elementary level.”
Level 1 functions Basic discovery interfaces “…minimal set of functions that are easily implemented and essential to support applications that provide discovery outside the ILS.” Functions • HarvestBibliographicRecords (Data Aggregation, section 5.3.1) • HarvestExpandedRecords (Data Aggregation, section 5.3.2) * • GetAvailability (Real Time Search, section 6.3.1) • GoToBibliographicRequestPage (OPAC interaction, section 8.3.1)** * Requires associated MARC Holdings, not planned for VuFind version 1.0 ** Maybe could be implemented relatively easily ??
Level 2 functions Elementary OPAC supplement “…functions needed for a reasonably broad range of practical discovery applications that operate in tandem with the OPAC.” Functions – all of Level 1 functions plus • HarvestAuthorityRecords (Data Aggregation, section 5.3.3) * • HarvestHoldingsRecords (Data Aggregation, section 5.3.4) • GetRecords (Real Time Search, section 6.3.2) • Search (Real Time Search, section 6.3.3) ** • Scan (Real Time Search, section 6.3.4) • GetAuthorityRecords (Real Time Search, section 6.3.5) * • Either OutputRewritablePage or OutputIntermediateFormat (OPAC Interaction, sections 8.3.2 and 8.3.3) * Not planned for VuFind version 1.0 ** VuFind’s search is not real-time through the ILS
Level 3 functions Elementary OPAC alternative “…functions needed for a practical discovery application that can operate completely independently of the OPAC.” Functions – all of Level 2 functions plus • LookupPatron (Patron Functionality, section 7.2.1) • AuthenticatePatron (Patron Functionality, section 7.2.2) • GetPatronInfo (Patron Functionality, section 7.2.3) • GetPatronStatus (Patron Functionality, section 7.2.4) • GetServices (Patron Functionality, section 7.2.5) • RenewLoan (Patron Functionality, section 7.2.6) • HoldTitle (Patron Functionality, section 7.2.7) • HoldItem (Patron Functionality, section 7.2.8) • CancelHold (Patron Functionality, section 7.2.9) • RecallItem (Patron Functionality, section 7.2.10) • CancelRecall (Patron Functionality, section 7.2.11)
Level 4 functions Robust/domain specific discovery platforms “…functions required to build useful discovery applications beyond the elementary level.” Functions – all of Level 3 functions plus • SearchCourseReserves (Real Time Search, section 6.3.6; for academic libraries) • Explain (Real Time Search, section 6.3.7) • Both OutputRewritablePage and OutputIntermediateFormat (OPAC Interaction, sections 8.3.2 and 8.3.3)
Where we are… Level 1 Basic discovery interfaces “…minimal set of functions that are easily implemented and essential to support applications that provide discovery outside the ILS.” Functions • HarvestBibliographicRecords -- via nightly exports of bib recs with unique ids • GetAvailability -- via live lookup of callnum/item info A long way to go…
Development Issues, Politics, and $$ Some off-the-record remarks
End Thanks! Questions??
Optional Supplemental Material… On GL3.1 Patch clusters 5 and 5e. Jim on Windows, Tim on AIX. Need Sirsi binary called xmlitem Currently running on Linux, Solaris, and Windows Uses Apache SOLR for indexing Apache HTTP Server 2.2 or later PHP 5.1.0 or later MySQL 4.1 or later Java J2SE JDK 1.5 or later YAZ 3.0 or later (from IndexData) – no longer not needed GNU Aspell Library (optional spell checker) Goal from vufind/README “The goal of VuFind is to enable your users to search and browse through all of your library's electronic resources.” DLF ILS Discovery Interface Task Group (ILS-DI) Technical Recommendation An API for effective interoperation between integrated library systems and external discovery applications
Details: Unicorn.php’s getHolding function unique id: catkey When displaying an individual record, VuFind show this URL: http://someURL/vufind/Record/542931 getHolding builds this query and sends it to Unicorn server: http://unicornserver/cgi-bin/vufind.pl?search=holding&id=52219 getHolding vufind.pl vufind.pl on the Unicorn server processes this query and … http://unicornserver/cgi-bin/vufind.pl?search=holding&id=15621
Details: Unicorn.php’s getHolding function vufind.pl on the Unicorn returns item data in XML format vufind.pl getHolding processes the XML and sends it through VuFind for display getHolding
Details: Unicorn.php’s getHolding function if ($searchType eq "holding") { $id = $query->param('id'); open (API, “SECRET API COMMANDS|”); while (<API>) { $xml .= $_; } $xml = cleanXML($xml); print $xml; close API; } From vufind.pl on Unicorn server From Unicorn.php on VuFind server
Details: Unicorn.php’s getHoldings function When displaying a hit list, VuFind show this URL: http://www.vufind.org/demo/Search/Home?lookfor=jane+austen&type=all&submit=Find getHoldings is invoked* and builds a query like this for vufind.pl: http://.../vufind.pl?search=holdings&id0=o15421931&id1=o23451234... vufind.pl on the Unicorn server processes this query and … returns item info in XML for multiple records (including multiple call/copy info per record) then … * through several different steps;
Details: Unicorn.php’s getHoldings function getHoldings processes the XML format and sends it through VuFind for display in brief hit list: