// 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.ArrayList;
import java.util.List;
import ch.uzh.ifi.attempto.base.PredictiveParser;
import ch.uzh.ifi.attempto.base.TextContainer;
/**
* This factory class is used to generate different kind of statements (declarations, questions and
* comments).
*
* @author Tobias Kuhn
*/
public class StatementFactory {
private Ontology ontology;
StatementFactory(Ontology ontology) {
this.ontology = ontology;
}
/**
* Creates a new comment. Comments must be part of an article.
*
* @param text The comment text.
* @param article The article.
* @return The new comment.
*/
public Comment createComment(String text, Article article) {
Comment c = new Comment(text);
c.init(ontology, article);
return c;
}
/**
* Creates a new sentence object with the given article.
*
* @param serialized The serialized representation of the sentence.
* @param article The article.
* @return A new sentence object.
*/
public Sentence createSentence(String serialized, Article article) {
Sentence s = ontology.getEngine().createSentence(serialized);
s.init(ontology, article);
return s;
}
/**
* Extracts sentence objects out of a text container and/or a parser state.
*
* @param tc The text container.
* @param languageHandler The language handler.
* @param parser The parser object with the parsed text.
* @param article The article of the sentences.
* @return A list of sentences.
*/
public List<Sentence> extractSentences(LanguageHandler languageHandler, TextContainer tc,
PredictiveParser parser, Article article) {
List<Sentence> l = languageHandler.extractSentences(tc, parser);
for (Sentence s : l) {
s.init(ontology, article);
}
return l;
}
public List<Sentence> autodisambiguate(List<Sentence> sentences) {
List<Sentence> out = new ArrayList<>();
for (Sentence s : sentences) {
out.add(s.unambiguousCopyFor(s.getArticle(), 0));
}
return out;
}
/**
* Creates an assignment sentence.
*
* @param ind The individual.
* @param conc The concept.
* @return A new assignement sentence.
*/
public Sentence createAssignmentSentence(Individual ind, Concept conc) {
Sentence s = ontology.getEngine().createAssignmentSentence(ind, conc);
s.init(ontology, null);
return s;
}
/**
* Creates a hierarchy sentence.
*
* @param subConc The sub-concept.
* @param superConc The super-concept.
* @return A new hierarchy sentence.
*/
public Sentence createHierarchySentence(Concept subConc, Concept superConc) {
Sentence s = ontology.getEngine().createHierarchySentence(subConc, superConc);
s.init(ontology, null);
return s;
}
}