Apache Any23
Copyright 2011-2014 The Apache Software Foundation
Copyright 2008-2011 Digital Enterprise Research Institute (DERI)

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

This product includes software developed by the jQuery 
Foundation (http://jquery.org/) under an MIT license.

This product includes source developed by OpenRDF Sesame
(http://www.openrdf.org/) under a BSD-style license.
