<?xml version="1.0" encoding="UTF-8"?>

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

<rdf:RDF xml:lang="en" xmlns="http://usefulinc.com/ns/doap#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
  <Project rdf:about="">
    <name></name>
    <homepage rdf:resource="" />
    <shortdesc></shortdesc>
    <description></description>

    <maintainer>
      <foaf:Person>
        <foaf:name>Clebert Suconic</foaf:name>
        <foaf:status>Project Lead</foaf:status>
        <foaf:firstName>Clebert</foaf:firstName>
        <foaf:lastName>Suconic</foaf:lastName>
      </foaf:Person>
    </maintainer>
    <developer>
      <foaf:Person>
        <foaf:name>Andy Taylor</foaf:name>
        <foaf:firstName>Andy</foaf:firstName>
        <foaf:lastName>Taylor</foaf:lastName>
      </foaf:Person>
    </developer>
    <developer>
      <foaf:Person>
        <foaf:name>Howard Gao</foaf:name>
        <foaf:firstName>Howard</foaf:firstName>
        <foaf:lastName>Gao</foaf:lastName>
      </foaf:Person>
    </developer>
    <developer>
      <foaf:Person>
        <foaf:name>Justin Bertram</foaf:name>
        <foaf:firstName>Justin</foaf:firstName>
        <foaf:lastName>Bertram</foaf:lastName>
      </foaf:Person>
    </developer>
    <developer>
      <foaf:Person>
        <foaf:name>Martyn Taylor</foaf:name>
        <foaf:firstName>Martyn</foaf:firstName>
        <foaf:lastName>Taylor</foaf:lastName>
      </foaf:Person>
    </developer>
    <license rdf:resource="" />


    <programming-language>Java</programming-language>
    <programming-language>C/C++</programming-language>
    <vendor>Apache Software Foundation</vendor>
    <implements>
      <Specification>
        <name>JMS 2.0</name>
        <description></description>
        <rdfs:seeAlso rdf:resource="" />
      </Specification>
    </implements>
    <foaf:logo rdf:resource="" />
    <foaf:account>
      <foaf:OnlineAccount>
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/OnlineChatAccount" />
        <foaf:accountServiceHomepage rdf:resource="http://twitter.com/" />
        <foaf:accountName>activemq</foaf:accountName>
      </foaf:OnlineAccount>
    </foaf:account>
  </Project>
</rdf:RDF>

