Subject: [CODE4LIB] Availability Information API

From: Jakob Voss <[email-masked]>
Date: Fri, 23 Oct 2009 12:01:22 +0200

Hi,

I just wanted to announce that I finished a reference implementation of 
the Document Availability Information API (DAIA) as CPAN module at 
http://search.cpan.org/perldoc?DAIA. More information about DAIA can be 
found in the specification at http://purl.org/NET/DAIA and at 
http://www.gbv.de/wikis/cls/DAIA. The basic structure is:

[Document] -- 1-to-n --> [Item]
[Item ]-- 1-to-n --> [Service] (which is either [Available] or 
[Unavailable])

We created DAIA for German library networks as interchange format and 
API to encode information about the current availability of a specific 
document (or any copy of it) in a given library. There are numerous APIs 
for several tasks in library systems (SRU/SRW, Z39.50, OpenSearch, 
OAI-PMH, Atom, unAPI etc.) but no standard way to just query whether a 
copy of given - for instance book - is available in a library, in which 
department, whether you can loan it or only use it in the library (or 
even read it online) or if it is not available how long it will probably 
take until it is available again. Obviously such an API would be helpful 
not only to connect different library systems but to create mashups and 
services ("Show me on a map, where a given book is currently hold and 
available", "Send me a tweet if a given books in my library is available 
again" etc.). DAIA was createt to fill this gap. In the context of ILS 
Discovery Interface Task Force and its official recommendation 
(http://diglib.org/architectures/ilsdi/) DAIA fits to the 
GetAvailability method (section 6.3.1).

At the moment the format and API are pretty stable so the main work is 
to create server and client components for several ILS software. Every 
library has its own special rules and schemas - Jonathan Rochkind 
already wrote about the problems to implement DAIA because of ILS 
complexity: 
http://bibwild.wordpress.com/2009/09/02/daia-and-ils-complexity/ . We 
cannot erase this complexity by magic (unless we refactor and clean the 
ILS) but at least we can try to map it to a common data model which DAIA 
provides. With the DAIA Perl package you can concentrate on writing the 
wrapper without dealing with DAIA parsing and serialization issues. Why 
should everyone write its own routines to grab for instance the HTML 
OPAC output to parse availability status? One mapping to DAIA should fit 
most needs, so others can build upon. A public DAIA converter/validator 
is available at http://ws.gbv.de/daia/validator

Extensions to DAIA can be discussion in the Code4Lib Wiki 
http://wiki.code4lib.org/index.php/DAIA_extensions but I'd prefer no to 
start with the extensions but with basic services. If you have more cool 
ideas for client applications, just let me know!

Cheers,
Jakob

P.S: Yes, there are some other awkward attemts to encode availability 
(Z39.50 Holdings, ISO 20775 Holdings, NCIP, SLNP...) but I found all of 
them  underdefined and not publically documented or openly usable based 
on Web standards.

-- 
Jakob Voß <[email-masked]>, skype: nichtich
Verbundzentrale des GBV (VZG) / Common Library Network
Platz der Goettinger Sieben 1, 37073 Göttingen, Germany
+49 (0)551 39-10242, http://www.gbv.de