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