Support Aggregate Engines
- Dominant language
- C++
- Stars
- 16
- Forks
- 17
- PR merge metrics
- No merged PRs in 30d
Description
**Is your feature request related to a problem? Please describe.**
The UIMA framework has engines composed by primitive engines (annotators) or aggregate engines. At present, the C++ version of the framework cannot handle aggregate engines, only primitives.
An example of a primitive annotator descriptor is the [SimpleTextSegmenter.xml](https://github.com/apache/uima-uimacpp/blob/main/examples/descriptors/SimpleTextSegmenter.xml). It refers to the annotator itself, [SimpleTextSegmenter.cpp](https://github.com/apache/uima-uimacpp/blob/main/examples/src/SimpleTextSegmenter.cpp).
The aggregate descriptors are discussed in the [Apache UIMA Reference](https://uima.apache.org/d/uimaj-current/ref.html#ugr.ref.xml.component_descriptor.aes.aggregate). An example descriptor from the Java framework is the [NamesAndGovernmentOfficials_TAE.xml](https://github.com/apache/uima-uimaj/blob/x-archive/uimaj-2.2.2-01/uimaj-examples/src/main/descriptors/analysis_engine/NamesAndGovernmentOfficials_TAE.xml).
The Java UIMA aggregate analysis engine implementation involves the class [AggregateAnalysisEngine_impl.java](https://github.com/apache/uima-uimaj/blob/x-archive/uimaj-2.2.2-01/uimaj-core/src/main/java/org/apache/uima/analysis_engine/impl/AggregateAnalysisEngine_impl.java) and many others.
**Describe the solution you'd like**
The UIMACPP framework should be able to load and execute Aggregate Engines in XML format composed of other aggregate engines or primitive engines implemented in C++.
This includes parsing the XML descriptors and routing the annotations (as part of the Common Annotation Structure, or CAS) from the different annotators. Note that that aggregators **shield** annotators based on the input and output annotations present in their descriptors.
**Describe alternatives you've considered**
Using UIMA-AS it was possible to interoperate between Java and C++, but the UIMA-AS framework has been retired.
**Additional context**
This has been discussed as one of the main roadblocks in using the C++ version of the framework by its users: https://lists.apache.org/thread/f1r3sghgn2oqhvzz27y26zg6j3olv8qq
**Tasks**
- [ ] Initial classes for aggregate descriptors.
- [ ] Parse and validate aggregate descriptor XML files.
- [ ] Test cases for base aggregate functionality.
- [ ] Base aggregate execution functionality.
- [ ] Flow controller (optional/undecided for this issue, might file another in the future).
- [ ] SofA mappers (optional/undecided for this issue, might file another in the future).
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.