<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:defaultcomponentprofile="http:///defaultcomponentprofile.ecore" xmlns:defaultprofile="http:///defaultprofile.ecore" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http:///defaultcomponentprofile.ecore">
  <xsd:annotation>
    <xsd:documentation>The Default Component Profile describes the meta data for packaging components such as J2EE components.</xsd:documentation>
  </xsd:annotation>
  <xsd:import namespace="http:///defaultprofile.ecore" schemaLocation="defaultprofile.xsd"/>
  <xsd:complexType name="Requirements">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. model
2. diagram
3. useCase
4. artifact

The models, diagrams, artifacts, and so on within this class are intended to describe the requirements that the component proposes to fulfill.
</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="useCase" type="defaultcomponentprofile:UseCase"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="artifact" type="defaultprofile:Artifact"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="diagram" type="defaultcomponentprofile:Diagram"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="model" type="defaultcomponentprofile:Model"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="Requirements" type="defaultcomponentprofile:Requirements">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. model
2. diagram
3. useCase
4. artifact

The models, diagrams, artifacts, and so on within this class are intended to describe the requirements that the component proposes to fulfill.
</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Design">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. model
2. diagram
3. interfaceSpec
4. artifact

The Design class has no attributes, but has several associated classes including: Model, Diagram, InterfaceSpec, and Artifact. The models, diagrams, artifacts, and so on within this class are intended to describe the design elements that are necessary for the asset consumer to use the component. Refer to the description of the Model class and Diagram class in the Requirement class.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="diagram" type="defaultcomponentprofile:Diagram"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="artifact" type="defaultprofile:Artifact"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="model" type="defaultcomponentprofile:Model"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="interfaceSpec" type="defaultcomponentprofile:InterfaceSpec"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="Design" type="defaultcomponentprofile:Design">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. model
2. diagram
3. interfaceSpec
4. artifact

The Design class has no attributes, but has several associated classes including: Model, Diagram, InterfaceSpec, and Artifact. The models, diagrams, artifacts, and so on within this class are intended to describe the design elements that are necessary for the asset consumer to use the component. Refer to the description of the Model class and Diagram class in the Requirement class.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Implementation">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. artifact

The Implementation class has a collection of Artifact instances. These Artifact instances identify the binary and other files that provide the component implementation. The Implementation class has no attributes.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="artifact" type="defaultprofile:Artifact"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="Implementation" type="defaultcomponentprofile:Implementation">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. artifact

The Implementation class has a collection of Artifact instances. These Artifact instances identify the binary and other files that provide the component implementation. The Implementation class has no attributes.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Test">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. model
2. diagram
3. artifact

The Test class has no attributes, but does have several associations including: model, diagram, and artifact. The models, diagrams, artifacts, and so on within this element are intended to describe the testing of the component for the asset consumer.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="diagram" type="defaultcomponentprofile:Diagram"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="artifact" type="defaultprofile:Artifact"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="model" type="defaultcomponentprofile:Model"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="Test" type="defaultcomponentprofile:Test">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. model
2. diagram
3. artifact

The Test class has no attributes, but does have several associations including: model, diagram, and artifact. The models, diagrams, artifacts, and so on within this element are intended to describe the testing of the component for the asset consumer.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="UseCase">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The component may fulfill one or more use cases. This element points to a use case document.
The attributes are the same as the Artifact attributes; but are constrained to reference use case documents for the component.
</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="defaultprofile:Artifact"/>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="UseCase" type="defaultcomponentprofile:UseCase">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The component may fulfill one or more use cases. This element points to a use case document.
The attributes are the same as the Artifact attributes; but are constrained to reference use case documents for the component.
</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Diagram">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

A Model may have multiple Diagrams. In the Requirements class, the Diagram identifies the requirements-related diagrams such as the Business Concept Model diagram and the Use Case diagram, see UML Components, page 41.
The attributes are the same as the Artifact attributes; but are constrained to reference diagrams for describing the requirements for the component.
</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="defaultprofile:Artifact">
        <xsd:attribute name="model" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Diagram" type="defaultcomponentprofile:Diagram">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

A Model may have multiple Diagrams. In the Requirements class, the Diagram identifies the requirements-related diagrams such as the Business Concept Model diagram and the Use Case diagram, see UML Components, page 41.
The attributes are the same as the Artifact attributes; but are constrained to reference diagrams for describing the requirements for the component.
</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Model">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true&#13;
&#13;
property order is (these are role names)&#13;
1. diagram&#13;
2. model&#13;
&#13;
This is the model for specifying the requirements the component proposes to fulfill. There may be multiple models such as the Business Concept Model and the Use Case Model, see UML Components, page 41.&#13;
The attributes are the same as the &lt;artifact&gt; attributes; but are constrained to reference models for describing the requirements for the component.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="defaultprofile:Artifact">
        <xsd:attribute name="model" type="xsd:string"/>
        <xsd:attribute name="diagram" type="xsd:string"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Model" type="defaultcomponentprofile:Model">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true&#13;
&#13;
property order is (these are role names)&#13;
1. diagram&#13;
2. model&#13;
&#13;
This is the model for specifying the requirements the component proposes to fulfill. There may be multiple models such as the Business Concept Model and the Use Case Model, see UML Components, page 41.&#13;
The attributes are the same as the &lt;artifact&gt; attributes; but are constrained to reference models for describing the requirements for the component.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Operation">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. condition
2. parameter

The Operation describes one InterfaceSpec operation and has two associations, Condition and Parameter. These elements provide sufficient information in the asset packaging to let asset consumers and tools reason on the nature of the interface.
The Operation class has three attributes, name, initiatesTransaction, and description. The name is the operation name. The initiatesTransaction declares (i.e., boolean) if the Operation starts a transaction. The description provides for a brief abstract on the Operation.
</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="parameter" type="defaultcomponentprofile:Parameter"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="condition" type="defaultcomponentprofile:Condition"/>
      <xsd:element maxOccurs="1" minOccurs="0" name="description" type="defaultprofile:Description"/>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the name of the Operation.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="initiatesTransaction" type="xsd:boolean">
      <xsd:annotation>
        <xsd:documentation>This boolean value indicates whether the Operation starts a transaction.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:element name="Operation" type="defaultcomponentprofile:Operation">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. condition
2. parameter

The Operation describes one InterfaceSpec operation and has two associations, Condition and Parameter. These elements provide sufficient information in the asset packaging to let asset consumers and tools reason on the nature of the interface.
The Operation class has three attributes, name, initiatesTransaction, and description. The name is the operation name. The initiatesTransaction declares (i.e., boolean) if the Operation starts a transaction. The description provides for a brief abstract on the Operation.
</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="InterfaceSpec">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. operation
2. informationModel

The InterfaceSpec class describes the interface of the component. There may be multiple interfaces defined on the component, so multiple instances of this class may be required. The name attribute is the user-consumable name of the interface. The description is a human consumable short description of the interface. This class has two associations, Operation and InformationModel. If you create an InterfaceSpec you must create one or more Operation instances.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element maxOccurs="1" minOccurs="0" name="informationModel" type="defaultcomponentprofile:InformationModel"/>
      <xsd:element maxOccurs="unbounded" minOccurs="1" name="operation" type="defaultcomponentprofile:Operation"/>
      <xsd:element maxOccurs="1" minOccurs="0" name="description" type="defaultprofile:Description">
        <xsd:annotation>
          <xsd:documentation>This containts a description of the interface.</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the name of the interface.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:element name="InterfaceSpec" type="defaultcomponentprofile:InterfaceSpec">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. operation
2. informationModel

The InterfaceSpec class describes the interface of the component. There may be multiple interfaces defined on the component, so multiple instances of this class may be required. The name attribute is the user-consumable name of the interface. The description is a human consumable short description of the interface. This class has two associations, Operation and InformationModel. If you create an InterfaceSpec you must create one or more Operation instances.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="InformationModel">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. attribute
2. associationRole

The InformationModel class describes the information or state that is retained between invocations of the operations on the interface. This class has two associations, Attribute and AssociationRole.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="associationRole" type="defaultcomponentprofile:AssociationRole"/>
      <xsd:element maxOccurs="unbounded" minOccurs="0" name="attribute" type="defaultcomponentprofile:Attribute"/>
    </xsd:sequence>
  </xsd:complexType>
  <xsd:element name="InformationModel" type="defaultcomponentprofile:InformationModel">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=true

property order is (these are role names)
1. attribute
2. associationRole

The InformationModel class describes the information or state that is retained between invocations of the operations on the interface. This class has two associations, Attribute and AssociationRole.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Condition">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The Condition class captures the pre-, post- and other conditions of the Operation. It has two attributes type and description that declare the kind of the condition and explains the condition, respectively.</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence>
      <xsd:element maxOccurs="1" minOccurs="1" name="description" type="defaultprofile:Description"/>
    </xsd:sequence>
    <xsd:attribute name="type" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This captures the type of the condition for the Operation, such as a "pre" for a pre-condition that must exist before the operation is invoked.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:element name="Condition" type="defaultcomponentprofile:Condition">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The Condition class captures the pre-, post- and other conditions of the Operation. It has two attributes type and description that declare the kind of the condition and explains the condition, respectively.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Parameter">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The Parameter class describes the parameters on the Operation having the attributes of name, type, and direction. The name attribute is the name of the parameter. The type attribute describes the parameter's type. The direction attribute describes whether the parameter is input to the operation, or output, or both, and so on.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the name of the Parameter on the Operation.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="type" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the type of the Parameter on the Operation.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="direction" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the direction of the Parameter on the Operation, such as "in", "out", "inout".</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:element name="Parameter" type="defaultcomponentprofile:Parameter">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The Parameter class describes the parameters on the Operation having the attributes of name, type, and direction. The name attribute is the name of the parameter. The type attribute describes the parameter's type. The direction attribute describes whether the parameter is input to the operation, or output, or both, and so on.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Attribute">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The Attribute class captures the name, type, and defaultValue attributes of the state that is retained between invocations of operations on the interface. The name attribute is the name of the Parameter attribute. The type attribute is the Parameter attribute's type. And the defaultValue attribute is the Parameter attribute's default value.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the name of the Attribute in the InformationModel whose state is retained.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="type" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the Attribute type.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="defaultValue" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the default value of the Attribute in the InformationModel.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:element name="Attribute" type="defaultcomponentprofile:Attribute">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The Attribute class captures the name, type, and defaultValue attributes of the state that is retained between invocations of operations on the interface. The name attribute is the name of the Parameter attribute. The type attribute is the Parameter attribute's type. And the defaultValue attribute is the Parameter attribute's default value.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="AssociationRole">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The AssociationRole class captures the name, and type attributes of the state that is retained between invocations of operations on the interface. This element represents the roles that are on interface relationships. Creating instances of this element indicates that the InterfaceSpec owns the state related to the relationship.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="name" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the name of the AssociationRole in the InformationModel whose state is retained across multiple invokations.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <xsd:attribute name="type" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>This is the supplier class or the type of the AssociationRole.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  <xsd:element name="AssociationRole" type="defaultcomponentprofile:AssociationRole">
    <xsd:annotation>
      <xsd:documentation>xmi:ordered=false

The AssociationRole class captures the name, and type attributes of the state that is retained between invocations of operations on the interface. This element represents the roles that are on interface relationships. Creating instances of this element indicates that the InterfaceSpec owns the state related to the relationship.</xsd:documentation>
    </xsd:annotation>
  </xsd:element>
  <xsd:complexType name="Solution">
    <xsd:complexContent>
      <xsd:extension base="defaultprofile:Solution">
        <xsd:sequence>
          <xsd:element maxOccurs="1" minOccurs="0" name="test" type="defaultcomponentprofile:Test"/>
          <xsd:element maxOccurs="1" minOccurs="0" name="implementation" type="defaultcomponentprofile:Implementation"/>
          <xsd:element maxOccurs="1" minOccurs="0" name="design" type="defaultcomponentprofile:Design"/>
          <xsd:element maxOccurs="1" minOccurs="0" name="requirements" type="defaultcomponentprofile:Requirements"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:element name="Solution" type="defaultcomponentprofile:Solution"/>
</xsd:schema>
