<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl"?>
<rdf:RDF xml:lang="en"
         xmlns="http://usefulinc.com/ns/doap#" 
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
         xmlns:asfext="http://projects.apache.org/ns/asfext#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">
<!--
    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.
-->
  <Project rdf:about="http://poi.apache.org">
    <created>2006-01-26</created>
    <license rdf:resource="http://spdx.org/licenses/Apache-2.0" />
    <name>Apache POI</name>
    <homepage rdf:resource="http://poi.apache.org" />
    <asfext:pmc rdf:resource="http://poi.apache.org" />
    <shortdesc>Java API To Access Microsoft Document File Formats</shortdesc>
    <description>APIs for manipulating various file formats based upon Open Office XML (ECMA-376) and Microsoft's OLE 2 Compound Document formats using pure Java. Apache POI is your Java Excel, Word and PowerPoint solution. We have a complete API for porting other OOXML and OLE 2 Compound Document formats and welcome others to participate.</description>
    <bug-database rdf:resource="http://issues.apache.org/bugzilla/buglist.cgi?product=POI" />
    <mailing-list rdf:resource="http://poi.apache.org/mailinglists.html" />
    <download-page rdf:resource="http://www.apache.org/dyn/closer.lua/poi/" />
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/content" />
    <category rdf:resource="http://projects.apache.org/category/library" />
    <release>
      <Version>
        <name>Apache POI 3.14</name>
        <created>2016-03-05</created>
        <revision>3.14</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.13</name>
        <created>2015-09-29</created>
        <revision>3.13</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.12</name>
        <created>2015-05-11</created>
        <revision>3.12</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.11</name>
        <created>2014-12-21</created>
        <revision>3.11</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.10.1</name>
        <created>2014-08-18</created>
        <revision>3.10.1</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.10</name>
        <created>2014-02-08</created>
        <revision>3.10</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.9</name>
        <created>2012-12-03</created>
        <revision>3.9</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.8</name>
        <created>2012-03-26</created>
        <revision>3.8</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.7</name>
        <created>2010-10-29</created>
        <revision>3.7</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.6</name>
        <created>2009-12-14</created>
        <revision>3.6</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.5</name>
        <created>2009-09-28</created>
        <revision>3.5</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.2</name>
        <created>2008-10-19</created>
        <revision>3.2</revision>
      </Version>
    </release>
    <repository>
      <SVNRepository>
        <location rdf:resource="http://svn.apache.org/repos/asf/poi/"/>
        <browse rdf:resource="http://svn.apache.org/viewvc/poi/"/>
      </SVNRepository>
    </repository>
   <maintainer>
      <foaf:Person>
        <foaf:name>POI Committers</foaf:name>
          <foaf:mbox rdf:resource="mailto:dev@poi.apache.org"/>
      </foaf:Person>
    </maintainer>
  </Project>
</rdf:RDF>
