The Online Books Page

ILS-Discovery Interface Information

The Online Books Page now implements the Basic Discovery Interfaces (or "Level 1") of the Digital Library Federation's "ILS-Discovery Interface" recommendations. These recommendations call for integrated library systems (ILS's) to allow their data and services to be used in standard ways by all kinds of discovery applications. Information about these recommendations can currently be found on the Digital Library Federation website.

Level 1 of the recommendations, also known as the Basic Discovery Interfaces, includes functions for incrementally harvesting bibliographic and related metadata, for querying about the availability of items in real time, and for linking in a stable manner to information on any item, to find out more about it and to request services on it. This basic functionality was agreed upon by many libraries and ILS vendors in the Berkeley Accord of April 2008. A refinement ("revision 1.1") of the recommendation was posted for comment in October 2008, with an official release of the revision expected later this fall.

We encourage ILS developers to implement these interfaces for their ILS's, and discovery application writers to take advantage of them. Although The Online Books Page is not a complete ILS, it manages access to a collection of bibliographic resources, as an ILS does. Providing an implementation of the ILS-DI Level 1 functions allows discovery applications to make use of its data and services, and gives an example that users and implementors of the ILS-DI recommendations can emulate.

Function details

The functions listed below, and their recommended interfaces, are described in detail in the DLF ILS-DI Task Force's recommendation. Here we give details on how developers can invoke the functions on The Online Books Page:

HarvestBibliographicRecords and HarvestExpandedRecords are implemented in an OAI-PMH service whose base URL is The Identify response, as per the recommendation, shows what metadata formats to use to get the bibliographic and expanded records. Note that the recommendation doesn't require ILS's to let the world harvest their metadata records-- local harvesting suffices-- but we're allowing it here both to show how it's done, and to share our metadata more widely. Our metadata is made available under Creative Commons licenses; see this page for more details. We do not yet support the deleted records requirement of revision 1.1, but expect to in the near future.

Our bibliographic metadata records are exported using MODS. (Most ILS's would instead use a MARC XML format, but our records aren't that detailed.) These MODS records were originally designed for the DLF's Aquifer project, and have some quirks described here. We also provide a less detailed Dublin Core variant, for applications that prefer that format. For our expanded records, we provide MODS plus some item identifiers. (For the purposes of this demonstration, we assign an item identifier to each hyperlink associated with a book record.)

The expanded metadata record use a schema described at

GetAvailability is implemented by a REST interface taking a URL and returning XML. The base URL is As per the recommendations, the identifiers used for availability checks are the same identifiers exported in the harvesting functions above. For the Online Books Page, we return the URL in the location field when available; in a physical library, the location field might have a human-readable description of where a patron can go to obtain a book.

Here are some example calls. The first checks availability at the bibliographic record level, the second checking at the item level:

The XML returned also follows the schema. More examples of availability responses can be found in the appendixes in the recommendation document.

GoToBibliographicRequestPage is implemented using the URL template:
An example call is (The only services we provide are to go to the item, and to search or browse on other metadata fields.) This kind of URL is simply the stable link we've been providing for some time, but it satisfies the recommendation's requirements.

Those are all the functions called for in the Level 1 interoperability profile. If you'd like to implement or call them for your own system, or you have any questions about these functions, I'd be happy to hear from you by email.

Home -- About Us -- FAQ -- Get Involved! -- In Progress / Requested -- More Book Links

Books -- News -- Features -- Archives -- The Inside Story

Edited by John Mark Ockerbloom (
OBP copyrights and licenses