<?xml version="1.0"?>
<!--
   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.
-->
<rdf:RDF 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:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:doap="http://usefulinc.com/ns/doap#" xml:lang="en">
  <Project rdf:about="http://commons.apache.org/configuration/">
    <name>Apache Commons Configuration</name>
    <homepage rdf:resource="http://commons.apache.org/configuration/"/>
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/library"/>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20"/>
    <bug-database rdf:resource="http://issues.apache.org/jira/browse/CONFIGURATION"/>
    <download-page rdf:resource="http://commons.apache.org/configuration/download_configuration.cgi"/>
    <asfext:pmc rdf:resource="http://commons.apache.org/"/>
    <shortdesc xml:lang="en">Common Configuration</shortdesc>

    <description xml:lang="en">
      Library to use configuration/preferences of various sources and formats.
    </description>

    <repository>
      <SVNRepository>
        <browse rdf:resource="http://svn.apache.org/repos/asf/commons/proper/configuration/trunk"/>
        <location rdf:resource="http://svn.apache.org/repos/asf/commons/proper/configuration"/>
      </SVNRepository>
    </repository>

    <release>
      <Version>
        <name>Commons Configuration 1.0</name>
        <created>2004-10-12</created>
        <revision>1.0</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.1</name>
        <created>2005-04-04</created>
        <revision>1.1</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.2</name>
        <created>2005-12-17</created>
        <revision>1.2</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.3</name>
        <created>2006-09-24</created>
        <revision>1.3</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.4</name>
        <created>2007-04-08</created>
        <revision>1.4</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.5</name>
        <created>2007-11-24</created>
        <revision>1.5</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.6</name>
        <created>2008-12-25</created>
        <revision>1.6</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.7</name>
        <created>2011-09-07</created>
        <revision>1.7</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.8</name>
        <created>2012-02-04</created>
        <revision>1.8</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.9</name>
        <created>2012-08-22</created>
        <revision>1.9</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Commons Configuration 1.10</name>
        <created>2013-10-27</created>
        <revision>1.10</revision>
      </Version>
    </release>

    <mailing-list rdf:resource="http://commons.apache.org/mail-lists.html"/>
  </Project>
</rdf:RDF>
