This file lists the dependences for Apache Jena ARQ.
  Version numbers are given in the POM file for a particular distribution. 

Apache Projects:   Apache Software License
  Apache Jena, including the Jena IRI library
  Apache Xerces-J
  Apache log4j
  Apache HttpComponents (HTTP Client)
  Apache Commons Codec

SLF4J : http://www.slf4j.org/
  Copyright (c) 2004-2008 QOS.ch
  MIT License

JUnit : http://junit.org/
  Common Public License - v 1.0

Testing:
Awaitility : https://github.com/jayway/awaitility/
  Apache Software License - v 2.0

cglib : Apache License v2
https://github.com/cglib/cglib/blob/master/LICENSE

objenesis : Apache License v2
https://github.com/easymock/objenesis/blob/master/LICENSE.txt
