Different databases might expose their content in many different ways. Sometimes they might provide proprietary APIs; sometimes, they might support standard protocols such as SRU or Z39.50, but implement different character sets or record formats; sometimes, the only way to access them is to harvest their contents and build an index, or to ‘screen-scrape’ a search interface by writing software that pretends to be an end-user with a browser.

MasterKey Connect will use all these different techniques to access databases on your behalf, and provide ONE simple interface; one query format; one result record format. You can access any database supported by MasterKey Connect through one single API.

You can use tools such as YAZ, PHP/YAZ, ZOOM-Perl, or any of the ZOOM implementations to access MasterKey Connect, or you can write your own code using your favorite HTTP/XML tools – see the examples below, and look at our Open Source Resources for more inspiration.

Here is an example of a request against MasterKey Connect:

http://connect.indexdata.com:9008/gutenberg?operation=searchRetrieve&version=1.1&query=jules+verne&maximumRecords=5&startRecord=1&x-username=guest&x-password=guest

Note, this is an XML response. Click on the link and choose “View Source” in your browser’s menu if you do not automatically see the XML. You may also find directions for how to access MasterKey Connect using Z39.50.

This example is a search for ‘jules verne’ against Project Gutenberg. Boolean, fielded queries are possible when supported by the databases. You can use this API to ‘page’ through results by asking for different starting points and different numbers of records.

The result includes relevant data from the server, mapped into a standard set of fields – the same set of fields are used no matter what database you are searching. Of course, not all fields are supported by all databases. For the purists amongst us, the format is an extension of the standard MODS format.

Detailed specifications can be found in The MasterKey Connect Profile.