Example
Netex_gtfs_fares_Example_5_flatFare_feeToTransfer.xml
standards/gtfs/Netex_gtfs_fares_Example_5_flatFare_feeToTransfer.xml
Element names link to their declarations.
<?xml version="1.0" encoding="UTF-8"?>
<!-- ==== Gtfs to NeTEx Example: Flat Fare, fee to transfer ======
This Example provides an example of mapping of a GTFS FareRule.txt file to NeTEx
http://code.google.com/p/googletransitdatafeed/wiki/FareExamples
September 2011
================
EXAMPLE 5: Buying a transfer increases the fare
Suppose Demo Transit Agency has the following fare structure:
* riders pay $1.75 on boarding local buses
* riders can pay an extra $0.25 on boarding to purchase a transfer
* transfers purchased are valid for 90 minutes
1.1 Example Data
Since these rules apply to all trips, Demo Transit can omit fare_rules.txt.
fare_attributes.txt
fare_id price currency_type payment_method transfers transfer_duration
simple_fare 1.75 USD 0 0
plustransfer_fare 2.00 USD 0 5400
1.2 Calculating an adult fare
Technically, both fares apply on itinerary that has no transfers. However, the trip planner always chooses the least expensive applicable fare:
* For an itinerary with one transfer, simple_fare is $3.50 vs. $2.00 when a transfer is purchased. So the trip planner will report $2.00 fare on all itineraries that require a change of vehicle.
* For an itinerary with no transfers, $1.75 fare is less than plustransfer_fare of $2.00. So if an itinerary doesn't require a change of vehicle, the fare is $1.75.
2. MAPPING TO NETEX
Mapping is complex depending on fare structure. (E.g. different for flat fare, point-to-point fare, etc
NeTEx may be augmented with further distinctions not covered by GTFS
A GTFS Fare_Attribute maps to a NeTEx FARE PRICE of some specific sort (FARE PRODUCT PRICE, TIME INTERVAL PRICE, DISTANCE MATRIX ELEMENT PRICE, etc)
A GTFS FareRule maps to a NeTEx FARE PRODUCT + VALIDABLE ELEMENT + TARIFF + FARE STRUCTURE ELEMENTs
2.1 Fare Rules
GTFS NeTEx
fare_id, <PreassignedFareProduct #fare_id >
route_id, <PreassignedFareProduct #fare_id> <accessRightsInProduct> <AcccessRightInProduct #fare_id> <ValidibleElement #fare_id>
==> <PreassignedFareProduct #fare_id><validableElements><ValidityParameter #fare_id> <fareStructureElements>
==><Tariff #fare_id> <FareStructureElement #fare_id@access"> <GenericParameterAssignment #fare_id@access_details> <validityParameters>
<LineRef #route_id>
origin_id, -
destination_id, -
contains_id , -
2.2 Fare Attributes
GTFS NeTEx
fare_id, <PriceGroup><members><FarePrice #fare_id >
price, <FarePrice #fare_id><Amount>
currency_type, <FarePrice #fare_id><Currency>
payment_method, <Tariff><FareStructureElement id="#fare_id@conditions_of_travel"> <GenericParameterAssignment #fare_id@conditions_of_travel> <limitations>
0 =Pay on Boarding <PurchaseWindow #fare_id><PurchaseMoment> (#onBoarding)
1 = Fare must be paid before boarding <PurchaseWindow #fare_id><PurchaseMoment> (#beforeBoarding)
transfers, <PreassignedFareProduct #fare_id> <accessRightsInProduct> <AcccessRightInProduct #fare_id> <ValidibleElement #fare_id>
==> <PreassignedFareProduct #fare_id><validableElements><ValidityParameter #fare_id> <fareStructureElements>
==><Tariff><FareStructureElement id="#fare_id@conditions_of_travel"> <GenericParameterAssignment #fare_id@conditions_of_travel> <limitations>
<Interchanging #fare_id@conditions_of_travel@interchanging><MaximumNumberOfInterchanges>1</MaximumNumberOfInterchanges>
<FrequencyOfUse #fare_id@conditions_of_travel@frequency><FrequencyOfUseType>unlimited | none | single
transfer_duration <PreassignedFareProduct #fare_id> <accessRightsInProduct> <AcccessRightInProduct #fare_id> <ValidibleElement #fare_id>
==> <PreassignedFareProduct #fare_id><validableElements><ValidityParameter #fare_id> <fareStructureElements>
==><Tariff><FareStructureElement id="#fare_id@conditions_of_travel"> <GenericParameterAssignment #fare_id@conditions_of_travel> <limitations>
<UsageValidityPeriod #fare_id@conditions_of_travel@validity><StandardDuration>
<UsageValidityPeriod #fare_id@conditions_of_travel@validity> <UsageEnd> endoOfDay | endOfRide |endOfPeriod |etc
GTFS Data copyright Google Inc
NeTEx (C) CEN Copyright 2010, 2011
-->
<PublicationDelivery xmlns="http://www.netex.org.uk/netex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gtfs="http://www.google.com/transit/gtfs" xmlns:mygtfsxm="http://www.demoagency.com/" version="1.0" xsi:schemaLocation="http://www.netex.org.uk/netex ../../../xsd/NeTEx_publication.xsd">
<PublicationTimestamp>2001-12-17T09:30:47.0Z</PublicationTimestamp>
<ParticipantRef>SYS001</ParticipantRef>
<!--- ======WHAT WAS REQUESTED ========== -->
<PublicationRefreshInterval>P3M</PublicationRefreshInterval>
<Description>Example 5 of GTFS Agency Fare data</Description>
<!--- =============== RESULTS =========== -->
<dataObjects>
<CompositeFrame version="1" id="mygtfsxm:DTA">
<Name>GTFS Example 5: Flat Fare, fee to transfer</Name>
<TypeOfFrameRef version="gtfs:1.5" ref="gtfs:GTFS_profile@composite"/>
<!--- ======= CODESPACEs======== -->
<codespaces>
<Codespace id="mygtfsxm">
<Xmlns>mygtfsxm</Xmlns>
<XmlnsUrl>http://www.demoagency.com/</XmlnsUrl>
<Description>Demo Agency</Description>
</Codespace>
</codespaces>
<!--- =======FRAME DEFAULTS======== -->
<FrameDefaults>
<DefaultCodespaceRef ref="mygtfsxm"/>
<DefaultCurrency>USD</DefaultCurrency>
</FrameDefaults>
<frames>
<!--- =============== FAREs =========== -->
<FareFrame version="any" id="mygtfsxm:simple_fare">
<!--- ====Fare USAGE PARAMETERS======= -->
<tariffs>
<Tariff version="any" id="mygtfsxm:simple_fare">
<TypeOfTariffRef version="gtfs:1.5" ref="gtfs:flat"/>
<fareStructureElements>
<FareStructureElement version="any" id="mygtfsxm:simple_fare@access">
<GenericParameterAssignment order="1" id="mygtfsxm:simple_fare@access" version="any">
<TypeOfAccessRightAssignmentRef versionRef="ntx:v1.0" ref="ntx:can_access"/>
<ValidityParameterGroupingType>AND</ValidityParameterGroupingType>
<validityParameters>
<VehicleModes>bus</VehicleModes>
<AuthorityRef ref="mygtfsxm:DTA"/>
</validityParameters>
</GenericParameterAssignment>
</FareStructureElement>
<FareStructureElement id="mygtfsxm:simple_fare@conditions_of_travel" version="any">
<Name>Conditions of travel</Name>
<GenericParameterAssignment version="any" order="1" id="mygtfsxm:simple_fare@conditions_of_travel">
<Name>Conditions of travel</Name>
<TypeOfAccessRightAssignmentRef versionRef="ntx:v1.0" ref="ntx:condition_of_use"/>
<LimitationGroupingType>AND</LimitationGroupingType>
<limitations>
<UsageValidityPeriod version="any" id="mygtfsxm:simple_fare@validity">
<UsageEnd>endOfRide</UsageEnd>
<StandardDuration>PT90M</StandardDuration>
</UsageValidityPeriod>
<FrequencyOfUse version="any" id="mygtfsxm:simple_fare@frequency">
<Name>Single ride</Name>
<FrequencyOfUseType>single</FrequencyOfUseType>
<MaximalFrequency>1</MaximalFrequency>
</FrequencyOfUse>
<Interchanging version="any" id="mygtfsxm:simple_fare@interchanging">
<Name>No transfer faid for</Name>
<FromMode>bus</FromMode>
<ToMode>bus</ToMode>
<MaximumNumberOfInterchanges>0</MaximumNumberOfInterchanges>
</Interchanging>
<PurchaseWindow version="any" id="mygtfsxm:simple_fare@purchase">
<PurchaseMoment>beforeBoarding</PurchaseMoment>
</PurchaseWindow>
</limitations>
</GenericParameterAssignment>
</FareStructureElement>
</fareStructureElements>
<priceGroups>
<PriceGroupRef version="any" ref="mygtfsxm:simple_fare"/>
</priceGroups>
</Tariff>
</tariffs>
<!--- ====Fare Product======= -->
<fareProducts>
<PreassignedFareProduct version="any" id="mygtfsxm:simple_fare">
<Name>Single flat fare to ride as long as you like on the DTA</Name>
<!--- ====VALIDABLE ELEMENTs====== -->
<validableElements>
<ValidableElement version="any" id="mygtfsxm:simple_fare">
<fareStructureElements>
<FareStructureElementRef version="any" ref="mygtfsxm:simple_fare@access"/>
<FareStructureElementRef version="any" ref="mygtfsxm:simple_fare@conditions_of_travel"/>
</fareStructureElements>
</ValidableElement>
</validableElements>
<!--- ====ACCESS RIGHTS======= -->
<accessRightsInProduct>
<AccessRightInProduct order="1" version="any" id="mygtfsxm:simple_fare">
<ValidableElementRef version="any" ref="mygtfsxm:simple_fare"/>
</AccessRightInProduct>
</accessRightsInProduct>
</PreassignedFareProduct>
</fareProducts>
<!--- ====PRICEs====== -->
<priceGroups>
<PriceGroup version="any" id="mygtfsxm:simple_fare">
<members>
<FareProductPrice version="any" id="mygtfsxm:simple_fare">
<Amount>1.75</Amount>
<Currency>USD</Currency>
<PreassignedFareProductRef version="any" ref="mygtfsxm:simple_fare"/>
</FareProductPrice>
</members>
</PriceGroup>
</priceGroups>
</FareFrame>
<FareFrame version="any" id="mygtfsxm:plus_transfer_fare">
<tariffs>
<Tariff version="any" id="mygtfsxm:plus_transfer_fare">
<TypeOfTariffRef version="gtfs:1.5" ref="gtfs:flat"/>
<fareStructureElements>
<FareStructureElement version="any" id="mygtfsxm:plus_transfer_fare@access">
<GenericParameterAssignment order="1" id="mygtfsxm:plus_transfer_fare@access" version="any">
<TypeOfAccessRightAssignmentRef versionRef="ntx:v1.0" ref="ntx:can_access"/>
<ValidityParameterGroupingType>AND</ValidityParameterGroupingType>
<validityParameters>
<VehicleModes>bus</VehicleModes>
<AuthorityRef ref="mygtfsxm:DTA"/>
</validityParameters>
</GenericParameterAssignment>
</FareStructureElement>
<FareStructureElement id="mygtfsxm:plus_transfer_fare@conditions_of_travel" version="any">
<Name>Conditions of travel</Name>
<GenericParameterAssignment version="any" order="1" id="mygtfsxm:plus_transfer_fare@conditions_of_travel">
<Name>Conditions of travel</Name>
<TypeOfAccessRightAssignmentRef versionRef="ntx:v1.0" ref="ntx:condition_of_use"/>
<LimitationGroupingType>AND</LimitationGroupingType>
<limitations>
<UsageValidityPeriod version="any" id="mygtfsxm:plus_transfer_fare@validity">
<UsageEnd>endOfRide</UsageEnd>
<StandardDuration>PT90M</StandardDuration>
</UsageValidityPeriod>
<FrequencyOfUse version="any" id="mygtfsxm:plus_transfer_fare@frequency">
<Name>Single ride</Name>
<FrequencyOfUseType>single</FrequencyOfUseType>
<MaximalFrequency>1</MaximalFrequency>
</FrequencyOfUse>
<Interchanging version="any" id="mygtfsxm:plus_transfer_fare@interchanging">
<Name>Extra 25 c fee for a transfer</Name>
<MaximumNumberOfInterchanges>1</MaximumNumberOfInterchanges>
<MaximumTimeToMakeATransfer>PT90M</MaximumTimeToMakeATransfer>
</Interchanging>
<PurchaseWindow version="any" id="mygtfsxm:plus_transfer_fare@purchase">
<PurchaseMoment>beforeBoarding</PurchaseMoment>
</PurchaseWindow>
</limitations>
</GenericParameterAssignment>
</FareStructureElement>
</fareStructureElements>
<priceGroups>
<PriceGroupRef version="any" ref="mygtfsxm:plus_transfer_fare"/>
</priceGroups>
</Tariff>
</tariffs>
<!--- ====Fare Product======= -->
<fareProducts>
<PreassignedFareProduct version="any" id="mygtfsxm:plus_transfer_fare">
<Name>With righto make transfers</Name>
<!--- ====VALIDABLE ELEMENTs====== -->
<validableElements>
<ValidableElement version="any" id="mygtfsxm:plus_transfer_fare">
<fareStructureElements>
<FareStructureElementRef version="any" ref="mygtfsxm:plus_transfer_fare@access"/>
<FareStructureElementRef version="any" ref="mygtfsxm:plus_transfer_fare@conditions_of_travel"/>
</fareStructureElements>
</ValidableElement>
</validableElements>
<!--- ====ACCESS RIGHTS======= -->
<accessRightsInProduct>
<AccessRightInProduct order="1" version="any" id="mygtfsxm:@plus_transfer_fare@simple_fare">
<ValidableElementRef version="any" ref="mygtfsxm:simple_fare"/>
</AccessRightInProduct>
<AccessRightInProduct order="2" version="any" id="mygtfsxm:plus_transfer_fare">
<ValidableElementRef version="any" ref="mygtfsxm:plus_transfer_fare"/>
</AccessRightInProduct>
</accessRightsInProduct>
</PreassignedFareProduct>
</fareProducts>
<!--- ====PRICEs====== -->
<priceGroups>
<PriceGroup version="any" id="mygtfsxm:plus_transfer_fare">
<members>
<FareProductPrice version="any" id="mygtfsxm:plus_transfer_fare">
<Amount>2.00</Amount>
<Currency>USD</Currency>
<PreassignedFareProductRef version="any" ref="mygtfsxm:plus_transfer_fare"/>
</FareProductPrice>
</members>
</PriceGroup>
</priceGroups>
</FareFrame>
<ResourceFrame version="any" id="mygtfsxm:DTA@agency">
<organisations>
<!--- =====Agency========= -->
<Authority version="any" id="mygtfsxm:DTA">
<Name>Demo Transit Authority</Name>
<ContactDetails>
<Url>http://code.google.com/p/googletransitdatafeed/wiki/FareExamples</Url>
</ContactDetails>
</Authority>
</organisations>
</ResourceFrame>
<!--- =====RESOURCEs======== -->
<ResourceFrame version="gtfs:1.5" id="gtfs:ResourceFrame:GTFS">
<Name>Built-in GTFS Code Values</Name>
<!--- ======= CODESPACEs======== -->
<codespaces>
<Codespace id="gtfs">
<Xmlns>gtfs</Xmlns>
<XmlnsUrl>http://www.google.com/transit/gtfs</XmlnsUrl>
<Description>GTFS code values</Description>
</Codespace>
</codespaces>
<!--- =======FRAME DEFAULTS======== -->
<FrameDefaults>
<DefaultCodespaceRef ref="gtfs"/>
</FrameDefaults>
<typesOfValue>
<ValueSet version="gtfs:1.5" id="gtfs:Charging_Moments" classOfValues="ChargingMoment">
<Name>GTFS Built in Charging Methods: FareAttribute@payment_method</Name>
<values>
<!--- ====Charging method========= -->
<ChargingMoment version="gtfs:1.5" id="gtfs:0">
<Name>Pay on Boarding</Name>
</ChargingMoment>
<ChargingMoment version="gtfs:1.5" id="gtfs:1">
<Name>Fare must be paid before boarding</Name>
</ChargingMoment>
</values>
</ValueSet>
<ValueSet version="gtfs:1.5" id="gtfs:GTFS_Types_of_Frame" classOfValues="TypeOfFrame">
<Name>GTFS Built in Types of Frame</Name>
<values>
<TypeOfFrame version="gtfs:1.5" changed="2011-01-20T00:00:00" id="gtfs:GTFS_profile@composite">
<Name>GTFS Built in Types of Frame - flat fare structure</Name>
</TypeOfFrame>
</values>
</ValueSet>
<ValueSet version="gtfs:1.5" id="gtfs:GTFS_Types_of_Tariff" classOfValues="TypeOfTariff">
<Name>GTFS Built in Types of Frame</Name>
<values>
<TypeOfTariff version="gtfs:1.5" changed="2011-01-20T00:00:00" id="gtfs:flat">
<Name>GTFS Built in Types of Tariff - flat fare </Name>
</TypeOfTariff>
<TypeOfTariff version="gtfs:1.5" changed="2011-01-20T00:00:00" id="gtfs:point_to_point">
<Name>GTFS Built in Types of Tariff - fpoint to point</Name>
</TypeOfTariff>
<TypeOfTariff version="gtfs:1.5" changed="2011-01-20T00:00:00" id="gtfs:zone_sequence">
<Name>GTFS Built in Types of Tariff - zone sequence </Name>
</TypeOfTariff>
</values>
</ValueSet>
</typesOfValue>
</ResourceFrame>
</frames>
</CompositeFrame>
</dataObjects>
</PublicationDelivery>