# NAM_2_human_2006_population.properties 
# This file contains population values for NAMIBIA
#
# /*********************************************************************************************
# * 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.records.CountryGraphRecord$CountryPopulationLabelGraphRecord

# The ISO-3166-1 alpha3 code for the country
ISOKEY = NAM

# 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 = https://www.cia.gov/library/publications/the-world-factbook/
# 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 ( NA-KAK = KAOKOLAND ). Level 2 ( 110001 = NAM.L2.1 ). 
NA-KAK-G110001 = 26300
# Generated key details :  Level 1 ( NA-OWA = OWAMBO ). Level 2 ( 340001 = NAM.L2.2 ). 
NA-OWA-G340001 = 615100
# Generated key details :  Level 1 ( NA-KAV = KAVANGO ). Level 2 ( 150001 = NAM.L2.3 ). 
NA-KAV-G150001 = 201093
# Generated key details :  Level 1 ( NA-CA = CAPRIVI ). Level 2 ( 030001 = NAM.L2.4 ). 
NA-CA-G030001 = 79852
# Generated key details :  Level 1 ( NA-OUT = OUTJO ). Level 2 ( 330001 = NAM.L2.5 ). 
NA-OUT-G330001 = 68224
# Generated key details :  Level 1 ( NA-TSB = TSUMEB ). Level 2 ( 370001 = NAM.L2.6 ). 
NA-TSB-G370001 = 160788
# Generated key details :  Level 1 ( NA-GR = GROOTFONTEIN ). Level 2 ( 070001 = NAM.L2.7 ). 
NA-GR-G070001 = 135384
# Generated key details :  Level 1 ( NA-DA = DAMARALAND ). Level 2 ( 040001 = NAM.L2.8 ). 
NA-DA-G040001 = 32900
# Generated key details :  Level 1 ( NA-BO = BOESMANLAND ). Level 2 ( 020001 = NAM.L2.9 ). 
NA-BO-G020001 = 3800
# Generated key details :  Level 1 ( NA-SWK = SWAKOPMUND ). Level 2 ( 360001 = NAM.L2.10 ). 
NA-SWK-G360001 = 107629
# Generated key details :  Level 1 ( NA-HEW = HEREROLAND WEST ). Level 2 ( 100001 = NAM.L2.11 ). 
NA-HEW-G100001 = 18800
# Generated key details :  Level 1 ( NA-OTI = OTJIWARONGO ). Level 2 ( 310001 = NAM.L2.12 ). 
NA-OTI-G310001 = 135723
# Generated key details :  Level 1 ( NA-HEA = HEREROLAND EAST ). Level 2 ( 090001 = NAM.L2.13 ). 
NA-HEA-G090001 = 12650
# Generated key details :  Level 1 ( NA-OMU = OMARURU ). Level 2 ( 270001 = NAM.L2.14 ). 
NA-OMU-G270001 = 7400
# Generated key details :  Level 1 ( NA-OKD = OKAHANDJA ). Level 2 ( 240001 = NAM.L2.15 ). 
NA-OKD-G240001 = 20100
# Generated key details :  Level 1 ( NA-GO = GOBABIS ). Level 2 ( 060001 = NAM.L2.16 ). 
NA-GO-G060001 = 67496
# Generated key details :  Level 1 ( NA-KIB = KARIBIB ). Level 2 ( 140001 = NAM.L2.17 ). 
NA-KIB-G140001 = 12100
# Generated key details :  Level 1 ( NA-WIH = WINDHOEK ). Level 2 ( 380001 = NAM.L2.18 ). 
NA-WIH-G380001 = 250305
# Generated key details :  Level 1 ( NA-RBH = REHOBOTH ). Level 2 ( 350001 = NAM.L2.19 ). 
NA-RBH-G350001 = 34400
# Generated key details :  Level 1 ( NA-HEA = HEREROLAND EAST ). Level 2 ( 090002 = NAM.L2.20 ). 
NA-HEA-G090002 = 12650
# Generated key details :  Level 1 ( NA-MRI = MARIENTAL ). Level 2 ( 210001 = NAM.L2.21 ). 
NA-MRI-G210001 = 24900
# Generated key details :  Level 1 ( NA-MLT = MALTAHOHE ). Level 2 ( 200001 = NAM.L2.22 ). 
NA-MLT-G200001 = 4100
# Generated key details :  Level 1 ( NA-NAL = NAMALAND ). Level 2 ( 220001 = NAM.L2.23 ). 
NA-NAL-G220001 = 16200
# Generated key details :  Level 1 ( NA-LU = LUDERITZ ). Level 2 ( 190001 = NAM.L2.24 ). 
NA-LU-G190001 = 2500
# Generated key details :  Level 1 ( NA-KE = KEETMANSHOOP ). Level 2 ( 160001 = NAM.L2.25 ). 
NA-KE-G160001 = 69677
# Generated key details :  Level 1 ( NA-BET = BETHANIEN ). Level 2 ( 010001 = NAM.L2.26 ). 
NA-BET-G010001 = 2900
# Generated key details :  Level 1 ( NA-LU = LUDERITZ ). Level 2 ( 190002 = NAM.L2.27 ). 
NA-LU-G190002 = 2500
# Generated key details :  Level 1 ( NA-LU = LUDERITZ ). Level 2 ( 190003 = NAM.L2.28 ). 
NA-LU-G190003 = 2500
# Generated key details :  Level 1 ( NA-LU = LUDERITZ ). Level 2 ( 190004 = NAM.L2.29 ). 
NA-LU-G190004 = 2500
# Generated key details :  Level 1 ( NA-LU = LUDERITZ ). Level 2 ( 190005 = NAM.L2.30 ). 
NA-LU-G190005 = 2500
# Generated key details :  Level 1 ( NA-LU = LUDERITZ ). Level 2 ( 190006 = NAM.L2.31 ). 
NA-LU-G190006 = 2500
# Generated key details :  Level 1 ( NA-LU = LUDERITZ ). Level 2 ( 190007 = NAM.L2.32 ). 
NA-LU-G190007 = 2500
# Generated key details :  Level 1 ( NA-KAS = KARASBURG ). Level 2 ( 130001 = NAM.L2.33 ). 
NA-KAS-G130001 = 14693
