<?xml version="1.0"?>
<?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

      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.
  -->
<!--

    This file contains information about the project itself.
    It should be updated as soon as a new language is supported.
    It also contains the information needed to populate the project
    categories and languages referenced on the Apache project listing
    page. It is referenced from here:
    https://svn.apache.org/repos/asf/comdev/projects.apache.org/trunk/data/projects.xml

-->
<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/">

    <!--
      =======================================================================

       Copyright (c) 2022 The Apache Software Foundation.
       All rights reserved.

      =======================================================================
    -->

    <Project rdf:about="https://plc4x.apache.org">
        <name>Apache PLC4X</name>
        <created>2019-04-18</created>
        <license rdf:resource="https://www.apache.org/licenses/LICENSE-2.0"/>
        <homepage rdf:resource="https://plc4x.apache.org/"/>
        <asfext:pmc rdf:resource="https://plc4x.apache.org/"/>
        <shortdesc>Universal API for communicating with programmable logic controllers.</shortdesc>
        <description>PLC4X is a set of libraries for communicating with industrial programmable logic controllers (PLCs) using a variety of protocols but with a shared API.</description>
        <bug-database rdf:resource="https://issues.apache.org/jira/projects/PLC4X"/>
        <download-page rdf:resource="https://plc4x.apache.org/users/download.html"/>
        <mailing-list rdf:resource="https://plc4x.apache.org/mailing-lists.html"/>

        <programming-language>C</programming-language>
        <programming-language>C++</programming-language>
        <programming-language>C#</programming-language>
        <programming-language>Go</programming-language>
        <programming-language>Java</programming-language>
        <programming-language>Python</programming-language>

        <category rdf:resource="http://projects.apache.org/category/c"/>
        <category rdf:resource="http://projects.apache.org/category/c++"/>
        <category rdf:resource="http://projects.apache.org/category/go"/>
        <category rdf:resource="http://projects.apache.org/category/integration"/>
        <category rdf:resource="http://projects.apache.org/category/iot"/>
        <category rdf:resource="http://projects.apache.org/category/java"/>
        <category rdf:resource="http://projects.apache.org/category/library"/>
        <category rdf:resource="http://projects.apache.org/category/network-client"/>
        <category rdf:resource="http://projects.apache.org/category/python"/>

        <repository>
            <GitRepository>
                <browse rdf:resource="https://github.com/apache/plc4x.git"/>
                <location rdf:resource="https://github.com/apache/plc4x.git"/>
            </GitRepository>
        </repository>

        <maintainer>
            <foaf:Person>
                <foaf:name>PLC4X PMC</foaf:name>
                <foaf:mbox rdf:resource="mailto:dev@plc4x.apache.org"/>
            </foaf:Person>
        </maintainer>

        <release>
            <Version>
                <name>Latest 0.9.1 release</name>
                <created>2021-12-17</created>
                <revision>0.9.1</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Latest 0.9.0 release</name>
                <created>2021-09-21</created>
                <revision>0.9.0</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Latest 0.8.0 release (Go drivers)</name>
                <created>2021-01-28</created>
                <revision>0.8.0</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Latest 0.7.0 release (Generated Drivers)</name>
                <created>2020-05-25</created>
                <revision>0.7.0</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Latest 0.6.0 release (Manual Drivers LTS)</name>
                <created>2020-03-01</created>
                <revision>0.6.0</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Legacy 0.5.0 release</name>
                <created>2019-11-25</created>
                <revision>0.5.0</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Legacy 0.4.0 release</name>
                <created>2019-05-27</created>
                <revision>0.4.0</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Legacy 0.3.1 release</name>
                <created>2019-03-13</created>
                <revision>0.3.1</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Legacy 0.3.0 release</name>
                <created>2019-02-05</created>
                <revision>0.3.0</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Legacy 0.2.0 release</name>
                <created>2018-12-02</created>
                <revision>0.2.0</revision>
            </Version>
        </release>
        <release>
            <Version>
                <name>Legacy 0.1.0 release</name>
                <created>2018-10-05</created>
                <revision>0.1.0</revision>
            </Version>
        </release>
    </Project>

</rdf:RDF>