Dear all,
I should also say that I already used these new tools (TAPIR builders) when I was writing a new openModeller driver to read species occurrence data from TAPIR/DarwinCore providers. If anyone is interested in this kind of development (deciding about how to interact with TAPIR providers) these are the steps that I followed:
1) Create a response structure to define how search results will be returned. In this case I used XML Spy to define an XML Schema which would be used to produce the easiest XML to be parsed with expat (all data returned as XML attributes). This document was made available here:
http://openmodeller.cria.org.br/xml/tapir/1.0/rs.xsd
2) Create a TAPIR output model for the response structure. I used the output model builder to map all nodes from the response structure to DarwinCore concepts. This document was made available here:
http://openmodeller.cria.org.br/xml/tapir/1.0/om.xml
3) Create a TAPIR search template to facilitate interaction with TAPIR providers, pre-filter records and allow the existence of TAPIRLite providers that can understand the same request. I used the search template builder and made the document available here:
http://openmodeller.cria.org.br/xml/tapir/1.0/st_v3.xml
If I need to make any change in these documents, I save them with a new name to avoid problems with providers that could be using older cached versions based on the document URL.
So now the client (openModeller) just needs to check if the provider has the necessary capabilities before sending search requests. I'm basically checking if the provider supports the search operation, if all needed concepts are mapped, and if it supports "any output model" (full TAPIR providers) or if it supports the specific query template that I created (TAPIRLite providers).
By the way, this driver is already available in the latest release of the openModeller library (yet to be included in a new release of openModeller Desktop).
Best Regards, -- Renato