<?xml version="1.0" standalone="yes"?>
<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://mobikat.net/service/streetNetwork/computations/types" xmlns:tns="http://mobikat.net/service/streetNetwork/computations/types" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://mobikat.net/service/common/types">

  <xs:import namespace="http://mobikat.net/service/common/types" schemaLocation="http://routing.mobikat.net/rest/computations/schema?file=schema2.xsd"/>

  <xs:element name="AssessmentRouteRequest" type="tns:AssessmentRouteRequest"/>

  <xs:element name="AssessmentRouteResponse" type="tns:AssessmentRouteResponse"/>

  <xs:element name="GetAvailableVehicleTypesRequest" type="tns:GetAvailableVehicleTypesRequest"/>

  <xs:element name="GetAvailableVehicleTypesResponse" type="tns:GetAvailableVehicleTypesResponse"/>

  <xs:element name="MciRequest" type="tns:MciRequest"/>

  <xs:element name="MciResponse" type="tns:MciResponse"/>

  <xs:element name="NearestResourcesRequest" type="tns:NearestResourcesRequest"/>

  <xs:element name="NearestResourcesResponse" type="tns:NearestResourcesResponse"/>

  <xs:element name="ReachabilityRequest" type="tns:ReachabilityRequest"/>

  <xs:element name="ReachabilityResponse" type="tns:ReachabilityResponse"/>

  <xs:element name="ReloadStreetNetworkRequest" type="tns:ReloadStreetNetworkRequest"/>

  <xs:element name="ReloadStreetNetworkResponse" type="tns:ReloadStreetNetworkResponse"/>

  <xs:element name="RouteRequest" type="tns:RouteRequest"/>

  <xs:element name="RouteResponse" type="tns:RouteResponse"/>

  <xs:complexType name="AssessmentRouteResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence>
          <xs:element name="items" type="tns:AssessmentRouteItem" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="AssessmentRouteItem">
    <xs:sequence>
      <xs:element name="locations" type="tns:AssessmentRouteLocation" maxOccurs="unbounded"/>
      <xs:element name="routeToNextItem" type="xs:string" minOccurs="0"/>
      <xs:element name="estimatedTimeForLocations" type="xs:double"/>
      <xs:element name="estimatedTimeToNextItem" type="xs:double" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AssessmentRouteLocation">
    <xs:sequence>
      <xs:element name="position" type="ns1:Position"/>
      <xs:element name="street" type="xs:string" minOccurs="0"/>
      <xs:element name="housenumber" type="xs:string" minOccurs="0"/>
      <xs:element name="city" type="xs:string" minOccurs="0"/>
      <xs:element name="zip" type="xs:string" minOccurs="0"/>
      <xs:element name="addresssAddition" type="xs:string" minOccurs="0"/>
      <xs:element name="residentsCount" type="xs:int" minOccurs="0"/>
      <xs:element name="households" type="xs:int" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AssessmentRouteRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="area" type="xs:string"/>
          <xs:element name="timePerHousehold" type="xs:double" default="900" minOccurs="0"/>
          <xs:element name="timePerResident" type="xs:double" default="420" minOccurs="0"/>
          <xs:element name="timePerAddress" type="xs:double" default="1800" minOccurs="0"/>
          <xs:element name="velocityDuringAssesment" type="xs:double" default="5" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="GetAvailableVehicleTypesResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence>
          <xs:element name="types" type="xs:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="GetAvailableVehicleTypesRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ReloadStreetNetworkResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ReloadStreetNetworkRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="MciResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence>
          <xs:element name="items" type="tns:MciDispositionItem" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="MciDispositionItem">
    <xs:sequence>
      <xs:element name="hospital" type="tns:HospitalResource"/>
      <xs:element name="t1" type="xs:int"/>
      <xs:element name="t2" type="xs:int"/>
      <xs:element name="t3" type="xs:int"/>
      <xs:element name="route" type="tns:Route"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="HospitalResource">
    <xs:complexContent>
      <xs:extension base="tns:Resource">
        <xs:sequence>
          <xs:element name="t1" type="xs:int"/>
          <xs:element name="t2" type="xs:int"/>
          <xs:element name="t3" type="xs:int"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Resource">
    <xs:sequence>
      <xs:element name="id" type="xs:string"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="type" type="xs:string" minOccurs="0"/>
      <xs:element name="status" type="xs:string" minOccurs="0"/>
      <xs:element name="position" type="ns1:Position"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="VehicleResource">
    <xs:complexContent>
      <xs:extension base="tns:Resource">
        <xs:sequence>
          <xs:element name="roadwaySystemParameters" type="tns:RoadwaySystemParameters" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="RoadwaySystemParameters">
    <xs:sequence>
      <xs:element name="motorwayVelocitiy" type="xs:double" default="100" minOccurs="0"/>
      <xs:element name="roadAVelocitiyInTown" type="xs:double" default="45" minOccurs="0"/>
      <xs:element name="roadAVelocitiyOutOfTown" type="xs:double" default="60" minOccurs="0"/>
      <xs:element name="roadBVelocitiyInTown" type="xs:double" default="40" minOccurs="0"/>
      <xs:element name="roadBVelocitiyOutOfTown" type="xs:double" default="60" minOccurs="0"/>
      <xs:element name="roadCVelocitiyInTown" type="xs:double" default="40" minOccurs="0"/>
      <xs:element name="roadCVelocitiyOutOfTown" type="xs:double" default="60" minOccurs="0"/>
      <xs:element name="roadDVelocitiyInTown" type="xs:double" default="30" minOccurs="0"/>
      <xs:element name="roadDVelocitiyOutOfTown" type="xs:double" default="60" minOccurs="0"/>
      <xs:element name="roadEVelocitiyInTown" type="xs:double" default="10" minOccurs="0"/>
      <xs:element name="roadEVelocitiyOutOfTown" type="xs:double" default="10" minOccurs="0"/>
      <xs:element name="perpendicularVelocitiy" type="xs:double" default="5.0" minOccurs="0"/>
      <xs:element name="trafficability" type="tns:Trafficability" nillable="true" minOccurs="0"/>
      <xs:element name="legalVehicleClass" type="tns:LegalVehicleClass" nillable="true" minOccurs="0"/>
      <xs:element name="height" type="xs:short" default="0"/>
      <xs:element name="width" type="xs:short" default="0"/>
      <xs:element name="length" type="xs:short" default="0"/>
      <xs:element name="weight" type="xs:int" default="0"/>
      <xs:element name="weightPerAxle" type="xs:int" default="0"/>
      <xs:element name="ignoreUnpavedRoads" type="xs:boolean" default="false" minOccurs="0"/>
      <xs:element name="ignoreFourWheelDriveRoads" type="xs:boolean" default="false" minOccurs="0"/>
      <xs:element name="ignoreOneWayRoads" type="xs:boolean" default="false" minOccurs="0"/>
      <xs:element name="ignoreMotorwayDirection" type="xs:boolean" default="false" minOccurs="0"/>
      <xs:element name="ignoreRoadsE" type="xs:boolean" default="true" minOccurs="0"/>
      <xs:element name="ignorePedestrianAreas" type="xs:boolean" default="false" minOccurs="0"/>
      <xs:element name="ignoreSpeedLimits" type="xs:boolean" default="true" minOccurs="0"/>
      <xs:element name="obeyTurnRestrictions" type="tns:ObeyTurnRestrictions" default="OnlyPhysical" minOccurs="0"/>
      <xs:element name="vehicleType" type="xs:string" nillable="true" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AirVehicleResource">
    <xs:complexContent>
      <xs:extension base="tns:Resource">
        <xs:sequence>
          <xs:element name="airwaySystemParameters" type="tns:AirwaySystemParameters" nillable="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="AirwaySystemParameters">
    <xs:sequence>
      <xs:element name="beelineVelocity" type="xs:double" default="200" minOccurs="0"/>
      <xs:element name="timeBeforeStart" type="xs:int" default="0" minOccurs="0"/>
      <xs:element name="timeAfterArrive" type="xs:int" default="0" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Route">
    <xs:sequence>
      <xs:element name="duration" type="xs:double"/>
      <xs:element name="length" type="xs:double"/>
      <xs:element name="routeCoordinatesWkt" type="xs:string" minOccurs="0"/>
      <xs:element name="descriptionList" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="structuredDescriptionList" type="tns:RouteDescribtionElement" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="streetSectionId" type="xs:long" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="routeSections" type="tns:RouteSectionElement" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RouteDescribtionElement">
    <xs:sequence>
      <xs:element name="type" type="tns:RouteDescribtionElementType" minOccurs="0"/>
      <xs:element name="counter" type="xs:int" minOccurs="0"/>
      <xs:element name="sourceStreetId" type="xs:long" minOccurs="0"/>
      <xs:element name="destinationStreetId" type="xs:long" minOccurs="0"/>
      <xs:element name="sourceStreetName" type="xs:string" minOccurs="0"/>
      <xs:element name="destinationStreetName" type="xs:string" minOccurs="0"/>
      <xs:element name="position" type="ns1:Position" minOccurs="0"/>
      <xs:element name="length" type="xs:double"/>
      <xs:element name="duration" type="xs:double"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="RouteSectionElement">
    <xs:sequence>
      <xs:element name="streetId" type="xs:long" minOccurs="0"/>
      <xs:element name="position" type="ns1:Position" minOccurs="0"/>
      <xs:element name="lenght" type="xs:double"/>
      <xs:element name="duration" type="xs:double"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="MciRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="position" type="ns1:Position"/>
          <xs:element name="hospitals" type="tns:HospitalResource" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="useHospitalsFromDB" type="xs:boolean" default="true" minOccurs="0"/>
          <xs:element name="resourceTypes" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="resourceStatuses" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="t1" type="xs:int" default="0" minOccurs="0"/>
          <xs:element name="t2" type="xs:int" default="0" minOccurs="0"/>
          <xs:element name="t3" type="xs:int" default="0" minOccurs="0"/>
          <xs:element name="limit" type="xs:double" nillable="true" minOccurs="0"/>
          <xs:element name="optimization" type="tns:RoutingOptimization" default="Time" minOccurs="0"/>
          <xs:element name="roadwaySystemParameters" type="tns:RoadwaySystemParameters" minOccurs="0"/>
          <xs:element name="includeRouteCoordinates" type="xs:boolean" default="true" minOccurs="0"/>
          <xs:element name="includeRouteDescription" type="xs:boolean" default="false" minOccurs="0"/>
          <xs:element name="includeStructuredRouteDescription" type="xs:boolean" default="false" minOccurs="0"/>
          <xs:element name="includeRouteStreetSectionsIds" type="xs:boolean" default="false" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="NearestResourcesResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence>
          <xs:element name="resourceRoutes" type="tns:RouteOfResource" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="RouteOfResource">
    <xs:sequence>
      <xs:element name="resource" type="tns:Resource"/>
      <xs:element name="route" type="tns:Route"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="NearestResourcesRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="position" type="ns1:Position"/>
          <xs:element name="resources" type="tns:Resource" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="useResourcesFromDB" type="xs:boolean" default="true" minOccurs="0"/>
          <xs:element name="resourceTypes" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="resourceStatuses" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="optimization" type="tns:RoutingOptimization" default="Time" minOccurs="0"/>
          <xs:element name="inverseRouting" type="xs:boolean" default="true" minOccurs="0"/>
          <xs:element name="maxTravelTime" type="xs:double" default="0" minOccurs="0"/>
          <xs:element name="maxDistance" type="xs:double" default="0" minOccurs="0"/>
          <xs:element name="maxCount" type="xs:int" default="0" minOccurs="0"/>
          <xs:element name="defaultRoadwaySystemParameters" type="tns:RoadwaySystemParameters" minOccurs="0"/>
          <xs:element name="useStraightLineDistance" type="xs:boolean" default="false" minOccurs="0"/>
          <xs:element name="includeRouteCoordinates" type="xs:boolean" default="true" minOccurs="0"/>
          <xs:element name="includeRouteDescription" type="xs:boolean" default="false" minOccurs="0"/>
          <xs:element name="includeStructuredRouteDescription" type="xs:boolean" default="false" minOccurs="0"/>
          <xs:element name="includeRouteStreetSectionsIds" type="xs:boolean" default="false" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ReachabilityResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence>
          <xs:element name="reachability" type="tns:Reachability" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Reachability">
    <xs:sequence>
      <xs:element name="reachedRoadsWkt" type="xs:string" minOccurs="0"/>
      <xs:element name="isochroneWkt" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ReachabilityRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="resources" type="tns:Resource" maxOccurs="unbounded"/>
          <xs:element name="limit" type="xs:double"/>
          <xs:element name="optimization" type="tns:RoutingOptimization" default="Time" minOccurs="0"/>
          <xs:element name="defaultRoadwaySystemParameters" type="tns:RoadwaySystemParameters" minOccurs="0"/>
          <xs:element name="defaultAirwaySystemParameters" type="tns:AirwaySystemParameters" minOccurs="0"/>
          <xs:element name="interspaceVelocitiy" type="xs:double" default="2.0" minOccurs="0"/>
          <xs:element name="investigationAreaWkt" type="xs:string" nillable="true" minOccurs="0"/>
          <xs:element name="isocroneAreaResolution" type="xs:int" default="10000" minOccurs="0"/>
          <xs:element name="includeReachedRoadsCoordinates" type="xs:boolean" default="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="RouteResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence>
          <xs:element name="route" type="tns:Route"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="RouteRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="start" type="ns1:Position"/>
          <xs:element name="target" type="ns1:Position"/>
          <xs:element name="optimization" type="tns:RoutingOptimization" default="Time" minOccurs="0"/>
          <xs:element name="roadwaySystemParameters" type="tns:RoadwaySystemParameters" minOccurs="0"/>
          <xs:element name="includeRouteCoordinates" type="xs:boolean" default="true" minOccurs="0"/>
          <xs:element name="includeRouteDescription" type="xs:boolean" default="false" minOccurs="0"/>
          <xs:element name="includeStructuredRouteDescription" type="xs:boolean" default="false" minOccurs="0"/>
          <xs:element name="includeStreetSectionsIds" type="xs:boolean" default="false" minOccurs="0"/>
          <xs:element name="includeRouteSections" type="xs:boolean" default="false" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:simpleType name="Trafficability">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Pedestrian"/>
      <xs:enumeration value="Off-Road Vehicle"/>
      <xs:enumeration value="Car"/>
      <xs:enumeration value="Transporter"/>
      <xs:enumeration value="Truck"/>
      <xs:enumeration value="Trailer Truck"/>
      <xs:enumeration value="Heay Duty Truck"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="LegalVehicleClass">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Pedestrian"/>
      <xs:enumeration value="Bicycle"/>
      <xs:enumeration value="Motorcycle"/>
      <xs:enumeration value="Car"/>
      <xs:enumeration value="Taxi"/>
      <xs:enumeration value="Bus"/>
      <xs:enumeration value="Truck"/>
      <xs:enumeration value="EmergencyVehicle"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="ObeyTurnRestrictions">
    <xs:restriction base="xs:string">
      <xs:enumeration value="All"/>
      <xs:enumeration value="OnlyPhysical"/>
      <xs:enumeration value="No"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="RouteDescribtionElementType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Roundabout"/>
      <xs:enumeration value="StraightOn"/>
      <xs:enumeration value="TurnLeftSlightly"/>
      <xs:enumeration value="TurnLeft"/>
      <xs:enumeration value="TurnLeftSharp"/>
      <xs:enumeration value="TurnRightSlightly"/>
      <xs:enumeration value="TurnRight"/>
      <xs:enumeration value="TurnRightSharp"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="RoutingOptimization">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Time"/>
      <xs:enumeration value="Way"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

