<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"?>
<!--
    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:owl="http://www.w3.org/2002/07/owl#"
         xmlns:asfext="http://projects.apache.org/ns/asfext#"
         xmlns:foaf="http://xmlns.com/foaf/0.1/">

  <Project rdf:about="https://freemarker.incubator.apache.org/">
    <name>Apache FreeMarker</name>
    <homepage rdf:resource="https://freemarker.apache.org" />
    <created>2015-09-02</created><!-- When FreeMaker entered ASF, this must be later changed to real data of "TLPisation" -->
    <shortdesc xml:lang="en">FreeMarker is a template engine, i.e. a generic tool to generate text output based on templates. FreeMarker is implemented in Java as a class library for programmers.</shortdesc>
    <description>
          Apache FreeMarker is a template engine: a Java library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data.
          Templates are written in the FreeMarker Template Language (FTL), which is a simple, specialized language (not a full-blown programming language).
          Usually, a general-purpose programming language (like Java) is used to prepare the data (issue database queries, do business calculations). Then, Apache FreeMarker displays
          that prepared data using templates. In the template you are focusing on how to present the data, and outside the template you are focusing on what data to present.
    </description>

    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/Java" /><!-- Categories are possibly to be modified -->
    <category rdf:resource="http://projects.apache.org/category/html" />
    <category rdf:resource="http://projects.apache.org/category/templating" />
    <category rdf:resource="http://projects.apache.org/category/content" />

    <license rdf:resource="https://www.apache.org/licenses/LICENSE-2.0" />
    <asfext:pmc rdf:resource="http://incubator.apache.org" />

    <bug-database rdf:resource="https://issues.apache.org/jira/browse/FREEMARKER" />
    <mailing-list rdf:resource="https://freemarker.apache.org/mailing-lists.html" />
    <download-page rdf:resource="https://freemarker.apache.org/freemarkerdownload.html" />

    <repository>
      <GitRepository><!-- not sure about the GitRepository tag -->
        <location rdf:resource="git://git.apache.org/incubator-freemarker.git"/><!-- be changed when "TLPised" -->
        <browse rdf:resource="https://github.com/apache/incubator-freemarker"/><!-- be changed when "TLPised" -->
      </GitRepository>
    </repository>

    <developer>
      <foaf:Person>
        <foaf:name>Dániel Dékány</foaf:name>
        <foaf:nick>ddekany</foaf:nick>
        <foaf:mbox rdf:resource="mailto:ddekany@apache.org"/>
      </foaf:Person>
    </developer>
    <developer>
      <foaf:Person>
        <foaf:name>Nan Lei</foaf:name>
        <foaf:nick>nanlei</foaf:nick>
        <foaf:mbox rdf:resource="mailto:nanlei@apache.org"/>
      </foaf:Person>
    </developer>
    <developer>
      <foaf:Person>
        <foaf:name>Woonsan Ko</foaf:name>
        <foaf:nick>woonsan</foaf:nick>
        <foaf:mbox rdf:resource="mailto:woonsan@apache.org"/>
      </foaf:Person>
    </developer>
    <developer>
      <foaf:Person>
        <foaf:name>Jacopo Cappellato</foaf:name>
        <foaf:nick>jacopoc</foaf:nick>
        <foaf:mbox rdf:resource="mailto:jacopoc@apache.org"/>
      </foaf:Person>
    </developer>
    <developer>
      <foaf:Person>
        <foaf:name>David E. Jones</foaf:name>
        <foaf:nick>jonesde</foaf:nick>
        <foaf:mbox rdf:resource="mailto:jonesde@apache.org"/>
      </foaf:Person>
    </developer>
    <developer>
      <foaf:Person>
        <foaf:name>Sergio Fernández</foaf:name>
        <foaf:nick>wikier</foaf:nick>
        <foaf:mbox rdf:resource="mailto:wikier@apache.org"/>
        <foaf:homepage rdf:resource="https://www.wikier.org"/>
        <owl:sameAs rdf:resource="http://www.wikier.org/foaf#wikier" />
      </foaf:Person>
    </developer>
    <developer>
      <foaf:Person>
        <foaf:name>Jacques Le Roux</foaf:name>
        <foaf:nick>jleroux</foaf:nick>
        <foaf:mbox rdf:resource="mailto:jleroux@apache.org"/>
      </foaf:Person>
    </developer>

    <release>
        <Version>
            <name>Apache FreeMarker</name>
            <created>2019-08-17</created>
            <revision>2.3.29</revision>
        </Version>
    </release>
    <release>
        <Version>
            <name>Apache FreeMarker</name>
            <created>2018-04-04</created>
            <revision>2.3.28</revision>
        </Version>
    </release>
    <release>
        <Version>
            <name>Apache FreeMarker</name>
            <created>2017-11-03</created>
            <revision>2.3.27-incubating</revision>
        </Version>
    </release>
    <release>
        <Version>
            <name>Apache FreeMarker</name>
            <created>2017-03-25</created>
            <revision>2.3.26-incubating</revision>
        </Version>
    </release>
    <release>
        <Version>
            <name>Apache FreeMarker</name>
            <created>2016-06-26</created>
            <revision>2.3.25-incubating</revision>
        </Version>
    </release>
    <release>
        <Version>
            <name>Apache FreeMarker</name>
            <created>2016-03-28</created>
            <revision>2.3.24-incubating</revision>
        </Version>
    </release>

  </Project>

</rdf:RDF>
