Comparing xISBN and thingISBN
I whipped up a little Ruby script to compare results from LibraryThing’s thingISBN and OCLC’s xISBN. (Tim Spalding of LibraryThing does some comparisons in his announcement of thingISBN, which is where I linked. He’d even added an option to thingISBN so it would return xISBN results as well, but OCLC put the kaibosh on that.)
#!/usr/local/bin/ruby
# Use thingISBN and xISBN and put their answers together to get
# the most ISBNs of other manifestations of a work, given the ISBN of
# one manifestation of said work. Eliminate duplicates.
# Change the ISBN to anything you want.
# Richard Pevear's new translation of THE THREE MUSKETEERS by Alexandre Dumas.
isbn = '0670037796'
# Oxford Classics edition that WorldCat has only one other manifestation for
# isbn = '0192835750'
# Anthony Powell, BOOKS DO FURNISH A ROOM, Fontana pb
# isbn = '0006130879'
# Charles Willeford, THE BURNT ORANGE HERESY, Black Lizard
# isbn = '0887390250'
require 'net/http'
require 'rubygems'
require 'xmlsimple'
puts "Finding manifestations of #{isbn} ..."
# First, get data from thingISBN at LibraryThing
thingURL = "http://www.librarything.com/api/thingISBN/"
url = thingURL + isbn
xml_data = Net::HTTP.get_response(URI.parse(url)).body
data = XmlSimple.xml_in(xml_data)
thingISBNs = []
data['isbn'].each do |i|
thingISBNs << i
# puts "thingISBN: #{i}"
end
# Next, get data from xISBN at OCLC
xISBNURL = "http://xisbn.worldcat.org/webservices/xid/isbn/"
url = xISBNURL + isbn + "?method=getEditions&format=xml"
xml_data = Net::HTTP.get_response(URI.parse(url)).body
data = XmlSimple.xml_in(xml_data)
xISBNs = []
data['isbn'].each do |i|
xISBNs << i
# puts "xISBN: #{i}"
end
allISBNs = (thingISBNs + xISBNs).uniq
xNotThing = []
thingNotX = []
allISBNs.each do |isbn|
xNotThing << isbn if xISBNs.include?(isbn) and not thingISBNs.include?(isbn)
thingNotX << isbn if thingISBNs.include?(isbn) and not xISBNs.include?(isbn)
end
puts " Known to thingISBN: #{thingISBNs.size} (#{thingNotX.size} of which not kn
own to xISBN)"
puts " Known to xISBN: #{xISBNs.size} (#{xNotThing.size} of which not known
to thingISBN)"
puts " Total: #{allISBNs.size}"
# Print ISBNs known to LibraryThing but not xISBN.
# thingNotX.sort.each do |isbn|
# puts isbn
# end
I ran it on that first ISBN, the new and reportedly excellent Pevear translation of Dumas’s The Three Musketeers, and got this:
Finding manifestations of 0670037796 ... Known to thingISBN: 109 (52 of which not known to xISBN) Known to xISBN: 226 (169 of which not known to thingISBN) Total: 278
“I say, what’s this?” I ejaculated, because I had just finished a P.G. Wodehouse novel. I’d imagined that xISBN, emerging as it does from OCLC’s vast WorldCat, made up of catalogue information from libraries all over (mostly from the United States), would vastly outnumber thingISBN, which draws on the work groupings done by users of LibraryThing, which, granted, is globally popular. But for this manifestation of this work, thingISBN knew of 109 manifestations of the same work (including the one I’d specified, so that’s 108 others), and 52 weren’t known to xISBN. xISBN, in turn, knew of 226 manifestations, 169 of which weren’t known to thingISBN. 278 different manifestations are known between the two.
So xISBN does outnumber thingISBN, but thingISBN knows about 52 manifestations that xISBN doesn’t! Is it because they aren’t in WorldCat, or because the work-grouping algorithm didn’t catch them?
I didn’t check this for all of the 52, but I did try it on my Oxford Classics edition of The Three Musketeers:
Finding manifestations of 0192835750 ... Known to thingISBN: 109 (108 of which not known to xISBN) Known to xISBN: 1 (0 of which not known to thingISBN) Total: 109
This shows that this manifestation is one of the ones thingISBN has grouped into the work of The Three Musketeers, but xISBN thinks it stands alone. However, when you look it up at WorldCat, you find it’s been grouped with a 1956 edition from Longman’s (look under the Editions tab). I’m not sure what’s going on here but it seems odd. I expect both OCLC sources to agree.
(Conversely, I didn’t check the 169 manifestations that xISBN knows about that thingISBN doesn’t, so I don’t know if they’re not in LibraryThing at all or if they are but haven’t been grouped.)
Anthony Powell’s Books Do Furnish a Room has been published in a number of editions, and thingISBN wins for my Fontana paperback:
Finding manifestations of 0006130879 ... Known to thingISBN: 8 (7 of which not known to xISBN) Known to xISBN: 1 (0 of which not known to thingISBN) Total: 8
Looking for other manifestations of Charles Willeford’s The Burnt Orange Heresy (an excellent noir crime novel about modern art — Willeford’s one of the great American writers of the twentieth century) gave me the sorts of results I’d expected in the first place, with thingISBN’s result being a proper subset of xISBN’s. This is for my Black Lizard edition:
Finding manifestations of 0887390250 ... Known to thingISBN: 3 (0 of which not known to xISBN) Known to xISBN: 7 (4 of which not known to thingISBN) Total: 7
Upshot: If you have an ISBN in hand and want to find ISBNs of other manifestations of the same work, use both thingISBN and xISBN.