Creating Public Websites from Specialized Voyager Data Sai Deng, Nancy Deyoe, Gemma Blackburn and Tse-Min Wang Wichita State University Libraries Beyond MARC note fields Most of our abilities in the past have been limited to notes/local notes in our MARC data. We have done local notes for years for donor notes and collection information While this information was searchable via keyword, searchers had to be in our OPAC. Web options wanted! Greater exposure New audiences Publicity for a topic / program Can create something “new” reasonably quickly As long as information continues to be added, the featured collection can “grow” Examples of collections we hoped to feature Shocker Scholar Festival Bestsellers/Current interest books (our “Leisure Reading” collection) Featured authors or subjects (to tie in with public programming events) Also titles from specialized collections (such as the Wichita Art Museum Research Library) One featured collection: the Shocker Scholars Festival Annual event hosted by the WSU Libraries Information is collected from all colleges of faculty/departmental scholarly activity Colleges are getting better, but this can still be challenging! Do the Libraries hold copies of the titles? The process may begin at Acquisitions Customizing and using the data WSU faculty author note is added during the cataloging process – this helps build the data We subscribe to Syndetics, so cover images will appear in our catalog and website Gemma will now describe how the OPAC data is utilized for the web display How to draw the data from the library catalog to display on the web WSU uses: Ex Libris Voyager 7.0.4 ILS Sun Solaris 10 server Oracle 10g database Two ways that we use to pull data from the database Using Voyager Analyzer Using an ODBC connection How to draw the data from the library catalog to display on the web Voyager Database Contains data arranged into tables, each containing several related fields For example, the Bib_Text table: There are hundreds of tables in the Voyager database How to draw the data from the library catalog to display on the web Data is pulled from the database for various reasons: To prepare reports Number of circulations Number of items purchased by fund code To identify records All records with specific donor notes Records with multiple 245 fields To display records in alternative ways Websites like the Faculty Showcase RSS feeds And many others… How to draw the data from the library catalog to display on the web Voyager Analyzer Cognos Business Intelligence environment connects to Voyager database and allows the creation of reports using a web-based, end-user friendly environment Data is rearranged from the Voyager table structure into a new arrangement of layers and folders of related fields for easier reporting creation Data from reports can be prepared in XML format and displayed on a website using XSLT stylesheets How to draw the data from the library catalog to display on the web Voyager Analyzer Ex Libris Servers Logic Voyager Oracle Database Data Web Access to Cognos Analyzer Analyzer Logic Solaris Server Cognos Web Access to Analyzer How to draw the data from the library catalog to display on the web ODBC – Open Database Connectivity A standard API to access data in a database remotely using SQL queries Requires ODBC drivers to be installed on user’s machine as well as connection information to connect to the database Data can be used through Microsoft Access or other databases Data in the secondary database can be displayed on the web using a language such as ASP, PHP, etc. How to draw the data from the library catalog to display on the web ODBC Voyager Oracle Database Solaris Server ODBC Drivers Local Machine Microsoft Access Voyager Tables How to draw the data from the library catalog to display on the web SQL – Structured Query Language SQL is the language used to communicate with most databases SQL queries can be used to pull specified data from a database through an ODBC connection Data can be identified from specific fields that meets defined criteria How to draw the data from the library catalog to display on the web Blob – Binary Large Object The Voyager database does not contain most MARC information. The MARC records are stored independently as binary data on the server, so many MARC fields (such as 590) cannot be extracted with regular SQL queries Blob queries can be used to extract MARC fields from this binary data using an Access module containing Visual Basic code that has been written for Voyager Query to identify faculty publications in the library catalog SELECT DISTINCTROW RO_WSUDB_BIB_TEXT.BIB_ID, RO_WSUDB_BIB_TEXT.AUTHOR, RO_WSUDB_BIB_TEXT.TITLE, RO_WSUDB_BIB_TEXT.EDITION, RO_WSUDB_BIB_TEXT.ISBN, RO_WSUDB_BIB_TEXT.PUBLISHER_DATE, RO_WSUDB_BIB_TEXT.IMPRINT, RO_WSUDB_BIB_LOCATION.LOCATION_ID, GetFieldAll(GetBibBlob([RO_WSUDB_BIB_TEXT.BIB_ID]),"590") AS Expr1, GetFieldAll(GetBibBlob([RO_WSUDB_BIB_TEXT.BIB_ID]),"700") AS Expr2 INTO query590view FROM RO_WSUDB_BIB_TEXT INNER JOIN RO_WSUDB_BIB_LOCATION ON RO_WSUDB_BIB_TEXT.BIB_ID=RO_WSUDB_BIB_LOCATION.BIB_ID WHERE ((GetFieldAll(GetBibBlob([RO_WSUDB_BIB_TEXT.BIB_ID]),"590")) Like "*WSU Faculty*"); Other queries to draw specialized data from Voyager Query to identify Leisure Reading books: SELECT LOCATION.LOCATION_NAME, BIB_TEXT.TITLE, WSUDB_MFHD_MASTER.DISPLAY_CALL_NO, BIB_LOCATION.LOCATION_ID, BIB_TEXT.BIB_ID FROM WSUDB_MFHD_MASTER INNER JOIN ((BIB_TEXT INNER JOIN (BIB_LOCATION INNER JOIN LOCATION ON BIB_LOCATION.LOCATION_ID = LOCATION.LOCATION_ID) ON BIB_TEXT.BIB_ID = BIB_LOCATION.BIB_ID) INNER JOIN WSUDB_BIB_MFHD ON BIB_TEXT.BIB_ID = WSUDB_BIB_MFHD.BIB_ID) ON WSUDB_MFHD_MASTER.MFHD_ID = WSUDB_BIB_MFHD.MFHD_ID WHERE (((BIB_LOCATION.LOCATION_ID)="99")); Query to identify Goldbarth poems… SELECT DISTINCTROW RO_WSUDB_BIB_TEXT.BIB_ID, RO_WSUDB_BIB_TEXT.AUTHOR, RO_WSUDB_BIB_TEXT.TITLE, RO_WSUDB_BIB_TEXT.EDITION, RO_WSUDB_BIB_TEXT.ISBN, RO_WSUDB_BIB_TEXT.PUBLISHER_DATE, RO_WSUDB_BIB_TEXT.IMPRINT, RO_WSUDB_BIB_LOCATION.LOCATION_ID, GetFieldAll(GetBibBlob([RO_WSUDB_BIB_TEXT.BIB_ID]),“730") FROM RO_WSUDB_BIB_TEXT INNER JOIN RO_WSUDB_BIB_LOCATION ON RO_WSUDB_BIB_TEXT.BIB_ID=RO_WSUDB_BIB_LOCATION.BIB_ID WHERE ((GetFieldAll(GetBibBlob([RO_WSUDB_BIB_TEXT.BIB_ID]),“730")) Like "*Albert Goldbarth Collection*"); Other queries to draw specialized data from Voyager Query to identify Wichita Art Museum collections: SELECT LOCATION.LOCATION_NAME, BIB_TEXT.TITLE, WSUDB_MFHD_MASTER.DISPLAY_CALL_NO, BIB_LOCATION.LOCATION_ID, BIB_TEXT.BIB_ID FROM WSUDB_MFHD_MASTER INNER JOIN ((BIB_TEXT INNER JOIN (BIB_LOCATION INNER JOIN LOCATION ON BIB_LOCATION.LOCATION_ID = LOCATION.LOCATION_ID) ON BIB_TEXT.BIB_ID = BIB_LOCATION.BIB_ID) INNER JOIN WSUDB_BIB_MFHD ON BIB_TEXT.BIB_ID = WSUDB_BIB_MFHD.BIB_ID) ON WSUDB_MFHD_MASTER.MFHD_ID = WSUDB_BIB_MFHD.MFHD_ID WHERE (((BIB_LOCATION.LOCATION_ID)=“122")); Website created from query results Run blob query to draw faculty author data through ODBC (as Gemma discussed); Query results saved in an Access table: Fields: BIB_ID, AUTHOR, TITLE, EDITION, ISBN, PUBLISHER_DATE, IMPRINT, LOCATION_ID, Expr1, Expr2 Expr 1: 590 notes field data Expr 2: 700 (other author) field data Added a localCover field to handle local cover images (when ISBN and Syndetic cover are not available); Website created via web programming. http://library.wichita.edu/techserv/WSU_faculty/index.asp Web delivery and dataflow If available Web RSS Feed If not available Display Search Access (Query Results) ODBC Blob Query Voyager Oracle Database Syndetic Cover Images ASP BibID ISBN Local Cover Images Browse Browse by Name by Title by Year Retrieve data SELECT [Fields] FROM [Table] ORDER BY… Search Issues to consider in web delivery What to display? In which format? Fields: Author/Editor, Title, Publication Year, Publisher Decide to use “Author/Editor” (100 field/700 field) to avoid too many blank fields (no 100); Field names were changed from all uppercase to make them easy to read; Added local cover images link. Added link to OPAC for original records display. One step further: possible data transformation and web delivery Alternatively, we can transform Access table data to Dublin Core in XML, and display it online with style sheet. MARC (in Voyager table) to DC mapping Marc field Simplified DC 001 BIB_ID Not mapped 020 ISBN Identifier 100 AUTHOR Contributor 245 TITLE Title 250 EDITION Description 260$a$b IMPRINT Publisher 260$c PUBLISHER_DATE Date 852$b LOCATION(_ID) Relation 590 notes (Expr1 in query) Description 700 other author (Expr 2 in query) Contributor Qualified DC Date.issued Relation.ispartof (housing at) Additional fields Added: Link to OPAC/library catalog Cover image link Relation Relation Relation.isbasedon (*source) Relation.haspart (*contained item) Adding Syndetic cover and local cover images Added some local covers for books without Syndetic covers; If local covers are available, use local images (thumbnail linked to large covers); If local covers not available, If ISBN available, use Syndetic covers: Either show Syndetic covers or show blank If no ISBN, use a generic local cover Local cover images scanning guideline Master Access Thumbnail File Format TIFF JPEG JPEG Bit Depth 48 bit color 24 bit color 24 bit color Spatial Resolution 400-600 dpi 300 dpi 144 dpi Spatial Dimensions 4000 pixels across the long dimension 400 pixels across the long dimension 100 pixels across the long dimension Based on BCR’s CDP Digital Imaging Best Practices and Western States Digital Imaging Best Practices; Dimensions of images were set to be consistent to Syndetic covers but with higher resolutions. Local cover images digitization Issues to consider in digitizing old cover images: Extra hard drive to save master image files; Image editing and touch-up: erase barcode, image clean-up, image repair; What’s behind the barcode area? Do not make up images if a pattern cannot be found. Code to add local and Syndetic cover images From browse.asp: Add specific …<td class="image" rowspan="6"> large and small <% If ((Recordset1.Fields.Item("localCover").Value <> "") AND local covers (Recordset1.Fields.Item("localCover").Value <> " ")) Then %> <a href="localcover\<%=(Recordset1.Fields.Item("localCover").Value)%>L.jpg" target="_blank"> <img border=0 src="localcover\<%=(Recordset1.Fields.Item("localCover").Value)%>.jpg" /></a> <% Else %> Image link to add <% If ((Recordset1.Fields.Item("ISBN").Value <> "") AND Syndetic covers (Recordset1.Fields.Item("ISBN").Value <> " ")) Then %> <a href="http://syndetics.com/hw7.pl?isbn=<%=(Recordset1.Fields.Item("ISBN").Value)%>/lc.j pg&client=wichitasu" target="_blank"> <img border=0 src="http://syndetics.com/hw7.pl?isbn=<%=(Recordset1.Fields.Item("ISBN").Value)%>/sc.g if&client=wichitasu" /></a> Add local <% Else %> generic cover <img alt="book cover" src=“localCover/cover.jpg" /> <% End If %> <% End If %> </td> … Adding RSS feed RSS feed icon RSS feed display Code to add RSS feed <?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"> pubupdate.rss <channel> <title>WSU Libraries: Faculty Author Published Books Update</title> <link>http://library.wichita.edu/techserv/WSU_Faculty/index.asp</link> <description>Update on published books of Faculty Author available at WSU Libraries</description> <language>en-us</language> <pubDate>Fri, 6 Mar 2009 04:00:00 GMT</pubDate> Required Channel <lastBuildDate>Fri, 6 Mar 2009 04:00:00 GMT</lastBuildDate> elements: <docs>http://library.wichita.edu/RSS</docs> title, link, <managingEditor>…@wichita.edu</managingEditor> description <webMaster>…@wichita.edu</webMaster> <item> <title>It grows in winter and other poems / Chinyere Okafor. </title> <link>http://library.wichita.edu/techserv/WSU_faculty/browse.asp?browse_type=PUBLISHER_DATE</lin added to the webpage k> header <description>Get more information on this book and other WSU faculty publications at Faculty Research Showcase Website.</description> <pubDate>Thu, 5 Mar 2009 04:00:00 GMT</pubDate> </item> … <link rel="alternate" type="application/rss+xml" title="Faculty Author - Recent Books </Channel> [RSS]" href="http://library.wichita.edu/techserv/WSU_faculty/pubupdate.rss"> </rss> Final thoughts Other project possibilities for featuring specialized Voyager data; Dynamic websites can be created based on the current model; One step further: using Dublin Core metadata schema to present data via web to facilitate data harvesting; One more possibility: Add local covers to Voyager… Contact information Sai Deng, Metadata Cataloger, Wichita State University Libraries, Sai.Deng@wichita.edu Nancy Deyoe, Assistant Dean for Technical Services, Nancy.Deyoe@wichita.edu Gemma Blackburn, Systems Developer, Wichita State University Libraries, Gemma.Blackburn@wichita.edu Tse-Min Wang, WSU Graduate Student in Computer Science, txwang@wichita.edu Thank you!