# CYM_0_human_2006_population.properties
# This file contains population values for Cayman Islands
#/*******************************************************************************
# * 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
# *******************************************************************************/

# 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 = CYM

# The administration level of the graph data
ADMIN_LEVEL = 0

# This is the date range for which the 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
# The value was sampled in June and represents the average for the year.
SOURCE =  https://www.cia.gov/cia/publications/factbook/geos/cj.html

# The population identifier
POPULATION = human

# The year the data is valid
YEAR = 2006

# The key is the ISO-3166-1 alpha3 three letter identifier of the country
# The units are individuals
CYM = 45436 

# State/Province

