/* Relation.java - list of semantic relations used in all wiktionaries. * * Copyright (c) 2009 Andrew Krizhanovsky <andrew.krizhanovsky at gmail.com> * Distributed under GNU General Public License. */ package wordik.magneto.constant; import java.util.Set; import java.util.Map; import java.util.HashMap; import java.util.Collection; /** Strictly defined names of semantic relations * used in all wiktionaries. */ public class Relation { /** Semantic relation name, e.g. synonymy. */ private final String name; @Override public String toString() { return name; } /* Set helps to check the presence of elements */ private static Map<String, Relation> name2relation = new HashMap<String, Relation>(); //private static Set<String> name_set = new HashSet<String>(); private Relation(String _name) { name = _name; name2relation.put(_name, this); } /** Checks weather exists a semantic relation by its name. */ public static boolean has(String name) { return name2relation.containsKey(name); } /** Gets semantic relation by its name */ public static Relation get(String name) { return name2relation.get(name); } /** Counts number of relations. */ public static int size() { return name2relation.size(); } /** Gets all relations. */ public static Collection<Relation> getAllRelations() { return name2relation.values(); } /** Gets all relations (as Array[]). * Rem: We are waiting a marvellous day when JavaFX will support Collection<>. * Then this function will be deleted. */ public static Relation[] getAllRelationsOrderedArray() { return RELATION_ORDERED_ARRAY; //return (Relation[])name2relation.values().toArray(NULL_RELATION_ARRAY); } /** Gets all names of semantic relations. */ public static Set<String> getAllRelationNames() { return name2relation.keySet(); } //public static final Relation unknown = new Relation("unknown"); /** The relation is unknown :( */ public static final Relation synonymy = new Relation("synonyms"); public static final Relation antonymy = new Relation("antonyms"); public static final Relation hypernymy = new Relation("hypernyms"); public static final Relation hyponymy = new Relation("hyponyms"); public static final Relation holonymy = new Relation("holonyms"); public static final Relation meronymy = new Relation("meronyms"); public static final Relation troponymy = new Relation("troponyms"); public static final Relation coordinate_term = new Relation("coordinate terms"); //public static final Relation otherwise_related = new Relation("see also"); // See also //private final static Relation[] NULL_RELATION_ARRAY = new Relation[0]; private final static Relation[] RELATION_ORDERED_ARRAY = { Relation.synonymy, Relation.antonymy, Relation.hypernymy, Relation.hyponymy, Relation.holonymy, Relation.meronymy, Relation.troponymy, Relation.coordinate_term, //Relation.otherwise_related }; }