wiki-archive/twiki/data/TAPIR/TapirLite.txt

47 lines
6.1 KiB
Plaintext

TapirLite is the notion that it should be possible to have minimal implementations of the Tapir protocol.
There will be occasions where it will not be convenient or desirable for potential data suppliers to use one of the existing wrapper implementations. Reasons for this include:
* The data being served is stored in some form of enterprise application server and there is no simple mapping of concepts.
* The data provider does not have access to hosting facilities that support the available wrapper technologies.
* The data provider is being implemented and distributed as part of another application - e.g. a collections management system.
* Other unknown implemenations may be desirable (crazy things like peer2peer Tapir for something).
Generally the easier it is to implement something that serves valid Tapir responses the more widely the protocol is likely to be used. There are two ways to make things easier one is to implement good, generally available provider software (which is being done by the Python and Java wrapper teams) the other is to make it easy to implement providers - possibly in an incremental fashion.
I (RogerHyam) am therefore offering to champion the TapirLite cause. I am doing this because I don't think it is really that difficult or time consuming :) and will generally just mean suggesting that complex things are kept optional. It also fits within my remit of coordinating a high level TDWG standards architecture. Some initial thought are given below.
---++++ Hurdles to implementing a provider
1 Query parsing. Does the provider have the ability parse arbitrary Tapir filters into it's own internal query language? This may not be possible if the provider is some kind of application server or a simple script. This would restrict their ability to do searches and inventories (though this wouldn't be so bad if SimpleFiltering is implemented). Some common inventory-like responses could be generated using view operations though.
1 Dynamic views. Can the provider render results into an arbitrary form? This is being discussed currently with the reference implementation.
---++++ Changes to the protocol to make 'Lite' implementations possible
1 Not all operations should be supported. Whether an operation is supported should be returned as part of the capabilities document. The only required operations should be: ping, meta and capabilities. Others should be optional and declared in the capabilities response. A provider could just say "I just do views" and have a very simple cgi script to support it. The ping, meta and capabilities responses more or less be static files. Yes this means that you can have a provider that doesn't provide anything but that is strangely logical. This would also be useful for forward compatibility. If we need to add a new operation type in Tapir2 for example.
--->
MarkusDoering: The original proposal for capabilities was also to inlcude the different supported operations. In the LatestSchemaProposal this has been readded.
2. As DonaldHobern suggests views should be referred to by URL not by name. Eventually these may be stored in a view repository. The provider could say "I just do these well know views". The capabilities document could possibly map the URL to the local view name that can be used in a calling URL. (DonaldHobern said: "This approach allows TapirLite implementations not to have to understand view definitions at all. They can just treat the URLs as URNs serving as identifiers for well-known service interfaces which they then can handle using a fairly basic CGI. The whole thing is also a key step towards our developing real web services.")
--->
MarkusDoering: Referring views by URL was always possible. The option to refer to them as local names has been removed in the LatestSchemaProposal. You just wouldnt be interoperable if local names are interpreted differently between providers.
3. The capabilities document should not contain the definition of the views only the pointers to them. Consumers can just go and get them from the URL if they don't already have them cached. This is because:
* Capabilities docs are likely to become very verbose. If, for example, a provider supports 10 views that are based on TCS just with different filters then they would have to include the schema ten times rather than point to a series of URLs.
* Views may be TDWG standards in the future and should be maintained centrally to be sure the service isn't "tweaking them".
* This also facilitates view definitions being generated dynamically and managing multiple views becomes simpler (e.g. multiple filters for one conceptual view).
--->
MarkusDoering: The reference implementation has shown that the capabilities docs get too large very quickly. Therefore only the references and some _metadata_ has been left in the LatestSchemaProposal. It could be nice for views to also support an <include> statement to create more modular view libraries. But this is just an initial thought. Maybe schema imports/includes are good enough already.
SimpleFiltering would be a very nice feature for 'Lite' implementations but is not required.
---++++ Thoughts on forward compatibility and architecture integration
This is vague and really belongs to the architectural discussions but is worth having here for context.
1 We create a central ontology that contains a core mapped to the elements in the existing conceptual schemas.
1 We create a central repository for views and views that prove useful are added to the central repository perhaps becoming TDWG standards.
1 New views tend to be mappings of the core ontology rather than the older schemas (which are all synonymised in the ontology anyhow)
1 We leave behind the old schemas and just deal in terms of different views of the core ontology.
1 We can move onto other (non xml schema) ways of defining views in the future if we need to.
1 We work out how to do all this in a distributed way - handing of bits of the ontology to different organisations like OGC etc ... :)
I'll put a link in to the architecture discussions when I have one.
Please add your thoughts to the above. (RogerHyam 2005-10-20).