# STP_1_human_2006_population.properties 
#
# This file contains population values for SAO TOME AND PRINCIPE
#
#
#
# /*********************************************************************************************
#
# * 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 = STP
#
#
#
# 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
#
#
#
ST-S = 184397
ST-P = 9016

