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
>
>

Reply via email to