001 /*
002 * The contents of this file are subject to the Mozilla Public
003 * License Version 1.1 (the "License"); you may not use this file
004 * except in compliance with the License. You may obtain a copy of
005 * the License at http://www.mozilla.org/MPL/
006 *
007 * Software distributed under the License is distributed on an "AS
008 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
009 * implied. See the License for the specific language governing
010 * rights and limitations under the License.
011 *
012 * The Original Code is Knowtator.
013 *
014 * The Initial Developer of the Original Code is University of Colorado.
015 * Copyright (C) 2005 - 2008. All Rights Reserved.
016 *
017 * Knowtator was developed by the Center for Computational Pharmacology
018 * (http://compbio.uchcs.edu) at the University of Colorado Health
019 * Sciences Center School of Medicine with support from the National
020 * Library of Medicine.
021 *
022 * Current information about Knowtator can be obtained at
023 * http://knowtator.sourceforge.net/
024 *
025 * Contributor(s):
026 * Philip V. Ogren <philip@ogren.info> (Original Author)
027 */
028
029 package edu.uchsc.ccp.knowtator.textsource;
030
031 import java.util.List;
032
033 import edu.stanford.smi.protege.model.Instance;
034 import edu.stanford.smi.protege.model.KnowledgeBase;
035 import edu.uchsc.ccp.knowtator.Span;
036
037 /**
038 * We recommend that instead of implementing this interface that you extend
039 * DefaultTextSource. If you decide to implement this interface directly we
040 * encourage you to look at the code for DefaultTextSource to help you.
041 */
042
043 public interface TextSource {
044 /**
045 * @return the text associated with the TextSource. The text returned will
046 * be shown in the Knowtator text viewer.
047 */
048 public String getText() throws TextSourceAccessException;
049
050 /**
051 * @return the name associated with the TextSource. This should be thought
052 * of as an identifier for the TextSource. Implementations of
053 * TextSourceCollection should make sure that name collisions do not
054 * occur.
055 */
056
057 public String getName();
058
059 /**
060 * Every implementation of TextSource corresponds to a subclass of
061 * "knowtator text source" which is a class defined knowtator.pprj (which is
062 * the project that must be included in order to run Knowtator.)
063 */
064
065 public String getProtegeClsName();
066
067 /**
068 * This is the generic method for creating a "knowtator text source"
069 * instance from a TextSource object. All instances of
070 * "knowtator text source" can be created in a very simplistic way from a
071 * TextSource object. An instance of the class specified by the name
072 * returned by getProtegeClsName() is created with the name returned by
073 * getName()
074 *
075 * @return may return null if textSource.getProtegeClsName() is not a known
076 * cls name. Otherwise the new Protege instance that has been
077 * created.
078 */
079 public Instance createTextSourceInstance(KnowledgeBase knowledgeBase);
080
081 public int hashCode();
082
083 public boolean equals(Object object);
084
085 public String toString();
086
087 /**
088 * Returns the text corresponding to the spans passed in. Typically, a
089 * single span will be passed in and the text corresponding to that text
090 * will be returned. If there are multiple spans, some extra decisions need
091 * to be made such as what the delimiter between spans will be and whether
092 * the spans should be sorted first.
093 */
094 public String getText(List<Span> spans) throws TextSourceAccessException;
095
096 }