| Annotation.java |
1 /*
2 * Annotation.java
3 *
4 * Copyright (c) 1998-2004, The University of Sheffield.
5 *
6 * This file is part of GATE (see http://gate.ac.uk/), and is free
7 * software, licenced under the GNU Library General Public License,
8 * Version 2, June 1991 (in the distribution as file licence.html,
9 * and also available at http://gate.ac.uk/gate/licence.html).
10 *
11 * Hamish Cunningham, 19/Jan/00
12 *
13 * $Id: Annotation.java,v 1.21 2004/07/23 11:33:20 kalina Exp $
14 */
15
16 package gate;
17
18 import java.io.Serializable;
19 import java.util.Set;
20
21 import gate.event.AnnotationListener;
22 import gate.util.FeatureBearer;
23 import gate.util.IdBearer;
24
25 /** An Annotation is an arc in an AnnotationSet. It is immutable, to avoid
26 * the situation where each annotation has to point to its parent graph in
27 * order to tell it to update its indices when it changes.
28 * <P> Changes from TIPSTER: no ID; single span only.
29 *
30 * It inherits from SimpleAnnotation in order to allow users to add events
31 * and more methods for comparing annotations
32 *
33 * The event code is needed so a persistent annotation set can listen to
34 * its annotations and update correctly the database
35 */
36 public interface Annotation
37 extends SimpleAnnotation, Serializable {
38
39 /** This verifies if <b>this</b> annotation is compatible with another one.
40 * Compatible means that they hit the same possition and the FeatureMap of
41 * <b>this</b> is incuded into aAnnot FeatureMap.
42 * @param anAnnot a gate Annotation.
43 * @return <code>true</code> if aAnnot is compatible with <b>this</> and
44 * <code>false</code> otherwise.
45 */
46 public boolean isCompatible(Annotation anAnnot);
47
48 /** This verifies if <b>this</b> annotation is compatible with another one,
49 * given a set with certain keys.
50 * In this case, compatible means that they hit the same possition
51 * and those keys from <b>this</b>'s FeatureMap intersected with
52 * aFeatureNamesSet are incuded together with their values into the aAnnot's
53 * FeatureMap.
54 * @param anAnnot a gate Annotation.
55 * @param aFeatureNamesSet is a set containing certian key that will be
56 * intersected with <b>this</b>'s FeatureMap's keys.
57 * @return <code>true</code> if aAnnot is compatible with <b>this</> and
58 * <code>false</code> otherwise.
59 */
60 public boolean isCompatible(Annotation anAnnot, Set aFeatureNamesSet);
61
62 /** This method verifies if two annotation and are partially compatible.
63 * Partially compatible means that they overlap and the FeatureMap of
64 * <b>this</b> is incuded into FeatureMap of aAnnot.
65 * @param anAnnot a gate Annotation.
66 * @return <code>true</code> if <b>this</b> is partially compatible with
67 * aAnnot and <code>false</code> otherwise.
68 */
69 public boolean isPartiallyCompatible(Annotation anAnnot);
70
71 /** This method verifies if two annotation and are partially compatible,
72 * given a set with certain keys.
73 * In this case, partially compatible means that they overlap
74 * and those keys from <b>this</b>'s FeatureMap intersected with
75 * aFeatureNamesSet are incuded together with their values into the aAnnot's
76 * FeatureMap.
77 * @param anAnnot a gate Annotation.
78 * @param aFeatureNamesSet is a set containing certian key that will be
79 * intersected with <b>this</b>'s FeatureMap's keys.
80 * @return <code>true</code> if <b>this</b> is partially compatible with
81 * aAnnot and <code>false</code> otherwise.
82 */
83 public boolean isPartiallyCompatible(Annotation anAnnot,Set aFeatureNamesSet);
84
85 /** Two Annotation are coestensive if their offsets are the same.
86 * @param anAnnot A Gate annotation.
87 * @return <code>true</code> if two annotation hit the same possition and
88 * <code>false</code> otherwise
89 */
90 public boolean coextensive(Annotation anAnnot);
91
92 /** This method tells if <b>this</b> overlaps aAnnot.
93 * @param aAnnot a gate Annotation.
94 * @return <code>true</code> if they overlap and <code>false</code> false if
95 * they don't.
96 */
97 public boolean overlaps(Annotation aAnnot);
98
99 /**
100 *
101 * Removes an annotation listener
102 */
103 public void removeAnnotationListener(AnnotationListener l);
104 /**
105 *
106 * Adds an annotation listener
107 */
108 public void addAnnotationListener(AnnotationListener l) ;
109
110 } // interface Annotation,
111