<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->  
<bookinfo>

    <releaseinfo>Version 2.3.0-incubating</releaseinfo>

    <productname>UIMA-AS</productname>

    <authorgroup>
      <corpauthor>Written and maintained by the Apache UIMA Development Community</corpauthor>
    </authorgroup>

 <!--
    <mediaobject>
      <imageobject>
        <imagedata fileref="images/UIMAlogoLarge.png"/>
      </imageobject>
    </mediaobject>
 -->
    <legalnotice>
      <para> </para>
      <formalpara>
        <title>Incubation Notice and Disclaimer</title>
        <para>Apache UIMA is an effort undergoing incubation at the Apache Software Foundation (ASF). 
          Incubation is required of all newly accepted projects until a further review indicates that 
          the infrastructure, communications, and decision making process have stabilized in a manner 
          consistent with other successful ASF projects. While incubation status is not necessarily 
          a reflection of the completeness or stability of the code, 
          it does indicate that the project has yet to be fully endorsed by the ASF.</para>
      </formalpara>
      <para> </para>
      <para> </para>
      <formalpara>
        <title>License and Disclaimer</title>

        <para>The ASF licenses this documentation
           to you under the Apache License, Version 2.0 (the
           "License"); you may not use this documentation except in compliance
           with the License.  You may obtain a copy of the License at
         
         <blockquote>
           <para><ulink url="http://www.apache.org/licenses/LICENSE-2.0"/></para>
         </blockquote>
         
           Unless required by applicable law or agreed to in writing,
           this documentation and its contents are distributed under the License 
           on an 
           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
           KIND, either express or implied.  See the License for the
           specific language governing permissions and limitations
           under the License.
         </para>
      </formalpara>
      <para> </para>
      <para> </para>
      <formalpara>
        <title>Trademarks</title>
        <para>All terms mentioned in the text that are known to be trademarks or 
        service marks have been appropriately capitalized.  Use of such terms
        in this book should not be regarded as affecting the validity of the
        the trademark or service mark.
        </para>
      </formalpara>
    </legalnotice>
    <copyright>
      <year>2007</year>
      <year>2008</year>     
      <holder>International Business Machines Corporation</holder>
    </copyright>
    <copyright>
      <year>2008</year>
      <year>2010</year>
      <holder>The Apache Software Foundation</holder>
    </copyright>
    <pubdate>January, 2010</pubdate>
  </bookinfo>