001 /*
002 * Copyright (c) 1995-2010, The University of Sheffield. See the file
003 * COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
004 *
005 * This file is part of GATE (see http://gate.ac.uk/), and is free
006 * software, licenced under the GNU Library General Public License,
007 * Version 2, June 1991 (in the distribution as file licence.html,
008 * and also available at http://gate.ac.uk/gate/licence.html).
009 *
010 * $Id: UtilBooleanQuery.java 11110 2009-08-20 19:29:40Z johann_p $
011 */
012 package gate.creole.ontology;
013
014 import gate.Factory;
015 import gate.FeatureMap;
016 import gate.Gate;
017 import gate.Resource;
018 import gate.creole.ResourceInstantiationException;
019 import gate.util.GateException;
020
021 import java.io.File;
022 import java.net.URL;
023 import java.util.HashMap;
024 import java.util.Iterator;
025 import java.util.Locale;
026
027 /**
028 * This class provides various Utility methods that can be used to
029 * perform some generic options. For more information see javadoc of
030 * each individual static method.
031 *
032 * @author Niraj Aswani
033 * @author Johann Petrak
034 *
035 * @deprecated the use of this class and all its methods should be avoided
036 * in the future. See the individual methods for replacements.
037 */
038 @Deprecated
039 public class OntologyUtilities {
040
041 /**
042 * Checks the availability of an existing instance of the Ontology
043 * with the given URL in the GATE's CreoleRegister. If found, returns
044 * the first available one (doesn't guranttee in which order). If not
045 * found, attempts to create one using OWLIM implementation with
046 * RDF/XML as ontology type and if successful returns the newly
047 * created instance of the ontology.
048 *
049 * @param url
050 * @return
051 * @throws ResourceInstantiationException
052 * @deprecated - this method should be avoided
053 */
054 @Deprecated
055 public static Ontology getOntology(URL url)
056 throws ResourceInstantiationException {
057 java.util.List<Resource> loadedOntologies = null;
058 Ontology ontology = null;
059 try {
060 loadedOntologies = Gate.getCreoleRegister().getAllInstances(
061 Ontology.class.getName());
062 }
063 catch(GateException ge) {
064 throw new ResourceInstantiationException("Cannot list loaded ontologies",
065 ge);
066 }
067
068 Iterator<Resource> ontIter = loadedOntologies.iterator();
069 while(ontology == null && ontIter.hasNext()) {
070 Ontology anOntology = (Ontology)ontIter.next();
071 if(anOntology.getURL().equals(url)) {
072 ontology = anOntology;
073 break;
074 }
075 }
076
077 try {
078 // if not found, load it
079 if(ontology == null) {
080 // hardcoded to use OWL as the ontology type
081 FeatureMap params = Factory.newFeatureMap();
082 params.put("persistLocation", File.createTempFile("abc", "abc")
083 .getParentFile().toURI().toURL());
084 params.put("rdfXmlURL", url);
085 ontology = (Ontology)Factory.createResource(
086 "gate.creole.ontology.owlim.OWLIMOntologyLR", params);
087 }
088 }
089 catch(Exception e) {
090 throw new ResourceInstantiationException(
091 "Cannot create a new instance of ontology", e);
092 }
093 return ontology;
094 }
095
096 /**
097 * Given a URI, this methord returns the name part
098 *
099 * @param uri
100 * @return
101 * @deprecated use {@link OURI#getResourceName} instead
102 */
103 @Deprecated
104 public static String getResourceName(String uri) {
105 int index = uri.lastIndexOf('#');
106 if(index < 0) {
107 index = uri.lastIndexOf('/');
108 if(index < 0) {
109 return uri;
110 }
111 if(index + 2 > uri.length()) {
112 return uri;
113 }
114 }
115 return uri.substring(index + 1, uri.length());
116 }
117
118 /**
119 * Map containing uri and respective instance of datatypes
120 */
121 private static HashMap<String, DataType> datatypeMap = new HashMap<String, DataType>();
122 static {
123 datatypeMap.put("http://www.w3.org/2001/XMLSchema#boolean", DataType
124 .getBooleanDataType());
125 datatypeMap.put("http://www.w3.org/2001/XMLSchema#byte", DataType
126 .getByteDataType());
127 datatypeMap.put("http://www.w3.org/2001/XMLSchema#date", DataType
128 .getDateDataType());
129 datatypeMap.put("http://www.w3.org/2001/XMLSchema#decimal", DataType
130 .getDecimalDataType());
131 datatypeMap.put("http://www.w3.org/2001/XMLSchema#double", DataType
132 .getDoubleDataType());
133 datatypeMap.put("http://www.w3.org/2001/XMLSchema#duration", DataType
134 .getDurationDataType());
135 datatypeMap.put("http://www.w3.org/2001/XMLSchema#float", DataType
136 .getFloatDataType());
137 datatypeMap.put("http://www.w3.org/2001/XMLSchema#int", DataType
138 .getIntDataType());
139 datatypeMap.put("http://www.w3.org/2001/XMLSchema#integer", DataType
140 .getIntegerDataType());
141 datatypeMap.put("http://www.w3.org/2001/XMLSchema#long", DataType
142 .getLongDataType());
143 datatypeMap.put("http://www.w3.org/2001/XMLSchema#negativeInteger",
144 DataType.getNegativeIntegerDataType());
145 datatypeMap.put("http://www.w3.org/2001/XMLSchema#nonNegativeInteger",
146 DataType.getNonNegativeIntegerDataType());
147 datatypeMap.put("http://www.w3.org/2001/XMLSchema#nonPositiveInteger",
148 DataType.getNonPositiveIntegerDataType());
149 datatypeMap.put("http://www.w3.org/2001/XMLSchema#positiveInteger",
150 DataType.getPositiveIntegerDataType());
151 datatypeMap.put("http://www.w3.org/2001/XMLSchema#short", DataType
152 .getShortDataType());
153 datatypeMap.put("http://www.w3.org/2001/XMLSchema#string", DataType
154 .getStringDataType());
155 datatypeMap.put("http://www.w3.org/2001/XMLSchema#time", DataType
156 .getTimeDataType());
157 datatypeMap.put("http://www.w3.org/2001/XMLSchema#unsignedByte", DataType
158 .getUnsignedByteDataType());
159 datatypeMap.put("http://www.w3.org/2001/XMLSchema#unsignedInt", DataType
160 .getUnsignedIntDataType());
161 datatypeMap.put("http://www.w3.org/2001/XMLSchema#unsignedLong", DataType
162 .getUnsignedLongDataType());
163 datatypeMap.put("http://www.w3.org/2001/XMLSchema#unsignedShort", DataType
164 .getUnsignedShortDataType());
165 datatypeMap.put("http://www.w3.org/2001/XMLSchema#dateTime", DataType
166 .getDateTimeDataType());
167
168 }
169
170 /**
171 * Map containing language codes and their respective locales
172 */
173 private static HashMap<String, Locale> localsMap = new HashMap<String, Locale>();
174 static {
175 localsMap.put("aa", OConstants.AFAR);
176 localsMap.put("ab", OConstants.ABKHAZIAN);
177 localsMap.put("af", OConstants.AFRIKAANS);
178 localsMap.put("am", OConstants.AMHARIC);
179 localsMap.put("ar", OConstants.ARABIC);
180 localsMap.put("as", OConstants.ASSAMESE);
181 localsMap.put("ay", OConstants.AYMARA);
182 localsMap.put("az", OConstants.AZERBAIJANI);
183 localsMap.put("ba", OConstants.BASHKIR);
184 localsMap.put("be", OConstants.BYELORUSSIAN);
185 localsMap.put("bg", OConstants.BULGARIAN);
186 localsMap.put("bh", OConstants.BIHARI);
187 localsMap.put("bi", OConstants.BISLAMA);
188 localsMap.put("bn", OConstants.BENGALI);
189 localsMap.put("bo", OConstants.TIBETAN);
190 localsMap.put("br", OConstants.BRETON);
191 localsMap.put("ca", OConstants.CATALAN);
192 localsMap.put("co", OConstants.CORSICAN);
193 localsMap.put("cs", OConstants.CZECH);
194 localsMap.put("cy", OConstants.WELSH);
195 localsMap.put("da", OConstants.DANISH);
196 localsMap.put("de", OConstants.GERMAN);
197 localsMap.put("dz", OConstants.BHUTANI);
198 localsMap.put("el", OConstants.GREEK);
199 localsMap.put("en", OConstants.ENGLISH);
200 localsMap.put("eo", OConstants.ESPERANTO);
201 localsMap.put("es", OConstants.SPANISH);
202 localsMap.put("et", OConstants.ESTONIAN);
203 localsMap.put("eu", OConstants.BASQUE);
204 localsMap.put("fa", OConstants.PERSIAN);
205 localsMap.put("fi", OConstants.FINNISH);
206 localsMap.put("fj", OConstants.FIJI);
207 localsMap.put("fo", OConstants.FAROESE);
208 localsMap.put("fr", OConstants.FRENCH);
209 localsMap.put("fy", OConstants.FRISIAN);
210 localsMap.put("ga", OConstants.IRISH);
211 localsMap.put("gd", OConstants.SCOTS);
212 localsMap.put("gl", OConstants.GALICIAN);
213 localsMap.put("gn", OConstants.GUARANI);
214 localsMap.put("gu", OConstants.GUJARATI);
215 localsMap.put("ha", OConstants.HAUSA);
216 localsMap.put("he", OConstants.HEBREW);
217 localsMap.put("hi", OConstants.HINDI);
218 localsMap.put("hr", OConstants.CROATIAN);
219 localsMap.put("hu", OConstants.HUNGARIAN);
220 localsMap.put("hy", OConstants.ARMENIAN);
221 localsMap.put("ia", OConstants.INTERLINGUA);
222 localsMap.put("id", OConstants.INDONESIAN);
223 localsMap.put("ie", OConstants.INTERLINGUE);
224 localsMap.put("ik", OConstants.INUPIAK);
225 localsMap.put("is", OConstants.ICELANDIC);
226 localsMap.put("it", OConstants.ITALIAN);
227 localsMap.put("iu", OConstants.INUKTITUT);
228 localsMap.put("ja", OConstants.JAPANESE);
229 localsMap.put("jw", OConstants.JAVANESE);
230 localsMap.put("ka", OConstants.GEORGIAN);
231 localsMap.put("kk", OConstants.KAZAKH);
232 localsMap.put("kl", OConstants.GREENLANDIC);
233 localsMap.put("km", OConstants.CAMBODIAN);
234 localsMap.put("kn", OConstants.KANNADA);
235 localsMap.put("ko", OConstants.KOREAN);
236 localsMap.put("ks", OConstants.KASHMIRI);
237 localsMap.put("ku", OConstants.KURDISH);
238 localsMap.put("ky", OConstants.KIRGHIZ);
239 localsMap.put("la", OConstants.LATIN);
240 localsMap.put("ln", OConstants.LINGALA);
241 localsMap.put("lo", OConstants.LAOTHIAN);
242 localsMap.put("lt", OConstants.LITHUANIAN);
243 localsMap.put("lv", OConstants.LATVIAN);
244 localsMap.put("mg", OConstants.MALAGASY);
245 localsMap.put("mi", OConstants.MAORI);
246 localsMap.put("mk", OConstants.MACEDONIAN);
247 localsMap.put("ml", OConstants.MALAYALAM);
248 localsMap.put("mn", OConstants.MONGOLIAN);
249 localsMap.put("mo", OConstants.MOLDAVIAN);
250 localsMap.put("mr", OConstants.MARATHI);
251 localsMap.put("ms", OConstants.MALAY);
252 localsMap.put("mt", OConstants.MALTESE);
253 localsMap.put("my", OConstants.BURMESE);
254 localsMap.put("na", OConstants.NAURU);
255 localsMap.put("ne", OConstants.NEPALI);
256 localsMap.put("nl", OConstants.DUTCH);
257 localsMap.put("no", OConstants.NORWEGIAN);
258 localsMap.put("oc", OConstants.OCCITAN);
259 localsMap.put("om", OConstants.OROMO);
260 localsMap.put("or", OConstants.ORIYA);
261 localsMap.put("pa", OConstants.PUNJABI);
262 localsMap.put("pl", OConstants.POLISH);
263 localsMap.put("ps", OConstants.PASHTO);
264 localsMap.put("pt", OConstants.PORTUGUESE);
265 localsMap.put("qu", OConstants.QUECHUA);
266 localsMap.put("rm", OConstants.RHAETO_ROMANCE);
267 localsMap.put("rn", OConstants.KIRUNDI);
268 localsMap.put("ro", OConstants.ROMANIAN);
269 localsMap.put("ru", OConstants.RUSSIAN);
270 localsMap.put("rw", OConstants.KINYARWANDA);
271 localsMap.put("sa", OConstants.SANSKRIT);
272 localsMap.put("sd", OConstants.SINDHI);
273 localsMap.put("sg", OConstants.SANGHO);
274 localsMap.put("sh", OConstants.SERBO_CROATIAN);
275 localsMap.put("si", OConstants.SINHALESE);
276 localsMap.put("sk", OConstants.SLOVAK);
277 localsMap.put("sl", OConstants.SLOVENIAN);
278 localsMap.put("sm", OConstants.SAMOAN);
279 localsMap.put("sn", OConstants.SHONA);
280 localsMap.put("so", OConstants.SOMALI);
281 localsMap.put("sq", OConstants.ALBANIAN);
282 localsMap.put("sr", OConstants.SERBIAN);
283 localsMap.put("ss", OConstants.SISWATI);
284 localsMap.put("st", OConstants.SESOTHO);
285 localsMap.put("su", OConstants.SUNDANESE);
286 localsMap.put("sv", OConstants.SWEDISH);
287 localsMap.put("sw", OConstants.SWAHILI);
288 localsMap.put("ta", OConstants.TAMIL);
289 localsMap.put("te", OConstants.TELUGU);
290 localsMap.put("tg", OConstants.TAJIK);
291 localsMap.put("th", OConstants.THAI);
292 localsMap.put("ti", OConstants.TIGRINYA);
293 localsMap.put("tk", OConstants.TURKMEN);
294 localsMap.put("tl", OConstants.TAGALOG);
295 localsMap.put("tn", OConstants.SETSWANA);
296 localsMap.put("to", OConstants.TONGA);
297 localsMap.put("tr", OConstants.TURKISH);
298 localsMap.put("ts", OConstants.TSONGA);
299 localsMap.put("tt", OConstants.TATAR);
300 localsMap.put("tw", OConstants.TWI);
301 localsMap.put("ug", OConstants.UIGHUR);
302 localsMap.put("uk", OConstants.UKRAINIAN);
303 localsMap.put("ur", OConstants.URDU);
304 localsMap.put("uz", OConstants.UZBEK);
305 localsMap.put("vi", OConstants.VIETNAMESE);
306 localsMap.put("vo", OConstants.VOLAPUK);
307 localsMap.put("wo", OConstants.WOLOF);
308 localsMap.put("xh", OConstants.XHOSA);
309 localsMap.put("yi", OConstants.YIDDISH);
310 localsMap.put("yo", OConstants.YORUBA);
311 localsMap.put("za", OConstants.ZHUANG);
312 localsMap.put("zh", OConstants.CHINESE);
313 localsMap.put("zu", OConstants.ZULU);
314 }
315
316 /**
317 * Gets the respective datatype for the given datatype URI. If the URI
318 * is invalid, the method returns null.
319 *
320 * @param datatypeURI
321 * @return
322 * @deprecated use {@link DataType#getDataType} instead
323 */
324 @Deprecated
325 public static DataType getDataType(String datatypeURI) {
326 return datatypeMap.get(datatypeURI);
327 }
328
329 /**
330 * Gets the respective locale for the given 2 character language code.
331 * If the code doesn't match, the method returns null.
332 *
333 * @param languageCode
334 * @return
335 * @deprecated use {@link DataType#getLocale} instead
336 */
337 @Deprecated
338 public static Locale getLocale(String languageCode) {
339 if(languageCode == null) return null;
340 return localsMap.get(languageCode.toLowerCase());
341 }
342
343 /**
344 * This method by using the default name space and the provided
345 * ontology resource name, creates a new instance of URI. If
346 * isAnonymousResource is set to true, an anonymous URI only using the
347 * resource name is created.
348 *
349 * @param ontology
350 * @param aResourceName
351 * @param isAnonymousResource
352 * @return an instance of URI
353 * @deprecated - use {@link Ontology#createOURI(String)} and related methods
354 * instead.
355 */
356 @Deprecated
357 public static URI createURI(Ontology ontology, String aResourceName,
358 boolean isAnonymousResource) {
359 if(isAnonymousResource) {
360 return new URI(aResourceName, true);
361 }
362
363 String uri = ontology.getDefaultNameSpace() + aResourceName;
364 return new URI(uri, false);
365 }
366 }
|