001 // This file is part of AceWiki.
002 // Copyright 2008-2012, AceWiki developers.
003 //
004 // AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU
005 // Lesser General Public License as published by the Free Software Foundation, either version 3 of
006 // the License, or (at your option) any later version.
007 //
008 // AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
009 // even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
010 // Lesser General Public License for more details.
011 //
012 // You should have received a copy of the GNU Lesser General Public License along with AceWiki. If
013 // not, see http://www.gnu.org/licenses/.
014
015 package ch.uzh.ifi.attempto.acewiki.core;
016
017 /**
018 * This class represents an ontology element. Such ontology elements include individuals, concepts
019 * and relations. Each ontology element corresponds to a word which has one or more word forms.
020 * Word forms are identified by a number (the word form id).
021 *
022 * @author Tobias Kuhn
023 */
024 public interface OntologyElement {
025
026 /**
027 * Initializes the id of this ontology element.
028 *
029 * @param id The id.
030 */
031 public void initId(long id);
032
033 /**
034 * Initializes the ontology of this ontology element.
035 *
036 * @param ontology The ontology.
037 */
038 public void initOntology(Ontology ontology);
039
040 /**
041 * Initializes the article of this ontology element.
042 *
043 * @param article The article.
044 */
045 public void initArticle(Article article);
046
047 /**
048 * Returns the numerical id of this ontology element.
049 *
050 * @return The id.
051 */
052 public long getId();
053
054 /**
055 * Returns the ontology of this ontology element.
056 *
057 * @return The ontology.
058 */
059 public Ontology getOntology();
060
061 /**
062 * Returns the article of this ontology element.
063 *
064 * @return The article.
065 */
066 public Article getArticle();
067
068 /**
069 * Returns an array of all word forms.
070 *
071 * @return An array containing all word forms.
072 */
073 public String[] getWords();
074
075 /**
076 * Returns the word form for the given word form id.
077 *
078 * @param wordFormID The word form id.
079 * @return The word form.
080 */
081 public String getWord(int wordFormID);
082
083 /**
084 * Returns the main word form.
085 *
086 * @return The word form.
087 */
088 public String getWord();
089
090 /**
091 * Returns the headwords that are used in the GUI (title, index, etc) to refer to this ontology
092 * element. At least one headword is required.
093 *
094 * @return The headwords.
095 */
096 public String[] getHeadwords();
097
098 /**
099 * Returns the word type as it is used internally.
100 *
101 * @return The internal word type.
102 */
103 public String getInternalType();
104
105 /**
106 * Sets the word forms.
107 *
108 * @param serializedWords The serialized word forms to be set.
109 */
110 public void setWords(String serializedWords);
111
112 /**
113 * Returns the word forms of this ontology element in a serialized form.
114 *
115 * @return The serialized word forms.
116 */
117 public String serializeWords();
118
119 /**
120 * Returns the word type as it is shown to the user.
121 *
122 * @return The word type.
123 */
124 public String getType();
125
126 }