<?xml version="1.0" encoding="UTF-8"?>

<xs:schema targetNamespace="http://www.globalmmcs.org/xgsp"

  xmlns:xs="http://www.w3.org/2001/XMLSchema"

  xmlns="http://www.globalmmcs.org/xgsp" >

<!-- Conference Management messages -->

<xs:element name="CreateConference">

    <xs:annotation>

        <xs:documentation>create a new conference by the administrator or special nodes</xs:documentation>

    </xs:annotation>

    <xs:complexType>

    <xs:sequence>

    <xs:element name="ConferenceID"/>

    <xs:element name="ConferenceName"/>

    <xs:element name="Conference-Date"/>

    <xs:element name="ConferenceCreator"/>

    <xs:element name="conferenceType">

        <xs:annotation>

        <xs:documentation>this field specifies the type of this conference. A moderated conference needs a conference chair to manage. </xs:documentation>

        </xs:annotation>

                <xs:simpleType>

                <xs:restriction base="xs:string">

                <xs:enumeration value="Moderated"/>

                <xs:enumeration value="UnModerated"/>

            </xs:restriction>

        </xs:simpleType>

    </xs:element>

    <xs:element name="conferenceDescription" type="xs:string"/>

   <xs:element name="ApplicationList">

        <xs:complexType>

        <xs:sequence>

        <xs:element name="ApplicationID" type="xs:string" maxOccurs="unbounded"/>

        </xs:sequence>

        </xs:complexType>

   </xs:element>

    </xs:sequence>

</xs:complexType>

</xs:element>

 

<xs:element name="ModifyConference">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID"/>

        <xs:element name="ConferenceName"/>

        <xs:element name="ConferenceDate"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="TerminateConference">

<xs:complexType>

<xs:sequence>

<xs:element name="ConferenceID" type="xs:string"/>

<xs:element name="Reason" type="xs:string"/>

</xs:sequence>

</xs:complexType>

</xs:element>

 

<!-- Join/Leave Conference -->

<xs:element name="JoinConference">

    <xs:complexType>

     <xs:sequence>

         <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="UserID" type="xs:string"/>

        <xs:element name="UserCapabilities" type="xs:string">

        <xs:annotation>

            <xs:documentation>specifies how many applications this user can support</xs:documentation>

        </xs:annotation>

    </xs:element>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="LeaveConference">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="UserID" type="xs:string"/>

        <xs:element name="LeaveReason" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="InviteIntoConference">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="Inviting-UserID" type="xs:string"/>

        <xs:element name="Invited-UserID" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="ExpelFromConference">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="Expelled-UserID" type="xs:string"/>

        <xs:element name="Expelling-Requestor" type="xs:string"/>

        <xs:element name="Reason" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

<xs:element name="ConfMemberReply">

    <xs:annotation>

        <xs:documentation>this message specifies the reply to "Join/Leave/Invite/ExpelConference"</xs:documentation>

    </xs:annotation>

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="UserID" type="xs:string"/>

        <xs:element name="ReplyType">

            <xs:simpleType>

                <xs:restriction base="xs:string">

                <xs:enumeration value="JoinConference"/>

                <xs:enumeration value="LeaveConference"/>

                <xs:enumeration value="InviteIntoConference"/>

                <xs:enumeration value="ExpelFromConference"/>

                </xs:restriction>

                </xs:simpleType>

        </xs:element>

    <xs:element name="Result" type="xs:boolean"/>

    <xs:element name="ConferenceAddress" type="xs:string">

        <xs:annotation>

            <xs:documentation>NaradaBrokering Topic for the control communication in this conference</xs:documentation>

        </xs:annotation>

    </xs:element>

    </xs:sequence>

    </xs:complexType>

</xs:element>

<!-- Conference Query -->

<xs:element name="QueryConference">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string">

            <xs:annotation>

                <xs:documentation> can be "*" means any conference</xs:documentation>

            </xs:annotation>

        </xs:element>

        <xs:element name="UserID" type="xs:string"/>

        <xs:element name="QueryID" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="QueryConferenceReply">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="UserID" type="xs:string"/>

        <xs:element name="ConferenceInfo" maxOccurs="unbounded">

        <xs:complexType>

        <xs:sequence>

            <xs:element name="ConferenceID" type="xs:string"/>

            <xs:element name="ConferenceName" type="xs:string"/>

            <xs:element name="ConferenceDescription" type="xs:string"/>

        </xs:sequence>

        </xs:complexType>

        </xs:element>

   </xs:sequence>

   </xs:complexType>

</xs:element>

 

<!-- Membership Event -->

<xs:element name="MembershipEvent">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="EventType">

            <xs:simpleType>

                <xs:restriction base="xs:string">

                <xs:enumeration value="NewMemberEvent"/>

                <xs:enumeration value="ByeEvent"/>

                <xs:enumeration value="TimeOutEvent"/>

                </xs:restriction>

            </xs:simpleType>

        </xs:element>

        <xs:element name="UserID" type="xs:string"/>

        <xs:element name="UserDecription" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<!-- RequestMembership -->

<xs:element name="RequestMembership">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID"/>

        <xs:element name="UserID">

        <xs:complexType/>

        </xs:element>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="RequestMebershipReply">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="ConferenceName" type="xs:string"/>

        <xs:element name="MembershipList">

    <xs:complexType>

     <xs:element name="Member" type="xs:string" maxOccurs="unbounded"/>

   </xs:complexType>

   </xs:element>

  </xs:sequence>

 </xs:complexType>

</xs:element>

 

<!-- Application Session Management -->

<xs:element name="CreateAppSession">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="ApplicationID" type="xs:string"/>

        <xs:element name="AppSessionID" type="xs:string"/>

        <xs:element name="AppSession-Creator" type="xs:string"/>

        <xs:element name="Private" type="xs:boolean">

        <xs:annotation>

            <xs:documentation>When this is set to true, only invited users can join in this application session</xs:documentation>

        </xs:annotation>

        </xs:element>

    </xs:sequence>

</xs:complexType>

</xs:element>

 

<xs:element name="TerminateAppSession">

    <xs:complexType>

    <xs:sequence>

    <xs:element name="ConferenceID" type="xs:string"/>

    <xs:element name="AppSessionID" type="xs:string"/>

    <xs:element name="Reason" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="QueryAppSession">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="UserID" type="xs:string"/>

        <xs:element name="AppSessionID" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="QueryAppSessionReply">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="UserID" type="xs:string"/>

        <xs:element name="AppSessionInfo" maxOccurs="unbounded">

        <xs:complexType>

        <xs:sequence>

        <xs:element name="AppSessionID" type="xs:string"/>

        <xs:element name="AppSessionDes" type="xs:string"/>

        </xs:sequence>

        </xs:complexType>

    </xs:element>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<!-- Application Session Floor Control -->

<xs:element name="SetAppRole">

    <xs:complexType>

    <xs:sequence>

        <xs:element name="AppSessionID" type="xs:string"/>

        <xs:element name="UserID" type="xs:string"/>

        <xs:element name="RoleDescription" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="RequestChair">

    <xs:annotation>

        <xs:documentation>A user can request to become a new chair</xs:documentation>

    </xs:annotation>

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="Request-UserID" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="ReleaseChair">

    <xs:annotation>

        <xs:documentation>Current chair release its chair</xs:documentation>

    </xs:annotation>

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="Chair-UserID" type="xs:string"/>

        <xs:element name="Reason" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="GiveChair">

    <xs:annotation>

        <xs:documentation>Current chair gives its chair floor to a new user</xs:documentation>

    </xs:annotation>

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="Chair-UserID" type="xs:string"/>

        <xs:element name="NewChair-UserID" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

 

<xs:element name="ChairAnnouncement">

    <xs:annotation>

        <xs:documentation>Current chair announces its chair peridically</xs:documentation>

    </xs:annotation>

    <xs:complexType>

    <xs:sequence>

        <xs:element name="ConferenceID" type="xs:string"/>

        <xs:element name="Chair-UserID" type="xs:string"/>

    </xs:sequence>

    </xs:complexType>

</xs:element>

</xs:schema>