package doser.gerbilwrapper; // //import java.io.IOException; //import java.io.Reader; //import java.util.ArrayList; //import java.util.Collections; //import java.util.HashSet; //import java.util.LinkedList; //import java.util.List; //import java.util.Map; //import java.util.Set; // //import mpi.aida.Disambiguator; //import mpi.aida.access.DataAccess; //import mpi.aida.config.settings.DisambiguationSettings; //import mpi.aida.config.settings.PreparationSettings; //import mpi.aida.config.settings.disambiguation.CocktailPartyDisambiguationSettings; //import mpi.aida.config.settings.preparation.ManualPreparationSettings; //import mpi.aida.data.DisambiguationResults; //import mpi.aida.data.Entities; //import mpi.aida.data.EntityMetaData; //import mpi.aida.data.KBIdentifiedEntity; //import mpi.aida.data.PreparedInput; //import mpi.aida.data.ResultMention; //import mpi.aida.preparator.Preparator; // //import org.aksw.gerbil.transfer.nif.Document; //import org.aksw.gerbil.transfer.nif.Marking; //import org.aksw.gerbil.transfer.nif.TurtleNIFDocumentCreator; //import org.aksw.gerbil.transfer.nif.TurtleNIFDocumentParser; //import org.aksw.gerbil.transfer.nif.data.NamedEntity; //import org.aksw.gerbil.transfer.nif.data.SpanImpl; //import org.restlet.representation.Representation; //import org.restlet.resource.Post; //import org.restlet.resource.ServerResource; //import org.slf4j.Logger; //import org.slf4j.LoggerFactory; // //import doser.tools.indexcreation.WikiPediaUriConverter; // //public class AidaWrapper extends ServerResource { // // private static final Logger LOGGER = LoggerFactory // .getLogger(AidaWrapper.class); // // private TurtleNIFDocumentParser parser = new TurtleNIFDocumentParser(); // private TurtleNIFDocumentCreator creator = new TurtleNIFDocumentCreator(); // // @Post // public String accept(Representation request) { // // Reader inputReader; // try { // inputReader = request.getReader(); // } catch (IOException e) { // LOGGER.error("Exception while reading request.", e); // return ""; // } // // ... this is only the parsing of an incoming document // Document document; // try { // document = parser.getDocumentFromNIFReader(inputReader); // } catch (Exception e) { // LOGGER.error("Exception while reading request.", e); // return ""; // } // System.out.println("DocumentNr: " + document.getDocumentURI()); // String documentText = document.getText(); // StringBuilder markedText = new StringBuilder(); // // List<Marking> markings = document.getMarkings(); // List<OrderedSpanImpl> oMarkings = new LinkedList<OrderedSpanImpl>(); // for (Marking m : markings) { // SpanImpl impl = (SpanImpl) m; // oMarkings.add(new OrderedSpanImpl(impl.getStartPosition(), impl // .getLength())); // } // Collections.sort(oMarkings); // int lastPosition = 0; // for (OrderedSpanImpl mark : oMarkings) { // String sf = document.getText().substring(mark.getStartPosition(), // (mark.getStartPosition() + mark.getLength())); // if (lastPosition >= mark.getStartPosition()) { //// markedText.append(documentText.substring(mark.getStartPosition(), mark.getStartPosition() + mark.getLength())); // markedText.append(" [["); // markedText.append(sf.trim()); // markedText.append("]] "); // lastPosition = mark.getStartPosition() + mark.getLength(); // } else { // markedText.append(documentText.substring(lastPosition, // mark.getStartPosition())); // markedText.append(" [["); // markedText.append(sf.trim()); // markedText.append("]] "); // lastPosition = mark.getStartPosition() + mark.getLength(); // } // } // markedText.append(documentText.substring(lastPosition, // documentText.length())); // // String text = markedText.toString(); // text = text.replaceAll(" +", " "); // System.out.println(text); // PreparationSettings prepSettings = new ManualPreparationSettings(); // Preparator p = new Preparator(); // List<Marking> entities = new ArrayList<Marking>(markings.size()); // try { // PreparedInput input = p // .prepare(markedText.toString(), prepSettings); // // // Disambiguate the input with the graph coherence algorithm. // DisambiguationSettings disSettings = new CocktailPartyDisambiguationSettings(); // Disambiguator d = new Disambiguator(input, disSettings); // DisambiguationResults results = d.disambiguate(); // // Set<KBIdentifiedEntity> ents = new HashSet<KBIdentifiedEntity>(); // for (ResultMention rm : results.getResultMentions()) { // ents.add(results.getBestEntity(rm).getKbEntity()); // } // // Map<KBIdentifiedEntity, EntityMetaData> entitiesMetaData = DataAccess // .getEntitiesMetaData(ents); // // List<ResultMention> resList = results.getResultMentions(); // // if (oMarkings.size() > 0) { // try { // for (int i = 0; i < oMarkings.size(); ++i) { // SpanImpl span = (SpanImpl) oMarkings.get(i); // ResultMention mention = resList.get(i); // KBIdentifiedEntity ent = results.getBestEntity(mention) // .getKbEntity(); // if (!Entities.isOokbEntity(ent)) { // String url = entitiesMetaData.get(ent).getUrl(); // url = url.replaceAll( // "http://en.wikipedia.org/wiki/", ""); // url = "http://dbpedia.org/resource/" // + WikiPediaUriConverter // .createConformDBpediaUriEndingfromEncodedString(url); // entities.add(new NamedEntity(span // .getStartPosition(), span.getLength(), url)); // } // } // } catch (Exception e) { // e.printStackTrace(); // } // } // } catch (Exception e) { // e.printStackTrace(); // } // // ... this new list is added to the document and the document is // // send back to GERBIL // document.setMarkings(entities); // String nifDocument = creator.getDocumentAsNIFString(document); // return nifDocument; // } // // class OrderedSpanImpl extends SpanImpl implements // Comparable<OrderedSpanImpl> { // // public OrderedSpanImpl(int startPosition, int length) { // super(startPosition, length); // } // // @Override // public int compareTo(OrderedSpanImpl o) { // if (this.startPosition < o.getStartPosition()) { // return -1; // } else if (this.startPosition == o.getStartPosition()) { // return 0; // } else { // return 1; // } // } // } // // public static void main(String[] args) { // String documentText = "Georg Bush is the president of the United States."; // List<Marking> markings = new LinkedList<Marking>(); // markings.add(new SpanImpl(0, 13)); // markings.add(new SpanImpl(6, 4)); // markings.add(new SpanImpl(18, 9)); // markings.add(new SpanImpl(35, 13)); // // StringBuilder markedText = new StringBuilder(); // // int lastPosition = 0; // for (Marking mark : markings) { // SpanImpl span = (SpanImpl) mark; // String sf = documentText.substring(span.getStartPosition(), // (span.getStartPosition() + span.getLength())); // if (lastPosition >= span.getStartPosition()) { //// markedText.append(documentText.substring(span.getStartPosition(), span.getStartPosition() + span.getLength())); // markedText.append(" [["); // markedText.append(sf.trim()); // markedText.append("]] "); // lastPosition = span.getStartPosition() + span.getLength(); // } else { // markedText.append(documentText.substring(lastPosition, // span.getStartPosition())); // markedText.append(" [["); // markedText.append(sf.trim()); // markedText.append("]] "); // lastPosition = span.getStartPosition() + span.getLength(); // } // } // markedText.append(documentText.substring(lastPosition, // documentText.length())); // System.out.println(markedText.toString()); // } //}