Ontology.java |
1 /* Ontology.java 2 * 3 * Copyright (c) 1998-2005, The University of Sheffield. 4 * 5 * This file is part of GATE (see http://gate.ac.uk/), and is free 6 * software, licenced under the GNU Library General Public License, 7 * Version 2, June1991. 8 * 9 * A copy of this licence is included in the distribution in the file 10 * licence.html, and is also available at http://gate.ac.uk/gate/licence.html. 11 * 12 * Kalina Bontcheva 03/2003 13 * 14 * 15 * $Id: Ontology.java,v 1.14 2005/12/14 14:28:58 julien_nioche Exp $ 16 */ 17 package gate.creole.ontology; 18 19 import java.util.Set; 20 21 /** 22 * This is the base interface for all concrete implementations of ontologies. 23 */ 24 public interface Ontology extends Taxonomy { 25 /** 26 * Adds an instance to the ontology. 27 * 28 * @param name 29 * the name for the new instance 30 * @param theClass 31 * the class to which the instance belongs 32 * @return the OInstance that has been added to the ontology 33 */ 34 public OInstance addInstance(String name, OClass theClass); 35 36 /** 37 * Adds a preconstructed instance to the ontology. 38 */ 39 public void addInstance(OInstance theInstance); 40 41 /** 42 * Removes the instance from the ontology. 43 * 44 * @param theInstance 45 * to be removed 46 */ 47 public void removeInstance(OInstance theInstance); 48 49 /** 50 * Gets all instances in the ontology. 51 * 52 * @return a {@link Set} of OInstance objects 53 */ 54 public Set getInstances(); 55 56 /** 57 * Gets all instances in the ontology, which belong to this class, including 58 * instances of sub-classes. If only the instances of the given class are 59 * needed, then use getDirectInstances. 60 * 61 * @param theClass 62 * the class of the instances 63 * @return {@link Set} of OInstance objects 64 */ 65 public Set getInstances(OClass theClass); 66 67 /** 68 * Gets all instances in the ontology, which belong to the given class only. 69 * 70 * @param theClass 71 * the class of the instances 72 * @return {@link Set} of OInstance objects 73 */ 74 public Set getDirectInstances(OClass theClass); 75 76 /** 77 * Gets the instance with the given name. 78 * 79 * @param instanceName 80 * the instance name 81 * @return the OInstance object with this name 82 */ 83 public OInstance getInstanceByName(String instanceName); 84 85 /** 86 * Creates a new Datatype property in this ontology where the domain consists 87 * of a single {@link OClass}. 88 * 89 * @param name 90 * the name for the new property. 91 * @param comment 92 * the comment for the new property. 93 * @param domain 94 * the {@link OClass} to which this property applies. 95 * @param range 96 * the {@link Class} specifying the types of Java objects that this 97 * property has as values. 98 * @return the newly created property. 99 */ 100 public DatatypeProperty addDatatypeProperty(String name, String comment, 101 OClass domain, Class range); 102 103 /** 104 * Create a DatatypeProperty with the given domain and range. 105 * 106 * @param name 107 * the name for the new property. 108 * @param comment 109 * the comment for the new property. 110 * @param domain 111 * the set of ontology classes (i.e. {@link OClass} objects} that 112 * constitutes the range for the new property. The property only 113 * applies to instances that belong to <b>all</b> classes included 114 * in its domain. An empty set means that the property applies to 115 * instances of any class. 116 * @param range 117 * the {@link Class} specifying the types of Java objects that this 118 * property has as values. 119 * @return the newly created property. 120 */ 121 public DatatypeProperty addDatatypeProperty(String name, String comment, 122 Set domain, Class range); 123 124 /** 125 * Creates a new generic property that is neither datatype or object property. 126 * This can be for instance a RDF property. 127 * 128 * @param name 129 * the name for the new property. 130 * @param comment 131 * the comment for the new property. 132 * @param domain 133 * the set of ontology classes (i.e. {@link OClass} objects} that 134 * constitutes the range for the new property. The property only 135 * applies to instances that belong to <b>all</b> classes included 136 * in its domain. An empty set means that the property applies to 137 * instances of any class. 138 * @param range 139 * the set of ontology classes (i.e. {@link OClass} objects} that 140 * constitutes the range for the new property. 141 * @return the newly created property. 142 */ 143 public Property addProperty(String name, String comment, Set domain, Set range); 144 145 /** 146 * Creates a new generic property that is neither datatype or object property. 147 * This can be for instance a RDF property. 148 * 149 * @param name 150 * the name for the new property. 151 * @param comment 152 * the comment for the new property. 153 * @param domain 154 * the {@link OClass} defining the type of instances this property 155 * can apply to. 156 * @param range 157 * Java {@link Class} defining the type of values this proeprty can 158 * take. 159 * @return the newly created property. 160 */ 161 public Property addProperty(String name, String comment, OClass domain, 162 Class range); 163 164 /** 165 * Creates a new object property (a property that takes instances as values). 166 * 167 * @param name 168 * the name for the new property. 169 * @param comment 170 * the comment for the new property. 171 * @param domain 172 * the set of ontology classes (i.e. {@link OClass} objects} that 173 * constitutes the range for the new property. The property only 174 * applies to instances that belong to <b>all</b> classes included 175 * in its domain. An empty set means that the property applies to 176 * instances of any class. 177 * @param range 178 * the set of ontology classes (i.e. {@link OClass} objects} that 179 * constitutes the range for the new property. 180 * @return the newly created property. 181 */ 182 public ObjectProperty addObjectProperty(String name, String comment, 183 Set domain, Set range); 184 185 /** 186 * Creates a new object property (a property that takes instances as values). 187 * 188 * @param name 189 * the name for the new property. 190 * @param comment 191 * the comment for the new property. 192 * @param domain 193 * the {@link OClass} to which this property applies. 194 * @param range 195 * the {@link OClass} specifying the types of instances that this 196 * property can take as values. 197 * @return the newly created property. 198 */ 199 public ObjectProperty addObjectProperty(String name, String comment, 200 OClass domain, OClass range); 201 202 /** 203 * Creates a new symmetric property (an object property that is symmetric). 204 * 205 * @param name 206 * the name for the new property. 207 * @param comment 208 * the comment for the new property. 209 * @param domain 210 * the set of ontology classes (i.e. {@link OClass} objects} that 211 * constitutes the range for the new property. The property only 212 * applies to instances that belong to <b>all</b> classes included 213 * in its domain. An empty set means that the property applies to 214 * instances of any class. 215 * @param range 216 * the set of ontology classes (i.e. {@link OClass} objects} that 217 * constitutes the range for the new property. 218 * @return the newly created property. 219 */ 220 public SymmetricProperty addSymmetricProperty(String name, String comment, 221 Set domain, Set range); 222 223 /** 224 * Creates a new symmetric property. 225 * 226 * @param name 227 * the name for the new property. 228 * @param comment 229 * the comment for the new property. 230 * @param domain 231 * the {@link OClass} to which this property applies. 232 * @param range 233 * the {@link OClass} specifying the types of instances that this 234 * property can take as values. 235 * @return the newly created property. 236 */ 237 public SymmetricProperty addSymmetricProperty(String name, String comment, 238 OClass domain, OClass range); 239 240 /** 241 * Creates a new transitive property (an object property that is transitive). 242 * 243 * @param name 244 * the name for the new property. 245 * @param comment 246 * the comment for the new property. 247 * @param domain 248 * the set of ontology classes (i.e. {@link OClass} objects} that 249 * constitutes the range for the new property. The property only 250 * applies to instances that belong to <b>all</b> classes included 251 * in its domain. An empty set means that the property applies to 252 * instances of any class. 253 * @param range 254 * the set of ontology classes (i.e. {@link OClass} objects} that 255 * constitutes the range for the new property. 256 * @return the newly created property. 257 */ 258 public TransitiveProperty addTransitiveProperty(String name, String comment, 259 Set domain, Set range); 260 261 /** 262 * Creates a new transitive property. 263 * 264 * @param name 265 * the name for the new property. 266 * @param comment 267 * the comment for the new property. 268 * @param domain 269 * the {@link OClass} to which this property applies. 270 * @param range 271 * the {@link OClass} specifying the types of instances that this 272 * property can take as values. 273 * @return the newly created property. 274 */ 275 public TransitiveProperty addTransitiveProperty(String name, String comment, 276 OClass domain, OClass range); 277 278 /** 279 * Gets the set of all known property definitions in this ontology. 280 * 281 * @return a {@link Set} of {@link Property} objects. 282 */ 283 public Set getPropertyDefinitions(); 284 285 /** 286 * Returns the property definition for a given property. 287 * 288 * @param name 289 * the name for which the definition is sought. 290 * @return a{@link Property} object. 291 */ 292 public Property getPropertyDefinitionByName(String name); 293 }