org.apache.taverna.server.usagerecord.xml.urf2 classes are
derivate work from Open Grid Forum (OGF) Document
https://www.ogf.org/documents/GFD.204.pdf

Copyright notice of the original OGF document:

  Copyright © Open Grid Forum (2006-2013). Some Rights Reserved.
 
  This document and translations of it may be copied and furnished to others,
  and derivative works that comment on or otherwise explain it or assist in its
  implementation may be prepared, copied, published and distributed, in whole
  or in part, without restriction of any kind, provided that the above
  copyright notice and this paragraph are included as references to the derived
  portions on all such copies and derivative works. The published OGF document
  from which such works are derived, however, may not be modified in any way,
  such as by removing the copyright notice or references to the OGF or other
  organizations, except as needed for the purpose of developing new or updated
  OGF documents in conformance with the procedures defined in the OGF Document
  Process, or as required to translate it into languages other than English.
  OGF, with the approval of its board, may remove this restriction for
  inclusion of OGF document content for the purpose of producing standards in
  cooperation with other international standards bodies.
 
  The limited permissions granted above are perpetual and will not be revoked
  by the OGF or its successors or assignees.