<?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://nifi.apache.org/">
    <created>2023-09-05</created>
    <license rdf:resource="https://spdx.org/licenses/Apache-2.0" />
    <name>Apache NiFi</name>
    <homepage rdf:resource="https://nifi.apache.org/" />
    <asfext:pmc rdf:resource="https://nifi.apache.org" />
    <shortdesc>NiFi is an easy to use, powerful, and reliable system to process and
distribute data</shortdesc>
    <description>The mission of NiFi is the creation and maintenance of software related to providing an easy to use, powerful, and reliable system to process and distribute data.

Apache NiFi MiNiFi is an edge data collection agent built to seamlessly integrate with and leverage the command and control of NiFi. There are both Java and C++ implementations.

Apache NiFi Registry is a centralized registry for key configuration items including flow versions, assets, and extensions for Apache NiFi and Apache MiNiFi.</description>
    <bug-database rdf:resource="https://issues.apache.org/jira/projects/NIFI" />
    <mailing-list rdf:resource="https://nifi.apache.org/mailing_lists.html" />
    <download-page rdf:resource="https://nifi.apache.org/download.html" />
    <programming-language>Java</programming-language>
    <category rdf:resource="https://projects.apache.org/category/big-data" />
    <repository>
      <GitRepository>
        <location rdf:resource="https://github.com/apache/nifi"/>
        <browse rdf:resource="https://github.com/apache/nifi"/>
      </GitRepository>
    </repository>
  </Project>
</rdf:RDF>

