Apache Taverna Language
Copyright 2014-2018 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.

-----------------------------------------------------------------------------------
./taverna-scufl2-schemas/src/main/resources/org/apache/taverna/scufl2/rdfxml/xsd/roevo.xsd

roevo.xsd derived from
Research Object Evolution Ontology (roevo)
http://w3id.org/ro/roevo

Copyright (c) 2011-2014
    Raul Palma, PSNC
    Jun Zhao, University of Oxford
    Khalid Belhajjame, University of Manchester
    Stian Soiland-Reyes, University of Manchester
    Oscar Corcho, UPM

Creative Commons Attribution 3.0 License
http://creativecommons.org/licenses/by/3.0

