<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.bankofgreece.gr/dom/real_estate/v1"
           xmlns="http://www.bankofgreece.gr/dom/real_estate/v1"
           elementFormDefault="qualified">
   <xs:simpleType name="EmptyType">
      <xs:restriction base="xs:string">
         <xs:enumeration value=""/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="SenderIdType">
      <xs:restriction base="xs:string">
         <xs:pattern value="[0-9]{3}"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="String25Type">
      <xs:restriction base="xs:string">
         <xs:minLength value="1"/>
         <xs:maxLength value="25"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="PostCodeType">
      <xs:restriction base="xs:string">
         <xs:pattern value="[0-9]{5}"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="SquareMetersType">
      <xs:restriction base="xs:string">
         <xs:pattern value="\d*(.|,){0,1}\d{0,2}"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="PropertyCodeType">
      <xs:restriction base="xs:string">
         <xs:enumeration value="01"/>
         <xs:enumeration value="02"/>
         <xs:enumeration value="03"/>
         <xs:enumeration value="04"/>
         <xs:enumeration value="05"/>
         <xs:enumeration value="06"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="LoanCodeType">
      <xs:restriction base="xs:string">
         <xs:enumeration value="01"/>
         <xs:enumeration value="02"/>
         <xs:enumeration value="03"/>
         <xs:enumeration value="04"/>
         <xs:enumeration value="05"/>
         <xs:enumeration value="06"/>
         <xs:enumeration value="07"/>
         <xs:enumeration value="08"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="NonNegativeIntegerOrNullType">
      <xs:restriction base="xs:string">
         <xs:pattern value="\d*"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="BooleanOrNullType">
      <xs:restriction base="xs:string">
         <xs:pattern value="(0|1|false|true|FALSE|TRUE|False|True){0,1}"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="YearOrNullType">
      <xs:restriction base="xs:string">
         <xs:pattern value="(\d{4}|){0,1}"/>
      </xs:restriction>
   </xs:simpleType>
   <xs:simpleType name="DateOrNullType">
      <xs:union memberTypes="xs:date EmptyType"/>
   </xs:simpleType>
   <xs:simpleType name="IntegerOrNullType">
      <xs:union memberTypes="xs:integer EmptyType"/>
   </xs:simpleType>
   <xs:complexType name="PropertyLocationType">
      <xs:sequence>
         <xs:element name="Street" type="xs:string" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="PostCode" type="PostCodeType" minOccurs="1"
                     maxOccurs="1"/>
         <xs:element name="Municipality" type="xs:string" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="District" type="xs:string" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="Prefecture" type="xs:string" minOccurs="0"
                     maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="PropertyAgeType">
      <xs:sequence>
         <xs:element name="YearOfPermit" type="YearOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="YearOfCompletion" type="YearOrNullType" minOccurs="0"
                     maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="PropertySpaceInformationType">
      <xs:sequence>
         <xs:element name="LandArea" type="SquareMetersType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="MainSpaceArea" type="SquareMetersType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="AuxiliarySpaceArea" type="SquareMetersType"
                     minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="StoreRoomsAndParkingSpacesType">
      <xs:sequence>
         <xs:element name="NumberOfStoreRooms1"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="TotalAreaOfStoreRooms1" type="SquareMetersType"
                     minOccurs="0" maxOccurs="1"/>
         <xs:element name="NumberOfParkingSpaces1"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="TotalAreaOfParkingSpaces1" type="SquareMetersType"
                     minOccurs="0" maxOccurs="1"/>
         <xs:element name="NumberOfStoreRooms2"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="NumberOfParkingSpaces2"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="OtherPropertyFeaturesType">
      <xs:sequence>
         <xs:element name="ExcellentQualityOfConstruction"
                     type="BooleanOrNullType" minOccurs="0" maxOccurs="1"/>
         <xs:element name="ExcellentPositionViewEnvironment"
                     type="BooleanOrNullType" minOccurs="0" maxOccurs="1"/>
         <xs:element name="RecentlyRenovated" type="BooleanOrNullType"
                     minOccurs="0" maxOccurs="1"/>
         <xs:element name="DepreciatedDistrict" type="BooleanOrNullType"
                     minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="PropertyValueInformationType">
      <xs:sequence>
         <xs:element name="LandAssessedValue"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="PropertyTotalAssessedValue"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="StoreRoomsAssessedValue"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="ParkingSpacesAssessedValue"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="TotalConstructionCost"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="LoanInformationType">
      <xs:sequence>
         <xs:element name="LoanType" type="LoanCodeType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="DateOfFirstDisbursement" type="DateOrNullType"
                     minOccurs="0" maxOccurs="1"/>
         <xs:element name="ApprovedLoanAmount"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="TotalAmountDisbursed"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="MortgagePrenotationValue"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="PropertyType">
      <xs:sequence>
         <xs:element name="PropertyId" type="String25Type" minOccurs="1"
                     maxOccurs="1"/>
         <xs:element name="PropertyType" type="PropertyCodeType" minOccurs="1"
                     maxOccurs="1"/>
         <xs:element name="PropertyLocation" type="PropertyLocationType"
                     minOccurs="1" maxOccurs="1"/>
         <xs:element name="DateOfValuation" type="xs:date" minOccurs="1"
                     maxOccurs="1"/>
         <xs:element name="PropertyAge" type="PropertyAgeType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="FloorNumber" type="IntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="PropertySpaceInformation"
                     type="PropertySpaceInformationType" minOccurs="1"
                     maxOccurs="1"/>
         <xs:element name="StoreRoomsAndParkingSpaces"
                     type="StoreRoomsAndParkingSpacesType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="OtherPropertyFeatures"
                     type="OtherPropertyFeaturesType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="PropertyValueInformation"
                     type="PropertyValueInformationType" minOccurs="1"
                     maxOccurs="1"/>
         <xs:element name="TotalAdministrativeValue"
                     type="NonNegativeIntegerOrNullType" minOccurs="0"
                     maxOccurs="1"/>
         <xs:element name="LoanInformation" type="LoanInformationType"
                     minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="HeaderType">
      <xs:sequence>
         <xs:element name="SenderId" type="SenderIdType" minOccurs="1"
                     maxOccurs="1"/>
         <xs:element name="SenderName" type="xs:string" minOccurs="1"
                     maxOccurs="1"/>
         <xs:element name="ReferencePeriod" type="xs:gYearMonth" minOccurs="1"
                     maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="DataType">
      <xs:sequence>
         <xs:element name="Property" type="PropertyType" minOccurs="0"
                     maxOccurs="unbounded"/>
      </xs:sequence>
   </xs:complexType>
   <xs:complexType name="RealEstateType">
      <xs:sequence>
         <xs:element name="Header" type="HeaderType" minOccurs="1"
                     maxOccurs="1"/>
         <xs:element name="Data" type="DataType" minOccurs="1" maxOccurs="1"/>
      </xs:sequence>
   </xs:complexType>
   <xs:element name="RealEstate" type="RealEstateType"/>
</xs:schema>
