diff --git a/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_3_area.properties b/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_3_area.properties
new file mode 100644
index 0000000..bf03566
--- /dev/null
+++ b/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_3_area.properties
@@ -0,0 +1,56 @@
+# CHN_2_area.properties 
+# This file contains area values for CHINA
+# /*********************************************************************************************
+# * 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.CountryAreaLabelPropertyFileSpecification
+
+# The ISO-3166-1 alpha3 code for the country
+ISOKEY = CHN
+
+# The administration level of the area data
+ADMIN_LEVEL = 3
+
+# 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=2015-01-01;
+
+# This is the source of the data
+SOURCE = https://www.cia.gov/library/publications/the-world-factbook/
+# SOURCE = https://www.cia.gov/library/publications/the-world-factbook/
+
+# Looked up from web
+CN-44-G070067-FT = 78.04
+#
+CN-44-G070067-LH = 78.75
+#
+CN-44-G070067-NS = 185.49
+#
+CN-44-G070067-BA = 712.95
+#
+CN-44-G070067-LG = 844.08
+#
+CN-44-G070067-YT = 71.82
\ No newline at end of file
diff --git a/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_3_node.properties b/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_3_node.properties
new file mode 100644
index 0000000..9ff94aa
--- /dev/null
+++ b/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_3_node.properties
@@ -0,0 +1,58 @@
+# CHN_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 = CHN
+
+# The administration level of the node data
+ADMIN_LEVEL = 3
+
+# 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=2015-01-01;
+
+# This is the source of the data
+SOURCE = colleague in CRL
+# 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/CHN/CHN_3_MAP.xml
+
+# Manually Added :  Level 1 ( CN-JK = JAMMU AND KASHMIR ). Level 2 ( 170001 = LADAKH (LEH) ). 
+CN-44-G070067-FT = Futian
+#
+CN-44-G070067-LH = Luohu
+#
+CN-44-G070067-NS = Nanshan
+#
+CN-44-G070067-BA = Baoan
+#
+CN-44-G070067-LG = Longgang
+#
+CN-44-G070067-YT = Yantian
\ No newline at end of file
diff --git a/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_centers.properties b/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_centers.properties
index cf4f774..44124e9 100644
--- a/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_centers.properties
+++ b/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_centers.properties
@@ -2458,3 +2458,10 @@
 CN-NT-G250013 = 22.32832, 114.323422
 CN-NT-G250014 = 22.315182, 114.350302
 CN-NT-G250015 = 22.308075, 114.361351
+# Level 3
+CN-44-G070067-FT = 22.5225, 114.055833
+CN-44-G070067-LH = 22.5456, 114.129
+CN-44-G070067-NS = 22.501619, 113.907822
+CN-44-G070067-BA = 22.5534, 113.884
+CN-44-G070067-LG = 22.720278, 114.2475
+CN-44-G070067-YT = 22.5637, 114.24
diff --git a/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_names.properties b/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_names.properties
index f2348ea..f5e8f37 100644
--- a/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_names.properties
+++ b/geography/org.eclipse.stem.internal.data.geography/resources/data/country/CHN/CHN_names.properties
@@ -4883,3 +4883,16 @@
 CN-MAR-G230012 = CN-MAR-G230012
 # Generated key details :  Level 1 ( CN-MAR = MARINE ). Level 2 ( 230013 = CHN.L2.32 ). 
 CN-MAR-G230013 = CN-MAR-G230013
+# MANUALLY ADDED LEVEL 3 data for SHENZHEN CITY
+CN-44-G070067-FT = Futian
+#
+CN-44-G070067-LH = Luohu
+#
+CN-44-G070067-NS = Nanshan
+#
+CN-44-G070067-BA = Baoan
+#
+CN-44-G070067-LG = Longgang
+#
+CN-44-G070067-YT = Yantian
+
diff --git a/geography/org.eclipse.stem.internal.data.geography/resources/data/geo/country/CHN/CHN_3_MAP.xml b/geography/org.eclipse.stem.internal.data.geography/resources/data/geo/country/CHN/CHN_3_MAP.xml
new file mode 100644
index 0000000..58d6e1b
--- /dev/null
+++ b/geography/org.eclipse.stem.internal.data.geography/resources/data/geo/country/CHN/CHN_3_MAP.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 
+# ***************************************************************************************************
+# * 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 the level 2 administration.
+# * Again, these four digits are an index into the lexicographic sorting of all level 2 administrations within 
+# * a level 1 administration. 
+# *************************************************************************************************** --> 
+
+<Map xmlns:gml="http://www.opengis.net/gml" xmlns:georss="http://www.georss.org/georss">
+<title>CHN Level 1 Map</title>
+<subTitle>Administrative Boundaries</subTitle>
+<updated>Tue Nov 07 16:57:55 PST 2006 </updated>
+<entry>
+<georss:where>
+<gml:Polygon gml:id="CN-44-G070067-BA">
+<gml:outerBoundaryIs>
+<gml:LinearRing>
+<gml:posList>
+22.672331 114.062138 22.684091 114.084644 22.669061 114.0982 22.67666 114.109365 22.702519 114.107331 22.727803 114.123682 22.727155 114.117326 22.731663 114.112728 22.747544 114.106395 22.753782 114.084996 22.747169 114.080466 22.763837 114.072539 22.761654 114.059539 22.769052 114.047152 22.76568 114.028642 22.770248 114.009012 22.777409 114.002808 22.80674 113.995636 22.809241 113.984701 22.817777 113.97863 22.82016 113.967204 22.833765 113.944255 22.843024 113.947005 22.847033 113.942046 22.848021 113.912232 22.857625 113.894649 22.850042 113.884552 22.84166 113.881669 22.838869 113.867071 22.842913 113.856805 22.838597 113.848808 22.817843 113.848432 22.807118 113.844592 22.798712 113.831136 22.79716 113.820972 22.790862 113.82107 22.787828 113.817114 22.789617 113.807005 22.782751 113.807751 22.77558 113.798487 22.762082 113.79979 22.749145 113.776022 22.734136 113.763063 22.733648 113.729528 22.728106 113.715946 22.726393 113.68352 22.697177 113.701844 22.649396 113.723603 22.542888 113.747328 22.535732 113.745916 22.528318 113.735535 22.520582 113.692399 22.447412 113.699814 22.416114 113.722692 22.409449 113.735253 22.516216 113.836299 22.531673 113.857115 22.547586 113.900917 22.562977 113.922503 22.571698 113.922604 22.579901 113.933197 22.58658 113.936156 22.593551 113.930993 22.598716 113.933979 22.604535 113.931339 22.613872 113.937102 22.6362 113.935238 22.65742 113.951591 22.656977 113.973232 22.648414 113.974815 22.645135 113.979249 22.643759 113.997029 22.635255 114.001227 22.63413 114.009938 22.612017 114.019419 22.606064 114.029787 22.588103 114.029856 22.589821 114.050857 22.587395 114.059112 22.592988 114.065604 22.591133 114.072783 22.5982 114.078085 22.606547 114.06731 22.601146 114.068907 22.60862 114.063856 22.618244 114.067568 22.632135 114.067299 22.635934 114.058187 22.641545 114.057419 22.669629 114.058714 22.672331 114.062138
+</gml:posList>
+</gml:LinearRing></gml:outerBoundaryIs>
+</gml:Polygon>
+<gml:Polygon gml:id="CN-44-G070067-FT">
+<gml:outerBoundaryIs>
+<gml:LinearRing>
+<gml:posList>
+22.591133 114.072783 22.592988 114.065604 22.587395 114.059112 22.589821 114.050857 22.588102 114.029891 22.586004 114.016159 22.582217 114.012039 22.570114 114.00892 22.562909 114.012577 22.561198 114.003994 22.555931 114.006308 22.55302 114.00266 22.539055 114.003994 22.534018 113.999577 22.513987 114.006482 22.503929 114.024001 22.511034 114.035254 22.505174 114.063616 22.519415 114.075536 22.521347 114.083843 22.518334 114.088923 22.522133 114.094455 22.527082 114.096798 22.533337 114.090148 22.540224 114.10265 22.538051 114.111486 22.574234 114.110501 22.57034 114.099265 22.575741 114.093598 22.574271 114.085563 22.583496 114.081477 22.591133 114.072783
+</gml:posList>
+</gml:LinearRing></gml:outerBoundaryIs>
+</gml:Polygon>
+<gml:Polygon gml:id="CN-44-G070067-LG">
+<gml:outerBoundaryIs>
+<gml:LinearRing>
+<gml:posList>
+22.755981 114.215561 22.744613 114.220989 22.731504 114.214091 22.722775 114.216392 22.71681 114.204325 22.699472 114.205844 22.693261 114.198891 22.661484 114.185264 22.66756 114.162997 22.672732 114.161741 22.676054 114.170178 22.685435 114.174126 22.696263 114.158268 22.702453 114.159587 22.708201 114.149828 22.722351 114.14728 22.718419 114.140491 22.723224 114.134691 22.721509 114.13017 22.727983 114.124784 22.702519 114.107331 22.67666 114.109365 22.669061 114.0982 22.684091 114.084644 22.669629 114.058714 22.635934 114.058187 22.632135 114.067299 22.618244 114.067568 22.60862 114.063856 22.601146 114.068907 22.606547 114.06731 22.597815 114.080959 22.603386 114.081693 22.606549 114.088036 22.605779 114.099588 22.594376 114.11367 22.59738 114.124467 22.592126 114.137597 22.598541 114.152803 22.611243 114.161621 22.609915 114.175796 22.624875 114.187435 22.626018 114.200334 22.617946 114.208703 22.61374 114.207417 22.60929 114.222113 22.591481 114.228844 22.602766 114.237982 22.617202 114.242569 22.629904 114.261277 22.628487 114.268463 22.632028 114.273585 22.636869 114.273951 22.647457 114.266883 22.657325 114.267983 22.662883 114.280276 22.65553 114.284512 22.650022 114.293934 22.640116 114.298266 22.628527 114.297597 22.629251 114.305755 22.638428 114.314224 22.631513 114.321689 22.633495 114.343071 22.628976 114.349179 22.622821 114.350483 22.611361 114.345841 22.608277 114.358927 22.604639 114.35992 22.571439 114.350644 22.565132 114.445384 22.548422 114.466412 22.472177 114.466199 22.439975 114.480932 22.42381 114.505021 22.421695 114.513321 22.421381 114.525647 22.436284 114.568872 22.46293 114.58705 22.486369 114.614548 22.493892 114.625887 22.502331 114.650056 22.530647 114.658681 22.55358 114.632741 22.577062 114.61727 22.625445 114.616553 22.660517 114.605858 22.67325 114.591416 22.673688 114.584889 22.663355 114.539982 22.664708 114.523501 22.674818 114.512966 22.675678 114.498343 22.674148 114.488683 22.668419 114.483151 22.672773 114.477598 22.674802 114.459553 22.671105 114.456077 22.667 114.438659 22.682214 114.435132 22.684813 114.443743 22.695065 114.451929 22.704532 114.448006 22.708326 114.432597 22.725511 114.412543 22.732578 114.411888 22.746586 114.427137 22.75923 114.429715 22.766267 114.424539 22.774281 114.424505 22.782123 114.416227 22.784664 114.409812 22.781695 114.402376 22.767586 114.40222 22.765802 114.398794 22.771323 114.373028 22.778365 114.367218 22.786766 114.351307 22.790002 114.350878 22.795455 114.358073 22.804794 114.357222 22.80731 114.359903 22.811497 114.359472 22.815048 114.353688 22.811338 114.343958 22.813521 114.327336 22.804644 114.308393 22.80997 114.299087 22.807311 114.294754 22.801401 114.294357 22.800288 114.281054 22.787613 114.26502 22.800442 114.241246 22.815473 114.236259 22.795831 114.216219 22.787241 114.192046 22.772115 114.197525 22.768727 114.206091 22.755981 114.215561
+</gml:posList>
+</gml:LinearRing></gml:outerBoundaryIs>
+</gml:Polygon>
+<gml:Polygon gml:id="CN-44-G070067-LH">
+<gml:outerBoundaryIs>
+<gml:LinearRing>
+<gml:posList>
+22.5982 114.078085 22.591133 114.072783 22.583496 114.081477 22.574343 114.085419 22.575741 114.093598 22.57034 114.099265 22.574234 114.110501 22.538051 114.111486 22.538779 114.115049 22.535086 114.115257 22.540151 114.120956 22.533228 114.123308 22.545383 114.142217 22.544901 114.16004 22.557917 114.163618 22.558096 114.168209 22.564797 114.172756 22.561995 114.175418 22.562595 114.188472 22.556788 114.192358 22.557259 114.201923 22.57232 114.218539 22.581578 114.213738 22.586042 114.227054 22.591481 114.228844 22.60929 114.222113 22.61374 114.207417 22.617946 114.208703 22.626018 114.200334 22.624875 114.187435 22.609915 114.175796 22.611243 114.161621 22.598541 114.152803 22.592126 114.137597 22.59738 114.124467 22.594376 114.11367 22.605268 114.100958 22.606675 114.09159 22.603617 114.08202 22.599678 114.083147 22.5982 114.078085
+</gml:posList>
+</gml:LinearRing></gml:outerBoundaryIs>
+</gml:Polygon>
+<gml:Polygon gml:id="CN-44-G070067-NS">
+<gml:outerBoundaryIs>
+<gml:LinearRing>
+<gml:posList>
+22.506303 113.997266 22.513987 114.006482 22.529682 113.999479 22.539055 114.003994 22.55302 114.00266 22.555931 114.006308 22.560939 114.003886 22.562909 114.012577 22.570114 114.00892 22.582217 114.012039 22.589529 114.030786 22.606064 114.029787 22.612017 114.019419 22.63413 114.009938 22.635255 114.001227 22.643759 113.997029 22.644023 113.981667 22.648414 113.974815 22.656977 113.973232 22.658642 113.956087 22.655666 113.949057 22.643623 113.943025 22.640058 113.936492 22.613872 113.937102 22.604535 113.931339 22.598716 113.933979 22.593551 113.930993 22.58658 113.936156 22.579901 113.933197 22.571698 113.922604 22.562977 113.922503 22.547586 113.900917 22.531673 113.857115 22.516216 113.836299 22.409449 113.735253 22.398465 113.764399 22.371004 113.79039 22.347731 113.802364 22.290004 113.813838 22.240159 113.837116 22.270685 113.850441 22.276198 113.858777 22.336642 113.880412 22.432119 113.880408 22.475107 113.959233 22.506303 113.997266
+</gml:posList>
+</gml:LinearRing></gml:outerBoundaryIs>
+</gml:Polygon>
+<gml:Polygon gml:id="CN-44-G070067-YT">
+<gml:outerBoundaryIs>
+<gml:LinearRing>
+<gml:posList>
+22.627053 114.25644 22.617202 114.242569 22.612806 114.243026 22.586042 114.227054 22.581578 114.213738 22.57232 114.218539 22.55858 114.204151 22.558209 114.230408 22.547413 114.238877 22.556746 114.254208 22.568487 114.287354 22.571439 114.350644 22.604639 114.35992 22.608277 114.358927 22.611361 114.345841 22.625069 114.350579 22.63291 114.345072 22.630763 114.333973 22.634119 114.328807 22.631513 114.321689 22.638428 114.314224 22.629251 114.305755 22.628527 114.297597 22.640116 114.298266 22.650022 114.293934 22.663377 114.27881 22.659088 114.270092 22.653858 114.267378 22.632028 114.273585 22.627053 114.25644
+</gml:posList>
+</gml:LinearRing></gml:outerBoundaryIs>
+</gml:Polygon>
+</georss:where>
+</entry>
+</Map>
diff --git a/geography/org.eclipse.stem.internal.data.geography/resources/data/relationship/commonborder/CHN_3_CHN_3.properties b/geography/org.eclipse.stem.internal.data.geography/resources/data/relationship/commonborder/CHN_3_CHN_3.properties
new file mode 100644
index 0000000..61bafc5
--- /dev/null
+++ b/geography/org.eclipse.stem.internal.data.geography/resources/data/relationship/commonborder/CHN_3_CHN_3.properties
@@ -0,0 +1,22 @@
+# 
+#  File generated from:
+#   c:/stem/org.eclipse.stem.geography/resources/data/geo/country/CHN/CHN_2_MAP.xml
+#
+#  Generated by: class org.eclipse.stem.internal.data.utility.NeighborUtility
+# 
+RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.CommonBorderGeographicRelationshipPropertyFileSpecification
+TITLE = Common Border relationship within country CHN
+VALID = start=2015-01-01;
+ISOKEY_0 = CHN
+ISOKEY_0_LEVEL = 3
+ISOKEY_1 = CHN
+ISOKEY_1_LEVEL = 3
+0=CN-44-G070067-BA,CN-44-G070067-FT,1.0
+1=CN-44-G070067-BA,CN-44-G070067-LG,1.0
+2=CN-44-G070067-BA,CN-44-G070067-LH,1.0
+3=CN-44-G070067-BA,CN-44-G070067-NS,1.0
+4=CN-44-G070067-FT,CN-44-G070067-LH,1.0
+5=CN-44-G070067-FT,CN-44-G070067-NS,1.0
+6=CN-44-G070067-LG,CN-44-G070067-LH,1.0
+7=CN-44-G070067-LG,CN-44-G070067-YT,1.0
+8=CN-44-G070067-LH,CN-44-G070067-YT,1.0
\ No newline at end of file
diff --git a/geography/org.eclipse.stem.internal.data.geography/resources/data/relationship/relativephysical/CHN_2_CHN_3.properties b/geography/org.eclipse.stem.internal.data.geography/resources/data/relationship/relativephysical/CHN_2_CHN_3.properties
new file mode 100644
index 0000000..791a155
--- /dev/null
+++ b/geography/org.eclipse.stem.internal.data.geography/resources/data/relationship/relativephysical/CHN_2_CHN_3.properties
@@ -0,0 +1,38 @@
+# CHN_1_CHN_2.properties 
+#/*******************************************************************************
+# * 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
+# *******************************************************************************/
+
+# 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.RelativePhysicalGeographicRelationshipPropertyFileSpecification
+
+# The title of the relationship
+TITLE = Physical containment of CHN level (3) by CHN (2)
+
+# 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=2015-01-01;
+
+# This is the source of the data
+SOURCE = http://www.ibm.com
+
+# ISO3166-1 alpha3 keys and levels of relationship
+ISOKEY_0 = CHN
+ISOKEY_0_LEVEL = 2
+ISOKEY_1 = CHN
+ISOKEY_1_LEVEL = 3
+
+# Record Number = Key1, Key2, relationship
+1 = CN-44-G070067, CN-44-G070067-FT, Contains
+2 = CN-44-G070067, CN-44-G070067-LH, Contains
+3 = CN-44-G070067, CN-44-G070067-NS, Contains
+4 = CN-44-G070067, CN-44-G070067-BA, Contains
+5 = CN-44-G070067, CN-44-G070067-LG, Contains
+6 = CN-44-G070067, CN-44-G070067-YT, Contains
\ No newline at end of file
diff --git a/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/utility/CountryLvl0BorderGenerator.java b/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/utility/CountryLvl0BorderGenerator.java
new file mode 100644
index 0000000..372aad8
--- /dev/null
+++ b/org.eclipse.stem.internal.data/src/org/eclipse/stem/internal/data/utility/CountryLvl0BorderGenerator.java
@@ -0,0 +1,243 @@
+package org.eclipse.stem.internal.data.utility;
+/*******************************************************************************
+ * Copyright (c) 2014 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
+ *******************************************************************************/
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+
+/**
+ * This class generates Admin Level 0 (country level) common borders.
+ * it derives them from the existing higher resolution border property files.
+ *
+ */
+public class CountryLvl0BorderGenerator {
+
+	
+		// get the path
+		private static final String sep = File.separator;
+		/**
+		 * the output path
+		 */
+		public static String outputPath;
+		/** 
+		 * location of existing files
+		 */
+		private static String commonBorderPath ;
+		
+		private static Map<String,String> borderElementMap = new HashMap<String,String>();
+		private static Map<String,Double> borderValueMap = new HashMap<String,Double>();
+		
+	/**
+	 * finds and returns the path to the existing property files
+	 * @return path to common border files
+	 */
+	public static String getCommonBorderPath() {
+		 URL location = CountryLvl0BorderGenerator.class.getProtectionDomain().getCodeSource().getLocation();
+	     String path0 = location.getFile().toString();
+		 int tail = path0.indexOf("bin");
+		 path0 = path0.substring(0, tail);
+		 path0 = path0.replaceAll("org.eclipse.stem.data"+sep, "org.eclipse.stem.data"+sep+"geography"+sep);
+		 path0 = path0.replaceAll("org.eclipse.stem.internal.data", "org.eclipse.stem.internal.data.geography");
+		 path0 = path0+"resources"+sep+"data"+sep+"relationship"+sep+"commonborder"+sep;
+		 outputPath = path0+"level0_files_test_output"+sep;
+		 commonBorderPath = path0;
+		 return path0;
+	}
+	
+	
+	/**
+	 * Generates everything
+	 */
+	@SuppressWarnings("unused")
+	public static void generateLvl0PropertyFiles() {
+		String path0 = getCommonBorderPath();
+
+		File dir = new File(path0);
+		System.out.println("" + dir.toString());
+		if (dir.isDirectory()) {
+			File[] fileList = dir.listFiles();
+			for (File f : fileList) {
+				String shortName = f.getName();
+				// the countries are already in alphabetic order
+				String ctry1 = shortName.substring(0, 3);
+				String ctry2 = shortName.substring(6, 9);
+				
+				double borderLength  = 0.0;
+				try {
+
+					// System.out.println("["+ctry1+"] , [" + ctry2+"]");
+					if (!ctry1.equals(ctry2)) {
+						
+						// not the same country
+						//System.out.println("" + shortName);
+						// remember the headerLines in the original file
+						List<String> headerLines = new ArrayList<String>();
+						
+						// 1. sum the border lengths
+						if (shortName.indexOf(".properties") >= 1) {
+							BufferedReader fileReader = new BufferedReader(new FileReader(f));
+
+							// Add all the source URLs for this country.
+							if (fileReader != null) {
+								String buffer = null;
+								while (EOF(buffer = fileReader.readLine()) != true) {
+									StringTokenizer tokenizer = new StringTokenizer(buffer, ","); //$NON-NLS-1$
+									if (tokenizer.countTokens() >= 3) {
+										String part1 = tokenizer.nextToken().trim();
+										String part2 = tokenizer.nextToken().trim();
+										String part3 = tokenizer.nextToken().trim();
+										borderLength += (new Double(part3)).doubleValue();
+										//System.out.println("" + buffer);
+									} else {
+										headerLines.add(buffer);
+									}
+								}
+							}// filereader ! null
+							fileReader.close();
+						}// properties file
+						
+						//System.out.println("" + shortName + "  length = "+borderLength);
+						
+						String fileNameKey = ctry1+"_0_"+ctry2+"_0.properties";
+						// eg 0=USA,MEX,   then double
+						String nameElement = "0="+ctry1+","+ctry2+",";
+						if(borderValueMap.containsKey(fileNameKey)) {
+							double oldVal = borderValueMap.get(fileNameKey).doubleValue();
+							if(borderLength > oldVal) {
+								borderValueMap.put(fileNameKey, new Double(borderLength)); // take the larger value if there are more than one
+							}
+						} else {
+							borderElementMap.put(fileNameKey,nameElement);
+							borderValueMap.put(fileNameKey, new Double(borderLength));
+						}
+					} // if not same country
+
+				} catch (Exception e) {
+					System.out.println("error reading file " + shortName + " "+ e.getMessage());
+					e.printStackTrace();
+				}
+				 
+			}// for Files
+		}// if Dir
+		
+		writeLevel0Files();
+		
+	}
+	
+	/**
+	 * 	writes the files
+	 */
+	public static void writeLevel0Files()	 {
+		Set<String> filenameSet = borderElementMap.keySet();
+		
+		File outDir = new File(outputPath);
+		  // if the directory does not exist, create it
+		  if (!outDir.exists()) {
+		    System.out.println("creating directory: " + outputPath);
+		    try{
+		        outDir.mkdir();
+		        
+		     } catch(SecurityException se){
+		        System.out.println("failed to create directory "+se.getMessage());
+		        System.exit(0);
+		     }        
+		  }
+		
+		int idx = outputPath.indexOf("org.eclipse.stem.data");
+		String commentPath = ".."+sep+commonBorderPath.substring(idx, commonBorderPath.length());
+		 
+		for(String fileName:filenameSet) {
+		
+			String ctry1 = fileName.substring(0, 3);
+			String ctry2 = fileName.substring(6, 9);
+			
+			try {
+				OutputStream os = null;
+				try {
+					final File fn = new File(outputPath+fileName);
+					os = new FileOutputStream(fn, false);
+					String title = "Common Border relationship [LVL=0] between country "	+ ctry1 + " and " + ctry2 ;
+					
+					String comments = "# " + "\n" + "#  File generated from:"
+							+ "\n" + "#   " + commentPath + ctry1 + "/" + ctry1 
+							+ "\n" + "#   " + commentPath + ctry2 + "/" + ctry2 
+							+ "\n" + "#\n" + "#  Generated by: "
+							+ CountryLvl0BorderGenerator.class + "\n" + "# " + "\n";
+					
+					os.write(comments.getBytes());
+					String property = "RECORD_CLASSNAME = org.eclipse.stem.internal.data.geography.specifications.CommonBorderGeographicRelationshipPropertyFileSpecification"
+							+ "\n";
+					os.write(property.getBytes());
+					property = "TITLE = " + title + "\n";
+					os.write(property.getBytes());
+					property = "VALID = start=2006-01-01;" + "\n";
+					os.write(property.getBytes());
+					
+					String keyInfo = "ISOKEY_0 = " + ctry1 + "\n";
+					keyInfo += "ISOKEY_0_LEVEL = 0" + "\n";
+					keyInfo += "ISOKEY_1 = " + ctry2 + "\n";
+					keyInfo += "ISOKEY_1_LEVEL = 0" + "\n";
+					os.write(keyInfo.getBytes());
+					
+					String name = borderElementMap.get(fileName);
+					String value = ""+borderValueMap.get(fileName).doubleValue();
+					String s = name+value;
+					os.write(s.getBytes());
+					os.flush();
+					os.close();
+				} catch (final FileNotFoundException e) {
+					e.printStackTrace();
+				}
+			} catch (final IOException e) {
+				e.printStackTrace();
+			}	
+		}// for all files
+	}
+	
+	
+	
+
+
+/**
+ * Indicate End-Of-File
+ * 
+ * @param buffer
+ *            A buffer of diva data
+ * 
+ * @return True if we have reached End-Of-File
+ */
+static protected boolean EOF(String buffer) {
+	if (buffer == null || buffer.length() == 0)
+		return true;
+	return false;
+}
+	
+	/**
+	 * @param args
+	 */
+	@SuppressWarnings("nls")
+	public static void main(String[] args) {
+		generateLvl0PropertyFiles();
+	}
+}
diff --git a/population/org.eclipse.stem.internal.data.geography.population.human/resources/data/country/CHN/CHN_3_human_2006_population.properties b/population/org.eclipse.stem.internal.data.geography.population.human/resources/data/country/CHN/CHN_3_human_2006_population.properties
new file mode 100644
index 0000000..b5f3270
--- /dev/null
+++ b/population/org.eclipse.stem.internal.data.geography.population.human/resources/data/country/CHN/CHN_3_human_2006_population.properties
@@ -0,0 +1,120 @@
+# CHN_2_human_2006_population.properties 
+#
+# This file contains population values for CHINA
+#
+#
+#
+# /*********************************************************************************************
+#
+# * 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 = CHN
+#
+#
+#
+# The administration level of the population data
+#
+ADMIN_LEVEL = 3
+#
+#
+#
+# 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 = http://www.stats.gov.cn/english/index.htm
+#
+# SOURCE = https://www.cia.gov/library/publications/the-world-factbook/
+#
+#
+#
+# The population identifier
+#
+POPULATION = human
+#
+#
+#
+# The year the data is valid
+#
+YEAR = 2015
+#
+#
+#
+# Level 1 (admin 1 = e.g., state)
+#
+# Level 2 (admin 2 = e.g., county)
+#
+#
+#
+CN-44-G070067-BA = 4499284
+CN-44-G070067-FT = 1317511
+CN-44-G070067-LG = 2320460
+CN-44-G070067-LH = 923421
+CN-44-G070067-NS = 1088345
+CN-44-G070067-YT = 209360
+
+
