<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


This XML schema is derivative work from the Original Work, 
Research Object Evolution Ontology (roevo)
http://w3id.org/ro/roevo
used under the terms of 
Creative Commons Attribution 3.0 License 
http://creativecommons.org/licenses/by/3.0

Attribution for the original work:

  (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

-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified"
	elementFormDefault="qualified" targetNamespace="http://purl.org/wf4ever/roevo#" 
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:roevo="http://purl.org/wf4ever/roevo#"
	xmlns:prov="http://www.w3.org/ns/prov#"
	xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
	jxb:version="1.0">

	<xs:annotation>
		<xs:appinfo>
			<jxb:globalBindings />
			<jxb:schemaBindings>
				<jxb:package name="org.apache.taverna.scufl2.xml.roevo" />
			</jxb:schemaBindings>
		</xs:appinfo>
	</xs:annotation>
	<!-- 
	<xs:import namespace="http://www.w3.org/XML/1998/namespace"
		schemaLocation="http://www.w3.org/2001/03/xml.xsd" />
	<xs:import namespace="http://www.w3.org/2000/01/rdf-schema#"
		schemaLocation="rdfs.xsd" />
	<xs:import namespace="http://www.w3.org/2002/07/owl#"
		schemaLocation="owl.xsd" />
	 -->


	<xs:import namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
		schemaLocation="rdf.xsd" />	
	<xs:import namespace="http://www.w3.org/ns/prov#"
			schemaLocation="prov.xsd" />

	<xs:complexType name="RoEvoDocument">
		<xs:complexContent>
			<xs:restriction base="rdf:RDF">
				<xs:sequence>
					<xs:element ref="roevo:VersionableResource" minOccurs="0" maxOccurs="unbounded" />
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>

	<xs:element name="VersionableResource">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="wasChangedBy" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="roevo:ChangeSpecification" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element ref="prov:generatedAtTime" minOccurs="0" />
				<xs:element ref="prov:wasRevisionOf" minOccurs="0" />
				<xs:element ref="prov:hadOriginalSource" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="prov:wasAttributedTo" minOccurs="0" maxOccurs="unbounded"/>							
			</xs:sequence>
			<xs:attributeGroup ref="rdf:about" />			
		</xs:complexType>
	</xs:element>


	<xs:element name="ChangeSpecification">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="rdf:type" minOccurs="0"/>
				<xs:element name="fromVersion" type="rdf:Resource" minOccurs="0" />
				<xs:element name="hasChange" minOccurs="0" maxOccurs="3">
					<xs:annotation>
						<xs:documentation>
							<p xmlns='http://www.w3.org/1999/xhtml'>
							A ChangeSpecification can have up to 3 changes, 
							one of Addition, one of Modificaton and one of Removal. 
							Ironically, to 	avoid an 'non ambigious' XML Schema, this schema 
							has to allow also say Addition, Addition, Removal. Clients MAY
							parse additional changes of the same type, but SHOULD merge them 
							to a single change per type when saving, ie. add the resources
							from the second Addition to the resources of the first.							
							</p>
						</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:choice>
							<xs:element name="Addition" type="roevo:Change" />
							<xs:element name="Modification" type="roevo:Change" />
							<xs:element name="Removal" type="roevo:Change" />
						</xs:choice>
					</xs:complexType>
				</xs:element>
			</xs:sequence>			
		</xs:complexType>
	</xs:element>

	<xs:complexType name="Change">
		<xs:sequence>
			<xs:element name="relatedResource" type="rdf:Resource" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	
</xs:schema>
