1 /* 2 wsmo4j - a WSMO API and Reference Implementation 3 4 Copyright (c) 2004-2005, OntoText Lab. / SIRMA 5 6 This library is free software; you can redistribute it and/or modify it under 7 the terms of the GNU Lesser General Public License as published by the Free 8 Software Foundation; either version 2.1 of the License, or (at your option) 9 any later version. 10 This library is distributed in the hope that it will be useful, but WITHOUT 11 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 13 details. 14 You should have received a copy of the GNU Lesser General Public License along 15 with this library; if not, write to the Free Software Foundation, Inc., 16 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 */ 18 19 /** 20 * <p>Title: WSMO4J</p> 21 * <p>Description: WSMO API and a Reference Implementation</p> 22 * <p>Copyright: Copyright (c) 2004-2005</p> 23 * <p>Company: OntoText Lab. / SIRMA </p> 24 */ 25 26 package org.omwg.ontology; 27 28 29 import java.util.*; 30 31 import org.wsmo.common.*; 32 import org.wsmo.common.exception.*; 33 34 35 /** 36 * This interface represents a WSMO concept. 37 * 38 * @see Instance 39 * @author not attributable 40 * @version $Revision: 1946 $ $Date: 2007-04-02 15:13:28 +0300 (Mon, 02 Apr 2007) $ 41 */ 42 public interface Concept 43 extends OntologyElement, Type { 44 45 /** 46 * Adds a new concept to the set of super-concepts of this concept 47 * <i>The super concept will also add this concept to the list of its sub-concepts</i> 48 * @param superConcept The new super-concept to be added. 49 * @throws org.wsmo.common.exception.SynchronisationException 50 * @throws org.wsmo.common.exception.InvalidModelException 51 * @see #removeSuperConcept(Concept superConcept) 52 */ 53 void addSuperConcept(Concept superConcept) 54 throws SynchronisationException, InvalidModelException; 55 56 /** 57 * Removes a concept from the set of super-concepts of this concept 58 * <i>The super concept will also remove this concept from the list of its sub-concepts</i>. 59 * @param superConcept The super-concept to be removed 60 * @throws org.wsmo.common.exception.SynchronisationException 61 * @throws org.wsmo.common.exception.InvalidModelException 62 */ 63 void removeSuperConcept(Concept superConcept) 64 throws SynchronisationException, InvalidModelException; 65 66 /** 67 * Lists the super-concepts of this concept. 68 * @return The set of super-concepts defined by this ontology. 69 * @throws org.wsmo.common.exception.SynchronisationException 70 */ 71 Set <Concept> listSuperConcepts() 72 throws SynchronisationException; 73 74 /** 75 * Adds a new concept to the set of sub-concepts of this concept 76 * <i>The sub concept will also add this concept to the list of its super-concepts</i>. 77 * @param subConcept The new sub-concept to be added. 78 * @throws org.wsmo.common.exception.SynchronisationException 79 * @throws org.wsmo.common.exception.InvalidModelException 80 * @see #removeSubConcept(Concept subConcept) 81 */ 82 void addSubConcept(Concept subConcept) 83 throws SynchronisationException, InvalidModelException; 84 85 /** 86 * Removes a concept from the set of sub-concepts of this concept 87 * <i>The sub concept will also remove this concept from the list of its super-concepts</i>. 88 * @param subConcept The sub-concept to be removed 89 * @throws org.wsmo.common.exception.SynchronisationException 90 * @throws org.wsmo.common.exception.InvalidModelException 91 */ 92 void removeSubConcept(Concept subConcept) 93 throws SynchronisationException, InvalidModelException; 94 95 /** 96 * Lists the sub-concepts of this concept 97 * @return The set of sub-concepts defined by this ontology. 98 * @throws org.wsmo.common.exception.SynchronisationException 99 */ 100 Set <Concept> listSubConcepts() 101 throws SynchronisationException; 102 103 /** 104 * Create an Attribute for a Concept 105 * @return a new Attribute for the Concept 106 * @param id The ID of the new Attribute 107 * @throws InvalidModelException 108 */ 109 Attribute createAttribute(Identifier id) throws InvalidModelException; 110 111 /** 112 * Removes an attribute from this concept's list of attributes. 113 * @param identifier The identifier of the attribute to be removed 114 * from the concept's list of attributes. 115 */ 116 void removeAttribute(Identifier identifier); 117 118 /** 119 * Removes an attribute from this concept's list of attributes. 120 * @param attr The attribute to be removed from this concept's list of attributes. 121 * @throws org.wsmo.common.exception.SynchronisationException 122 * @throws org.wsmo.common.exception.InvalidModelException 123 */ 124 void removeAttribute(Attribute attr) 125 throws SynchronisationException, InvalidModelException; 126 127 /** 128 * Returns a list of this concept's attributes. 129 * @return The list of this concept's attributes. 130 * @throws org.wsmo.common.exception.SynchronisationException 131 * @see Attribute 132 */ 133 Set <Attribute> listAttributes() 134 throws SynchronisationException; 135 136 /** 137 * Searches for all attributes with the specified ID. 138 * @param id identifier of the attribute 139 * @return the attribute or null if not found 140 * @throws org.wsmo.common.exception.SynchronisationException 141 */ 142 Set <Attribute> findAttributes(Identifier id); 143 144 /** 145 * Adds a new instance to the set of instances of this concept 146 * <i>The instance will also add this concept to the list of its concepts</i> 147 * @param inst The new instance to be added. 148 * @throws org.wsmo.common.exception.SynchronisationException 149 * @throws org.wsmo.common.exception.InvalidModelException 150 * @see #removeInstance(Instance inst) 151 * @see Instance#addConcept(Concept memberOf) 152 */ 153 void addInstance(Instance inst) 154 throws SynchronisationException, InvalidModelException; 155 156 /** 157 * Removes an instance from the set of instances of this concept 158 * <i>The instance will also remove this concept from the list of its concepts</i> 159 * @param inst The instance to be removed 160 * @throws org.wsmo.common.exception.SynchronisationException 161 * @throws org.wsmo.common.exception.InvalidModelException 162 */ 163 void removeInstance(Instance inst) 164 throws SynchronisationException, InvalidModelException; 165 166 /** 167 * Returns a list of this concept's instances 168 * @return The list of this concept's instances 169 * @throws org.wsmo.common.exception.SynchronisationException 170 * @see Instance 171 */ 172 Set <Instance> listInstances() 173 throws SynchronisationException; 174 175 //DO NOT EDIT below this line 176 177 /** 178 * @supplierCardinality 0..* 179 * @clientCardinality 0..* 180 * @supplierRole has-instance 181 * @clientRole has-concept */ 182 /*# Instance lnkInstance; */ 183 184 /** 185 * @supplierCardinality 0..* 186 * @clientCardinality 0..* 187 * @supplierRole super-concept 188 * @clientRole sub-concept 189 */ 190 /*# Concept lnkConcept; */ 191 192 /** 193 * @supplierCardinality 0..* 194 * @clientCardinality 1 195 * @supplierRole has-attribute 196 * @clientRole defined-in 197 * @directed 198 * @link aggregationByValue 199 */ 200 /*# Attribute lnkConceptAttribute; */ 201 } 202 203 /* 204 * $Log$ 205 * Revision 1.26 2007/04/02 12:13:14 morcen 206 * Generics support added to wsmo-api, wsmo4j and wsmo-test 207 * 208 * Revision 1.25 2006/02/16 14:34:57 nathaliest 209 * added removeAttribute(Identifier) method 210 * 211 * Revision 1.24 2006/02/13 22:49:23 nathaliest 212 * - changed concept.createAttribute() and Parameter.addType to throw InvalidModelException. 213 * - small change at check AnonIds in ConceptImpl 214 * 215 * Revision 1.23 2006/02/10 14:29:13 vassil_momtchev 216 * Attribute findAttribute(Identifier) method changed to Set findAttributes(Identifier); now search all superconcept attributes also 217 * 218 * Revision 1.22 2005/09/21 08:15:39 holgerlausen 219 * fixing java doc, removing asString() 220 * 221 * Revision 1.21 2005/09/01 14:55:09 vassil_momtchev 222 * createAttribute(IRI) replaced addAttribute(Attribute) 223 * 224 * Revision 1.20 2005/07/14 09:01:23 vassil_momtchev 225 * addAttribute method is restored to Concept interface (problem with the proxies) 226 * 227 * Revision 1.19 2005/07/05 08:59:35 alex_simov 228 * removeAttribute() restored 229 * 230 * Revision 1.18 2005/07/04 14:20:17 marin_dimitrov 231 * Concept::createAttribute is deprecated now. Use only the respective WsmoFactory method 232 * 233 * Revision 1.17 2005/06/24 12:47:58 marin_dimitrov 234 * added common super interface of Concept and WsmlDataType 235 * 236 * Revision 1.16 2005/06/01 10:11:00 marin_dimitrov 237 * v0.4.0 238 * 239 * Revision 1.7 2005/05/31 13:12:26 damian 240 * createAttribute changed 241 * 242 * Revision 1.6 2005/05/13 15:38:26 marin 243 * fixed javadoc errors 244 * 245 * Revision 1.5 2005/05/13 13:58:37 marin 246 * more @see tags 247 * 248 * Revision 1.4 2005/05/12 14:44:26 marin 249 * javadoc, header, footer, etc 250 * 251 */