// This file is part of AceWiki.
// Copyright 2008-2013, AceWiki developers.
//
// AceWiki is free software: you can redistribute it and/or modify it under the terms of the GNU
// Lesser General Public License as published by the Free Software Foundation, either version 3 of
// the License, or (at your option) any later version.
//
// AceWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
// even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License along with AceWiki. If
// not, see http://www.gnu.org/licenses/.
package ch.uzh.ifi.attempto.acewiki.core;
/**
* This class represents an ontology element. Such ontology elements include individuals, concepts
* and relations, and meta-elements such as topics.
*
* @author Tobias Kuhn
*/
public interface OntologyElement {
/**
* Initializes the id of this ontology element.
*
* @param id The id.
*/
public void initId(long id);
/**
* Initializes the ontology of this ontology element.
*
* @param ontology The ontology.
*/
public void initOntology(Ontology ontology);
/**
* Initializes the article of this ontology element.
*
* @param article The article.
*/
public void initArticle(Article article);
/**
* Returns the numerical id of this ontology element.
*
* @return The id.
*/
public long getId();
/**
* Returns the ontology of this ontology element.
*
* @return The ontology.
*/
public Ontology getOntology();
/**
* Returns the article of this ontology element.
*
* @return The article.
*/
public Article getArticle();
/**
* Returns an array of all word forms.
*
* @return An array containing all word forms.
*/
public String[] getWords();
/**
* Returns the word form for the given word form id.
*
* @param wordFormID The word form id.
* @return The word form.
*/
public String getWord(int wordFormID);
/**
* Returns the main word form.
*
* @return The word form.
*/
public String getWord();
/**
* Returns the headwords that are used in the GUI (title, index, etc) to refer to this ontology
* element. At least one headword is required.
*
* @return The headwords.
*/
public String[] getHeadwords();
/**
* Returns the word type as it is used internally.
*
* @return The internal word type.
*/
public String getInternalType();
/**
* Sets the word forms.
*
* @param serializedWords The serialized word forms to be set.
*/
public void setWords(String serializedWords);
/**
* Returns the word forms of this ontology element in a serialized form.
*
* @return The serialized word forms.
*/
public String serializeWords();
/**
* Returns the word type as it is shown to the user.
*
* @return The word type.
*/
public String getType();
}