<?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:asfext="http://projects.apache.org/ns/asfext#"
	 xmlns:foaf="http://xmlns.com/foaf/0.1/">
  <Project rdf:about="http://ws.apache.org/commons/axiom/">
    <created>2010-12-19</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20"/>
    <name>Apache Axiom</name>
    <homepage rdf:resource="http://axis.apache.org/axis2/java/sandesha/"/>
    <asfext:pmc rdf:resource="http://axis.apache.org"/>
    <shortdesc>Apache Sandesha2 is an Axis2 module implementing WS-RM.</shortdesc>
    <description>Apache Sandesha2 is an Axis2 module that implements the WS-ReliableMessaging specification. It can be used both on the client side and on the server side.</description>
    <bug-database rdf:resource="http://issues.apache.org/jira/browse/SANDESHA2"/>
    <mailing-list rdf:resource="http://axis.apache.org/axis2/java/sandesha/mail-lists.html"/>
    <download-page rdf:resource="http://axis.apache.org/axis2/java/sandesha/download.cgi"/>
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/xml"/>
    <release><Version><name>Apache Sandesha2</name><created>08-10-2007</created><revision>1.3</revision></Version></release>
    <repository>
      <SVNRepository>
        <location rdf:resource="http://svn.apache.org/repos/asf/axis/axis2/java/sandesha/trunk"/>
        <browse rdf:resource="http://svn.apache.org/viewvc/axis/axis2/java/sandesha/trunk"/>
      </SVNRepository>
    </repository>
    <maintainer>
      <foaf:Person>
        <foaf:name>Axis2 Development Team</foaf:name>
        <foaf:mbox rdf:resource="mailto:java-dev@axis.apache.org?subject=[Sandesha2]"/>
      </foaf:Person>
    </maintainer>
    <asfext:implements><asfext:Standard>
      <asfext:title>WS-ReliableMessaging</asfext:title>
      <asfext:body>OASIS</asfext:body>
      <asfext:id>WSRM</asfext:id>
      <asfext:url rdf:resource="http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-rx"/>
    </asfext:Standard></asfext:implements>
  </Project>
</rdf:RDF>
