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 package org.omwg.ontology;
20
21
22 import java.util.*;
23
24 import org.wsmo.common.*;
25 import org.wsmo.common.exception.*;
26
27
28 /**
29 * Defines WSMO attribute. Attribute could be specified as Concept
30 * Attribute (attribute which has no {link WsmlDataType} as range) or
31 * Data Attribute.
32 *
33 * @author not attributable
34 * @see Concept
35 * @author not attributable
36 * @version $Revision: 1946 $Date:
37 */
38 public interface Attribute
39 extends Entity {
40
41 /**
42 * Returns the type of this attribute.
43 * @return true (constraining) / false (inferring)
44 */
45 boolean isConstraining();
46
47 /**
48 * Sets the type of this attribute.
49 * @param constraining true (constraining) / false (inferring)
50 */
51 void setConstraining(boolean constraining);
52
53 /**
54 * Returns the minimal cardinality constraint of this attribute.
55 * The cardinality option is only available to Concept Attributes.
56 * @return number indicating the minimal cardinality constraint
57 */
58 int getMinCardinality();
59
60 /**
61 * Sets the minimal cardinality constraint of this attribute.
62 * The cardinality option is only available to Concept Attributes.
63 * @param min number indicating the minimal cardinality constraint
64 */
65 void setMinCardinality(int min);
66
67 /**
68 * Returns the maximal cardinality constraint of this attribute.
69 * The cardinality option is only available to Concept Attributes.
70 * @return number indicating the maximal cardinality constraint
71 */
72 int getMaxCardinality();
73
74 /**
75 * Sets the maximal cardinality constraint of this attribute.
76 * The cardinality option is only available to Concept Attributes.
77 * For specifiying unrestricted MAX cardinality use: Integer.MAX_VALUE.
78 * @return max number indicating the maximal cardinality constraint
79 */
80 void setMaxCardinality(int max);
81
82 /**
83 * Returns the {@link Concept} described by this attribute.
84 * @return Concept
85 */
86 Concept getConcept();
87
88 /**
89 * Returns the list of allowed {@link Type} for the current attribute.
90 * @return Set of Type objects
91 */
92 Set <Type> listTypes();
93
94 /**
95 * Adds a new {@link Type} as range for this attribute.
96 * @param type the Type to be added
97 * @throws InvalidModelException
98 */
99 void addType(Type type)
100 throws InvalidModelException;
101
102 /**
103 * Removes a {@link Type} for this attribute.
104 * @param type the Type to be removed
105 * @throws InvalidModelException
106 */
107 void removeType(Type type)
108 throws InvalidModelException;
109
110 /**
111 * Returns if this attribute is defined as reflexive.
112 * This option is available only for the concept attribtues.
113 * @return
114 */
115 boolean isReflexive();
116
117 /**
118 * Sets this attribute whether to be reflexive.
119 * This option is available only for the concept attribtues.
120 * @param reflexive is reflexive
121 */
122 void setReflexive(boolean reflexive);
123
124 /**
125 * Returns if this attribute is defined as symmetric.
126 * When an attribute is specified as being symmetric,
127 * this means that if an individual a has a symmetric attribute
128 * att with value b, then b also has attribute att with value a.
129 * This option is available only for the concept attribtues.
130 * @return
131 */
132 boolean isSymmetric();
133
134 /**
135 * Sets this attribute whether to be symmetric.
136 * This option is available only for the concept attribtues.
137 * @param symmetric is reflexive
138 */
139 void setSymmetric(boolean symmetric);
140
141 /**
142 * Returns if this attribute is defined as transitive.
143 * When an attribute is specified as being transitive,
144 * this means that if three individuals a, b and c are related
145 * via a transitive attribute att in such a way: a att b att c
146 * then c is also a value for the attribute att at a: a att c.
147 * This option is available only for the concept attribtues.
148 * @return
149 */
150 boolean isTransitive();
151
152 /**
153 * Sets this attribute whether to be transitive.
154 * This option is available only for the concept attribtues.
155 * @param trans is reflexive
156 */
157 void setTransitive(boolean trans);
158
159 /**
160 * Returns the inverse attribute of this attribute.
161 * When an attribute is specified as being the inverse of another
162 * attribute, this means that if an individual a has an attribute
163 * att1 with value b and att1 is the inverse of a certain
164 * attribute att2, then it is inferred that b has an attribute
165 * att2 with value a.
166 * This option is available only for the concept attribtues.
167 * @return null or the inverse attribute's identifier
168 */
169 Identifier getInverseOf();
170
171 /**
172 * Sets this attribute to be inverse of another attribute.
173 * @param id attribute to be set as inverse of or null to remove
174 * the current inverse attribute
175 */
176 void setInverseOf(Identifier id);
177
178 /**
179 * @supplierCardinality 0..*
180 * @directed
181 * @supplierRole has-type*/
182 /*# Type lnkType; */
183 }
184
185 /*
186 * $Log$
187 * Revision 1.19 2007/04/02 12:13:14 morcen
188 * Generics support added to wsmo-api, wsmo4j and wsmo-test
189 *
190 * Revision 1.18 2006/02/16 09:47:30 vassil_momtchev
191 * setInverseOf uses Identifier instead of Attribute
192 *
193 * Revision 1.17 2006/02/15 10:51:48 holgerlausen
194 * added javadoc hint to max cardinality
195 *
196 * Revision 1.16 2005/09/26 08:36:20 vassil_momtchev
197 * javadoc, header and footer added
198 *
199 */