This also initially confused me... There are two different categories of APIs used in UIMA pipelines. One of these is for "component" writers - these are people who implement components (usually these are usually Annotators, but may also be things like Cas Consumers, Cas Multipliers, etc.) which implement a standard set of APIs for components. For example, Annotators implement the "process" method which takes a CAS and works on it. Each component implements a particular lifecycle, and handles one or more CASs.
Analysis Engines represent UIMA pipelines, usually made up of multiple components, possibly in hierarchies, arranged in some kind of a flow. The pipelines, at the bottom of any aggregation hierarchy is composed of the the above "components". Analysis Engines are created using produceAnalysisEngine calls, and then fed one or more CASes to process. The APIs for Analysis Engines can be thought of as UIMA Application APIs. The XML descriptors, which describe which components to use, how they are put together, configuration parameters, and other meta information, are associated with Analysis Engines. In the tutorial book, http://uima.apache.org/d/uimaj-current/tutorials_and_users_guides.html , Chapter 1 is more about developing components (called Annotators), while chapter 3 is more about topics relating to Analysis Engines. Annotators, Cas Multipliers, Collection Readers, and Cas Consumers typically inherit from Cas/JCasAnnotator_ImplBase, which eventually inherits from AnalysisComponent. HTH. -Marshall On 11/29/2015 5:25 AM, Richard Eckart de Castilho wrote: > Hi all, > > this post [1] on Stackoverflow brought up a question I couldn't answer: > > What is the difference between AnalysisComponent and AnalysisEngine? > > Looking at the inheritance hierarchy of AnalysisComponent, it appears that > it is used in the UIMA SDK examples to implement components. > > But I've never seen that being used anywhere else. E.g. we implemented > uimaFIT on top of AnalysisEngine. > > So what's the difference and when should one be used and when the other? > > Cheers, > > -- Richard > > [1] > http://stackoverflow.com/questions/33973273/how-are-you-supposed-to-use-the-dkpro-libraries-with-uima-ruta > >
