<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:bdc="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog"
  targetNamespace="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog"
  elementFormDefault="qualified" >
    <xs:element name="Subscription" type="bdc:Subscription" />
    <xs:complexType name="MetadataObject" abstract="true">
        <xs:sequence>
            <xs:element name="LocalizedDisplayNames" type="bdc:LocalizedDisplayNames" minOccurs="0" maxOccurs="1" />
            <xs:element name="Properties" type="bdc:Properties" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
        <xs:attribute name="Name" type="xs:string" use="required" />
        <xs:attribute name="DefaultDisplayName" type="xs:string" />
        <xs:attribute name="IsCached" type="xs:boolean" />
    </xs:complexType>
    <xs:complexType name="LocalizedDisplayNames">
        <xs:sequence>
            <xs:element name="LocalizedDisplayName" type="bdc:LocalizedDisplayName" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="LocalizedDisplayName" mixed="true">
        <xs:attribute name="LCID" type="xs:integer" use="required" />
    </xs:complexType>
    <xs:complexType name="Property" mixed="true">
        <xs:attribute name="Name" type="xs:string" use="required" />
        <xs:attribute name="Type" type="xs:string" use="required" />
    </xs:complexType>
    <xs:complexType name="Properties">
        <xs:sequence>
            <xs:element name="Property" type="bdc:Property" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name ="Subscription">
        <xs:complexContent>
            <xs:extension base="bdc:MetadataObject">
                <xs:sequence>
                    <xs:element name="Identities" type="bdc:Identities" minOccurs="0" />
                    <xs:element name="Queries" type="bdc:Queries" minOccurs="0" />
                    <xs:element name="Associations" type="bdc:Associations" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="EntityName" type="xs:string" use="required" />
                <xs:attribute name="EntityNamespace" type="xs:string" use="required" />
                <xs:attribute name="RefreshIntervalInMinutes" type="xs:long" use="required" />
                <xs:attribute name="View" type="xs:string" use="required" />
                <xs:attribute name="Enabled" type="xs:boolean" use="optional" />
                <xs:attribute name="LobSystemInstanceName" type="xs:string" use="required" />
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="Identity" mixed="true">
    </xs:complexType>
    <xs:complexType name="Identities">
        <xs:sequence>
            <xs:element name="Identity" type="bdc:Identity" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name ="Query">
        <xs:complexContent>
            <xs:extension base="bdc:MetadataObject">
                <xs:sequence>
                    <xs:element name="FilterValues" type="bdc:FilterValues" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="RefreshIntervalInMinutes" type="xs:long" use="required" />
                <xs:attribute name="MethodInstanceName" type="xs:string" use="required" />
                <xs:attribute name="Enabled" type="xs:boolean" use="optional" />
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="Queries">
        <xs:sequence>
            <xs:element name="Query" type="bdc:Query" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="Associations">
        <xs:sequence>
            <xs:element name="Association" type="bdc:Association" minOccurs="1" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name ="Association">
        <xs:complexContent>
            <xs:extension base="bdc:MetadataObject">
                <xs:sequence>
                    <xs:element name="FilterValues" type="bdc:FilterValues" minOccurs="0" />
                </xs:sequence>
                <xs:attribute name="RefreshIntervalInMinutes" type="xs:long" use="required" />
                <xs:attribute name="MethodInstanceName" type="xs:string" use="required" />
                <xs:attribute name="LobSystemInstanceName" type="xs:string" use="required" />
                <xs:attribute name="TargetSubscriptionName" type="xs:string" use="optional" />
                <xs:attribute name="TargetView" type="xs:string" use="required" />
                <xs:attribute name="Enabled" type="xs:boolean" use="optional" />
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="FilterValue" mixed="true">
        <xs:attribute name="FilterDescriptorName" type="xs:string" use="required" />
        <xs:attribute name="Type" type="xs:string" use="required" />
        <xs:attribute name="FilterIndex" type="xs:integer" use="required" />
    </xs:complexType>
    <xs:complexType name="FilterValues">
        <xs:sequence>
            <xs:element name="FilterValue" type="bdc:FilterValue" minOccurs="1" maxOccurs="unbounded" nillable="true" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>
