Apache UIMA Tika Annotator software component
Copyright 2009-2011 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

This product includes portions of Apache Tika, which includes
software developed by the following copyright owners: 

    - Copyright (c) Ian F. Darwin 1986, 1987, 1989, 1990, 1991, 1992, 1994, 1995.
      Software written by Ian F. Darwin and others; maintained 1994- Christos Zoulas.

    - Copyright (c) 1995-2009 International Business Machines Corporation and others

    - Copyright (c) 2000-2005 INRIA, France Telecom

    - Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
    
    - Copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/>.

    - Copyright 2001-2003 (c) World Wide Web Consortium (Massachusetts Institute
      of Technology, European Research Consortium for Informatics and Mathematics,
      Keio University)

    