<?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://oodt.apache.org">
    <created>2012-04-14</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache OODT</name>
    <homepage rdf:resource="http://oodt.apache.org" />
    <asfext:pmc rdf:resource="http://oodt.apache.org" />
    <shortdesc>Apache OODT software provides metadata for middleware (and vice versa):
-    Transparent access to distributed resources
-    Data discovery and query optimization
-    Distributed processing and virtual archives
.</shortdesc>
    <description>Apache OODT software is component based, and offers a software architecture beyond simple science applications.</description>
    <bug-database rdf:resource="https://issues.apache.org/jira/browse/OODT" />
    <mailing-list rdf:resource="http://oodt.apache.org/contact.html" />
    <download-page rdf:resource="http://oodt.apache.org/download.html" />
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/big-data" />
    <release>
      <Version>
        <name>Apache OODT 0.10</name>
        <created>2015-09-13</created>
        <revision>0.10</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.9</name>
        <created>2015-06-06</created>
        <revision>0.9</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.8.1</name>
        <created>2015-01-07</created>
        <revision>0.8.1</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.8</name>
        <created>2014-12-01</created>
        <revision>0.8</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.7</name>
        <created>2014-09-01</created>
        <revision>0.7</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.6</name>
        <created>2013-07-01</created>
        <revision>0.6</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.5</name>
        <created>2012-10-01</created>
        <revision>0.5</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.4</name>
        <created>2012-06-01</created>
        <revision>0.4</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.3</name>
        <created>2011-06-01</created>
        <revision>0.3</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.2</name>
        <created>2011-02-08</created>
        <revision>0.2</revision>
      </Version>
    </release>
    <release>
      <Version>
        <name>Apache OODT 0.1-incubating</name>
        <created>2010-11-09</created>
        <revision>0.1-incubating</revision>
      </Version>
    </release>
    <repository>
      <GitRepository>
        <location rdf:resource="https://git-wip-us.apache.org/repos/asf/oodt.git"/>
        <browse rdf:resource="https://git-wip-us.apache.org/repos/asf/oodt.git"/>
      </GitRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>Apache OODT PMC</foaf:name>
          <foaf:mbox rdf:resource="mailto:dev@oodt.apache.org"/>
      </foaf:Person>
    </maintainer>
  </Project>
</rdf:RDF>

