# DNK_1_human_2000_population.properties 
# This file contains population values for the DENMARK 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.records.CountryGraphRecord$CountryPopulationLabelGraphRecord

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

# 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 = http://www.grid.unep.ch/data/data.php?category=human_related

# The population identifier
POPULATION = human

# The year the data is valid
YEAR = 2006

# State/Province

DK-021 = 2845700
DK-023 = 587000
DK-022 = 1713700
