<?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
    or the new version is released.
    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/">

  <Project rdf:about="http://iotdb.apache.org">
    <created>2020-07-11</created>
    <license rdf:resource="http://spdx.org/licenses/Apache-2.0" />
    <name>Apache IoTDB</name>
    <homepage rdf:resource="http://iotdb.apache.org" />
    <asfext:pmc rdf:resource="http://iotdb.apache.org" />
    <shortdesc>Apache IoTDB is an IoT native database with high performance for data management and analysis, on the edge and the cloud.</shortdesc>
    <description>Apache IoTDB (Database for Internet of Things) is an integrated data management engine designed for time series data. It provides users with services for data collection, storage and analysis. Due to its light-weight architecture, high performance and rich feature set together with its deep integration with Apache Hadoop, Spark and Flink. Apache IoTDB can meet the requirements of massive data storage, high-speed data ingestion and complex data analysis in the IoT industrial fields.</description>
    <bug-database rdf:resource="https://issues.apache.org/jira/projects/IOTDB" />
    <mailing-list rdf:resource="dev@iotdb.apache.org" />
    <download-page rdf:resource="http://iotdb.apache.org/Download/" />

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

    <category rdf:resource="http://projects.apache.org/category/database" />
    <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/python"/>
    <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/csharp"/>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2024-04-22</created>
        <revision>1.3.1</revision>
      </Version>
    </release>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2024-01-01</created>
        <revision>1.3.0</revision>
      </Version>
    </release>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2023-10-15</created>
        <revision>1.2.2</revision>
      </Version>
    </release>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2023-09-19</created>
        <revision>1.2.1</revision>
      </Version>
    </release>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2023-09-08</created>
        <revision>1.2.0</revision>
      </Version>
    </release>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2023-07-28</created>
        <revision>1.1.2</revision>
      </Version>
    </release>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2023-06-14</created>
        <revision>1.1.1</revision>
      </Version>
    </release>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2023-04-03</created>
        <revision>1.1.0</revision>
      </Version>
    </release>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2023-02-22</created>
        <revision>1.0.1</revision>
      </Version>
    </release>

    <release>
      <Version>
        <name>apache-iotdb</name>
        <created>2022-12-03</created>
        <revision>1.0.0</revision>
      </Version>
    </release>

    <repository>
      <GitRepository>
        <location rdf:resource="https://github.com/apache/iotdb.git"/>
        <browse rdf:resource="https://github.com/apache/iotdb.git"/>
      </GitRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>IoTDB PMC</foaf:name>
          <foaf:mbox rdf:resource="mailto:dev@iotdb.apache.org"/>
      </foaf:Person>
    </maintainer>
  </Project>
</rdf:RDF>

