<?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

         https://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="https://openoffice.apache.org">
    <created>2013-01-03</created>
    <license rdf:resource="https://spdx.org/licenses/Apache-2.0" />
    <name>Apache OpenOffice</name>
    <homepage rdf:resource="https://openoffice.apache.org" />
    <asfext:pmc rdf:resource="https://openoffice.apache.org" />
    <shortdesc>An open-source, office-document productivity suite</shortdesc>
    <description>Apache OpenOffice is a leading open-source, office-document productivity suite providing six
    productivity applications (Writer, Calc, Impress, Draw, Math, Base) based around the OpenDocument Format
    (ODF). OpenOffice is released on Windows, OS X, Linux 32-bit DEB+RPM, Linux 64-bit DEB+RPM and in 41
    languages.</description>
    <bug-database rdf:resource="https://bz.apache.org/ooo/" />
    <mailing-list rdf:resource="https://openoffice.apache.org/mailing-lists.html" />
    <download-page rdf:resource="https://www.openoffice.org/download/" />
    <programming-language>C++</programming-language>
    <category rdf:resource="https://projects.apache.org/category/content" />
    <release>
      <Version>
        <name>Apache OpenOffice 4.1.13</name>
        <created>2022-07-22</created>
        <revision>4.1.13</revision>
      </Version>
    </release>
    <repository>
      <GitRepository>
        <location rdf:resource="https://gitbox.apache.org/repos/asf/openoffice.git"/>
        <browse rdf:resource="https://gitbox.apache.org/repos/asf?p=openoffice.git"/>
      </GitRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>Andrea Pescetti</foaf:name>
          <foaf:mbox rdf:resource="mailto:pescetti@apache.org"/>
      </foaf:Person>
    </maintainer>
    <asfext:implements><asfext:Standard>
      <asfext:title>OpenDocument</asfext:title>
      <asfext:body>OASIS</asfext:body>
      <asfext:id>26300:2006</asfext:id>
      <asfext:url rdf:resource="https://www.iso.org/standard/43485.html"/>
    </asfext:Standard></asfext:implements>
  </Project>
</rdf:RDF>
