Open Identification API is an open API for
computer-aided interactive Identification (determination) of a biological specimen,
using a abstract model for characters, categories, and the identification algorithm and process itself.
See:
Description
Open Identification API is an open API for
computer-aided interactive Identification (determination) of a biological specimen,
using a abstract model for characters, categories, and the identification algorithm and process itself. It has implementation too.
Open Identification API
Jean-Marc Vanel -
Worldwide Botanical Knowledge Base
Copyright J.M. Vanel 2001 - under GNU public licence.
Last update:
Specifications
- provide a general-purpose API for identification problems, open and flexible, and reference implementations, line-command and GUI.
- support at least the Delta data structure, plus possibly probabilities; XML format with XML Schema will be used, reusing as much as possible from the XDELTA format.
- provide various statistics, correlations
- provide a classification and retrieval of characters according to organ (e.g. leaf blade, petal), general property (e.g. color, shape)
Design goals
- separate as much as possible taxonomic data from identification algorithms
- separate taxonomic data and identification algorithms from GUI
- lessen as much as possible the modifications needed to introduce a new kind of character (e.g. geometrical contours, biochemistry, etc)
- separate identification data (character and values) from naming and classification (systematics) issues
- some kind of configuration mechanism will allow to switch between implementations and data formats
Design principles
- a description of a taxon is the same thing as a description of a single specimen, such as the series of criteria that the user enters during the identification process
- the double isCompatibleWith(Criterion c) method is essential in an identification algorithm; it can be viewed as returning a boolean, or a probability
- the emphasis is on generality and flexibility, not on performance (for now); however the use of the Collection classes of Java 2 allows a reasonable performance and a very compact code
Design issues
- How to also provide API's to manipulate items, characters, and taxonomies:
- decompose, and create an hierarchical identication taking in account the taxonomic hierarchy
- merge (e.g. merge data about same taxa from different regions)
- take in account inheritance of characters along the taxonomic hierarchy: seems that Description will ask to its Taxon's parents isCompatibleWith(Criterion c), and then combine the results, or shall we compile at initialization time the final Taxon's Description?
- Identification interface should support history of user commands, probably through the Command Design Pattern (see Design patterns by E. Gamma et al., the "gang of four")
-