<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
    <xs:annotation>
        <xs:documentation>Schema for structuring Concept Scheme information as XML. Roughly based on SKOS. XML
        conforming to this schema can be imported to the PubMan™ CSA application. See the PubMan™ User Guide at
        http://www.dataformat.com/local/PubMan_UserGuide.html for additional details.</xs:documentation>
    </xs:annotation>
    
    <xs:element name="Scheme">
        <xs:annotation>
            <xs:documentation>Top level element in Concept Scheme</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Name"/>
                <xs:element ref="Description"/>
                <xs:element name="Concepts">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Concept" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element ref="Name"/>
                                        <xs:element name="BroaderConcepts" minOccurs="0">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element ref="Link" maxOccurs="unbounded"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="RelatedConcepts" minOccurs="0">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element ref="Link" maxOccurs="unbounded"/>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="Properties">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Property" maxOccurs="unbounded">
                                                        <xs:complexType mixed="true">
                                                            <xs:attribute name="type" use="required">
                                                                <xs:simpleType>
                                                                    <xs:restriction base="xs:token">
                                                                        <xs:enumeration value="Text"/>
                                                                        <xs:enumeration value="Date"/>
                                                                        <xs:enumeration value="Boolean"/>
                                                                    </xs:restriction>
                                                                </xs:simpleType>
                                                            </xs:attribute>
                                                            <xs:attribute name="name" type="xs:normalizedString" use="required"/>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                        <xs:element name="DocumentPointers" minOccurs="0">
                                            <xs:complexType>
                                                <xs:sequence>
                                                    <xs:element name="Pointer" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                            <xs:sequence>
                                                                <xs:element name="Pointer">
                                                                    <xs:complexType>
                                                                        <xs:attribute name="title" type="xs:token" use="required"/>
                                                                        <xs:attribute ref="url" use="required"/>
                                                                    </xs:complexType>
                                                                </xs:element>
                                                            </xs:sequence>
                                                        </xs:complexType>
                                                    </xs:element>
                                                </xs:sequence>
                                            </xs:complexType>
                                        </xs:element>
                                    </xs:sequence>
                                    <xs:attribute ref="url"/>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="Name" type="xs:string"/>
    
    <xs:element name="Description" type="xs:string"/>
    
    <xs:attribute name="url" type="xs:token"/>
    
    <xs:element name="Link">
        <xs:complexType>
            <xs:attribute ref="url" use="required"/>
        </xs:complexType>
    </xs:element>

</xs:schema>