<?xml version="1.0" encoding="UTF-8"?>
<!--
  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 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/">
  <Project rdf:about="http://forrest.apache.org/">
    <name>Apache Forrest</name>
    <homepage rdf:resource="http://forrest.apache.org/"/>
    <asfext:pmc rdf:resource="http://forrest.apache.org/" />
    <created>2005-06-23</created>
    <shortdesc xml:lang="en">
      Aggregated multi-channel documentation framework, separation of concerns.
    </shortdesc>
    <description xml:lang="en">
      Apache Forrest&#x2122; software is a publishing framework that transforms
      input from various sources into a unified presentation in one or more
      output formats. The modular and extensible plug-in architecture of
      Apache Forrest is based on Apache Cocoon and the relevant industry
      standards that separate presentation from content. Forrest can generate
      static documents, or be used as a dynamic server, or be deployed by its
      automated facility.
    </description>
    <programming-language xml:lang="en">Java</programming-language>
    <programming-language>XML</programming-language>
    <category rdf:resource="http://projects.apache.org/category/build-management"/>
    <category rdf:resource="http://projects.apache.org/category/database"/>
    <category rdf:resource="http://projects.apache.org/category/graphics"/>
    <category rdf:resource="http://projects.apache.org/category/http"/>
    <category rdf:resource="http://projects.apache.org/category/network-client"/>
    <category rdf:resource="http://projects.apache.org/category/network-server"/>
    <category rdf:resource="http://projects.apache.org/category/web-framework"/>
    <category rdf:resource="http://projects.apache.org/category/xml"/>
    <license rdf:resource="http://forrest.apache.org/license.html"/>
    <download-page rdf:resource="http://forrest.apache.org/mirrors.cgi"/>
    <bug-database rdf:resource="http://forrest.apache.org/issues.html"/>
    <mailing-list rdf:resource="http://forrest.apache.org/mail-lists.html"/>
    <repository>
      <SVNRepository>
        <browse rdf:resource="http://svn.apache.org/viewvc/forrest/"/>
        <location rdf:resource="http://svn.apache.org/repos/asf/forrest/trunk/"/>
      </SVNRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>The Apache Forrest Project</foaf:name>
        <foaf:homepage rdf:resource="http://forrest.apache.org/who.html"/>
        <foaf:mbox rdf:resource="mailto:dev@forrest.apache.org"/>
      </foaf:Person>
    </maintainer>
    <release>
      <Version>
        <name>Latest stable release</name>
        <revision>0.9</revision>
        <created>2011-02-07</created>
      </Version>
    </release>
  </Project>
</rdf:RDF>
