Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.4.0SDK
-
None
Description
UIMA uses type system merging to combine separately developed annotators and their type systems. When the same type is define in multiple type systems, perhaps with different features, these are "merged" where possible, and if not possible, exceptions are thrown. The current implementation is missing any support for merging subtypes of Strings - which UIMA uses for associating Allowed-Values for. If two type systems define the same-named subtype of String, no merging of allowed values is done, no exception is thrown if the allowed value sets are different, and the merge uses the first definition as the merge result, ignoring the others.
The behavior could be changed to be "strict" - throwing an exception if the allowed values are not identical, or more lenient - for example, having the merged definition be the union of the the sets of allowed value. The drawback to the union approach is that any annotator which was assuming a "closed universe" of possible values, could now be seeing values not in the set it expected.