<?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/math/">
    <name>Apache Commons Math</name>
    <homepage rdf:resource="http://commons.apache.org/math/"/>
    <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/MATH"/>
    <download-page rdf:resource="http://commons.apache.org/math/download_math.cgi"/>
    <asfext:pmc rdf:resource="http://commons.apache.org/"/>
    <shortdesc xml:lang="en">Apache Commons Math</shortdesc>
    <description xml:lang="en">The Math project is a library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems not immediately available in the Java programming language or commons-lang.</description>
    <repository>
      <SVNRepository>
        <browse rdf:resource="http://svn.apache.org/viewvc/commons/proper/math/trunk/"/>
        <location rdf:resource="http://svn.apache.org/repos/asf/commons/proper/math"/>
      </SVNRepository>
    </repository>
    <release>
      <Version>
        <name>commons-math</name>
        <created>2014-05-14</created>
        <revision>3.3</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2013-04-06</created>
        <revision>3.2</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2013-01-13</created>
        <revision>3.1.1</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2012-12-23</created>
        <revision>3.1</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2012-03-08</created>
        <revision>3.0</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2011-03-02</created>
        <revision>2.2</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2010-04-02</created>
        <revision>2.1</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2009-08-03</created>
        <revision>2.0</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2008-02-24</created>
        <revision>1.2</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2005-12-19</created>
        <revision>1.1</revision>
      </Version>
      <Version>
        <name>commons-math</name>
        <created>2004-12-06</created>
        <revision>1.0</revision>
      </Version>
    </release>
    <mailing-list rdf:resource="http://commons.apache.org/mail-lists.html"/>
  </Project>
</rdf:RDF>
