Apache Jena - Base module
Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Apache Software Foundation

This product includes software developed at
The Apache Software Foundation (http://www.apache.org/).

Portions of this software were originally based on the following:
  - Copyright 2004, 2005, 2006, 2007, 2008, 2009 Hewlett-Packard Development Company, LP
  - Copyright 2010, 2011 Epimorphics Ltd.
  - Copyright 2010 Talis Systems Ltd.
These have been licensed to the Apache Software Foundation under a software grant.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Dexx Collections
https://github.com/andrewoma/dexx
Copyright (c) 2014 Andrew O'Malley
  https://github.com/andrewoma/dexx/blob/master/LICENSE.txt
  
and includes the following NOTICE
----------
Portions based on code from the Scala standard library.
Copyright (c) 2002-2014 EPFL
Copyright (c) 2011-2014 Typesafe, Inc.
Licensed under BSD-style license (see licenses/LICENSE_Scala.txt)
----------

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
