de.bund.bfr.knime.foodprocess.pcml/src/de/bund/bfr/knime/pcml/schema/pcml-1-0.xsd
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns="http://www.bfr.bund.de/PCML-1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.bfr.bund.de/PCML-1_0">
<xs:element name="PCML">
<xs:complexType>
<xs:sequence>
<xs:element ref="Header"/>
<xs:element maxOccurs="1" minOccurs="0" ref="ProcessChain"/>
<xs:element maxOccurs="1" minOccurs="0" ref="ProcessChainData"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
<xs:attribute name="version" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Header">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
<xs:element minOccurs="0" ref="Application"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Annotation"/>
<xs:element minOccurs="0" ref="Timestamp"/>
</xs:sequence>
<xs:attribute name="copyright" type="xs:string" use="required"/>
<xs:attribute name="description" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Application">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="version" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Annotation">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Timestamp">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="NameAndDatabaseId">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="db-id" type="xs:int"/>
</xs:complexType>
<xs:element name="ProcessChain">
<xs:complexType>
<xs:sequence maxOccurs="unbounded" minOccurs="0">
<xs:element ref="ProcessNode"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ProcessNode">
<xs:complexType>
<xs:sequence>
<xs:element name="Process" type="NameAndDatabaseId"/>
<xs:element name="Parameters" type="ProcessParameters"/>
<xs:element maxOccurs="4" minOccurs="0" ref="Inport"/>
<xs:element maxOccurs="4" minOccurs="1" ref="Outport"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="type" type="ProcessNodeType"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="ProcessNodeType">
<xs:restriction base="xs:string">
<xs:enumeration value="processing"/>
<xs:enumeration value="admixing"/>
<xs:enumeration value="contaminating"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="ProcessParameters">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
<xs:attribute name="capacity" type="xs:double"/>
<xs:attribute name="duration" type="xs:double" use="required"/>
<xs:attribute name="numberComputations" type="xs:int"/>
<xs:attribute name="temperature" type="xs:string"/>
<xs:attribute name="pH" type="xs:string"/>
<xs:attribute name="aw" type="xs:string"/>
<xs:attribute name="pressure" type="xs:string"/>
</xs:complexType>
<xs:element name="Inport">
<xs:complexType>
<xs:sequence>
<xs:element ref="OutportRef"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="OutportRef">
<xs:complexType>
<!-- <xs:sequence> -->
<!-- </xs:sequence> -->
<xs:attribute name="ref" type="xs:string" use="required"/>
<xs:attribute name="out-index" type="xs:int" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="Outport">
<xs:complexType>
<xs:sequence>
<!-- Für Neudefinition einer Matrix -->
<xs:element maxOccurs="1" minOccurs="0" name="Matrix" type="NameAndDatabaseId"/>
<xs:element maxOccurs="1" minOccurs="0" ref="MatrixRecipe"/>
<xs:element maxOccurs="1" minOccurs="0" ref="AgentRecipe"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
<xs:attribute name="volume" type="xs:string" use="required"/>
<xs:attribute name="temperature" type="xs:string"/>
<xs:attribute name="pH" type="xs:string"/>
<xs:attribute name="aw" type="xs:string"/>
<xs:attribute name="pressure" type="xs:string"/>
<xs:attribute name="flowSpeed" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="MatrixRecipe">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="1" ref="MatrixIncredient"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MatrixIncredient">
<xs:complexType>
<xs:sequence>
<xs:element name="Matrix" type="NameAndDatabaseId"/>
</xs:sequence>
<xs:attribute name="fraction" type="xs:double" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="AgentRecipe">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="1" ref="AgentIncredient"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="AgentIncredient">
<xs:complexType>
<xs:sequence>
<xs:element name="Agent" type="NameAndDatabaseId"/>
</xs:sequence>
<xs:attribute name="fraction" type="xs:double"/>
<xs:attribute name="unit" type="xs:string"/>
<xs:attribute name="object" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="Extension">
<xs:complexType>
<xs:complexContent mixed="true">
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="0" processContents="skip"/>
</xs:sequence>
<xs:attribute name="extender" type="xs:string" use="optional"/>
<xs:attribute name="name" type="xs:string" use="optional"/>
<xs:attribute name="value" type="xs:string" use="optional"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="ProcessChainData">
<xs:complexType>
<xs:sequence maxOccurs="unbounded" minOccurs="0">
<xs:element ref="ProcessData"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ProcessData">
<xs:complexType>
<xs:sequence>
<xs:element ref="DataTable"/>
</xs:sequence>
<!-- Reference to the ProcessNode element. -->
<xs:attribute name="ref" type="xs:string" use="required"/>
<xs:attribute name="time" type="xs:double"/>
</xs:complexType>
</xs:element>
<xs:element name="DataTable">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
<xs:element ref="ColumnList"/>
<xs:choice>
<xs:element ref="TableLocator"/>
<xs:element ref="InlineTable"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="ColumnList">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="1" ref="Column"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Column">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element name="Matrix" type="NameAndDatabaseId"/>
<xs:element name="Agent" type="NameAndDatabaseId"/>
<xs:element name="ColumnId" type="NameAndDatabaseId"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="TableLocator">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InlineTable">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="Extension"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="row"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="row">
<xs:complexType>
<xs:complexContent mixed="true">
<xs:restriction base="xs:anyType">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="1" processContents="skip"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>