edu.cmu.minorthird.text
Class NestedTextLabels

java.lang.Object
  extended by edu.cmu.minorthird.text.NestedTextLabels
All Implemented Interfaces:
MonotonicTextLabels, TextLabels, Visible

public class NestedTextLabels
extends java.lang.Object
implements MonotonicTextLabels, Visible

A TextLabels which is defined by two TextLabels's.

Operationally, new assertions are passed to the 'outer' TextLabels. Assertions about property definitions from the outer TextLabels shadow assertions made in the inner TextLabels, and other assertions are added to assertions in the inner TextLabels.

Pragmatically, this means that if you create a NestedTextLabels from outerLabels and innerLabels, where outerLabels is empty, the NestedTextLabels will initially look like innerLabels. But if you modify it, innerLabels will not be changed, so you can at any point easily revert to the old innerLabels TextLabels.

Author:
William Cohen

Constructor Summary
NestedTextLabels(MonotonicTextLabels outer, TextLabels inner)
          Create a NestedTextLabels.
NestedTextLabels(TextLabels inner)
          Create a NestedTextLabels with an empty outer labeling.
 
Method Summary
 void addToType(Span span, java.lang.String type)
          Assert that a span has a given type.
 void addToType(Span span, java.lang.String type, Details details)
          Assert that a span has a given type, and associate that assertion with some detailed information.
 void annotateWith(java.lang.String annotationType, java.lang.String fileToLoad)
          Annotate labels with annotator named fileToLoad
 java.util.Iterator<Span> closureIterator(java.lang.String type)
          Returns the spans s for in the given type is 'closed'.
 java.util.Iterator<Span> closureIterator(java.lang.String type, java.lang.String documentId)
          Returns the spans S inside the given document in which the given type is 'closed'.
 void declareType(java.lang.String type)
          Declare a new type, without asserting any spans as members.
 void defineDictionary(java.lang.String dictName, java.util.List<java.lang.String> fileNames, boolean ignoreCase)
          Associate a dictionary from this file
 void defineDictionary(java.lang.String dictName, java.util.Set<java.lang.String> dict)
          Associate a dictionary with this labeling.
 void defineTrie(java.util.List<java.lang.String> phraseList)
          Define a trie
 AnnotatorLoader getAnnotatorLoader()
          Get the current AnnotatorLoader.
 Details getDetails(Span span, java.lang.String type)
          Retrieve additional information associated with an assertion 'span S has type T'.
 java.lang.String getProperty(Span span, java.lang.String prop)
          Get the value of the named property which has been associated with this Span.
 java.lang.String getProperty(Token token, java.lang.String prop)
          Get the property value associated with this TextToken.
 java.util.Set<java.lang.String> getSpanProperties()
          Get a set of all previously-defined properties.
 java.util.Iterator<Span> getSpansWithProperty(java.lang.String prop)
          Find all spans that have a non-null value for this property.
 java.util.Iterator<Span> getSpansWithProperty(java.lang.String prop, java.lang.String id)
          Find all spans in the named document that have a non-null value for this property.
 TextBase getTextBase()
          Returns the TextBase which is annotated by this TextLabels, or null if that isn't set yet.
 java.util.Set<java.lang.String> getTokenProperties()
          Get a set of all properties.
 Trie getTrie()
          Return a trie if defined
 java.util.Set<java.lang.String> getTypes()
          Return a set of all type names.
 java.util.Set<Span> getTypeSet(java.lang.String type, java.lang.String documentId)
          Return the Set of all Spans with a given type in a given document
 boolean hasDictionary(java.lang.String dictionary)
           
 boolean hasType(Span span, java.lang.String type)
          Query if a span has a given type.
 boolean inDict(Token token, java.lang.String dictionary)
          Returns true if the value of the Token is in the named dictionary.
 java.util.Iterator<Span> instanceIterator(java.lang.String type)
          Get all instances of a given type.
 java.util.Iterator<Span> instanceIterator(java.lang.String type, java.lang.String documentId)
          Get all instances of a given type.
 boolean isAnnotatedBy(java.lang.String s)
          See if the TextLabels contains a particular type of annotation
 boolean isType(java.lang.String type)
          True if the given string names a type.
 void require(java.lang.String annotationType, java.lang.String fileToLoad)
          Ensure that this TextLabels contains a particular type of annotation.
 void require(java.lang.String annotationType, java.lang.String fileToLoad, AnnotatorLoader loader)
          Ensure that this TextLabels contains a particular type of annotation.
 void setAnnotatedBy(java.lang.String s)
          Record that this TextLabels was annotated with some type of annotation.
 void setAnnotatorLoader(AnnotatorLoader newLoader)
          Specify the AnnotatorLoader used to find Annotations when a 'require' call is made.
 void setProperty(Span span, java.lang.String prop, java.lang.String value)
          Assert that Span span has the given value of the given property
 void setProperty(Span span, java.lang.String prop, java.lang.String value, Details details)
          Assert that Span span has the given value of the given property, and associate that with some detailed information
 void setProperty(Token token, java.lang.String prop, java.lang.String value)
          Assert that TextToken textToken has the given value of the given property.
 void setProperty(Token token, java.lang.String prop, java.lang.String value, Details details)
          Assert that a token has a given property value, and associate that with some detailed information.
 void shadowProperty(java.lang.String prop)
          Effectively, remove the property from this TextLabels.
 java.lang.String showTokenProp(TextBase base, java.lang.String prop)
          For debugging.
 Viewer toGUI()
          Create a view of this object
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

NestedTextLabels

public NestedTextLabels(MonotonicTextLabels outer,
                        TextLabels inner)
Create a NestedTextLabels.


NestedTextLabels

public NestedTextLabels(TextLabels inner)
Create a NestedTextLabels with an empty outer labeling.

Method Detail

getTextBase

public TextBase getTextBase()
Description copied from interface: TextLabels
Returns the TextBase which is annotated by this TextLabels, or null if that isn't set yet.

Specified by:
getTextBase in interface TextLabels

hasDictionary

public boolean hasDictionary(java.lang.String dictionary)
Specified by:
hasDictionary in interface TextLabels
Parameters:
dictionary - String name of the dictionary
Returns:
true if the dictionary is defined for these labels

isAnnotatedBy

public boolean isAnnotatedBy(java.lang.String s)
Description copied from interface: TextLabels
See if the TextLabels contains a particular type of annotation

Specified by:
isAnnotatedBy in interface TextLabels

setAnnotatedBy

public void setAnnotatedBy(java.lang.String s)
Description copied from interface: MonotonicTextLabels
Record that this TextLabels was annotated with some type of annotation.

Specified by:
setAnnotatedBy in interface MonotonicTextLabels

setAnnotatorLoader

public void setAnnotatorLoader(AnnotatorLoader newLoader)
Description copied from interface: MonotonicTextLabels
Specify the AnnotatorLoader used to find Annotations when a 'require' call is made.

Specified by:
setAnnotatorLoader in interface MonotonicTextLabels

getAnnotatorLoader

public AnnotatorLoader getAnnotatorLoader()
Description copied from interface: MonotonicTextLabels
Get the current AnnotatorLoader.

Specified by:
getAnnotatorLoader in interface MonotonicTextLabels

defineDictionary

public void defineDictionary(java.lang.String dictName,
                             java.util.Set<java.lang.String> dict)
Description copied from interface: MonotonicTextLabels
Associate a dictionary with this labeling.

Specified by:
defineDictionary in interface MonotonicTextLabels

defineDictionary

public void defineDictionary(java.lang.String dictName,
                             java.util.List<java.lang.String> fileNames,
                             boolean ignoreCase)
Associate a dictionary from this file

Specified by:
defineDictionary in interface MonotonicTextLabels

getTrie

public Trie getTrie()
Return a trie if defined

Specified by:
getTrie in interface MonotonicTextLabels

defineTrie

public void defineTrie(java.util.List<java.lang.String> phraseList)
Define a trie

Specified by:
defineTrie in interface MonotonicTextLabels

inDict

public boolean inDict(Token token,
                      java.lang.String dictionary)
Description copied from interface: TextLabels
Returns true if the value of the Token is in the named dictionary.

Specified by:
inDict in interface TextLabels

shadowProperty

public void shadowProperty(java.lang.String prop)
Effectively, remove the property from this TextLabels. Specifically ensure that for this property (a) calls to setProperty do nothing but cause a warning (b) calls to getProperty return null.


setProperty

public void setProperty(Token token,
                        java.lang.String prop,
                        java.lang.String value)
Description copied from interface: MonotonicTextLabels
Assert that TextToken textToken has the given value of the given property.

Specified by:
setProperty in interface MonotonicTextLabels

setProperty

public void setProperty(Token token,
                        java.lang.String prop,
                        java.lang.String value,
                        Details details)
Description copied from interface: MonotonicTextLabels
Assert that a token has a given property value, and associate that with some detailed information. If details==null, this should have the same effect as setProperty(span,prop,value).

Specified by:
setProperty in interface MonotonicTextLabels

getProperty

public java.lang.String getProperty(Token token,
                                    java.lang.String prop)
Description copied from interface: TextLabels
Get the property value associated with this TextToken.

Specified by:
getProperty in interface TextLabels

getSpansWithProperty

public java.util.Iterator<Span> getSpansWithProperty(java.lang.String prop)
Description copied from interface: TextLabels
Find all spans that have a non-null value for this property.

Specified by:
getSpansWithProperty in interface TextLabels

getSpansWithProperty

public java.util.Iterator<Span> getSpansWithProperty(java.lang.String prop,
                                                     java.lang.String id)
Description copied from interface: TextLabels
Find all spans in the named document that have a non-null value for this property.

Specified by:
getSpansWithProperty in interface TextLabels

getTokenProperties

public java.util.Set<java.lang.String> getTokenProperties()
Description copied from interface: TextLabels
Get a set of all properties.

Specified by:
getTokenProperties in interface TextLabels

setProperty

public void setProperty(Span span,
                        java.lang.String prop,
                        java.lang.String value)
Description copied from interface: MonotonicTextLabels
Assert that Span span has the given value of the given property

Specified by:
setProperty in interface MonotonicTextLabels

setProperty

public void setProperty(Span span,
                        java.lang.String prop,
                        java.lang.String value,
                        Details details)
Description copied from interface: MonotonicTextLabels
Assert that Span span has the given value of the given property, and associate that with some detailed information

Specified by:
setProperty in interface MonotonicTextLabels

getProperty

public java.lang.String getProperty(Span span,
                                    java.lang.String prop)
Description copied from interface: TextLabels
Get the value of the named property which has been associated with this Span.

Specified by:
getProperty in interface TextLabels

getSpanProperties

public java.util.Set<java.lang.String> getSpanProperties()
Description copied from interface: TextLabels
Get a set of all previously-defined properties.

Specified by:
getSpanProperties in interface TextLabels

addToType

public void addToType(Span span,
                      java.lang.String type)
Description copied from interface: MonotonicTextLabels
Assert that a span has a given type.

Specified by:
addToType in interface MonotonicTextLabels

addToType

public void addToType(Span span,
                      java.lang.String type,
                      Details details)
Description copied from interface: MonotonicTextLabels
Assert that a span has a given type, and associate that assertion with some detailed information. If details==null, this should have the same effect as addToType(span,type).

Specified by:
addToType in interface MonotonicTextLabels

hasType

public boolean hasType(Span span,
                       java.lang.String type)
Description copied from interface: TextLabels
Query if a span has a given type.

Specified by:
hasType in interface TextLabels

instanceIterator

public java.util.Iterator<Span> instanceIterator(java.lang.String type)
Description copied from interface: TextLabels
Get all instances of a given type.

Specified by:
instanceIterator in interface TextLabels

instanceIterator

public java.util.Iterator<Span> instanceIterator(java.lang.String type,
                                                 java.lang.String documentId)
Description copied from interface: TextLabels
Get all instances of a given type.

Specified by:
instanceIterator in interface TextLabels

closureIterator

public java.util.Iterator<Span> closureIterator(java.lang.String type)
Description copied from interface: TextLabels
Returns the spans s for in the given type is 'closed'. If type T is close inside S, this means that one can apply the 'closed world assumption' and assume that the known set of spans of type T is complete, except for areas of the text that are not contained by any closure span S.

Specified by:
closureIterator in interface TextLabels

closureIterator

public java.util.Iterator<Span> closureIterator(java.lang.String type,
                                                java.lang.String documentId)
Description copied from interface: TextLabels
Returns the spans S inside the given document in which the given type is 'closed'.

Specified by:
closureIterator in interface TextLabels

getTypes

public java.util.Set<java.lang.String> getTypes()
Description copied from interface: TextLabels
Return a set of all type names.

Specified by:
getTypes in interface TextLabels

getTypeSet

public java.util.Set<Span> getTypeSet(java.lang.String type,
                                      java.lang.String documentId)
Description copied from interface: TextLabels
Return the Set of all Spans with a given type in a given document

Specified by:
getTypeSet in interface TextLabels

isType

public boolean isType(java.lang.String type)
Description copied from interface: TextLabels
True if the given string names a type.

Specified by:
isType in interface TextLabels

declareType

public void declareType(java.lang.String type)
Description copied from interface: MonotonicTextLabels
Declare a new type, without asserting any spans as members.

Specified by:
declareType in interface MonotonicTextLabels

getDetails

public Details getDetails(Span span,
                          java.lang.String type)
Description copied from interface: TextLabels
Retrieve additional information associated with an assertion 'span S has type T'. Returns null if the span doesn't have the stated type.

Specified by:
getDetails in interface TextLabels

require

public void require(java.lang.String annotationType,
                    java.lang.String fileToLoad)
Description copied from interface: TextLabels
Ensure that this TextLabels contains a particular type of annotation. If the annotation is not present, then either load it (if possible) or throw an error.

Specified by:
require in interface TextLabels

require

public void require(java.lang.String annotationType,
                    java.lang.String fileToLoad,
                    AnnotatorLoader loader)
Description copied from interface: TextLabels
Ensure that this TextLabels contains a particular type of annotation. If the annotation is not present, then either load it (if possible) or throw an error. Use the provided annotatorLoader to find annotators rather than the default one.

Specified by:
require in interface TextLabels

annotateWith

public void annotateWith(java.lang.String annotationType,
                         java.lang.String fileToLoad)
Annotate labels with annotator named fileToLoad

Specified by:
annotateWith in interface TextLabels

showTokenProp

public java.lang.String showTokenProp(TextBase base,
                                      java.lang.String prop)
Description copied from interface: TextLabels
For debugging. Returns a dump of all strings that have tokens with the given property.

Specified by:
showTokenProp in interface TextLabels

toGUI

public Viewer toGUI()
Description copied from interface: Visible
Create a view of this object

Specified by:
toGUI in interface Visible

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object