<?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
   
         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.
-->
  <Project rdf:about="http://datafu.incubator.apache.org/">
    <created>2014-08-04</created>
    <license rdf:resource="http://spdx.org/licenses/Apache-2.0" />
    <name>Apache DataFu</name>
    <homepage rdf:resource="http://datafu.incubator.apache.org/" />
    <asfext:pmc rdf:resource="http://incubator.apache.org" />
    <shortdesc>Apache DataFu is a collection of libraries for working with large-scale data in Hadoop. The project was inspired by the need for stable, well-tested libraries for data mining and statistics.</shortdesc>
    <description>Apache DataFu consists of two libraries:

Apache DataFu Pig is a collection of useful user-defined functions for data analysis in Apache Pig.

Apache DataFu Hourglass is a library for incrementally processing data using Apache Hadoop MapReduce. This library was inspired by the prevelance of sliding window computations over daily tracking data. Computations such as these typically happen at regular intervals (e.g. daily, weekly), and therefore the sliding nature of the computations means that much of the work is unnecessarily repeated. DataFu's Hourglass was created to make these computations more efficient, yielding sometimes 50-95% reductions in computational resources.</description>
    <bug-database rdf:resource="https://issues.apache.org/jira/browse/DATAFU" />
    <mailing-list rdf:resource="http://datafu.incubator.apache.org/community/mailing-lists.html" />
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/big-data" />
    <repository>
      <GitRepository>
        <location rdf:resource="https://git-wip-us.apache.org/repos/asf/incubator-datafu.git"/>
        <browse rdf:resource="https://git-wip-us.apache.org/repos/asf/incubator-datafu.git"/>
      </GitRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>Matthew Hayes</foaf:name>
          <foaf:mbox rdf:resource="mailto:mhayes@apache.org"/>
      </foaf:Person>
    </maintainer>
  </Project>
</rdf:RDF>
