<?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="https://poi.apache.org">
    <created>2006-01-26</created>
    <license rdf:resource="https://spdx.org/licenses/Apache-2.0" />
    <name>Apache POI</name>
    <homepage rdf:resource="https://poi.apache.org" />
    <asfext:pmc rdf:resource="https://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="https://issues.apache.org/bugzilla/buglist.cgi?product=POI" />
    <mailing-list rdf:resource="https://poi.apache.org/mailinglists.html" />
    <download-page rdf:resource="https://www.apache.org/dyn/closer.lua/poi/" />
    <programming-language>Java</programming-language>
    <category rdf:resource="https://projects.apache.org/category/content" />
    <category rdf:resource="https://projects.apache.org/category/library" />
    <release>
      <Version>
        <name>Apache POI 4.1.2</name>
        <created>2020-02-14</created>
        <revision>4.1.2</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 4.1.1</name>
        <created>2019-10-20</created>
        <revision>4.1.1</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 4.1.0</name>
        <created>2019-04-08</created>
        <revision>4.1.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 4.0.1</name>
        <created>2018-12-03</created>
        <revision>4.0.1</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 4.0.0</name>
        <created>2018-09-07</created>
        <revision>4.0.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.17</name>
        <created>2017-09-15</created>
        <revision>3.17</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.16</name>
        <created>2017-04-19</created>
        <revision>3.16</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache POI 3.15</name>
        <created>2016-09-21</created>
        <revision>3.15</revision>
      </Version>
    </release>
    <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="https://svn.apache.org/repos/asf/poi/"/>
        <browse rdf:resource="https://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>
