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 import java.util.List; 018 019 /** 020 * This is the main interface for the AceWiki behavior. 021 * 022 * @author Tobias Kuhn 023 */ 024 public interface AceWikiEngine { 025 026 /** 027 * This is the first method to be called and provides the ontology object. 028 * 029 * @param ontology The ontology object. 030 */ 031 public void init(Ontology ontology); 032 033 /** 034 * Returns the language handler for the given language. 035 * 036 * @param language The name of the language. 037 * @return The language handler for the given language. 038 */ 039 public LanguageHandler getLanguageHandler(String language); 040 041 /** 042 * Returns the available languages. The first language is considered the default one, which 043 * means that at least one language must be returned. 044 * 045 * @return An array of language names. 046 */ 047 public String[] getLanguages(); 048 049 /** 050 * Returns the lexical types, as defined by the respective ontology element types. 051 * 052 * @return The lexical types. 053 */ 054 public String[] getLexicalTypes(); 055 056 /** 057 * Returns the reasoner. 058 * 059 * @return The reasoner. 060 */ 061 public AceWikiReasoner getReasoner(); 062 063 /** 064 * Returns the word index. 065 * 066 * @return The word index. 067 */ 068 public WordIndex getWordIndex(); 069 070 /** 071 * Returns a list of exporters to export the wiki content in different formats. 072 * 073 * @return A list of ontology exporters. 074 */ 075 public List<OntologyExporter> getExporters(); 076 077 /** 078 * Creates a new ontology element for the given lexical type. 079 * 080 * @param type The lexical type. 081 * @return A new ontology element. 082 */ 083 public OntologyElement createOntologyElement(String type); 084 085 /** 086 * Creates a new sentence object based on the given serialization. 087 * 088 * @param serialized The serialized representation of the sentence. 089 * @return A new sentence object. 090 */ 091 public Sentence createSentence(String serialized); 092 093 /** 094 * Creates a new assignement sentence that assigns a given individual to a given concept. 095 * 096 * @param ind The individual. 097 * @param concept The concept. 098 * @return A new sentence representing the assignment. 099 */ 100 public Sentence createAssignmentSentence(Individual ind, Concept concept); 101 102 /** 103 * Creates a new hierarchy sentence that states that a certain concept is a sub-concept of 104 * another concept. 105 * 106 * @param subConcept The sub-concept. 107 * @param superConcept The super-concept. 108 * @return A new sentence representing the assignment. 109 */ 110 public Sentence createHierarchySentence(Concept subConcept, Concept superConcept); 111 112 }