On 6/21/07, Katrin Tomanek <[EMAIL PROTECTED]> wrote:
BTW: where are the capabilities _really_ used in UIMA?
There are only a small number of things that capabilities are used for right now. The main use is just for documentation purposes - say if you want to register a component in a repository like the one at http://uima.lti.cs.cmu.edu and allow people to search and what types your component produces as output. They can also be used in Flow Controllers. The example WhiteboardFlowController uses them to automatically compute the flow. Based on the capabilities it tries to figure out what order makes sense to run your annotators in. And it won't run an annotator at all if the CAS doesn't contain instances of the input types that the annotator declares. But that's just an example FlowController, not a general behavior of the UIMA framework. The Document Analyzer tool will not display any types that are not listed in the outputs (of the outermost Aggregate AE). So for example if Tokens are produced internally by some annotator and consumed by a downstream annotator, but are not declared as outptus of the entire aggregate, then they won't show up in the CAS Viewer display. Finally they are used in the computation of the "ResultSpecification" that's passed to annotator's output methods. This gives an annotator the opportunity to optimize its processing by not producing Types that aren't necessary. Most annotators don't pay attention to the result specification anyway, though. -Adam
