Apache Taverna Server
Copyright 2014-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 2010-2014 University of Manchester, UK
These have been licensed to the Apache Software Foundation under a software grant.

---------------------------------------------------------

TODO: Copyright from *.xsd
TODO: GPL/CDDL ./taverna-server-webapp/src/misc/xsd/persistence_1_0.xsd
