<?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://flagon.incubator.apache.org">
        <created>2016-11-10</created>
        <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
        <name>Apache Flagon - UserALE.js</name>
        <homepage rdf:resource="http://flagon.incubator.apache.org" />
        <asfext:pmc rdf:resource="http://flagon.incubator.apache.org" />
        <shortdesc>UserALE.js is the UserALE client for DOM and JavaScript-based applications.</shortdesc>
        <description>UserALE.js is the UserALE client for DOM and JavaScript-based applications. It automatically attaches event handlers to log every user interaction on a web page, including rich JS single-page apps.</description>
        <bug-database rdf:resource="https://issues.apache.org/jira/browse/FLAGON" />
        <mailing-list rdf:resource="https://cwiki.apache.org/confluence/x/whTiAw" />
        <download-page rdf:resource="https://cwiki.apache.org/confluence/x/whTiAw" />
        <programming-language>Javascript</programming-language>
        <category rdf:resource="https://projects.apache.org/projects.html?category#Library" />
        <release>
            <Version>
                <name>2.0.0 release</name>
                <created>2018-06-21</created>
                <revision>2.0.0</revision>
            </Version>
        </release>
        <repository>
            <SVNRepository>
                <location rdf:resource="https://git-wip-us.apache.org/repos/asf/incubator-flagon-useralejs.git"/>
                <browse rdf:resource="https://github.com/apache/incubator-flagon-useralejs"/>
            </SVNRepository>
        </repository>
        <maintainer>
            <foaf:Person>
                <foaf:name>Flagon Development Team</foaf:name>
                <foaf:mbox rdf:resource="mailto:dev@flagon.incubator.apache.org"/>
            </foaf:Person>
        </maintainer>
    </Project>
</rdf:RDF>