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

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

    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) 2021 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="http://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.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>