SlideShare a Scribd company logo
Ingredients   Preparation              Taking shape   Proof of concept?




               Working with Oxpoints

                            Janet McKnight
Ingredients            Preparation          Taking shape          Proof of concept?



                            Where's my book?




       "Find the nearest copy of a book from a reading list (bearing in
       mind which libraries you can use, and the opening hours of
       libraries)"
Ingredients             Preparation            Taking shape   Proof of concept?



                                      Ingredients




       First catch your data...
Ingredients                 Preparation             Taking shape     Proof of concept?



                                          What we had



              • Locations of (many) libraries already present in Oxpoints
              • A list of libraries, with unique codes:
                http://www.lib.ox.ac.uk/libraries/byoliscode/
              • The OLIS search results page, showing library holdings
               http://library.ox.ac.uk/...
               This includes:
                  • Info about the availability of the book
                  • Links to info about the individual libraries
Ingredients                Preparation          Taking shape          Proof of concept?



                              What we didn't have




              • Links between library codes and Oxpoints locations
              • Patron data (e.g. which libraries you're allowed to use)
              • Opening hours (in a consumable form)
Ingredients                Preparation        Taking shape       Proof of concept?



                         Unconsumable ingredients

       Example of opening hours:
         Term time: Mon-Fri 9.00-22.00, Sat 10.00-16.00 University of
                    Oxford dates of full term: Hilary 2009: Sunday, 18
                    January to Saturday, 14 March Trinity 2009:
                    Sunday, 26 April to Saturday, 20 June Michaelmas
                    2009: Sunday, 11 October to Saturday, 5
                    December Hilary 2010: Sunday, 17 January to
                    Saturday, 13 March Trinity 2010: Sunday, 25 April
                    to Saturday, 19 June
              Vacation: Mon-Fri 9.00-19.00, Sat 10.00-16.00
               Closed: Christmas Eve to New Year's Day, Good Friday to
                       Easter Monday, August Bank Holiday weekend.
Ingredients            Preparation           Taking shape   Proof of concept?



                                     Preparation




       Finely chop your data...
Ingredients             Preparation           Taking shape           Proof of concept?



                                Screen-scraping
       Walk through the table of OLIS codes:

       <table class="olis" border="0" cellpadding="4">
        <tbody>
          <tr class="library" valign="top">
           <th>
             <p>
              <b>All S.</b>
             </p>
           </th>
           <th>
             <p>
              <b>ASC</b>
             </p>
           </th>
           <th>
             <p>
              <b>
                <a name="ASC">All Souls College Library</a>
                <a
                   href="http://www.lib.ox.ac.uk/libraries/guides/ASC.html"
                   target="_top"
                   title="Information about All Souls College
       Library">Information</a> |
              <a
Ingredients            Preparation            Taking shape         Proof of concept?



                                     Structuring



       ... to get something more structured:

       <?xml version="1.0"?>
       <libs>
        <lib code="VHL">Vere Harmsworth Library (Rothermere American
           Institute)</lib>
        <lib code="NDA">Nuffield Dept. of Anaesthetics</lib>
        <lib code="SCA">Social and Cultural Anthropology Library</lib>
       [...]

       </libs>
Ingredients                Preparation          Taking shape      Proof of concept?



                                    Joining the dots
       Difficulties:
              • Different names - fuzzy matching
              • Different schemes of uids with no
               translator/correspondence
              • Different concept of a 'unit' between schemes
              • Relationships between libraries (particularly
               Bodleian/OULS/etc)
       Solution:
              • Edit by hand (yes we can!)


       <place type="library" olisCode="ASC" xml:id="O_lib_asc">
        <placeName>All Souls College Library</placeName>
       [...]

       </place>
Ingredients                Preparation            Taking shape       Proof of concept?



                                         Taking shape




              • Not really a mashup yet
              • But it allows us to query Oxpoints by OLIS code...
Ingredients              Preparation      Taking shape        Proof of concept?



                                Example queries
       All libraries:
              • http://m.ox.ac.uk/oxpoints/type/Library.kml
              • http://maps.google.co.uk/?z=17&q=http:
                //m.ox.ac.uk/oxpoints/type/Library.kml
       Individual libraries:
              • http://m.ox.ac.uk/oxpoints/hasOLISCode/BOD.kml
              • http://maps.google.co.uk/?z=17&q=http:
                //m.ox.ac.uk/oxpoints/hasOLISCode/BOD.kml
       Combinations:
              • http://m.ox.ac.uk/oxpoints/hasOLISCode/JES|EXE|
                LIN.kml
              • http://maps.google.co.uk/?z=17&q=http://m.ox.ac.
                uk/oxpoints/hasOLISCode/JES%7CEXE%7CLIN.kml
Ingredients               Preparation         Taking shape          Proof of concept?



                           Joining the dots (again)
       With a bit of JavaScript on a page we can
              • pick out an OLIS code (by its location in the HTML)
              • add a link to Google Maps with Oxpoints KML using that
               code

       <table
          border="1"
          width="100%"
          cellspacing="4"
          class="data-holdings"
          summary="This table contains a row for each copy held, with
       columns for Location, Shelfmark, and Status.">[...]
       <tr valign="top">
          <td align="left">Balliol<br/>
              BLL Main Libr
          <br/>
           <a
              href="http://maps.google.co.uk/?q=http://m.ox.ac.uk/oxpoints/hasOLI
       library on a map</a>
          </td>
          <td align="left" colspan="1">0050e 007</td>
          <td align="left" colspan="1">Available</td>
          <td>
Ingredients                Preparation            Taking shape           Proof of concept?



                             A pinch of JavaScript


       Greasemonkey (Firefox extension) lets us add JavaScript to
       page

              var bodDetails = codeTD.innerHTML.split("<br>");
              bodCode = bodDetails[1];
              bodCode = bodCode.replace(newLines, "");
              if (bodCode.match(/ /)) {
                 encodedBodCode = bodCode.replace(/ /g, "%252B");
                 bodCode = bodCode.replace(/ /g, "+");
              }
                      if (bodCode.match(/^[A-Z]{3}/)) { bodCodes[i-1] = bodCode; }
              var oxpmaplink = '<a href="http://maps.google.co.uk/?z=16&q=http://m.ox.
              codeTD.innerHTML = codeTD.innerHTML + '<br>' + oxpmaplink + "Show library
Ingredients                Preparation          Taking shape   Proof of concept?



                                         Demo




              • Install greasemonkey script:
               olismapall.user.js
              • Show links working on library search:
                http://library.ox.ac.uk/
Ingredients                Preparation            Taking shape    Proof of concept?



                                         Adding value




       What else can we do?
              • Show all these libraries on the same map?
              • Add a map to the page itself?
              • Show information about availability on the map?
              • Add user location to the map?
Ingredients                Preparation        Taking shape        Proof of concept?



                           Beyond Greasemonkey




              • Can't use Google maps API to add a map to the page
              • Can't pass much useful information into the KML
Ingredients                Preparation            Taking shape         Proof of concept?



                                         External map




              • Still using JavaScript/Greasemonkey to write in links...
              • ...but these pass info to an external map/script
              • Easier to manipulate data and control display
Ingredients                    Preparation          Taking shape   Proof of concept?



                                             Demo




              • Greasemonkey working on library search:
                http://library.ox.ac.uk/
              • All libraries on one (external) map
              • Availability
Ingredients                Preparation          Taking shape       Proof of concept?



                                   Where are you?




       Google Gears can (sort of) tell your location...
       In practice there are probably better ways of doing this:
              • User sets/chooses location(s)
              • Native apps for mobile devices which use onboard GPS
Ingredients                  Preparation          Taking shape   Proof of concept?



                                           Demo




              • Install Google Gears:
                http://gears.google.com/
              • Back to library search...
              • 'You are here'
              • Directions
Ingredients                Preparation           Taking shape     Proof of concept?



                                 Proof of concept?



       Shows the general idea, but doesn't include:

              • Patron data (who are you, & can you borrow the book?)
              • Integration with book requests
              • Combining with other locations
              • . . .
Ingredients                Preparation           Taking shape      Proof of concept?



                                   Is all this useful?




              • Maybe more so in other contexts
              • Useful as a demonstration
              • Quick prototyping of ideas - easier to visualise
              • Shows the value of consumable data

More Related Content

Working with Oxpoints

  • 1. Ingredients Preparation Taking shape Proof of concept? Working with Oxpoints Janet McKnight
  • 2. Ingredients Preparation Taking shape Proof of concept? Where's my book? "Find the nearest copy of a book from a reading list (bearing in mind which libraries you can use, and the opening hours of libraries)"
  • 3. Ingredients Preparation Taking shape Proof of concept? Ingredients First catch your data...
  • 4. Ingredients Preparation Taking shape Proof of concept? What we had • Locations of (many) libraries already present in Oxpoints • A list of libraries, with unique codes: http://www.lib.ox.ac.uk/libraries/byoliscode/ • The OLIS search results page, showing library holdings http://library.ox.ac.uk/... This includes: • Info about the availability of the book • Links to info about the individual libraries
  • 5. Ingredients Preparation Taking shape Proof of concept? What we didn't have • Links between library codes and Oxpoints locations • Patron data (e.g. which libraries you're allowed to use) • Opening hours (in a consumable form)
  • 6. Ingredients Preparation Taking shape Proof of concept? Unconsumable ingredients Example of opening hours: Term time: Mon-Fri 9.00-22.00, Sat 10.00-16.00 University of Oxford dates of full term: Hilary 2009: Sunday, 18 January to Saturday, 14 March Trinity 2009: Sunday, 26 April to Saturday, 20 June Michaelmas 2009: Sunday, 11 October to Saturday, 5 December Hilary 2010: Sunday, 17 January to Saturday, 13 March Trinity 2010: Sunday, 25 April to Saturday, 19 June Vacation: Mon-Fri 9.00-19.00, Sat 10.00-16.00 Closed: Christmas Eve to New Year's Day, Good Friday to Easter Monday, August Bank Holiday weekend.
  • 7. Ingredients Preparation Taking shape Proof of concept? Preparation Finely chop your data...
  • 8. Ingredients Preparation Taking shape Proof of concept? Screen-scraping Walk through the table of OLIS codes: <table class="olis" border="0" cellpadding="4"> <tbody> <tr class="library" valign="top"> <th> <p> <b>All S.</b> </p> </th> <th> <p> <b>ASC</b> </p> </th> <th> <p> <b> <a name="ASC">All Souls College Library</a> <a href="http://www.lib.ox.ac.uk/libraries/guides/ASC.html" target="_top" title="Information about All Souls College Library">Information</a> | <a
  • 9. Ingredients Preparation Taking shape Proof of concept? Structuring ... to get something more structured: <?xml version="1.0"?> <libs> <lib code="VHL">Vere Harmsworth Library (Rothermere American Institute)</lib> <lib code="NDA">Nuffield Dept. of Anaesthetics</lib> <lib code="SCA">Social and Cultural Anthropology Library</lib> [...] </libs>
  • 10. Ingredients Preparation Taking shape Proof of concept? Joining the dots Difficulties: • Different names - fuzzy matching • Different schemes of uids with no translator/correspondence • Different concept of a 'unit' between schemes • Relationships between libraries (particularly Bodleian/OULS/etc) Solution: • Edit by hand (yes we can!) <place type="library" olisCode="ASC" xml:id="O_lib_asc"> <placeName>All Souls College Library</placeName> [...] </place>
  • 11. Ingredients Preparation Taking shape Proof of concept? Taking shape • Not really a mashup yet • But it allows us to query Oxpoints by OLIS code...
  • 12. Ingredients Preparation Taking shape Proof of concept? Example queries All libraries: • http://m.ox.ac.uk/oxpoints/type/Library.kml • http://maps.google.co.uk/?z=17&q=http: //m.ox.ac.uk/oxpoints/type/Library.kml Individual libraries: • http://m.ox.ac.uk/oxpoints/hasOLISCode/BOD.kml • http://maps.google.co.uk/?z=17&q=http: //m.ox.ac.uk/oxpoints/hasOLISCode/BOD.kml Combinations: • http://m.ox.ac.uk/oxpoints/hasOLISCode/JES|EXE| LIN.kml • http://maps.google.co.uk/?z=17&q=http://m.ox.ac. uk/oxpoints/hasOLISCode/JES%7CEXE%7CLIN.kml
  • 13. Ingredients Preparation Taking shape Proof of concept? Joining the dots (again) With a bit of JavaScript on a page we can • pick out an OLIS code (by its location in the HTML) • add a link to Google Maps with Oxpoints KML using that code <table border="1" width="100%" cellspacing="4" class="data-holdings" summary="This table contains a row for each copy held, with columns for Location, Shelfmark, and Status.">[...] <tr valign="top"> <td align="left">Balliol<br/> BLL Main Libr <br/> <a href="http://maps.google.co.uk/?q=http://m.ox.ac.uk/oxpoints/hasOLI library on a map</a> </td> <td align="left" colspan="1">0050e 007</td> <td align="left" colspan="1">Available</td> <td>
  • 14. Ingredients Preparation Taking shape Proof of concept? A pinch of JavaScript Greasemonkey (Firefox extension) lets us add JavaScript to page var bodDetails = codeTD.innerHTML.split("<br>"); bodCode = bodDetails[1]; bodCode = bodCode.replace(newLines, ""); if (bodCode.match(/ /)) { encodedBodCode = bodCode.replace(/ /g, "%252B"); bodCode = bodCode.replace(/ /g, "+"); } if (bodCode.match(/^[A-Z]{3}/)) { bodCodes[i-1] = bodCode; } var oxpmaplink = '<a href="http://maps.google.co.uk/?z=16&q=http://m.ox. codeTD.innerHTML = codeTD.innerHTML + '<br>' + oxpmaplink + "Show library
  • 15. Ingredients Preparation Taking shape Proof of concept? Demo • Install greasemonkey script: olismapall.user.js • Show links working on library search: http://library.ox.ac.uk/
  • 16. Ingredients Preparation Taking shape Proof of concept? Adding value What else can we do? • Show all these libraries on the same map? • Add a map to the page itself? • Show information about availability on the map? • Add user location to the map?
  • 17. Ingredients Preparation Taking shape Proof of concept? Beyond Greasemonkey • Can't use Google maps API to add a map to the page • Can't pass much useful information into the KML
  • 18. Ingredients Preparation Taking shape Proof of concept? External map • Still using JavaScript/Greasemonkey to write in links... • ...but these pass info to an external map/script • Easier to manipulate data and control display
  • 19. Ingredients Preparation Taking shape Proof of concept? Demo • Greasemonkey working on library search: http://library.ox.ac.uk/ • All libraries on one (external) map • Availability
  • 20. Ingredients Preparation Taking shape Proof of concept? Where are you? Google Gears can (sort of) tell your location... In practice there are probably better ways of doing this: • User sets/chooses location(s) • Native apps for mobile devices which use onboard GPS
  • 21. Ingredients Preparation Taking shape Proof of concept? Demo • Install Google Gears: http://gears.google.com/ • Back to library search... • 'You are here' • Directions
  • 22. Ingredients Preparation Taking shape Proof of concept? Proof of concept? Shows the general idea, but doesn't include: • Patron data (who are you, & can you borrow the book?) • Integration with book requests • Combining with other locations • . . .
  • 23. Ingredients Preparation Taking shape Proof of concept? Is all this useful? • Maybe more so in other contexts • Useful as a demonstration • Quick prototyping of ideas - easier to visualise • Shows the value of consumable data