# SYR_2_human_2006_population.properties 
# This file contains population values for SYRIA
#
# /*********************************************************************************************
# * 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 = SYR

# The administration level of the population data
ADMIN_LEVEL = 2

# 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

# Level 1 (admin 1 = e.g., state)
# Level 2 (admin 2 = e.g., county)

# Generated key details :  Level 1 ( SY-HL = ALEPPO (HALAB) ). Level 2 ( 010001 = SYR.L2.1 ). 
SY-HL-G010001 = 3719000
# Generated key details :  Level 1 ( SY-DY = DAYR AZ ZAWR ). Level 2 ( 050001 = SYR.L2.2 ). 
SY-DY-G050001 = 919000
# Generated key details :  Level 1 ( SY-ID = IDLIB ). Level 2 ( 100001 = SYR.L2.3 ). 
SY-ID-G100001 = 1120000
# Generated key details :  Level 1 ( SY-LA = LATTAKIA (AL LADHIQIYAH ). Level 2 ( 120001 = SYR.L2.4 ). 
SY-LA-G120001 = 876000
# Generated key details :  Level 1 ( SY-HM = HAMAH ). Level 2 ( 070001 = SYR.L2.5 ). 
SY-HM-G070001 = 1335000
# Generated key details :  Level 1 ( SY-HI = HOMS (HIMS) ). Level 2 ( 090001 = SYR.L2.6 ). 
SY-HI-G090001 = 1490000
# Generated key details :  Level 1 ( SY-TA = TARTUS ). Level 2 ( 140001 = SYR.L2.7 ). 
SY-TA-G140001 = 674000
# Generated key details :  Level 1 ( SY-DI = DIMASHQ ). Level 2 ( 060001 = SYR.L2.8 ). 
SY-DI-G060001 = 1653000
# Generated key details :  Level 1 ( SY-QU = KUNEITRA (EL QUNAYTIRAH ). Level 2 ( 110001 = SYR.L2.9 ). 
SY-QU-G110001 = 66000
# Generated key details :  Level 1 ( SY-DR = DARA ). Level 2 ( 040001 = SYR.L2.10 ). 
SY-DR-G040001 = 780000
# Generated key details :  Level 1 ( SY-SU = AS SUWAYDA ). Level 2 ( 030001 = SYR.L2.11 ). 
SY-SU-G030001 = 307000
# Generated key details :  Level 1 ( SY-HA = HASAKA (AL HAKSA) ). Level 2 ( 080001 = SYR.L2.12 ). 
SY-HA-G080001 = 1265000
# Generated key details :  Level 1 ( SY-RA = AR RAQQAH ). Level 2 ( 020001 = SYR.L2.13 ). 
SY-RA-G020001 = 691000
