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

<!-- 
  Variations/FRBR Project schema release 1.1
-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"

            xmlns:vfrbr-work="http://vfrbr.info/vfrbr/1.1/work"
            xmlns:vfrbr-expression="http://vfrbr.info/vfrbr/1.1/expression"
            xmlns:vfrbr-manifestation="http://vfrbr.info/vfrbr/1.1/manifestation"
            xmlns:vfrbr-item="http://vfrbr.info/vfrbr/1.1/item"
            xmlns:vfrbr-person="http://vfrbr.info/vfrbr/1.1/person"
            xmlns:vfrbr-family="http://vfrbr.info/vfrad/1.1/family"
            xmlns:vfrbr-corporateBody="http://vfrbr.info/vfrbr/1.1/corporateBody"
            xmlns:vfrbr-concept="http://vfrbr.info/vfrbr/1.1/concept"
            xmlns:vfrbr-event="http://vfrbr.info/vfrbr/1.1/event"
            xmlns:vfrbr-object="http://vfrbr.info/vfrbr/1.1/object"
            xmlns:vfrbr-place="http://vfrbr.info/vfrbr/1.1/place"

            xmlns:vfrbr-structure="http://vfrbr.info/vfrbr/1.1/structure"
            xmlns:vfrbr-responsible="http://vfrbr.info/vfrbr/1.1/responsible"
            xmlns:vfrbr-subject="http://vfrbr.info/vfrbr/1.1/subject"
            xmlns:vfrbr-other="http://vfrbr.info/vfrbr/1.1/other"

            xmlns="http://vfrbr.info/vfrbr/1.1"
            targetNamespace="http://vfrbr.info/vfrbr/1.1"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified"
            >

  <!--
    import the XML element definitions
    for the vFRBR entities
    -->
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/work"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-work.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/expression"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-expression.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/manifestation"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-manifestation.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/item"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-item.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/person"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-person.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrad/1.1/family"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-family.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/corporateBody"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-corporateBody.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/concept"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-concept.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/event"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-event.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/object"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-object.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/place"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-place.xsd"/>

  <!--
    import the vFRBR relation
    (separately namespaced) schemas
    -->
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/structure"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-structure.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/responsible"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-responsible.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/subject"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-subject.xsd"
              />
  <xsd:import namespace="http://vfrbr.info/vfrbr/1.1/other"
              schemaLocation="http://vfrbr.info/schemas/1.1/vfrbr-other.xsd"/>

  <!--
    XML element defintion
    for the document root
    -->
  <xsd:element name="recordSet">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="entities"
                     minOccurs="0" maxOccurs="1"
                     />
        <xsd:element ref="relationships"
                     minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <!--
    XML element definition
    for the entities collection
    -->
  <xsd:element name="entities">
    <xsd:complexType>
      <xsd:sequence>
        <!-- group1 -->
        <xsd:element ref="vfrbr-work:work"
                     minOccurs="0" maxOccurs="unbounded"
                     />
        <xsd:element ref="vfrbr-expression:expression"
                     minOccurs="0" maxOccurs="unbounded"
                     />
        <xsd:element ref="vfrbr-manifestation:manifestation"
                     minOccurs="0" maxOccurs="unbounded"
                     />
        <xsd:element ref="vfrbr-item:item"
                     minOccurs="0" maxOccurs="unbounded"/>
        <!-- group2 -->
        <xsd:element ref="vfrbr-person:person"
                     minOccurs="0" maxOccurs="unbounded"
                     />
        <xsd:element ref="vfrbr-family:family"
                     minOccurs="0" maxOccurs="unbounded"
                     />
        <xsd:element ref="vfrbr-corporateBody:corporateBody"
                      minOccurs="0" maxOccurs="unbounded"/>
        <!-- group3 -->
        <xsd:element ref="vfrbr-concept:concept"
                     minOccurs="0" maxOccurs="unbounded"
                     />
        <xsd:element ref="vfrbr-object:object"
                     minOccurs="0" maxOccurs="unbounded"
                     />
        <xsd:element ref="vfrbr-event:event"
                     minOccurs="0" maxOccurs="unbounded"
                     />
        <xsd:element ref="vfrbr-place:place"
                     minOccurs="0" maxOccurs="unbounded"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

  <!--
    XML element defintion
    for the relationships collection
    -->
  <xsd:element name="relationships">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="vfrbr-structure:structureRelations"
                     minOccurs="0" maxOccurs="1"
                     />
        <xsd:element ref="vfrbr-responsible:responsibleRelations"
                     minOccurs="0" maxOccurs="1"
                     />
        <xsd:element ref="vfrbr-subject:subjectRelations"
                     minOccurs="0" maxOccurs="1"
                     />
        <xsd:element ref="vfrbr-other:otherRelations"
                     minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>

</xsd:schema>




