content/ns/2012/component/profile/ComponentProfile.xsd (224 lines of code) (raw):
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://ns.taverna.org.uk/2012/component/profile"
xmlns="http://ns.taverna.org.uk/2012/component/profile" xmlns:cp="http://ns.taverna.org.uk/2012/component/profile"
elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/2001/XMLSchema"
schemaLocation="http://www.w3.org/2001/XMLSchema.xsd" />
<xs:simpleType name="name">
<xs:annotation>
<xs:documentation>A valid name for a port or activity in a Taverna
workflow.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="([a-zA_Z0-9_])+" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="componentElements">
<xs:annotation>
<xs:documentation>
The component elements that can be annotated.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="InputPort"></xs:enumeration>
<xs:enumeration value="OutputPort"></xs:enumeration>
<xs:enumeration value="Activity"></xs:enumeration>
<xs:enumeration value="Component"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="basicAnnotations">
<xs:annotation>
<xs:documentation>
The basic annotations available in a Taverna
workflow.
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="Description"></xs:enumeration>
<xs:enumeration value="Author"></xs:enumeration>
<xs:enumeration value="Example"></xs:enumeration>
<xs:enumeration value="Title"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="componentAnnotations">
<xs:annotation>
<xs:documentation>
Annotations applicable to components.
</xs:documentation>
</xs:annotation>
<xs:restriction base="basicAnnotations">
<xs:enumeration value="Description"></xs:enumeration>
<xs:enumeration value="Author"></xs:enumeration>
<xs:enumeration value="Title"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="portAnnotations">
<xs:annotation>
<xs:documentation>
Annotations applicable to ports.
</xs:documentation>
</xs:annotation>
<xs:restriction base="basicAnnotations">
<xs:enumeration value="Description"></xs:enumeration>
<xs:enumeration value="Example"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="activityAnnotations">
<xs:annotation>
<xs:documentation>
Annotations applicable to activities.
</xs:documentation>
</xs:annotation>
<xs:restriction base="basicAnnotations">
<xs:enumeration value="Description"></xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="componentAnnotation">
<xs:simpleContent>
<xs:extension base="componentAnnotations">
<xs:attributeGroup ref="xs:occurs" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="portAnnotation">
<xs:simpleContent>
<xs:extension base="portAnnotations">
<xs:attributeGroup ref="xs:occurs" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="activityAnnotation">
<xs:simpleContent>
<xs:extension base="activityAnnotations">
<xs:attributeGroup ref="xs:occurs" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="semanticAnnotation">
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="ontology" type="xs:string" use="required" />
<xs:attribute name="predicate" type="xs:string" use="required" />
<xs:attribute name="class" type="xs:string" use="optional" />
<xs:attributeGroup ref="xs:occurs" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ontology">
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="id" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="port">
<xs:sequence>
<xs:element name="annotation" type="portAnnotation"
minOccurs="0" maxOccurs="unbounded" />
<xs:element name="semanticAnnotation" type="semanticAnnotation"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="name" type="name" />
<xs:attribute name="minDepth" type="xs:nonNegativeInteger"
default="0" />
<xs:attribute name="maxDepth" type="xs:allNNI" default="unbounded" />
<xs:attributeGroup ref="xs:occurs" />
</xs:complexType>
<xs:complexType name="activity">
<xs:sequence>
<xs:element name="annotation" type="activityAnnotation"
minOccurs="0" maxOccurs="unbounded" />
<xs:element name="semanticAnnotation" type="semanticAnnotation"
minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="type" type="xs:string" />
<xs:attributeGroup ref="xs:occurs" />
</xs:complexType>
<xs:complexType name="replacement">
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:attribute name="replacementId" type="xs:string" use="required"/>
<xs:attribute name="replacementMessage" type="xs:string" use="required"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="pattern">
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
<xs:complexType name="pruneStack">
<xs:complexContent>
<xs:restriction base="xs:anyType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="handleException">
<xs:sequence>
<xs:element name="pattern" type="pattern" minOccurs="1" maxOccurs="1"/>
<xs:element name="pruneStack" type="pruneStack" minOccurs="0" maxOccurs="1"/>
<xs:element name="replacement" type="replacement" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="failLists">
<xs:complexContent>
<xs:restriction base="xs:anyType"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="exceptionHandling">
<xs:sequence>
<xs:element name="failLists" type="failLists" minOccurs="0" maxOccurs="1"/>
<xs:element name="handleException" type="handleException" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="component">
<xs:sequence>
<xs:element name="inputPort" type="port" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="outputPort" type="port" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="activity" type="activity" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="annotation" type="componentAnnotation" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="semanticAnnotation" type="semanticAnnotation" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="exceptionHandling" type="exceptionHandling" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="profile">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:string" />
<xs:element name="name" type="xs:string" />
<xs:element name="description" type="xs:string" />
<xs:element name="ontology" type="ontology" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="component" type="component" >
<xs:unique name="inputPortUnique">
<xs:selector xpath="cp:inputPort"></xs:selector>
<xs:field xpath="@name"></xs:field>
</xs:unique>
<xs:unique name="outputPortUnique">
<xs:selector xpath="cp:outputPort" />
<xs:field xpath="@name" />
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:key name="ontologyKey">
<xs:selector xpath="cp:ontology" />
<xs:field xpath="@id" />
</xs:key>
<xs:keyref name="componentKeyRef" refer="ontologyKey">
<xs:selector xpath="cp:component/cp:semanticAnnotation" />
<xs:field xpath="@ontology" />
</xs:keyref>
<xs:keyref name="inputKeyRef" refer="ontologyKey">
<xs:selector xpath="cp:component/cp:inputPorts/cp:inputPort/cp:semanticAnnotation" />
<xs:field xpath="@ontology" />
</xs:keyref>
<xs:keyref name="outputKeyRef" refer="ontologyKey">
<xs:selector xpath="cp:component/cp:outputPorts/cp:outputPort/cp:semanticAnnotation" />
<xs:field xpath="@ontology" />
</xs:keyref>
<xs:keyref name="activityKeyRef" refer="ontologyKey">
<xs:selector xpath="cp:component/cp:activities/cp:activity/cp:semanticAnnotation" />
<xs:field xpath="@ontology" />
</xs:keyref>
</xs:element>
</xs:schema>