Hi, I have a few questions on the basic concepts of UIMA. It’s fine if you tell me to read the manuals, but I haven’t been able to find the answers there so far, so a chapter reference would be a big help.
1) If Annotator A creates an annotation, is it OK for Annotator B to modify the information in the annotations which A created? 2) I’ve read that an annotation can contain a reference to another annotation, but I haven’t been able to find instructions or an example. Possibly, I could generate the annotation class using JCasGen, and then manually augment the auto-generated code to support references to other annotation objects. Is that a good way to do it? Or is there some kind of built-in support? 3) Suppose I want a parser to build a parse tree over tokens. A parse tree consists of a hierarchy of nodes. I could represent each node as an annotation. Is that the most UIMA-like solution? The reason I hesitate is this. If I were writing a non-UIMA solution from scratch, I’d treat all of the nodes above the token level as abstract units, and those abstract units wouldn’t deal in concrete information such as the beginning and end of a character range. I’d keep track of that only at the token level. I think that all UIMA annotations are required to keep track of this information. Also, it sounds the only way for an annotator to retrieve existing annotations is to create an iterator and pull them out one by one. I wish there were a way to just get a reference to the root node of my parse tree, so that I can simply step recursively through the tree (which assumes I’ve arranged for each node to contain references to its children). Thanks, --Sean Crist