Relation.java
01 /*
02  *  Relation.java
03  *
04  *  Copyright (c) 1995-2012, The University of Sheffield. See the file
05  *  COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
06  *
07  *  This file is part of GATE (see http://gate.ac.uk/), and is free
08  *  software, licenced under the GNU Library General Public License,
09  *  Version 2, June 1991 (in the distribution as file licence.html,
10  *  and also available at http://gate.ac.uk/gate/licence.html).
11  *
12  *  Valentin Tablan, 27 Feb 2012
13  *
14  *  $Id: Relation.java 17173 2013-12-15 18:54:25Z markagreenwood $
15  */
16 package gate.relations;
17 
18 import gate.util.FeatureBearer;
19 import gate.util.IdBearer;
20 
21 import java.io.Serializable;
22 
23 /**
24  * Interface representing a relation between GATE annotations.
25  */
26 public interface Relation extends Serializable, IdBearer, FeatureBearer {
27 
28   /**
29    * Get the type of the relation (e.g. {@link #COREF}).
30    
31    @return the relation type.
32    */
33   public String getType();
34 
35   /**
36    * Gets the members of the relation.
37    
38    @return an array containing annotation IDs.
39    */
40   public int[] getMembers();
41 
42   /**
43    * Gets the arbitrary data associated with this relation
44    
45    @return the arbitrary data associated with this relation
46    */
47   public Object getUserData();
48 
49   /**
50    * Sets the arbitrary data associated with this relation
51    
52    @param data the arbitrary data associated with this
53    *          relation
54    */
55   public void setUserData(Object data);
56 
57   /**
58    * Relation type for co-reference relations.
59    */
60   public static final String COREF = "coref";
61 
62 }