# TUR_1_human_2006_population.properties 
#
# This file contains population values for TURKEY
#
#
#
# /*********************************************************************************************
#
# * Copyright (c) 2006 IBM Corporation and others.
#
# * All rights reserved. This program and the accompanying materials
#
# * are made available under the terms of the Eclipse Public License v1.0
#
# * which accompanies this distribution, and is available at
#
# * http://www.eclipse.org/legal/epl-v10.html
#
# *
#
# * Contributors:
#
# *     IBM Corporation - initial API and implementation
#
# ***********************************************************************************************/
#
#
#
# /**********************************************************************************************
#
# * Key Format: 
#
# * 
#
# * 	 For level 1 data, the key is the ISO3166-2 code. An ISO3166-2 code is composed as follows: 
#
# * a two letter country code followed by up to three alphanumeric characters for the level 1 administration.
#
# *
#
# * 	 For level 2 data, the key is the ISO3166-2 code followed by six digits. The leftmost two digits indicate
#
# * the level 1 container of a level 2 administration (i.e. California is a level 1 container for Orange County
#
# * which is a level 2 administration).  The two digits were taken from a lexicographic sorting of all the
#
# * level 1 administrations within a country. Similarly, the four leftmost digits indicate a level 2 administration.
#
# * Again, these four digits are an index into the lexicographic sorting of all level 2 administrations within 
#
# * a level 1 administration. 
#
# ************************************************************************************************/
#
#
#
# This is the name of the class that will interpret the rest of the file's contents
#
RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.CountryPopulationLabelPropertyFileSpecification
#
#
#
# The ISO-3166-1 alpha3 code for the country
#
ISOKEY = TUR
#
#
#
# The administration level of the population data
#
ADMIN_LEVEL = 1
#
#
#
# This is the date range for which the population values in this file are valid 
#
# See http://purl.org/dc/terms/1.1/valid
#
VALID = start=2006-01-01; end=2006-12-31;
#
#
#
# This is the source of the data
#
SOURCE = Primary (https://www.cia.gov/library/publications/the-world-factbook/). 
#
# SOURCE = Distributions (subdivision ratios) validated against ORNL LandScan 2007(TM)/UT-Battelle, LLC 
#
# SOURCE = https://www.cia.gov/library/publications/the-world-factbook/
#
#
#
# The population identifier
#
POPULATION = human
#
#
#
# The year the data is valid
#
YEAR = 2006
#
#
#
# State/Province
#
#
#
TR-58 = 773750
TR-59 = 735798
TR-56 = 312583
TR-57 = 220402
TR-04 = 541680
TR-03 = 850132
TR-02 = 644523
TR-08 = 202060
TR-07 = 1820291
TR-06 = 4315722
TR-05 = 405332
TR-50 = 311951
TR-09 = 1001306
TR-90 = 2236114
TR-55 = 1244366
TR-54 = 771433
TR-53 = 262842
TR-52 = 735794
TR-67 = 996296
TR-68 = 390260
TR-69 = 103008
TR-7 = 473049
TR-8 = 316962
TR-9 = 627290
TR-3 = 1290599
TR-4 = 625077
TR-5 = 357291
TR-6 = 681314
TR-0 = 2467137
TR-2 = 269382
TR-KMA = 1044018
TR-60 = 869533
TR-62 = 101308
TR-64 = 322401
TR-63 = 1579260
TR-66 = 723400
TR-65 = 915756
TR-38 = 1163445
TR-39 = 338112
TR-36 = 666003
TR-37 = 396022
TR-34 = 10046532
TR-35 = 3457344
TR-22 = 405446
TR-20 = 887382
TR-29 = 202530
TR-28 = 379529
TR-27 = 1519554
TR-26 = 737287
TR-72 = 458722
TR-25 = 970268
TR-73 = 342993
TR-24 = 333427
TR-70 = 273942
TR-23 = 598311
TR-33 = 1738944
TR-32 = 559319
TR-30 = 258322
TR-49 = 468594
TR-45 = 1321562
TR-47 = 849384
TR-48 = 761335
TR-10 = 1140482
TR-85 = 252416
TR-87 = 238727
TR-88 = 355164
TR-82 = 1462200
TR-83 = 418057
TR-84 = 1673270
TR-42 = 2315864
TR-44 = 921127
TR-43 = 700718
TR-40 = 262212

