From 554f368590e00bbea54e371058e5dc9a0093f4a8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20M=C3=BCller?= <l.muller@student.tudelft.nl>
Date: Thu, 10 Aug 2017 03:16:57 +0200
Subject: [PATCH] Updated CMDOWS schema and started to develop CMDOWS class

Former-commit-id: f66135827dd0f0001cb9b9ac4d297538a87b08b8
---
 MANIFEST.in                            |    1 +
 kadmos/cmdows/__init__.py              |  113 +++
 kadmos/cmdows/schemas/0.3/cmdows.xsd   |  744 +++++++++++++++++
 kadmos/cmdows/schemas/0.4/cmdows.xsd   |  835 +++++++++++++++++++
 kadmos/cmdows/schemas/0.5/cmdows.xsd   | 1011 +++++++++++++++++++++++
 kadmos/cmdows/schemas/0.6/cmdows.xsd   | 1036 ++++++++++++++++++++++++
 kadmos/utilities/cmdows/0.6/cmdows.xsd |    2 +-
 7 files changed, 3741 insertions(+), 1 deletion(-)
 create mode 100644 kadmos/cmdows/__init__.py
 create mode 100644 kadmos/cmdows/schemas/0.3/cmdows.xsd
 create mode 100644 kadmos/cmdows/schemas/0.4/cmdows.xsd
 create mode 100644 kadmos/cmdows/schemas/0.5/cmdows.xsd
 create mode 100644 kadmos/cmdows/schemas/0.6/cmdows.xsd

diff --git a/MANIFEST.in b/MANIFEST.in
index 34e8ea1d1..effeba85e 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -8,6 +8,7 @@ graft kadmos/interface/templates
 
 # Include schemas
 graft kadmos/utilities/cmdows
+graft kadmos/cmdows/schemas
 
 # Include current vispack templates
 graft kadmos/vispack/KADMOS_VisualizationPackage_170419
diff --git a/kadmos/cmdows/__init__.py b/kadmos/cmdows/__init__.py
new file mode 100644
index 000000000..3fe08165e
--- /dev/null
+++ b/kadmos/cmdows/__init__.py
@@ -0,0 +1,113 @@
+import urllib2
+import logging
+import os
+import copy
+from lxml import etree
+from lxml.etree import ElementTree
+from collections import Counter
+
+
+# Settings for the logger
+logger = logging.getLogger(__name__)
+
+
+class CMDOWS(object):
+    """Class for with various methods for checking and manipulating CMDOWS files"""
+
+    def __init__(self, file):
+        parser = etree.XMLParser(remove_blank_text=True)
+        self.root = ElementTree(file=file, parser=parser).getroot()
+
+    def version(self):
+        """Method to retrieve the version of the CMDOWS file"""
+        url_prefix = '{http://www.w3.org/2001/XMLSchema-instance}noNamespaceSchemaLocation'
+        version = self.root.attrib[url_prefix].split('/')[-2]
+        version = str(version)
+        return version
+
+    def schema(self):
+        """Method to retrieve a schema either belonging to the CMDOWS file"""
+        version = self.version()
+        try:
+            url = 'https://bitbucket.org/imcovangent/cmdows/raw/master/schema/' + version + '/cmdows.xsd'
+            schema_string = urllib2.urlopen(url).read()
+        except (urllib2.URLError, OSError):
+            logger.info('Could not reach the CMDOWS schema file online. A local copy is used.')
+            versions = os.listdir(os.path.join(os.path.dirname(__file__), 'schemas'))
+            if version in versions:
+                schema_string = open(os.path.join(os.path.dirname(__file__), 'schemas/' + version + '/cmdows.xsd'),
+                                     'r').read()
+            else:
+                raise IOError('The specified CMDOWS schema version could not be found. '
+                              'Are you sure that version ' + version + ' is an official CMDOWS schema version?')
+        schema = etree.XMLSchema(etree.XML(schema_string))
+        return schema
+
+    def simplify(self):
+        """Method to simplify everything"""
+        for name in dir(self):
+            if name.startswith('simplify_'):
+                method = getattr(self, name)
+                method()
+
+    def simplify_equations(self):
+        """Method to replace duplicate equations elements by a single equations element and refs to this element"""
+        # Make deepcopy of all equations (as some attributes are going to be deleted for the check)
+        equations_xml = copy.deepcopy(self.root.xpath('.//equations'))
+        # Create dictionary with all equations
+        equations_dict = {}
+        for equation in equations_xml:
+            id = equation.attrib['uID']
+            del equation.attrib['uID']
+            equations_dict[id] = etree.tostring(equation)
+        # Create reverse dictionary with all equations
+        equations_dict_rev = {}
+        for key, value in equations_dict.items():
+            equations_dict_rev.setdefault(value, set()).add(key)
+        # Find duplicates
+        equations_duplicates = [values for key, values in equations_dict_rev.items() if len(values) > 1]
+        print equations_duplicates
+        # For every duplicate keep only the first equations element and replace other equations elements by a ref
+        for equations_duplicate in equations_duplicates:
+            for id in list(equations_duplicate)[1:]:
+                old_equations_element = self.root.xpath('.//equations[@uID="' + id + '"]')[0]
+                new_equations_element = etree.Element('equationsUID')
+                new_equations_element.text = list(equations_duplicate)[0]
+                parent = old_equations_element.getparent()
+                old_equations_element.getparent().replace(old_equations_element,new_equations_element)
+
+    def check(self):
+        """Method to execute all checks"""
+        result = True
+        for name in dir(self):
+            if name.startswith('check_'):
+                method = getattr(self, name)
+                result = result and method()
+        return result
+
+    def check_schema(self):
+        """Method to check if a CMDOWS file adheres to its schema"""
+        try:
+            result = self.schema().validate(self.root)
+        except:
+            result = False
+        return result
+
+    def check_uids(self):
+        """Method so check if all uIDs are actually unique in a CMDOWS file"""
+        ids = [element.attrib['uID'] for element in self.root.xpath('.//*[@uID]')]
+        result = (len(ids) == len(set(ids)))
+        if not result:
+            duplicates = [k for k, v in Counter(ids).items() if v > 1]
+            logger.info('The following uIDs are not unique: ' + ', '.join(duplicates))
+        return result
+
+    def check_references(self):
+        """Method to check if references are actually pointing to a uID in a CMDOWS file"""
+        ids = [element.attrib['uID'] for element in self.root.xpath('.//*[@uID]')]
+        references = [element.text for element in self.root.xpath('.//*[contains(name(), "UID")]')]
+        invalids = list(set([reference for reference in references if reference not in ids]))
+        result = (len(invalids) == 0)
+        if not result:
+            logger.info('The following uIDs do not exist although they are referred to: ' + ', '.join(invalids))
+        return result
diff --git a/kadmos/cmdows/schemas/0.3/cmdows.xsd b/kadmos/cmdows/schemas/0.3/cmdows.xsd
new file mode 100644
index 000000000..c579df1f2
--- /dev/null
+++ b/kadmos/cmdows/schemas/0.3/cmdows.xsd
@@ -0,0 +1,744 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="cmdows">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="header">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="creator" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Creator of the initial CMDOWS dataset </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="description" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Description of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="timestamp" type="xs:dateTime">
+								<xs:annotation>
+									<xs:documentation>Timestamp of the initial CMDOWS dataset creation </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="fileVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="cmdowsVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the CMDOWS schema that the initial CMDOWS dataset adheres to </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="updates" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="update" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="modification" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Description of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="creator" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Creator of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="timestamp" type="xs:dateTime">
+														<xs:annotation>
+															<xs:documentation>Timestamp of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="fileVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="cmdowsVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the CMDOWS schema that the modification  to the CMDOWS dataset adheres to </xs:documentation>
+														</xs:annotation>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="executableBlocks">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="designCompetences" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="designCompetence" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="name" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Name of the design competence which can be used for clean printouts (e.g. 'F')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="inputs" type="inputsType"/>
+													<xs:element name="outputs" type="outputsType"/>
+													<xs:element name="metadata">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="generalInfo">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="version" type="xs:string" minOccurs="0"/>
+																			<xs:element name="creator" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Creator of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="specialist" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Specialist for the design competence to be contacted in case of problems</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="description" type="xs:string">
+																				<xs:annotation>
+																					<xs:documentation>Description of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="performanceInfo">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="precision" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="fidelityLevel" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="runTime" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="standardDeviation" type="xs:decimal" minOccurs="0"/>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="executionInfo" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="rce" minOccurs="0"/>
+																			<xs:element name="optimus" minOccurs="0"/>
+																			<xs:element name="python" minOccurs="0"/>
+																			<xs:element name="matlab" minOccurs="0"/>
+																			<xs:element name="windowsCommandLine" minOccurs="0"/>
+																			<xs:element name="linuxCommandLine" minOccurs="0"/>
+																			<xs:element name="brics" minOccurs="0"/>
+																			<xs:element name="executionType" minOccurs="0">
+																				<xs:simpleType>
+																					<xs:restriction base="xs:string">
+																						<xs:enumeration value="tool"/>
+																						<xs:enumeration value="surrogate"/>
+																					</xs:restriction>
+																				</xs:simpleType>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the design competence which can be used as reference in the problem definition etc. (e.g. 'F')</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="functions" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="function" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="name" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Name of the function which can be used for clean printouts (e.g. 'G')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="inputs">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="input" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="inoutType">
+																				<xs:sequence>
+																					<xs:element name="equationLabel" type="xs:string"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="outputs">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="output" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="inoutType">
+																				<xs:sequence>
+																					<xs:element name="equation"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="metadata">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="generalInfo">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="version" type="xs:string" minOccurs="0"/>
+																			<xs:element name="creator" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Creator of the function</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="description" type="xs:string">
+																				<xs:annotation>
+																					<xs:documentation>Description of the function</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the function which can be used as reference in the problem definition etc. (e.g. 'G')</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="parameters">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="parameter" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="label" type="xs:string">
+											<xs:annotation>
+												<xs:documentation>Label of the parameter which can be used for clean printouts (e.g. 'y1')</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="description" type="xs:string" minOccurs="0">
+											<xs:annotation>
+												<xs:documentation>Detailed description of the parameter</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="note" type="xs:string" minOccurs="0">
+											<xs:annotation>
+												<xs:documentation>Any additional note for the parameter</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+									</xs:sequence>
+									<xs:attribute name="uID" type="xs:string" use="required">
+										<xs:annotation>
+											<xs:documentation>Unique ID of the parameter which can be used as reference in the problem definition etc. (e.g. '/data_schema/analyses/y1')</xs:documentation>
+										</xs:annotation>
+									</xs:attribute>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="problemDefinition" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="problemFormulation">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="mdaoArchitecture" type="xs:string"/>
+										<xs:element name="convergerType" type="xs:string" minOccurs="0"/>
+										<xs:element name="executableBlocksOrder" type="xs:string"/>
+										<xs:element name="allowUnconvergedCouplings" type="xs:boolean"/>
+										<xs:element name="doeSettings" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeMethod" type="xs:string"/>
+													<xs:element name="doeSeed" type="xs:decimal" minOccurs="0"/>
+													<xs:element name="doeRuns" type="xs:int" minOccurs="0"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="problemRoles">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="parameters">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="designVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="designVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="nominalValue" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="lowerBound" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="upperBound" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="variableType" minOccurs="0">
+																						<xs:simpleType>
+																							<xs:restriction base="xs:string">
+																								<xs:enumeration value="int"/>
+																								<xs:enumeration value="real"/>
+																							</xs:restriction>
+																						</xs:simpleType>
+																					</xs:element>
+																					<xs:element name="samples" type="xs:string" minOccurs="0"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="objectiveVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="objectiveVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="constraintVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="constraintVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="constraintType" type="xs:string" minOccurs="0"/>
+																					<xs:element name="referenceValue" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="requiredEqualityPrecision" type="xs:decimal" minOccurs="0"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="stateVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="stateVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="executableBlocks">
+											<xs:complexType>
+												<xs:all>
+													<xs:element name="pre-coupling" type="xs:string" minOccurs="0"/>
+													<xs:element name="coupled" type="xs:string" minOccurs="0"/>
+													<xs:element name="post-coupling" type="xs:string" minOccurs="0"/>
+												</xs:all>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+						<xs:attribute name="uID" type="xs:string" use="required"/>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="workflow" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="problemDefinitionUID" type="xs:string"/>
+							<xs:element name="dataGraph">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="fromUID" type="xs:string"/>
+																<xs:element name="toUID" type="xs:string"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="processGraph">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="fromUID" type="xs:string"/>
+																<xs:element name="toUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="nodes">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="node" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="referenceUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+																<xs:element name="convergerStepNumber" type="xs:int" minOccurs="0"/>
+																<xs:element name="diagonalPosition" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="architectureElements" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="parameters">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="initialGuessCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="couplingCopyVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="couplingCopyVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="initialGuessDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalOutputVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalOutputVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="consistencyConstraintValues" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="consistencyConstraintValue" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeInputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeInputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeOutputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeOutputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="executableBlocks">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="coordinators" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coordinator" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="optimizers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="optimizer" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simpleArchitectureElementsBlockType">
+																	<xs:sequence>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="objectiveVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="objectiveVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="objectiveVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="constraintVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="constraintVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="constraintVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="convergers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="converger" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="does" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doe" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simplerArchitectureElementsBlockType">
+																	<xs:sequence>
+																		<xs:element name="settings">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="doeTable" type="xs:string"/>
+																					<xs:element name="doeMethod" type="xs:string"/>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="consistencyConstraintFunctions" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="consistencyConstraintFunction" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="coupledAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coupledAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="inputsType">
+		<xs:sequence>
+			<xs:element name="input" type="inoutType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="inoutType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>ID of the parameter which serves as input or output  (e.g. '/data_schema/analyses/y2')</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="outputsType">
+		<xs:sequence>
+			<xs:element name="output" type="inoutType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="contactType">
+		<xs:sequence>
+			<xs:element name="name" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>Name of the contact person</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="email" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>E-Mail address of the contact person</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="simpleVariableType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsVariableType">
+		<xs:all>
+			<xs:element name="relatedParameterUID" type="xs:string"/>
+			<xs:element name="label" type="xs:string"/>
+		</xs:all>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+			<xs:element name="settings" type="xs:string" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simplerArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsRelatedBlockType">
+		<xs:sequence>
+			<xs:element name="relatedExecutableBlockUID" type="xs:string"/>
+		</xs:sequence>
+	</xs:complexType>
+</xs:schema>
diff --git a/kadmos/cmdows/schemas/0.4/cmdows.xsd b/kadmos/cmdows/schemas/0.4/cmdows.xsd
new file mode 100644
index 000000000..c0cd61f82
--- /dev/null
+++ b/kadmos/cmdows/schemas/0.4/cmdows.xsd
@@ -0,0 +1,835 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSpy v2017 sp2 (x64) (http://www.altova.com) by Lukas Müller (Private) -->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="cmdows">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="header">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="creator" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Creator of the initial CMDOWS dataset </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="description" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Description of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="timestamp" type="xs:dateTime">
+								<xs:annotation>
+									<xs:documentation>Timestamp of the initial CMDOWS dataset creation </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="fileVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="cmdowsVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the CMDOWS schema that the initial CMDOWS dataset adheres to </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="updates" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="update" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="modification" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Description of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="creator" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Creator of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="timestamp" type="xs:dateTime">
+														<xs:annotation>
+															<xs:documentation>Timestamp of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="fileVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="cmdowsVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the CMDOWS schema that the modification  to the CMDOWS dataset adheres to </xs:documentation>
+														</xs:annotation>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="executableBlocks">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="designCompetences" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="designCompetence" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="name" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Name of the design competence which can be used for clean printouts (e.g. 'F')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="inputs" type="inputsType"/>
+													<xs:element name="outputs" type="outputsType"/>
+													<xs:element name="metadata">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="generalInfo">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="version" type="xs:string" minOccurs="0"/>
+																			<xs:element name="creator" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Creator of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="specialist" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Specialist for the design competence to be contacted in case of problems</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="description" type="xs:string">
+																				<xs:annotation>
+																					<xs:documentation>Description of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="performanceInfo" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="precision" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="fidelityLevel" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="runTime" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="standardDeviation" type="xs:decimal" minOccurs="0"/>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="executionInfo" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="rce" minOccurs="0"/>
+																			<xs:element name="optimus" minOccurs="0"/>
+																			<xs:element name="python" minOccurs="0"/>
+																			<xs:element name="matlab" minOccurs="0"/>
+																			<xs:element name="windowsCommandLine" minOccurs="0"/>
+																			<xs:element name="linuxCommandLine" minOccurs="0"/>
+																			<xs:element name="brics" minOccurs="0"/>
+																			<xs:element name="executionType" minOccurs="0">
+																				<xs:simpleType>
+																					<xs:restriction base="xs:string">
+																						<xs:enumeration value="tool"/>
+																						<xs:enumeration value="surrogate"/>
+																					</xs:restriction>
+																				</xs:simpleType>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the design competence which can be used as reference in the problem definition etc. (e.g. 'F')</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="functions" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="function" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="name" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Name of the function which can be used for clean printouts (e.g. 'G')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="inputs">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="input" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="inoutType">
+																				<xs:sequence>
+																					<xs:element name="equationLabel" type="xs:string"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="outputs">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="output" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="inoutType">
+																				<xs:sequence>
+																					<xs:element name="equation"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="metadata">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="generalInfo">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="version" type="xs:string" minOccurs="0"/>
+																			<xs:element name="creator" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Creator of the function</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="description" type="xs:string">
+																				<xs:annotation>
+																					<xs:documentation>Description of the function</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the function which can be used as reference in the problem definition etc. (e.g. 'G')</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="parameters">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="parameter" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="label" type="xs:string">
+											<xs:annotation>
+												<xs:documentation>Label of the parameter which can be used for clean printouts (e.g. 'y1')</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="description" type="xs:string" minOccurs="0">
+											<xs:annotation>
+												<xs:documentation>Detailed description of the parameter</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="note" type="xs:string" minOccurs="0">
+											<xs:annotation>
+												<xs:documentation>Any additional note for the parameter</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+									</xs:sequence>
+									<xs:attribute name="uID" type="xs:string" use="required">
+										<xs:annotation>
+											<xs:documentation>Unique ID of the parameter which can be used as reference in the problem definition etc. (e.g. '/data_schema/analyses/y1')</xs:documentation>
+										</xs:annotation>
+									</xs:attribute>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="problemDefinition" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="problemFormulation">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="mdaoArchitecture" type="xs:string"/>
+										<xs:element name="convergerType" type="xs:string" minOccurs="0"/>
+										<xs:element name="executableBlocksOrder">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="executableBlock" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:simpleContent>
+																<xs:extension base="xs:string">
+																	<xs:attribute name="position" type="xs:int"/>
+																</xs:extension>
+															</xs:simpleContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="allowUnconvergedCouplings" type="xs:boolean"/>
+										<xs:element name="doeSettings" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeMethod" type="xs:string"/>
+													<xs:element name="doeSeed" type="xs:decimal" minOccurs="0"/>
+													<xs:element name="doeRuns" type="xs:int" minOccurs="0"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="problemRoles">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="parameters">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="designVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="designVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="nominalValue" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="lowerBound" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="upperBound" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="variableType" minOccurs="0">
+																						<xs:simpleType>
+																							<xs:restriction base="xs:string">
+																								<xs:enumeration value="int"/>
+																								<xs:enumeration value="real"/>
+																							</xs:restriction>
+																						</xs:simpleType>
+																					</xs:element>
+																					<xs:element name="samples" minOccurs="0">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="sample" maxOccurs="unbounded">
+																									<xs:complexType>
+																										<xs:simpleContent>
+																											<xs:extension base="xs:string">
+																												<xs:attribute name="position" type="xs:int"/>
+																											</xs:extension>
+																										</xs:simpleContent>
+																									</xs:complexType>
+																								</xs:element>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="objectiveVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="objectiveVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="constraintVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="constraintVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="constraintType" type="xs:string" minOccurs="0"/>
+																					<xs:element name="referenceValue" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="requiredEqualityPrecision" type="xs:decimal" minOccurs="0"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="stateVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="stateVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="executableBlocks">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preCouplingBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="preCouplingBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="coupledBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="coupledBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="postCouplingBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="postCouplingBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="preDesvarsBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="preDesvarsBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="postDesvarsBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="postDesvarBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+						<xs:attribute name="uID" type="xs:string" use="required"/>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="workflow" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="problemDefinitionUID" type="xs:string"/>
+							<xs:element name="dataGraph">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="fromUID" type="xs:string"/>
+																<xs:element name="toUID" type="xs:string"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="processGraph">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="fromUID" type="xs:string"/>
+																<xs:element name="toUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="nodes">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="node" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="referenceUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+																<xs:element name="convergerStepNumber" type="xs:int" minOccurs="0"/>
+																<xs:element name="diagonalPosition" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="architectureElements" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="parameters">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="initialGuessCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="couplingCopyVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="couplingCopyVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="initialGuessDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalOutputVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalOutputVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="consistencyConstraintValues" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="consistencyConstraintValue" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeInputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeInputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeOutputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeOutputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="executableBlocks">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="coordinators" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coordinator" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="optimizers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="optimizer" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simpleArchitectureElementsBlockType">
+																	<xs:sequence>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="objectiveVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="objectiveVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="objectiveVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="constraintVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="constraintVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="constraintVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="convergers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="converger" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="does" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doe" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simplerArchitectureElementsBlockType">
+																	<xs:sequence>
+																		<xs:element name="settings">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="doeTable" type="xs:string"/>
+																					<xs:element name="doeMethod" type="xs:string"/>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="consistencyConstraintFunctions" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="consistencyConstraintFunction" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="coupledAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coupledAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="inputsType">
+		<xs:sequence>
+			<xs:element name="input" type="inoutType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="inoutType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>ID of the parameter which serves as input or output  (e.g. '/data_schema/analyses/y2')</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="outputsType">
+		<xs:sequence>
+			<xs:element name="output" type="inoutType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="contactType">
+		<xs:sequence>
+			<xs:element name="name" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>Name of the contact person</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+			<xs:element name="email" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>E-Mail address of the contact person</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="simpleVariableType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsVariableType">
+		<xs:sequence>
+			<xs:element name="relatedParameterUID" type="xs:string"/>
+			<xs:element name="label" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+			<xs:element name="settings" type="xs:string" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simplerArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsRelatedBlockType">
+		<xs:sequence>
+			<xs:element name="relatedExecutableBlockUID" type="xs:string"/>
+		</xs:sequence>
+	</xs:complexType>
+</xs:schema>
diff --git a/kadmos/cmdows/schemas/0.5/cmdows.xsd b/kadmos/cmdows/schemas/0.5/cmdows.xsd
new file mode 100644
index 000000000..75f5d2443
--- /dev/null
+++ b/kadmos/cmdows/schemas/0.5/cmdows.xsd
@@ -0,0 +1,1011 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mml="http://www.w3.org/1998/Math/MathML" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="cmdows">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="header">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="creator" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Creator of the initial CMDOWS dataset </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="description" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Description of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="timestamp" type="xs:dateTime">
+								<xs:annotation>
+									<xs:documentation>Timestamp of the initial CMDOWS dataset creation </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="fileVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="cmdowsVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the CMDOWS schema that the initial CMDOWS dataset adheres to </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="updates" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="update" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="modification" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Description of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="creator" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Creator of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="timestamp" type="xs:dateTime">
+														<xs:annotation>
+															<xs:documentation>Timestamp of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="fileVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="cmdowsVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the CMDOWS schema that the modification  to the CMDOWS dataset adheres to </xs:documentation>
+														</xs:annotation>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="executableBlocks">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="designCompetences" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="designCompetence" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="label" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Label of the design competence which can be used for clean printouts (e.g. 'F')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="inputs" type="inputsType"/>
+													<xs:element name="outputs" type="outputsType"/>
+													<xs:element name="metadata">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="generalInfo">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="version" type="xs:string" minOccurs="0"/>
+																			<xs:element name="description" type="xs:string">
+																				<xs:annotation>
+																					<xs:documentation>Description of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="type" type="xs:string" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>For example 'tool' or 'surrogateModel'</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="status" type="xs:string" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Describing the state of the design competence, e.g. draft, final, for verification, ...</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="creationDate" type="xs:date" minOccurs="0"/>
+																			<xs:element name="owner" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Owner of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="creator" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Creator of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="operator" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Operator of the design competence to be contacted in case of problems</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="modelDefinition" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Optional element for 'surrogateModel' competence types</xs:documentation>
+																				</xs:annotation>
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="referenceDataSet" type="xs:string" minOccurs="0"/>
+																						<xs:element name="analysisMethod" type="xs:string" minOccurs="0"/>
+																						<xs:element name="fittingMethod" type="xs:string" minOccurs="0"/>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="performanceInfo" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="precision" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="fidelityLevel" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="runTime" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="standardDeviation" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="verifications" minOccurs="0">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="verification" maxOccurs="unbounded">
+																							<xs:complexType>
+																								<xs:sequence>
+																									<xs:element name="method" type="xs:string"/>
+																									<xs:element name="verifier" type="contactType"/>
+																									<xs:element name="result" type="xs:string"/>
+																									<xs:element name="date" type="xs:date"/>
+																									<xs:element name="version" type="xs:string"/>
+																								</xs:sequence>
+																							</xs:complexType>
+																						</xs:element>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="executionInfo" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="availabilityConstraints" minOccurs="0">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="fromDate" type="xs:date" minOccurs="0"/>
+																						<xs:element name="toDate" type="xs:date" minOccurs="0"/>
+																						<xs:element name="fromOfficeHour" type="xs:time" minOccurs="0"/>
+																						<xs:element name="toOfficeHour" type="xs:time" minOccurs="0"/>
+																						<xs:element name="maximumTotalExecutions" type="xs:int" minOccurs="0"/>
+																						<xs:element name="maximumParallelExecutions" type="xs:int" minOccurs="0"/>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																			<xs:element name="authorizationConstraints" minOccurs="0">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="authorizedUsers" minOccurs="0">
+																							<xs:complexType>
+																								<xs:sequence>
+																									<xs:element name="authorizedUser" type="contactType" maxOccurs="unbounded"/>
+																								</xs:sequence>
+																							</xs:complexType>
+																						</xs:element>
+																						<xs:element name="unauthorizedUsers" minOccurs="0">
+																							<xs:complexType>
+																								<xs:sequence>
+																									<xs:element name="unauthorizedUser" type="contactType" maxOccurs="unbounded"/>
+																								</xs:sequence>
+																							</xs:complexType>
+																						</xs:element>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="platformspecific" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="brics" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="bricsCode">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="bricsMinReqVersion" type="xs:string"/>
+																						<xs:element name="bricsJar" type="xs:string"/>
+																						<xs:element name="bricsScriptintf" type="xs:string"/>
+																						<xs:element name="bricsTestPerformer" type="xs:string"/>
+																						<xs:element name="licenseFilePath" type="xs:string"/>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																			<xs:element name="bricsDataExchange">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="dataserver" type="xs:string"/>
+																						<xs:element name="urlsite" type="xs:string"/>
+																						<xs:element name="context" type="xs:string"/>
+																						<xs:element name="folder" type="xs:string"/>
+																						<xs:element name="pollingTime" type="xs:float"/>
+																						<xs:element name="bricsNumIter" type="xs:int"/>
+																						<xs:element name="bricsTimeout" type="xs:float"/>
+																						<xs:element name="sharedFilePolicy" type="xs:string"/>
+																						<xs:element name="servermutex" type="xs:string"/>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																			<xs:element name="bricsNotification">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="smtp" type="xs:string"/>
+																						<xs:element name="mailFolder" type="xs:string"/>
+																						<xs:element name="notificationKey" type="xs:string"/>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																			<xs:element name="bricsJob">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="singleOrMultipleTask" type="xs:string"/>
+																						<xs:element name="jobName" type="xs:string"/>
+																						<xs:element name="remoteEngineer" type="xs:string"/>
+																						<xs:element name="notificationMessage" type="xs:string"/>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="rce" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="platform" type="xs:string"/>
+																			<xs:element name="component">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="identifier" type="xs:string"/>
+																						<xs:element name="version" type="xs:string"/>
+																						<xs:element name="name" type="xs:string"/>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																			<xs:element name="xmlInputName" type="xs:string"/>
+																			<xs:element name="xmlOutputName" type="xs:string"/>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="other" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:any maxOccurs="unbounded"/>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the design competence which can be used as reference in the problem definition etc. (e.g. 'F')</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="mathematicalFunctions" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="mathematicalFunction" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="label" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Name of the function which can be used for clean printouts (e.g. 'G')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="inputs" type="inputsType"/>
+													<xs:element name="outputs">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="output" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="inoutType">
+																				<xs:sequence>
+																					<xs:element name="equation" type="xs:string">
+																						<xs:annotation>
+																							<xs:documentation>Equation in the MathML format</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the function which can be used as reference in the problem definition etc. (e.g. 'G')</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="parameters">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="parameter" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="label" type="xs:string">
+											<xs:annotation>
+												<xs:documentation>Label of the parameter which can be used for clean printouts (e.g. 'y1')</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="description" type="xs:string" minOccurs="0">
+											<xs:annotation>
+												<xs:documentation>Detailed description of the parameter</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="note" type="xs:string" minOccurs="0">
+											<xs:annotation>
+												<xs:documentation>Any additional note for the parameter</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="unit" type="xs:string" minOccurs="0"/>
+										<xs:element name="dataType" type="xs:string" minOccurs="0"/>
+									</xs:sequence>
+									<xs:attribute name="uID" type="xs:string" use="required">
+										<xs:annotation>
+											<xs:documentation>Unique ID of the parameter which can be used as reference in the problem definition etc. (e.g. '/data_schema/analyses/y1')</xs:documentation>
+										</xs:annotation>
+									</xs:attribute>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="problemDefinition" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="problemFormulation">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="mdaoArchitecture" type="xs:string"/>
+										<xs:element name="convergerType" type="xs:string" minOccurs="0"/>
+										<xs:element name="executableBlocksOrder">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="executableBlock" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:simpleContent>
+																<xs:extension base="xs:string">
+																	<xs:attribute name="position" type="xs:int"/>
+																</xs:extension>
+															</xs:simpleContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="allowUnconvergedCouplings" type="xs:boolean"/>
+										<xs:element name="doeSettings" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeMethod" type="xs:string"/>
+													<xs:element name="doeSeed" type="xs:decimal" minOccurs="0"/>
+													<xs:element name="doeRuns" type="xs:int" minOccurs="0"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="problemRoles">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="parameters">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="designVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="designVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="nominalValue" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="lowerBound" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="upperBound" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="variableType" minOccurs="0">
+																						<xs:simpleType>
+																							<xs:restriction base="xs:string">
+																								<xs:enumeration value="int"/>
+																								<xs:enumeration value="real"/>
+																							</xs:restriction>
+																						</xs:simpleType>
+																					</xs:element>
+																					<xs:element name="samples" minOccurs="0">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="sample" maxOccurs="unbounded">
+																									<xs:complexType>
+																										<xs:simpleContent>
+																											<xs:extension base="xs:string">
+																												<xs:attribute name="position" type="xs:int"/>
+																											</xs:extension>
+																										</xs:simpleContent>
+																									</xs:complexType>
+																								</xs:element>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="objectiveVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="objectiveVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="constraintVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="constraintVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="constraintType" type="xs:string" minOccurs="0"/>
+																					<xs:element name="referenceValue" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="requiredEqualityPrecision" type="xs:decimal" minOccurs="0"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="stateVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="stateVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="executableBlocks">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preCouplingBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="preCouplingBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="coupledBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="coupledBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="postCouplingBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="postCouplingBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="preDesvarsBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="preDesvarsBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="postDesvarsBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="postDesvarBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+						<xs:attribute name="uID" type="xs:string" use="required"/>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="workflow" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="problemDefinitionUID" type="xs:string"/>
+							<xs:element name="dataGraph">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="fromUID" type="xs:string"/>
+																<xs:element name="toUID" type="xs:string"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="processGraph">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="fromUID" type="xs:string"/>
+																<xs:element name="toUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="nodes">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="node" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="referenceUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+																<xs:element name="convergerStepNumber" type="xs:int" minOccurs="0"/>
+																<xs:element name="diagonalPosition" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="architectureElements" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="parameters">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="instances" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="instance" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="initialGuessCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="couplingCopyVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="couplingCopyVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="initialGuessDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalOutputVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalOutputVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="consistencyConstraintVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="consistencyConstraintVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeInputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeInputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeOutputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeOutputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="executableBlocks">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="coordinators" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coordinator" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="optimizers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="optimizer" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simpleArchitectureElementsBlockType">
+																	<xs:sequence>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="objectiveVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="objectiveVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="objectiveVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="constraintVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="constraintVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="constraintVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="convergers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="converger" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="does" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doe" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simplerArchitectureElementsBlockType">
+																	<xs:sequence>
+																		<xs:element name="settings">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="doeTable" type="xs:string" minOccurs="0"/>
+																					<xs:element name="doeTableOrder" type="xs:string" minOccurs="0"/>
+																					<xs:element name="doeMethod" type="xs:string"/>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="consistencyConstraintFunctions" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="consistencyConstraintFunction" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="coupledAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coupledAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="inputsType">
+		<xs:sequence>
+			<xs:element name="input" maxOccurs="unbounded">
+				<xs:complexType>
+					<xs:complexContent>
+						<xs:extension base="inoutType">
+							<xs:sequence>
+								<xs:element name="equationLabel" minOccurs="0">
+									<xs:simpleType>
+										<xs:list itemType="xs:string"/>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="validRanges" type="rangeType" minOccurs="0"/>
+							</xs:sequence>
+						</xs:extension>
+					</xs:complexContent>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="rangeType">
+		<xs:sequence>
+			<xs:element name="limitRange" minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>Range defined by two limits</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="minimum" type="xs:float"/>
+						<xs:element name="maximum" type="xs:float"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="listRange" minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>Range defined by a list of items</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="listRangeItem" type="xs:string" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="inoutType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>ID of the parameter which serves as input or output  (e.g. '/data_schema/analyses/y2')</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="outputsType">
+		<xs:sequence>
+			<xs:element name="output" type="inoutType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="contactType">
+		<xs:choice>
+			<xs:element name="contact">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="name" type="xs:string">
+							<xs:annotation>
+								<xs:documentation>Name of the contact person</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element name="email" type="xs:string">
+							<xs:annotation>
+								<xs:documentation>E-Mail address of the contact person</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element name="company" minOccurs="0"/>
+						<xs:element name="department" minOccurs="0"/>
+						<xs:element name="function" type="xs:string" minOccurs="0"/>
+						<xs:element name="address" type="xs:string" minOccurs="0"/>
+						<xs:element name="telephone" type="xs:string" minOccurs="0"/>
+						<xs:element name="country" type="xs:string" minOccurs="0"/>
+					</xs:sequence>
+					<xs:attribute name="uID" type="xs:string" use="required">
+						<xs:annotation>
+							<xs:documentation>Unique ID of the contact which can be used as reference in order to avoid having the same contact twice in the document</xs:documentation>
+						</xs:annotation>
+					</xs:attribute>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="contactUID" type="xs:string"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="simpleVariableType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsVariableType">
+		<xs:sequence>
+			<xs:element name="relatedParameterUID" type="xs:string"/>
+			<xs:element name="label" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+			<xs:element name="settings" type="xs:string" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simplerArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsRelatedBlockType">
+		<xs:sequence>
+			<xs:element name="relatedExecutableBlockUID" type="xs:string"/>
+		</xs:sequence>
+	</xs:complexType>
+</xs:schema>
diff --git a/kadmos/cmdows/schemas/0.6/cmdows.xsd b/kadmos/cmdows/schemas/0.6/cmdows.xsd
new file mode 100644
index 000000000..609ec1c41
--- /dev/null
+++ b/kadmos/cmdows/schemas/0.6/cmdows.xsd
@@ -0,0 +1,1036 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
+	<xs:element name="cmdows">
+		<xs:complexType>
+			<xs:sequence>
+				<xs:element name="header">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="creator" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Creator of the initial CMDOWS dataset </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="description" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Description of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="timestamp" type="xs:dateTime">
+								<xs:annotation>
+									<xs:documentation>Timestamp of the initial CMDOWS dataset creation </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="fileVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the initial CMDOWS dataset</xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="cmdowsVersion" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>Version of the CMDOWS schema that the initial CMDOWS dataset adheres to </xs:documentation>
+								</xs:annotation>
+							</xs:element>
+							<xs:element name="updates" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="update" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="modification" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Description of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="creator" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Creator of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="timestamp" type="xs:dateTime">
+														<xs:annotation>
+															<xs:documentation>Timestamp of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="fileVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the modification to the CMDOWS dataset</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="cmdowsVersion" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Version of the CMDOWS schema that the modification  to the CMDOWS dataset adheres to </xs:documentation>
+														</xs:annotation>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="executableBlocks">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="designCompetences" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="designCompetence" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="ID" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Identifier of the tool to be executed</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="modeID" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Identifier of the tool mode to be executed (as a tool can usually be executed in different modes)</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="instanceID" type="xs:string"/>
+													<xs:element name="version" type="xs:string"/>
+													<xs:element name="label" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Label of the design competence which can be used for clean printouts (e.g. 'F')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="inputs" type="inputsType"/>
+													<xs:element name="outputs" type="outputsType"/>
+													<xs:element name="metadata">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="generalInfo">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="description" type="xs:string">
+																				<xs:annotation>
+																					<xs:documentation>Description of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="status" type="xs:string" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Describing the state of the design competence, e.g. draft, final, for verification, ...</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="creationDate" type="xs:date" minOccurs="0"/>
+																			<xs:element name="owner" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Owner of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="creator" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Creator of the design competence</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="operator" type="contactType" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Operator of the design competence to be contacted in case of problems</xs:documentation>
+																				</xs:annotation>
+																			</xs:element>
+																			<xs:element name="modelDefinition" minOccurs="0">
+																				<xs:annotation>
+																					<xs:documentation>Optional element for 'surrogateModel' competence types</xs:documentation>
+																				</xs:annotation>
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="referenceDataSet" type="xs:string" minOccurs="0"/>
+																						<xs:element name="analysisMethod" type="xs:string" minOccurs="0"/>
+																						<xs:element name="fittingMethod" type="xs:string" minOccurs="0"/>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="performanceInfo" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="precision" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="fidelityLevel" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="runTime" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="standardDeviation" type="xs:decimal" minOccurs="0"/>
+																			<xs:element name="verifications" minOccurs="0">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="verification" maxOccurs="unbounded">
+																							<xs:complexType>
+																								<xs:sequence>
+																									<xs:element name="method" type="xs:string"/>
+																									<xs:element name="verifier" type="contactType"/>
+																									<xs:element name="result" type="xs:string"/>
+																									<xs:element name="date" type="xs:date"/>
+																									<xs:element name="version" type="xs:string"/>
+																								</xs:sequence>
+																							</xs:complexType>
+																						</xs:element>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+																<xs:element name="executionInfo" minOccurs="0">
+																	<xs:complexType>
+																		<xs:sequence>
+																			<xs:element name="availabilityConstraints" minOccurs="0">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="fromDate" type="xs:date" minOccurs="0"/>
+																						<xs:element name="toDate" type="xs:date" minOccurs="0"/>
+																						<xs:element name="fromOfficeHour" type="xs:time" minOccurs="0"/>
+																						<xs:element name="toOfficeHour" type="xs:time" minOccurs="0"/>
+																						<xs:element name="maximumTotalExecutions" type="xs:int" minOccurs="0"/>
+																						<xs:element name="maximumParallelExecutions" type="xs:int" minOccurs="0"/>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																			<xs:element name="authorizationConstraints" minOccurs="0">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="authorizedUsers" minOccurs="0">
+																							<xs:complexType>
+																								<xs:sequence>
+																									<xs:element name="authorizedUser" type="contactType" maxOccurs="unbounded"/>
+																								</xs:sequence>
+																							</xs:complexType>
+																						</xs:element>
+																						<xs:element name="unauthorizedUsers" minOccurs="0">
+																							<xs:complexType>
+																								<xs:sequence>
+																									<xs:element name="unauthorizedUser" type="contactType" maxOccurs="unbounded"/>
+																								</xs:sequence>
+																							</xs:complexType>
+																						</xs:element>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																			<xs:element name="remoteComponentInfo" minOccurs="0">
+																				<xs:complexType>
+																					<xs:sequence>
+																						<xs:element name="jobSettings" minOccurs="0">
+																							<xs:complexType>
+																								<xs:sequence>
+																									<xs:element name="singleOrMultiExecution" type="xs:string"/>
+																									<xs:element name="jobName" type="xs:string"/>
+																									<xs:element name="remoteEngineer" type="contactType"/>
+																									<xs:element name="notificationMessage" type="xs:string"/>
+																								</xs:sequence>
+																							</xs:complexType>
+																						</xs:element>
+																						<xs:element name="dataExchangeSettings" minOccurs="0">
+																							<xs:complexType>
+																								<xs:sequence>
+																									<xs:element name="dataserver" type="xs:string" minOccurs="0"/>
+																									<xs:element name="urlsite" type="xs:string" minOccurs="0"/>
+																									<xs:element name="context" type="xs:string" minOccurs="0"/>
+																									<xs:element name="folder" type="xs:string" minOccurs="0"/>
+																									<xs:element name="pollingTime" type="xs:float" minOccurs="0"/>
+																									<xs:element name="maxIterations" type="xs:int" minOccurs="0"/>
+																									<xs:element name="timeOut" type="xs:float" minOccurs="0"/>
+																									<xs:element name="sharedFilePolicy" type="xs:string" minOccurs="0"/>
+																									<xs:element name="servermutex" type="xs:string" minOccurs="0"/>
+																								</xs:sequence>
+																							</xs:complexType>
+																						</xs:element>
+																					</xs:sequence>
+																				</xs:complexType>
+																			</xs:element>
+																		</xs:sequence>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="projectspecific" type="xs:anyType" minOccurs="0">
+														<xs:annotation>
+															<xs:documentation>Free element containing any project specific information  (e.g. for RCE or Optimus).</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the design competence which can be used as reference in the problem definition etc. By convention this identifier should be of the following form ID[modeID][instanceID][version]</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="mathematicalFunctions" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="mathematicalFunction" maxOccurs="unbounded">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="label" type="xs:string">
+														<xs:annotation>
+															<xs:documentation>Name of the function which can be used for clean printouts (e.g. 'G')</xs:documentation>
+														</xs:annotation>
+													</xs:element>
+													<xs:element name="inputs" type="inputsType"/>
+													<xs:element name="outputs">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="output" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="inoutType">
+																				<xs:sequence>
+																					<xs:choice>
+																						<xs:element name="equations" type="equationsType">
+																							<xs:annotation>
+																								<xs:documentation>A mathematical function output can be defined by mulitple equivalent equations in different languages</xs:documentation>
+																							</xs:annotation>
+																						</xs:element>
+																						<xs:element name="equationsUID" type="xs:string">
+																							<xs:annotation>
+																								<xs:documentation>A mathematical function output can also be defined by a reference to another group of equivalent equations in different languages</xs:documentation>
+																							</xs:annotation>
+																						</xs:element>
+																					</xs:choice>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+												<xs:attribute name="uID" type="xs:string" use="required">
+													<xs:annotation>
+														<xs:documentation>Unique ID of the function which can be used as reference in the problem definition etc. (e.g. 'G')</xs:documentation>
+													</xs:annotation>
+												</xs:attribute>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="parameters">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="parameter" maxOccurs="unbounded">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="label" type="xs:string">
+											<xs:annotation>
+												<xs:documentation>Label of the parameter which can be used for clean printouts (e.g. 'y1')</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="description" type="xs:string" minOccurs="0">
+											<xs:annotation>
+												<xs:documentation>Detailed description of the parameter</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="note" type="xs:string" minOccurs="0">
+											<xs:annotation>
+												<xs:documentation>Any additional note for the parameter</xs:documentation>
+											</xs:annotation>
+										</xs:element>
+										<xs:element name="unit" type="xs:string" minOccurs="0"/>
+										<xs:element name="dataType" type="xs:string" minOccurs="0"/>
+									</xs:sequence>
+									<xs:attribute name="uID" type="xs:string" use="required">
+										<xs:annotation>
+											<xs:documentation>Unique ID of the parameter which can be used as reference in the problem definition etc. (e.g. '/data_schema/analyses/y1')</xs:documentation>
+										</xs:annotation>
+									</xs:attribute>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="problemDefinition" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="problemFormulation">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="mdaoArchitecture" type="xs:string"/>
+										<xs:element name="convergerType" type="xs:string" minOccurs="0"/>
+										<xs:element name="executableBlocksOrder">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="executableBlock" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:simpleContent>
+																<xs:extension base="xs:string">
+																	<xs:attribute name="position" type="xs:int"/>
+																</xs:extension>
+															</xs:simpleContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="allowUnconvergedCouplings" type="xs:boolean"/>
+										<xs:element name="doeSettings" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeMethod" type="xs:string"/>
+													<xs:element name="doeSeed" type="xs:decimal" minOccurs="0"/>
+													<xs:element name="doeRuns" type="xs:int" minOccurs="0"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="problemRoles">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="parameters">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="designVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="designVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="nominalValue" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="lowerBound" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="upperBound" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="variableType" minOccurs="0">
+																						<xs:simpleType>
+																							<xs:restriction base="xs:string">
+																								<xs:enumeration value="int"/>
+																								<xs:enumeration value="real"/>
+																							</xs:restriction>
+																						</xs:simpleType>
+																					</xs:element>
+																					<xs:element name="samples" minOccurs="0">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="sample" maxOccurs="unbounded">
+																									<xs:complexType>
+																										<xs:simpleContent>
+																											<xs:extension base="xs:string">
+																												<xs:attribute name="position" type="xs:int"/>
+																											</xs:extension>
+																										</xs:simpleContent>
+																									</xs:complexType>
+																								</xs:element>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="objectiveVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="objectiveVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="constraintVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="constraintVariable" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:complexContent>
+																			<xs:extension base="simpleVariableType">
+																				<xs:sequence>
+																					<xs:element name="constraintType" type="xs:string" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Either 'inequality' or  'equality'</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																					<xs:element name="constraintOperator" minOccurs="0">
+																						<xs:annotation>
+																							<xs:documentation>Either '==', 'lt', 'gt', 'lt=' or 'gt='</xs:documentation>
+																						</xs:annotation>
+																					</xs:element>
+																					<xs:element name="referenceValue" type="xs:decimal" minOccurs="0"/>
+																					<xs:element name="requiredEqualityPrecision" type="xs:decimal" minOccurs="0"/>
+																				</xs:sequence>
+																			</xs:extension>
+																		</xs:complexContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="stateVariables" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="stateVariable" type="simpleVariableType" maxOccurs="unbounded"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="executableBlocks">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preCouplingBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="preCouplingBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="coupledBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="coupledBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="postCouplingBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="postCouplingBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="preDesvarsBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="preDesvarsBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+													<xs:element name="postDesvarsBlocks" minOccurs="0">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="postDesvarBlock" maxOccurs="unbounded">
+																	<xs:complexType>
+																		<xs:simpleContent>
+																			<xs:extension base="xs:string"/>
+																		</xs:simpleContent>
+																	</xs:complexType>
+																</xs:element>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+						<xs:attribute name="uID" type="xs:string" use="required"/>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="workflow" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="problemDefinitionUID" type="xs:string" minOccurs="0"/>
+							<xs:element name="dataGraph">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:choice>
+																	<xs:element name="fromParameterUID" type="xs:string"/>
+																	<xs:element name="fromExecutableBlockUID" type="xs:string"/>
+																</xs:choice>
+																<xs:choice>
+																	<xs:element name="toParameterUID"/>
+																	<xs:element name="toExecutableBlockUID"/>
+																</xs:choice>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="metadata" minOccurs="0"/>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="processGraph" minOccurs="0">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="name" type="xs:string"/>
+										<xs:element name="edges">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="edge" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="fromExecutableBlockUID" type="xs:string"/>
+																<xs:element name="toExecutableBlockUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="nodes">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="node" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:sequence>
+																<xs:element name="referenceUID" type="xs:string"/>
+																<xs:element name="processStepNumber" type="xs:int"/>
+																<xs:element name="convergerStepNumber" type="xs:int" minOccurs="0"/>
+																<xs:element name="diagonalPosition" type="xs:int"/>
+															</xs:sequence>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="metadata" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="loopNesting" type="dictType" minOccurs="0"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+				<xs:element name="architectureElements" minOccurs="0">
+					<xs:complexType>
+						<xs:sequence>
+							<xs:element name="parameters">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="instances" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="instance" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simpleArchitectureElementsVariableType">
+																	<xs:sequence>
+																		<xs:element name="instanceID" type="xs:int"/>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="initialGuessCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalCouplingVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalCouplingVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="couplingCopyVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="couplingCopyVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="initialGuessDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="initialGuessDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalDesignVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalDesignVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="finalOutputVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="finalOutputVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="consistencyConstraintVariables" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="consistencyConstraintVariable" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeInputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeInputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="doeOutputSampleLists" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doeOutputSampleList" type="simpleArchitectureElementsVariableType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+							<xs:element name="executableBlocks">
+								<xs:complexType>
+									<xs:sequence>
+										<xs:element name="coordinators" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coordinator" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="optimizers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="optimizer" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simpleArchitectureElementsBlockType">
+																	<xs:sequence>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="objectiveVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="objectiveVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="objectiveVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="constraintVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="constraintVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="constraintVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="convergers" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="converger" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="does" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="doe" maxOccurs="unbounded">
+														<xs:complexType>
+															<xs:complexContent>
+																<xs:extension base="simplerArchitectureElementsBlockType">
+																	<xs:sequence>
+																		<xs:element name="settings">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="doeTable" type="xs:string" minOccurs="0"/>
+																					<xs:element name="doeTableOrder" type="xs:string" minOccurs="0"/>
+																					<xs:element name="doeMethod" type="xs:string"/>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																		<xs:element name="designVariables" minOccurs="0">
+																			<xs:complexType>
+																				<xs:sequence>
+																					<xs:element name="designVariable" maxOccurs="unbounded">
+																						<xs:complexType>
+																							<xs:sequence>
+																								<xs:element name="designVariableUID" type="xs:string"/>
+																							</xs:sequence>
+																						</xs:complexType>
+																					</xs:element>
+																				</xs:sequence>
+																			</xs:complexType>
+																		</xs:element>
+																	</xs:sequence>
+																</xs:extension>
+															</xs:complexContent>
+														</xs:complexType>
+													</xs:element>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="consistencyConstraintFunctions" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="consistencyConstraintFunction" type="simpleArchitectureElementsBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="preIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="preIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postIteratorAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postIteratorAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="coupledAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="coupledAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+										<xs:element name="postCouplingAnalyses" minOccurs="0">
+											<xs:complexType>
+												<xs:sequence>
+													<xs:element name="postCouplingAnalysis" type="simpleArchitectureElementsRelatedBlockType" maxOccurs="unbounded"/>
+												</xs:sequence>
+											</xs:complexType>
+										</xs:element>
+									</xs:sequence>
+								</xs:complexType>
+							</xs:element>
+						</xs:sequence>
+					</xs:complexType>
+				</xs:element>
+			</xs:sequence>
+		</xs:complexType>
+	</xs:element>
+	<xs:complexType name="inputsType">
+		<xs:sequence>
+			<xs:element name="input" maxOccurs="unbounded">
+				<xs:complexType>
+					<xs:complexContent>
+						<xs:extension base="inoutType">
+							<xs:sequence>
+								<xs:element name="equationLabel" minOccurs="0">
+									<xs:simpleType>
+										<xs:list itemType="xs:string"/>
+									</xs:simpleType>
+								</xs:element>
+								<xs:element name="validRanges" type="rangeType" minOccurs="0"/>
+							</xs:sequence>
+						</xs:extension>
+					</xs:complexContent>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="rangeType">
+		<xs:sequence>
+			<xs:element name="limitRange" minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>Range defined by two limits</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="minimum" type="xs:float"/>
+						<xs:element name="maximum" type="xs:float"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="listRange" minOccurs="0" maxOccurs="unbounded">
+				<xs:annotation>
+					<xs:documentation>Range defined by a list of items</xs:documentation>
+				</xs:annotation>
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="listRangeItem" type="xs:string" maxOccurs="unbounded"/>
+					</xs:sequence>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="inoutType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string">
+				<xs:annotation>
+					<xs:documentation>ID of the parameter which serves as input or output  (e.g. '/data_schema/analyses/y2')</xs:documentation>
+				</xs:annotation>
+			</xs:element>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="equationsType">
+		<xs:sequence>
+			<xs:element name="equation" maxOccurs="unbounded">
+				<xs:complexType>
+					<xs:simpleContent>
+						<xs:extension base="xs:string">
+							<xs:attribute name="language" type="xs:string">
+								<xs:annotation>
+									<xs:documentation>The language in which the equation is formulated (e.g.  Python or MathML)</xs:documentation>
+								</xs:annotation>
+							</xs:attribute>
+						</xs:extension>
+					</xs:simpleContent>
+				</xs:complexType>
+			</xs:element>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="outputsType">
+		<xs:sequence>
+			<xs:element name="output" type="inoutType" maxOccurs="unbounded"/>
+		</xs:sequence>
+	</xs:complexType>
+	<xs:complexType name="contactType">
+		<xs:choice>
+			<xs:element name="contact">
+				<xs:complexType>
+					<xs:sequence>
+						<xs:element name="name" type="xs:string">
+							<xs:annotation>
+								<xs:documentation>Name of the contact person</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element name="email" type="xs:string">
+							<xs:annotation>
+								<xs:documentation>E-Mail address of the contact person</xs:documentation>
+							</xs:annotation>
+						</xs:element>
+						<xs:element name="company" minOccurs="0"/>
+						<xs:element name="department" minOccurs="0"/>
+						<xs:element name="function" type="xs:string" minOccurs="0"/>
+						<xs:element name="address" type="xs:string" minOccurs="0"/>
+						<xs:element name="telephone" type="xs:string" minOccurs="0"/>
+						<xs:element name="country" type="xs:string" minOccurs="0"/>
+					</xs:sequence>
+					<xs:attribute name="uID" type="xs:string" use="required">
+						<xs:annotation>
+							<xs:documentation>Unique ID of the contact which can be used as reference in order to avoid having the same contact twice in the document</xs:documentation>
+						</xs:annotation>
+					</xs:attribute>
+				</xs:complexType>
+			</xs:element>
+			<xs:element name="contactUID" type="xs:string"/>
+		</xs:choice>
+	</xs:complexType>
+	<xs:complexType name="dictType">
+		<xs:sequence>
+			<xs:element name="simpleValue" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
+			<xs:element name="complexValue" type="dictType" minOccurs="0" maxOccurs="unbounded"/>
+		</xs:sequence>
+		<xs:attribute name="key" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleVariableType">
+		<xs:sequence>
+			<xs:element name="parameterUID" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string" use="required"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsVariableType">
+		<xs:sequence>
+			<xs:element name="relatedParameterUID" type="xs:string"/>
+			<xs:element name="label" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+			<xs:element name="settings" type="xs:string" minOccurs="0"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simplerArchitectureElementsBlockType">
+		<xs:sequence>
+			<xs:element name="label" type="xs:string"/>
+		</xs:sequence>
+		<xs:attribute name="uID" type="xs:string"/>
+	</xs:complexType>
+	<xs:complexType name="simpleArchitectureElementsRelatedBlockType">
+		<xs:sequence>
+			<xs:element name="relatedExecutableBlockUID" type="xs:string"/>
+		</xs:sequence>
+	</xs:complexType>
+</xs:schema>
diff --git a/kadmos/utilities/cmdows/0.6/cmdows.xsd b/kadmos/utilities/cmdows/0.6/cmdows.xsd
index d30c18107..609ec1c41 100644
--- a/kadmos/utilities/cmdows/0.6/cmdows.xsd
+++ b/kadmos/utilities/cmdows/0.6/cmdows.xsd
@@ -956,7 +956,7 @@
 				</xs:complexType>
 			</xs:element>
 		</xs:sequence>
-		<xs:attribute name="equationsUID" type="xs:string"/>
+		<xs:attribute name="uID" type="xs:string"/>
 	</xs:complexType>
 	<xs:complexType name="outputsType">
 		<xs:sequence>
-- 
GitLab