Recently during our pilot project helping CSIRO evaluate CollectiveAccess as a candidate for the National Collections we needed to show that we could use an external nomenclator within CollectiveAccess. Luckily CA comes with a generic ‘InformationService‘ attribute (field) type which lets you reference an external web service and index and display content from it within your collection management system. Up until now the services available to reference were:
- The Getty Linked Open Data services for their Thesaurus of Geographic Names (TGN), Arts and Architecture Thesaurus (AAT) and Union List of Artist Names (ULAN).
- WorldCat – Global library meta-catalogue.
- uBio – lookup a taxon name from uBio.
- CollectiveAccess – lookup a value from a different CA instance.
While uBio has got good global coverage it lacks a lot of the Australian names and unfortunately the uBio service is currently down. There has already been significant work compiling taxonomic names for Australia embodied by:
- the Australian Plant Census (APC) and the Australian Plant Name Index (APNI) that it is built on and
- the Australian Faunal Directory (AFD).
Under the auspices of the Atlas of Living Australia (ALA) there has been work to integrate the APC and the AFD into a single National Species List. I initially tried integrating with the web service referenced there, but I failed to implement a fast enough autocomplete using those services (and who wants to sit around waiting for an autocomplete?). Then in my travels around the interwebs I discovered that the Australian National Species Lists (NSL) are currently evolving into a fully RESTful framework that has a good API that is well documented. Currently, only vascular plant names are included in this framework but I have it on good authority that fungi, algae, mosses, lichen and the AFD are on the way too (see the roadmap here).
In order to add a new InformationService attribute type to CA I needed to implement the IWLPlugInformationService interface, which proved relatively straightforward. I implemented the following methods in my new class to look up the data from the API:
- lookup() – provides the autocomplete
- getDataForSearchIndexing() – adds additional data to the search index
- getExtendedInformation() – Adds a view of the referenced data – this hooks into the
- getExtraInfo() – adds additional data to store serialized with the attribute (field) value
Configuring the NSL (and APNI) attribute type
Autocomplete for scientific names
APC Format embedded information
APNI Format embedded information
Because other opinions are also available:
We have already contacted the developers of this new API to make some suggestions of possible enhancements especially relating to the embedded data format that they currently output.
Doing this development is only one part of the cycle – CollectiveAccess is an Open Source project so now that we have implemented this locally we can give a little back. Thanks to Seth for accepting our pull request adding this new feature which will become available in the 1.6 version of CollectiveAccess.
Now that we’ve seen how easy it is to reference external authoritative data sources within CollectiveAccess watch this space for further development. We’re also looking forward to having more data in the NSL and enhanced functionality in its API.