001 // This file is part of the Attempto Java Packages.
002 // Copyright 2008, Attempto Group, University of Zurich (see http://attempto.ifi.uzh.ch).
003 //
004 // The Attempto Java Packages is free software: you can redistribute it and/or modify it under the
005 // terms of the GNU Lesser General Public License as published by the Free Software Foundation,
006 // either version 3 of the License, or (at your option) any later version.
007 //
008 // The Attempto Java Packages is distributed in the hope that it will be useful, but WITHOUT ANY
009 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
010 // PURPOSE. See the GNU Lesser General Public License for more details.
011 //
012 // You should have received a copy of the GNU Lesser General Public License along with the Attempto
013 // Java Packages. If not, see http://www.gnu.org/licenses/.
014
015 package ch.uzh.ifi.attempto.acewiki.core.text;
016
017 import ch.uzh.ifi.attempto.acewiki.core.ontology.Individual;
018 import ch.uzh.ifi.attempto.acewiki.core.ontology.NounConcept;
019 import ch.uzh.ifi.attempto.acewiki.core.ontology.OfRole;
020 import ch.uzh.ifi.attempto.acewiki.core.ontology.OntologyElement;
021 import ch.uzh.ifi.attempto.acewiki.core.ontology.TrAdjRole;
022 import ch.uzh.ifi.attempto.acewiki.core.ontology.VerbRole;
023 import ch.uzh.ifi.attempto.preditor.text.TextElement;
024
025 /**
026 * This factory class creates text element objects on the basis of ontology elements.
027 *
028 * @author Tobias Kuhn
029 */
030 public class TextElemFactory {
031
032 private TextElemFactory() {} // no instances allowed
033
034 /**
035 * Creates a new text element for the given word form (by word form id) of the given
036 * ontology element.
037 *
038 * @param el The ontology element.
039 * @param wordNumber The word form id.
040 * @return The newly created text element.
041 */
042 public static OntologyTextElement createTextElement(OntologyElement el, int wordNumber) {
043 if (el instanceof NounConcept) {
044 if (wordNumber == 0) {
045 return new NounTextElem((NounConcept) el);
046 } else if (wordNumber == 1) {
047 return new OntoTextElem(el, 1, "NOUNPL");
048 }
049 } else if (el instanceof Individual) {
050 return new OntoTextElem(el, wordNumber, "PROPERNAME");
051 } else if (el instanceof VerbRole) {
052 if (wordNumber == 0) {
053 return new OntoTextElem(el, 0, "VERB");
054 } else if (wordNumber == 1) {
055 return new OntoTextElem(el, 1, "VERBINF");
056 } else if (wordNumber == 2) {
057 return new OntoTextElem(el, 2, "PVERB");
058 }
059 } else if (el instanceof OfRole) {
060 if (wordNumber == 0) return new OntoTextElem(el, 0, "NOUNOF");
061 } else if (el instanceof TrAdjRole) {
062 if (wordNumber == 0) return new OntoTextElem(el, 0, "TRADJ");
063 }
064 return null;
065 }
066
067 /**
068 * Creates a new text element for the default word form of the given ontology element.
069 *
070 * @param el The ontology element.
071 * @return The newly created text element.
072 */
073 public static TextElement createTextElement(OntologyElement el) {
074 return createTextElement(el, 0);
075 }
076
077 }