1   /*
2    *  FeatureMap.java
3    *
4    *  Copyright (c) 1998-2005, 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, Jan/19/2000
12   *
13   *  $Id: FeatureMap.java,v 1.13 2005/01/11 13:51:30 ian Exp $
14   */
15  
16  package gate;
17  import java.util.Map;
18  import java.util.Set;
19  
20  import gate.creole.ontology.Taxonomy;
21  import gate.event.FeatureMapListener;
22  
23  /** An attribute-value matrix. Represents the content of an annotation, the
24    * meta-data on a resource, and anything else we feel like.
25    *
26    * The event code is needed so a persistent annotation can fire updated events
27    * when its features are updated
28    */
29  public interface FeatureMap extends SimpleFeatureMap
30  {
31    /** Tests if <b>this</b> featureMap object includes  aFeatureMap features.
32      * @param aFeatureMap object which will be included  or not in  <b>this</b>
33      * FeatureMap obj.
34      * @return <code>true</code> if <b>this</b> includes aFeatureMap
35      * and <code>false</code> if not.
36      */
37    public boolean subsumes(FeatureMap aFeatureMap);
38  
39    /** Tests if <b>this</b> featureMap object includes aFeatureMap features. <br>
40      * If the feature map contains <code>class</code> and (optionally) <code>ontology</code> features:<br>
41      * then the ontologyLR is used to provide ontology based subsume with respect to the subClassOf relations.
42      * @param ontologyLR an ontology to be used for the subsume
43      * @param aFeatureMap object which will be included  or not in  <b>this</b>
44      * FeatureMap obj.
45      * @return <code>true</code> if <b>this</b> includes aFeatureMap
46      * and <code>false</code> if not.
47      */
48    public boolean subsumes(Taxonomy ontologyLR, FeatureMap aFeatureMap);
49  
50    /** Tests if <b>this</b> featureMap object includes aFeatureMap but only
51      * for the features present in the aFeatureNamesSet.
52      * @param aFeatureMap which will be included or not in <b>this</b>
53      * FeatureMap obj.
54      * @param aFeatureNamesSet is a set of strings representing the names of the
55      * features that would be considered for subsumes.
56      * @return <code>true</code> if all features present in the aFeaturesNameSet
57      * from aFeatureMap are included in <b>this</b> obj, or <code>false</code>
58      * otherwise.
59      */
60    public boolean subsumes(FeatureMap aFeatureMap, Set aFeatureNamesSet);
61  
62    /**
63     *
64     * Removes a gate listener
65     */
66    public void removeFeatureMapListener(FeatureMapListener l);
67    /**
68     *
69     * Adds a gate listener
70     */
71    public void addFeatureMapListener(FeatureMapListener l);
72  
73  } // interface FeatureMap
74