<?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/">
<!--
   $HeadURL$
   $Revision$
   $Date$

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

   This software consists of voluntary contributions made by many
   individuals on behalf of the Apache Software Foundation.  For more
   information on the Apache Software Foundation, please see
   <http://www.apache.org />.
-->

  <Project rdf:about="http://hc.apache.org/httpcomponents-core/">
    <created>2007-11-15</created>
    <license rdf:resource="http://usefulinc.com/doap/licenses/asl20" />
    <name>Apache HttpComponents Core</name>
    <homepage rdf:resource="http://hc.apache.org/httpcomponents-core/" />
    <asfext:pmc rdf:resource="http://httpcomponents.apache.org" />
    <shortdesc>
HTTP transport library including support for asynchronous execution based on Java NIO.
    </shortdesc>
    <description>
    HttpCore is a set of low level HTTP transport components that can be used to build custom
    client and server side HTTP services with a minimal footprint. HttpCore supports two I/O
    models: blocking I/O model based on the classic Java I/O and non-blocking, event driven I/O
    model based on Java NIO.
    </description>
    <bug-database rdf:resource="http://issues.apache.org/jira/browse/HTTPCORE" />
    <mailing-list rdf:resource="http://httpcomponents.apache.org/mail-lists.html" />
    <download-page rdf:resource="http://httpcomponents.apache.org/downloads.cgi" />
    <programming-language>Java</programming-language>
    <category rdf:resource="http://projects.apache.org/category/http" />
    <category rdf:resource="http://projects.apache.org/category/library" />
    <category rdf:resource="http://projects.apache.org/category/network-client" />
    <category rdf:resource="http://projects.apache.org/category/network-server" />

    <repository>
      <GitRepository>
        <location rdf:resource="https://git-wip-us.apache.org/repos/asf/httpcomponents-core.git"/>
        <browse rdf:resource="https://github.com/apache/httpcomponents-core"/>
      </GitRepository>
    </repository>

    <asfext:implements><asfext:Standard>
      <asfext:title>Hypertext Transfer Protocol Version 2 (HTTP/2)</asfext:title>
      <asfext:body>IETF</asfext:body>
      <asfext:id>RFC 7540</asfext:id>
      <asfext:url rdf:resource="http://tools.ietf.org/html/rfc7540"/>
    </asfext:Standard></asfext:implements>
    <asfext:implements><asfext:Standard>
      <asfext:title>HPACK: Header Compression for HTTP/2</asfext:title>
      <asfext:body>IETF</asfext:body>
      <asfext:id>RFC 7541</asfext:id>
      <asfext:url rdf:resource="http://tools.ietf.org/html/rfc7541"/>
    </asfext:Standard></asfext:implements>
    <asfext:implements><asfext:Standard>
      <asfext:title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</asfext:title>
      <asfext:body>IETF</asfext:body>
      <asfext:id>RFC 7230</asfext:id>
      <asfext:url rdf:resource="http://tools.ietf.org/html/rfc7230"/>
    </asfext:Standard></asfext:implements>
    <asfext:implements><asfext:Standard>
      <asfext:title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</asfext:title>
      <asfext:body>IETF</asfext:body>
      <asfext:id>RFC 7231</asfext:id>
      <asfext:url rdf:resource="http://tools.ietf.org/html/rfc7231"/>
    </asfext:Standard></asfext:implements>
    <asfext:implements><asfext:Standard>
      <asfext:title>Hypertext Transfer Protocol -- HTTP/1.0</asfext:title>
      <asfext:body>IETF</asfext:body>
      <asfext:id>RFC 1945</asfext:id>
      <asfext:url rdf:resource="http://tools.ietf.org/html/rfc1945"/>
    </asfext:Standard></asfext:implements>

  </Project>
</rdf:RDF>
