# SVN_1_human_2000_population.properties 
# This file contains population values for the SLOVENIA in 2000
#
# /*********************************************************************************************
# * Copyright (c) 2007 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 = SVN

# 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;

# /*********************************************************************************************
# * The Data source for Europe is "UNESCO (1987) through UNEP/GRID-Europe."
# * For more details please visit : http://www.grid.unep.ch/data/policy.php
# ***********************************************************************************************/

# This is the source of the data
SOURCE = Primary (http://www.grid.unep.ch/data/data.php?category=human_related). 
#
# SOURCE = Distributions (subdivision ratios) validated against ORNL LandScan 2007(TM) /UT-Battelle, LLC

# The population identifier
POPULATION = human

# The year the data is valid
YEAR = 2006

# State/Province

SI-01 = 1948060
