Just a note. I'm currently using JRuby as part of an annotator and I generate all my internal annotation classes from the type system dynamically, like JCasGen but on the fly. Right now, the only ways I have access to the type system are to either have the Analysis Engine Descriptor point at itself, which seems weird or get the type system from the first Cas that comes through. It would be nice to be able to see this stuff somehow.
Frank -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Adam Lally Sent: Thursday, June 21, 2007 6:15 PM To: [email protected]; [EMAIL PROTECTED] Subject: Re: programmatic access to AE's capabilities 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
