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