On Nov 21, 2007 8:02 AM, Michael Baessler <[EMAIL PROTECTED]> wrote: > > Aaron Kaplan wrote: > > In Section 1.5.5.4 of "UIMA Tutorial and Developers' Guides" I read: > > > > The Default Result Specification is always used for all components > > of a Collection Processing Engine. > > > > Why is this? Is it just because nobody's gotten around to putting in > > a call to setResultSpecification, or is there some fundamental reason > > that it couldn't be done? > > > > What I would like is that when my annotator is instantiated inside a > > CPE, it can skip generating certain annotations if no other component > > in the CPE is going to consume them. > > > > -Aaron > I think this is a documentation issue, but I'm not quite sure. I will > start a discussion about this on the uima-dev list. > I think when you use an aggregate AE with a capabilityLanguageFlow as > flow constraint, a computed Result Specification is used. > > If you don't use an aggregate AE as CasProcessor I think it is true, > that the Default Result Specification is used. >
Yes, the last thing that Michael said is right. The documentation may be a little confusing. What it means is that the default Result Spec is used for all _top level_ components in the CPE. For an aggregate AE, the rules in section 1.5.5.3 of the documentation apply _within_ that aggregate. So it is true that if you have an AE that outputs types x and y, and you put that AE as a top-level component in a CPE, but no downstream component of the CPE inputs type x, then the result spec. for your AE will still include both types x and y. The same would be true if you wrapped your AE in an aggregate that declared both x and y as outputs. The bottom line is: downstream components of the CPE have no effect on the result spec. I don't think there's any fundamental reason for this, it's just that no one ever got around to implementing it. -Adam
