# AGO_2_node.properties 
# /*********************************************************************************************
# * 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.CountryNodePropertyFileSpecification

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

# The administration level of the node data
ADMIN_LEVEL = 2

# This is the date range for which the area values in this file are valid 
# See http://purl.org/dc/terms/1.1/valid
VALID = start=1900-01-01;

# This is the source of the data
SOURCE = http://www.iso.org/iso/home.htm
# SOURCE = http://www.iso.org/iso/home.htm

# The file that contains the latitude/longitude data for the node 
SPATIAL_URI = platform:/plugin/org.eclipse.stem.data.geography/resources/data/geo/country/AGO/AGO_2_MAP.xml

# Generated key details :  Level 1 ( AO-CAB = CABINDA ). Level 2 ( 040001 = AGO.L2.1 ). 
AO-CAB-G040001 = AO-CAB-G040001, G040001, CAB
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180006 = AGO.L2.2 ). 
AO-ZAI-G180006 = AO-ZAI-G180006, G180006, ZAI
# Generated key details :  Level 1 ( AO-UIG = UIGE ). Level 2 ( 170001 = AGO.L2.3 ). 
AO-UIG-G170001 = AO-UIG-G170001, G170001, UIG
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180007 = AGO.L2.4 ). 
AO-ZAI-G180007 = AO-ZAI-G180007, G180007, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180008 = AGO.L2.5 ). 
AO-ZAI-G180008 = AO-ZAI-G180008, G180008, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180009 = AGO.L2.6 ). 
AO-ZAI-G180009 = AO-ZAI-G180009, G180009, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180010 = AGO.L2.7 ). 
AO-ZAI-G180010 = AO-ZAI-G180010, G180010, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180011 = AGO.L2.8 ). 
AO-ZAI-G180011 = AO-ZAI-G180011, G180011, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180012 = AGO.L2.9 ). 
AO-ZAI-G180012 = AO-ZAI-G180012, G180012, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180001 = AGO.L2.10 ). 
AO-ZAI-G180001 = AO-ZAI-G180001, G180001, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180002 = AGO.L2.11 ). 
AO-ZAI-G180002 = AO-ZAI-G180002, G180002, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180003 = AGO.L2.12 ). 
AO-ZAI-G180003 = AO-ZAI-G180003, G180003, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180004 = AGO.L2.13 ). 
AO-ZAI-G180004 = AO-ZAI-G180004, G180004, ZAI
# Generated key details :  Level 1 ( AO-ZAI = ZAIRE ). Level 2 ( 180005 = AGO.L2.14 ). 
AO-ZAI-G180005 = AO-ZAI-G180005, G180005, ZAI
# Generated key details :  Level 1 ( AO-LNO = LUNDA NORTE ). Level 2 ( 120001 = AGO.L2.15 ). 
AO-LNO-G120001 = AO-LNO-G120001, G120001, LNO
# Generated key details :  Level 1 ( AO-MAL = MALANJE ). Level 2 ( 140001 = AGO.L2.16 ). 
AO-MAL-G140001 = AO-MAL-G140001, G140001, MAL
# Generated key details :  Level 1 ( AO-BGO = BENGO ). Level 2 ( 010001 = AGO.L2.17 ). 
AO-BGO-G010001 = AO-BGO-G010001, G010001, BGO
# Generated key details :  Level 1 ( AO-CNO = CUANZA NORTE ). Level 2 ( 060001 = AGO.L2.18 ). 
AO-CNO-G060001 = AO-CNO-G060001, G060001, CNO
# Generated key details :  Level 1 ( AO-LSU = LUNDA SUL ). Level 2 ( 130001 = AGO.L2.19 ). 
AO-LSU-G130001 = AO-LSU-G130001, G130001, LSU
# Generated key details :  Level 1 ( AO-LUA = LUANDA ). Level 2 ( 110001 = AGO.L2.20 ). 
AO-LUA-G110001 = AO-LUA-G110001, G110001, LUA
# Generated key details :  Level 1 ( AO-LUA = LUANDA ). Level 2 ( 110002 = AGO.L2.21 ). 
AO-LUA-G110002 = AO-LUA-G110002, G110002, LUA
# Generated key details :  Level 1 ( AO-LUA = LUANDA ). Level 2 ( 110003 = AGO.L2.22 ). 
AO-LUA-G110003 = AO-LUA-G110003, G110003, LUA
# Generated key details :  Level 1 ( AO-LUA = LUANDA ). Level 2 ( 110004 = AGO.L2.23 ). 
AO-LUA-G110004 = AO-LUA-G110004, G110004, LUA
# Generated key details :  Level 1 ( AO-LUA = LUANDA ). Level 2 ( 110005 = AGO.L2.24 ). 
AO-LUA-G110005 = AO-LUA-G110005, G110005, LUA
# Generated key details :  Level 1 ( AO-CUS = CUANZA SUL ). Level 2 ( 070001 = AGO.L2.25 ). 
AO-CUS-G070001 = AO-CUS-G070001, G070001, CUS
# Generated key details :  Level 1 ( AO-BIE = BIE ). Level 2 ( 030001 = AGO.L2.26 ). 
AO-BIE-G030001 = AO-BIE-G030001, G030001, BIE
# Generated key details :  Level 1 ( AO-MOX = MOXICO ). Level 2 ( 150001 = AGO.L2.27 ). 
AO-MOX-G150001 = AO-MOX-G150001, G150001, MOX
# Generated key details :  Level 1 ( AO-HUA = HUAMBO ). Level 2 ( 090001 = AGO.L2.28 ). 
AO-HUA-G090001 = AO-HUA-G090001, G090001, HUA
# Generated key details :  Level 1 ( AO-BGU = BENGUELA ). Level 2 ( 020001 = AGO.L2.29 ). 
AO-BGU-G020001 = AO-BGU-G020001, G020001, BGU
# Generated key details :  Level 1 ( AO-HUI = HUILA ). Level 2 ( 100001 = AGO.L2.30 ). 
AO-HUI-G100001 = AO-HUI-G100001, G100001, HUI
# Generated key details :  Level 1 ( AO-NAM = NAMIBE ). Level 2 ( 160001 = AGO.L2.31 ). 
AO-NAM-G160001 = AO-NAM-G160001, G160001, NAM
# Generated key details :  Level 1 ( AO-CCU = CUANDO CUBANGO ). Level 2 ( 050001 = AGO.L2.32 ). 
AO-CCU-G050001 = AO-CCU-G050001, G050001, CCU
# Generated key details :  Level 1 ( AO-CNN = CUNENE ). Level 2 ( 080001 = AGO.L2.33 ). 
AO-CNN-G080001 = AO-CNN-G080001, G080001, CNN
# Generated key details :  Level 1 ( AO-NAM = NAMIBE ). Level 2 ( 160002 = AGO.L2.34 ). 
AO-NAM-G160002 = AO-NAM-G160002, G160002, NAM
