Search for a unit given a parameter e.g. name, description,
input/output types etc. e.g. a user might know what they want
to do but they are not sure of the name of the Triana
unit that can perform this type of operation. If we
associated a semantic description with each unit then
this type of search can be realized.
To point out incompatible types when connecting units;
To enable automatic translation from a task graph created in
another dataflow or workflow environment into one that would
be equivalent within Triana.
To allow the user to refer to a tool by a pseudo name,
not necessarily the class name.
To enable the users to use the most recent version of the
unit. Versioning within units is important as it enables
programmers to get the latest unit code and users need to know
which version a unit is so that their results can be
reconstructed accurately. There is no guarantee that newer
versions of units are backwardly compatible (we would hope
that they are though) so along with the main data flows,
we need to reconstruct the algorithm of
units along with their correct versions.
The use cases motivate a number of requirements for unit metadata: