| AnnotationSet.java |
1 /*
2 * AnnotationSet.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, 7/Feb/2000
12 *
13 * $Id: AnnotationSet.java,v 1.25 2004/07/23 11:33:20 kalina Exp $
14 */
15
16 package gate;
17
18 import java.io.Serializable;
19 import java.util.Iterator;
20 import java.util.Set;
21
22 import gate.event.AnnotationSetListener;
23 import gate.event.GateListener;
24 import gate.util.InvalidOffsetException;
25
26 /** Annotation sets */
27 public interface AnnotationSet extends SimpleAnnotationSet, Serializable
28 {
29 /** Create and add an annotation with a pre-existing ID */
30 public void add(
31 Integer id, Long start, Long end, String type, FeatureMap features
32 ) throws InvalidOffsetException;
33
34 /** Select annotations by type and features */
35 public AnnotationSet get(String type, FeatureMap constraints);
36
37 /** Select annotations by type and feature names
38 * It returns all annotations of the given type that
39 * have the given set of features, regardless of their
40 * concrete values
41 * If the type == null, then select regardless of type
42 * */
43 public AnnotationSet get(String type, Set featureNames);
44
45 /** Select annotations by type, features and offset */
46 public AnnotationSet get(String type, FeatureMap constraints, Long offset);
47
48 /** Select annotations by offset. This returns the set of annotations
49 * whose start node is the least such that it is greater than or equal
50 * to offset. If a positional index doesn't exist it is created.
51 */
52 public AnnotationSet get(Long offset);
53
54 /** Select annotations by offset. This returns the set of annotations
55 * that overlap totaly or partially the interval defined by the two
56 * provided offsets
57 */
58 public AnnotationSet get(Long startOffset, Long endOffset);
59
60 /** Select annotations by offset and type. This returns the set of annotations
61 * that overlap totaly or partially the interval defined by the two
62 * provided offsets and are of the given type
63 */
64 public AnnotationSet get(String type, Long startOffset, Long endOffset);
65
66 /** Select annotations by offset. This returns the set of annotations
67 * that are contained in the interval defined by the two
68 * provided offsets. The difference with get(startOffset, endOffset) is
69 * that the latter also provides annotations that have a span which
70 * covers completely and is bigger than the given one. Here we only get
71 * the annotations between the two offsets.
72 */
73 public AnnotationSet getContained(Long startOffset, Long endOffset);
74
75
76 /** Get the node with the smallest offset */
77 public Node firstNode();
78
79 /** Get the node with the largest offset */
80 public Node lastNode();
81
82 /** Get the first node that is relevant for this annotation set and which has
83 * the offset larger than the one of the node provided.
84 */
85 public Node nextNode(Node node);
86
87 public void addAnnotationSetListener(AnnotationSetListener l);
88
89 public void removeAnnotationSetListener(AnnotationSetListener l);
90
91 public void addGateListener(GateListener l);
92
93 public void removeGateListener(GateListener l);
94
95 } // interface AnnotationSet
96