001package org.cleartk.clearnlp;
002
003import java.util.List;
004
005import org.apache.uima.jcas.JCas;
006import org.apache.uima.jcas.cas.FSArray;
007import org.cleartk.srl.type.Predicate;
008import org.cleartk.srl.type.SemanticArgument;
009import org.cleartk.token.type.Token;
010import org.apache.uima.fit.util.FSCollectionFactory;
011
012import com.google.common.annotations.Beta;
013
014/**
015 * Defines common set of token data type operations used to convert output from semantic role labelers into
016 * the annotations and properties for {@link SemanticArgument} and {@link Predicate}
017 * 
018 * @author Lee Becker
019 *
020 */
021@Beta
022public class CleartkSemanticRoleOps implements SemanticRoleOps<SemanticArgument, Token, Predicate, Token>{
023
024  @Override
025  public SemanticArgument createArgument(JCas jCas, Token span, String label) {
026    SemanticArgument argument = new SemanticArgument(jCas, span.getBegin(), span.getEnd());
027    argument.setLabel(label);
028    argument.addToIndexes();
029    return argument;
030  }
031
032  @Override
033  public Predicate createPredicate(JCas jCas, Token span, String rolesetId) {
034    Predicate pred = new Predicate(jCas, span.getBegin(), span.getEnd());
035    pred.setFrameSet(rolesetId);
036    pred.addToIndexes();
037    return pred;
038  }
039
040  @Override
041  public void setPredicateArguments(JCas jCas, Predicate predicate, List<SemanticArgument> arguments) {
042    predicate.setArguments(new FSArray(jCas, arguments.size()));
043    FSCollectionFactory.fillArrayFS(predicate.getArguments(), arguments);
044  }
045
046}