Multi-ISBN LibraryLookup

If you've followed the saga of LibraryLookup, you may recall that there's a fly in the ointment: a book usually has more than one ISBN (1, 2). So, for example, if you're viewing the paperback edition of The Innovator's Dilemma on Amazon, a search for its ISBN at my local library comes up empty-handed. The library's catalog can't relate the paperback's ISBN, 0066620694, to the hardcover's ISBN, 0875845851 -- a book that is actually on its shelf.

The strategy I've been recommending is to use Amazon's "All editions" link to find the hardcover edition, then run LibraryLookup from that page. But that's kind of lame. What if the library really does carry the paperback? Or an audiocassette or CD? There ought to be a way to expand a single ISBN to a cluster of related ISBNs. In the case of The Innovator's Dilemma, that cluster would be:

0875845851 0585368228 0066620694 1565114159 1578511682

Wouldn't it be nice if something like this worked:

http://labs.oclc.org/xisbn/0875845851

Hey, it does! The OCLC's chief scientist, Thom Hickey, just alerted me to this excellent news. The service at http://labs.oclc.org/xisbn/ implements a grouping algorithm:

Much of the early research investigated how best to divide a particular 'work' into its component 'expressions'. Unfortunately, this and other FRBR research has shown that the information in existing bibliographic records is, in general, insufficient to reliably divide a work into expressions, so this line of investigation has been abandoned for now.

Our research then focused on the seemingly simpler problem of collecting bibliographic records into groups corresponding to different works (such as Shakespeare's Hamlet). An algorithm was developed, based primarily on author and titles found in bibliographic records, to find works in the WorldCat database with a high degree of reliability. [FRBR Work-Set Algorithm]

Hickey and his associate Jeff Young put up a page to explore ways of using this one-to-many mapping in a LibraryLookup-like bookmarklet. It produces a bookmarklet that issues a query URL with multiple ISBNs.

Since my library's OPAC doesn't respond to multi-ISBN queries, though, I tried another approach: multiple individual queries. One way to handle these would be to have a server-based application parse the results and look for indications of success or failure. (Since the results are only Web pages, not well-formed XML responses, that would entail some crufty pattern recognition.) Another way, which I've implemented, is to open up a new window for each query. As an experiment, here's a version of the Build-Your-Own-Bookmarklet page that creates bookmarklets that use that method:

experimental LibraryBookmarklet builder for multi-ISBN lookup

There are a few caveats here. First, the one-to-many algorithm doesn't seem to be fully bi-directional. In the example above, we'd like to get from 0066620694, a paperback, to 0875845851, a hardcover. But although we can get from 0875845851 to 0066620694, we can't get from 0066620694 to 0875845851. I'm not sure what's up with that.

Second, the mapper can return a dozen or more ISBNs. Dealing with that many windows is more like a denial of service than a service, so I've capped the number at five, for now.

Third, although it works OK in Mozilla (update: with popup-window blocking turned off), it seems to work erratically in MSIE. Also, you might need to tweak a security setting in MSIE. Check that Tools -> Internet Options -> Security -> Internet -> Custom Level -> Miscellaneous -> Access data sources across domains (whew!) is set to Prompt. The reason for this is that the bookmarklet's JavaScript code is fetching the XML returned from the OCLC service, which actually looks like this:

<?xml version="1.0" encoding="UTF-8" ?>
<idlist>
  <isbn>0875845851</isbn>
  <isbn>0585368228</isbn>
  <isbn>0066620694</isbn>
  <isbn>1565114159</isbn>
  <isbn>1578511682</isbn>
</idlist>

and then processing it locally.

If you want to try this without creating and installing a bookmarklet for your library, here is the multi-ISBN bookmarklet for my own library: Keene Multi-ISBN. And if you're curious, the supporting script that it loads is here.

It actually sort of works, which says a lot for the flexibility of Web and XML technologies. But the big news here is OCLC's decision to expose its grouping algorithm as a public XML Web service. I hope this signals the beginning of a closer relationship between WorldCat and the Web. It would be great if library OPACs could do these one-to-many lookups for themselves.


Former URL: http://weblog.infoworld.com/udell/2003/11/13.html#a846