To handle the use cases briefly described on the user list for selectively
skipping some annotators in an aggregate, based on some externally supplied
configuration data, I'd like to propose something along these lines:
* Add to the existing element <delegateAnalysisEngine key="[String]"> one or two
additional attributes. One would be "skip=${xxx}" and the other would be its
inverse (for improved readability, only, not logically needed): "run=${xxx}",
where the value of the parameter would need to be "true" or "false" (or "yes" or
"no").
The parameter could be written literally as "true", etc., but also could be
written using the standard variable naming syntax used elsewhere in the
descriptors, and would be resolved by settings in the now-standard "external
overrides" files used by UIMA. This means that the external overrides would
continue to be a place where all of the specific configuration info for a
particular "run" could be placed, together.
The implementation would do nothing new if the parameters were indicating to run
the delegate, but if they were indicating it should be skipped or not run, then
the effect would be as if the delegate had been edited out of the xml
descriptor.
This would satisfy some pleas from some user groups for help in managing their
descriptors across various related experiments.
An example: a user might have a delegate which came in two forms: one to run
"locally", and the other to run "remote".
They could then include both descriptors in the aggregate, and have only one of
them "active", by coding:
<delegateAnalysisEngine key="NE-detector" run="NE-Detector-local"> ...
</delegateAnalysisEngine>
<delegateAnalysisEngine key="NE-detector" skip="NE-Detector-local"> ...
</delegateAnalysisEngine>
WDYT?
-Marshall