// 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; import java.util.List; import java.util.Map; // TODO split this interface into several interfaces: // - AceWikiReasoner // - AssignmentsReasoner // - HierarchyReasoner // - ConceptSatisfiabilityReasoner // - QuestionReasoner /** * This is the reasoner interface for AceWiki. * * @author Tobias Kuhn */ public interface AceWikiReasoner { /** * This is the first method to be called and provides the ontology object. * * @param ontology The ontology object. */ public void init(Ontology ontology); /** * Should return the name of the reasoner. * * @return The name of the reasoner. */ public String getReasonerName(); /** * Should return the version of the reasoner. * * @return The version of the reasoner. */ public String getReasonerVersion(); /** * Should return the type of the reasoner. * * @return The reasoner type. */ public String getReasonerType(); /** * This method can return a map of name/value pairs with information about the reasoner. * To retain the insertion order, a map implementation like LinkedHashMap should be used. * It is allowed to return null for no information. * * @return A map of name/value pairs with reasoner information. */ public Map<String, String> getInfo(); /** * Loads the reasoner or reasoner interface. */ public void load(); /** * Loads the given ontology element. The method flushElements is called after each * sequence of one or more loadElement-calls. * * @param element The ontology element. */ public void loadElement(OntologyElement element); /** * Unloads the given ontology element. The method flushElements is called after each * sequence of one or more unloadElement-calls. * * @param element The ontology element. */ public void unloadElement(OntologyElement element); /** * This method can finalize the loading or unloading of elements. It is always called * after a sequence of one or more loadElement- or unloadElement-calls. */ public void flushElements(); /** * Should return all concepts the given individual belongs to. * * @param ind The individual. * @return A list of all concepts of the individual. */ public List<Concept> getConcepts(Individual ind); /** * Should return all individuals that belong to the given concept. * * @param concept The concept. * @return A list of all individuals of the concept. */ public List<Individual> getIndividuals(Concept concept); /** * Should return all super-concepts of the given concept. * * @param concept The concept for which all super-concepts should be returned. * @return A list of all super-concepts. */ public List<Concept> getSuperConcepts(Concept concept); /** * Should return all the sub-concepts of the given concept. * * @param concept The concept for which all sub-concepts should be returned. * @return A list of all sub-concepts. */ public List<Concept> getSubConcepts(Concept concept); /** * Should return a list of ontology elements that answer the given question. * * @param question The question to be answered. * @return A list of ontology elements that are the answer to the question. */ public List<AnswerElement> getAnswer(Question question); /** * Should return true if the ontology is consistent. * * @return true if the ontology is consistent. */ public boolean isConsistent(); /** * Should check if the given concept is satisfiable. * * @param concept The concept. * @return true if the concept is satisfiable. */ public boolean isSatisfiable(Concept concept); /** * Loads the given sentence. * * @param sentence The sentence. */ public void loadSentence(Sentence sentence); /** * Unloads the given sentence. * * @param sentence The sentence. */ public void unloadSentence(Sentence sentence); }