diff --git a/.gitignore b/.gitignore index bcb3b16e..d5374069 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ /deploy.properties /build.properties /runtime.properties -catalog-v001.xml +/ontology/public/catalog-v0001.xml + diff --git a/productMods/WEB-INF/filegraph/tbox/ConceptSemanticType.owl b/productMods/WEB-INF/filegraph/tbox/ConceptSemanticType.owl new file mode 100644 index 00000000..04ab3d10 --- /dev/null +++ b/productMods/WEB-INF/filegraph/tbox/ConceptSemanticType.owl @@ -0,0 +1,47 @@ + + + 0.7 + + + + Semantic Type for given concept, for example UMLS's type returned for concepts + Semantic Type for given concept, for example UMLS's type returned for concepts. + + Concept Semantic Type + + + + + + + + diff --git a/productMods/js/homePageMaps.js b/productMods/js/homePageMaps.js index 01cb4058..f39f3ab6 100644 --- a/productMods/js/homePageMaps.js +++ b/productMods/js/homePageMaps.js @@ -9,6 +9,7 @@ $(document).ready(function(){ $.extend(this, urlsBase); $.extend(this, i18nStrings); + $.extend(this, geoResearcherCount); getGeoJsonForMaps(); @@ -368,7 +369,7 @@ $(document).ready(function(){ function getResearcherCount(area) { - var researcherCount = 0; + var researcherCount = this.geoResearcherCount; var areaCount = 0; var text = ""; if ( area == "global" ) { @@ -383,7 +384,6 @@ $(document).ready(function(){ $.each(researchAreas.features, function() { if ( this.properties.mapType == area ) { - researcherCount = researcherCount + this.properties.html ; areaCount = areaCount + 1; } }); @@ -391,10 +391,16 @@ $(document).ready(function(){ if ( areaCount == 1 && text == " states.") { text = " " + i18nStrings.stateString; } + if ( researcherCount == 1 ) { + researcherText = " " + i18nStrings.researcherString + " " + i18nStrings.inString; + } + else { + researcherText = " " + i18nStrings.researcherInString + } $('div#researcherTotal').html("" - + researcherCount.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2') - + " " + i18nStrings.researchersInString + " " + + researcherCount + + " " + researcherText + " " + areaCount + "" + text); } function appendLegendToLeafletContainer() { diff --git a/productMods/js/individual/propertyGroupControls.js b/productMods/js/individual/propertyGroupControls.js index 70cb4c99..c4386256 100644 --- a/productMods/js/individual/propertyGroupControls.js +++ b/productMods/js/individual/propertyGroupControls.js @@ -69,22 +69,25 @@ $(document).ready(function(){ location.hash = location.hash.replace(/\s+/g, ''); if ( location.hash.indexOf("map") >= 0 ) { // get the name of the group that contains the geographicFocusOf property. - var tabName = $('h3#geographicFocusOf').parent('article').parent('div').attr("id"); - tabName = tabName.replace("Group",""); - tabNameCapped = tabName.charAt(0).toUpperCase() + tabName.slice(1); - // if the name of the first tab section = tabName we don't have to do anything; - // otherwise, select the correct tab and deselect the first one - var $firstTab = $('li.clickable').first(); - if ( $firstTab.text() != tabNameCapped ) { - // select the correct tab - $('li[groupName="' + tabName + '"]').removeClass("nonSelectedGroupTab clickable"); - $('li[groupName="' + tabName + '"]').addClass("selectedGroupTab clickable"); - // deselect the first tab - $firstTab.removeClass("selectedGroupTab clickable"); - $firstTab.addClass("nonSelectedGroupTab clickable"); - $('section.property-group:visible').hide(); - // show the selected tab section - $('section#' + tabName).show(); + // if it doesn't exist, don't do anything. + if ( $('h3#geographicFocusOf').length ) { + var tabName = $('h3#geographicFocusOf').parent('article').parent('div').attr("id"); + tabName = tabName.replace("Group",""); + tabNameCapped = tabName.charAt(0).toUpperCase() + tabName.slice(1); + // if the name of the first tab section = tabName we don't have to do anything; + // otherwise, select the correct tab and deselect the first one + var $firstTab = $('li.clickable').first(); + if ( $firstTab.text() != tabNameCapped ) { + // select the correct tab + $('li[groupName="' + tabName + '"]').removeClass("nonSelectedGroupTab clickable"); + $('li[groupName="' + tabName + '"]').addClass("selectedGroupTab clickable"); + // deselect the first tab + $firstTab.removeClass("selectedGroupTab clickable"); + $firstTab.addClass("nonSelectedGroupTab clickable"); + $('section.property-group:visible').hide(); + // show the selected tab section + $('section#' + tabName).show(); + } } // if there is a more link, "click" more to show all the researchers // we need the timeout delay so that the more link can get rendered diff --git a/productMods/js/latLongJson.js b/productMods/js/latLongJson.js index 417e815f..9dcc4643 100644 --- a/productMods/js/latLongJson.js +++ b/productMods/js/latLongJson.js @@ -7,4 +7,4 @@ // IMPLEMENT A STATE MAP, YOU WILL NEED TO ADD THE GEOJSON DATA FOR THAT STATE'S COUNTIES AND OTHER // RELEVANT GEOGRAPHIC AREAS. -var latLongJson = [{"name": "Afghanistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "33.0", "longitude": "65.0"}},{"name": "Albania", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.0", "longitude": "20.0"}},{"name": "Algeria", "data": {"mapType": "global", "geoClass": "country", "latitude": "28.0", "longitude": "3.0"}},{"name": "American Samoa", "data": {"mapType": "global", "geoClass": "country", "latitude": "-14.3333", "longitude": "-170.0"}},{"name": "Andorra", "data": {"mapType": "global", "geoClass": "country", "latitude": "42.5", "longitude": "1.5"}},{"name": "Angola", "data": {"mapType": "global", "geoClass": "country", "latitude": "-12.5", "longitude": "18.5"}},{"name": "Anguilla", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.25", "longitude": "-63.1667"}},{"name": "Antarctica", "data": {"mapType": "global", "geoClass": "country", "latitude": "-90.0", "longitude": "0.0"}},{"name": "Antigua and Barbuda", "data": {"mapType": "global", "geoClass": "country", "latitude": "17.05", "longitude": "-61.8"}},{"name": "Argentina", "data": {"mapType": "global", "geoClass": "country", "latitude": "-34.0", "longitude": "-64.0"}},{"name": "Armenia", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.0", "longitude": "45.0"}},{"name": "Aruba", "data": {"mapType": "global", "geoClass": "country", "latitude": "12.5", "longitude": "-69.9667"}},{"name": "Australia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-27.0", "longitude": "133.0"}},{"name": "Austria", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.3333", "longitude": "13.3333"}},{"name": "Azerbaijan", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.5", "longitude": "47.5"}},{"name": "Bahamas", "data": {"mapType": "global", "geoClass": "country", "latitude": "24.25", "longitude": "-76.0"}},{"name": "Bahrain", "data": {"mapType": "global", "geoClass": "country", "latitude": "26.0", "longitude": "50.55"}},{"name": "Bangladesh", "data": {"mapType": "global", "geoClass": "country", "latitude": "24.0", "longitude": "90.0"}},{"name": "Barbados", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.1667", "longitude": "-59.5333"}},{"name": "Belarus", "data": {"mapType": "global", "geoClass": "country", "latitude": "53.0", "longitude": "28.0"}},{"name": "Belgium", "data": {"mapType": "global", "geoClass": "country", "latitude": "50.8333", "longitude": "4.0"}},{"name": "Belize", "data": {"mapType": "global", "geoClass": "country", "latitude": "17.25", "longitude": "-88.75"}},{"name": "Benin", "data": {"mapType": "global", "geoClass": "country", "latitude": "9.5", "longitude": "2.25"}},{"name": "Bermuda", "data": {"mapType": "global", "geoClass": "country", "latitude": "32.3333", "longitude": "-64.75"}},{"name": "Bhutan", "data": {"mapType": "global", "geoClass": "country", "latitude": "27.5", "longitude": "", "longitude": "90.5"}},{"name": "Bolivia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-17.0", "longitude": "-65.0"}},{"name": "Bosnia and Herzegovina", "data": {"mapType": "global", "geoClass": "country", "latitude": "44.0", "longitude": "18.0"}},{"name": "Botswana", "data": {"mapType": "global", "geoClass": "country", "latitude": "-22.0", "longitude": "24.0"}},{"name": "Bouvet Island", "data": {"mapType": "global", "geoClass": "country", "latitude": "-54.4333", "longitude": "3.4"}},{"name": "Brazil", "data": {"mapType": "global", "geoClass": "country", "latitude": "-10.0", "longitude": "-55.0"}},{"name": "British Indian Ocean Territory", "data": {"mapType": "global", "geoClass": "country", "latitude": "-6.0", "longitude": "71.5"}},{"name": "Brunei", "data": {"mapType": "global", "geoClass": "country", "latitude": "4.5", "longitude": "114.6667"}},{"name": "Bulgaria", "data": {"mapType": "global", "geoClass": "country", "latitude": "43.0", "longitude": "25.0"}},{"name": "Burkina Faso", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.0", "longitude": "-2.0"}},{"name": "Burundi", "data": {"mapType": "global", "geoClass": "country", "latitude": "-3.5", "longitude": "30.0"}},{"name": "Cambodia", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.0", "longitude": "105.0"}},{"name": "Cameroon", "data": {"mapType": "global", "geoClass": "country", "latitude": "6.0", "longitude": "12.0"}},{"name": "Canada", "data": {"mapType": "global", "geoClass": "country", "latitude": "60.0", "longitude": "-95.0"}},{"name": "Cape Verde", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.0", "longitude": "-24.0"}},{"name": "Cayman Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "19.5", "longitude": "-80.5"}},{"name": "Central African Republic", "data": {"mapType": "global", "geoClass": "country", "latitude": "7.0", "longitude": "21.0"}},{"name": "Chad", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "19.0"}},{"name": "Chile", "data": {"mapType": "global", "geoClass": "country", "latitude": "-30.0", "longitude": "-71.0"}},{"name": "China", "data": {"mapType": "global", "geoClass": "country", "latitude": "35.0", "longitude": "105.0"}},{"name": "Christmas Island", "data": {"mapType": "global", "geoClass": "country", "latitude": "-10.5", "longitude": "105.6667"}},{"name": "Cocos (Keeling) Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-12.5", "longitude": "96.8333"}},{"name": "Colombia", "data": {"mapType": "global", "geoClass": "country", "latitude": "4.0", "longitude": "-72.0"}},{"name": "Comoros", "data": {"mapType": "global", "geoClass": "country", "latitude": "-12.1667", "longitude": "44.25"}},{"name": "Congo", "data": {"mapType": "global", "geoClass": "country", "latitude": "-1.0", "longitude": "15.0"}},{"name": "Cook Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-21.2333", "longitude": "-159.7667"}},{"name": "Costa Rica", "data": {"mapType": "global", "geoClass": "country", "latitude": "10.0", "longitude": "-84.0"}},{"name": "Ivory Coast", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "-5.0"}},{"name": "Croatia", "data": {"mapType": "global", "geoClass": "country", "latitude": "45.1667", "longitude": "15.5"}},{"name": "Cuba", "data": {"mapType": "global", "geoClass": "country", "latitude": "21.5", "longitude": "-80.0"}},{"name": "Cyprus", "data": {"mapType": "global", "geoClass": "country", "latitude": "35.0", "longitude": "33.0"}},{"name": "Czech Republic", "data": {"mapType": "global", "geoClass": "country", "latitude": "49.75", "longitude": "15.5"}},{"name": "Denmark", "data": {"mapType": "global", "geoClass": "country", "latitude": "56.0", "longitude": "10.0"}},{"name": "Czechoslovakia", "data": {"mapType": "global", "geoClass": "country", "latitude": "49.75", "longitude": "15.5"}},{"name": "Denmark", "data": {"mapType": "global", "geoClass": "country", "latitude": "56.0", "longitude": "10.0"}},{"name": "Djibouti", "data": {"mapType": "global", "geoClass": "country", "latitude": "11.5", "longitude": "43.0"}},{"name": "Dominica", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.4167", "longitude": "-61.3333"}},{"name": "Dominican Republic", "data": {"mapType": "global", "geoClass": "country", "latitude": "19.0", "longitude": "-70.6667"}},{"name": "Ecuador", "data": {"mapType": "global", "geoClass": "country", "latitude": "-2.0", "longitude": "-77.5"}},{"name": "Egypt", "data": {"mapType": "global", "geoClass": "country", "latitude": "27.0", "longitude": "30.0"}},{"name": "El Salvador", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.8333", "longitude": "-88.9167"}},{"name": "Equatorial Guinea", "data": {"mapType": "global", "geoClass": "country", "latitude": "2.0", "longitude": "10.0"}},{"name": "Eritrea", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "39.0"}},{"name": "Estonia", "data": {"mapType": "global", "geoClass": "country", "latitude": "59.0", "longitude": "26.0"}},{"name": "Ethiopia", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "38.0"}},{"name": "Falkland Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-51.75", "longitude": "-59.0"}},{"name": "Faroe Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "62.0", "longitude": "-7.0"}},{"name": "Fiji", "data": {"mapType": "global", "geoClass": "country", "latitude": "-18.0", "longitude": "175.0"}},{"name": "Finland", "data": {"mapType": "global", "geoClass": "country", "latitude": "64.0", "longitude": "26.0"}},{"name": "France", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.0", "longitude": "2.0"}},{"name": "French Guiana", "data": {"mapType": "global", "geoClass": "country", "latitude": "4.0", "longitude": "-53.0"}},{"name": "French Polynesia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-15.0", "longitude": "-140.0"}},{"name": "French Southern Territories", "data": {"mapType": "global", "geoClass": "country", "latitude": "-43.0", "longitude": "67.0"}},{"name": "Gabon", "data": {"mapType": "global", "geoClass": "country", "latitude": "-1.0", "longitude": "11.75"}},{"name": "Gambia", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.4667", "longitude": "-16.5667"}},{"name": "Georgia", "data": {"mapType": "global", "geoClass": "country", "latitude": "42.0", "longitude": "43.5"}},{"name": "Germany", "data": {"mapType": "global", "geoClass": "country", "latitude": "51.0", "longitude": "9.0"}},{"name": "Ghana", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "-2.0"}},{"name": "Greece", "data": {"mapType": "global", "geoClass": "country", "latitude": "39.0", "longitude": "22.0"}},{"name": "Greenland", "data": {"mapType": "global", "geoClass": "country", "latitude": "72.0", "longitude": "-40.0"}},{"name": "Grenada", "data": {"mapType": "global", "geoClass": "country", "latitude": "12.1167", "longitude": "-61.6667"}},{"name": "Guadeloupe", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.25", "longitude": "-61.5833"}},{"name": "Guam", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.4667", "longitude": "144.7833"}},{"name": "Guatemala", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.5", "longitude": "-90.25"}},{"name": "Guinea", "data": {"mapType": "global", "geoClass": "country", "latitude": "11.0", "longitude": "-10.0"}},{"name": "Guinea-Bissau", "data": {"mapType": "global", "geoClass": "country", "latitude": "12.0", "longitude": "-15.0"}},{"name": "Guyana", "data": {"mapType": "global", "geoClass": "country", "latitude": "5.0", "longitude": "-59.0"}},{"name": "Haiti", "data": {"mapType": "global", "geoClass": "country", "latitude": "19.0", "longitude": "-72.4167"}},{"name": "Heard and McDonald Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-53.1", "longitude": "72.5167"}},{"name": "Honduras", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "-86.5"}},{"name": "Hong Kong", "data": {"mapType": "global", "geoClass": "country", "latitude": "22.25", "longitude": "114.1667"}},{"name": "Hungary", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.0", "longitude": "20.0"}},{"name": "Iceland", "data": {"mapType": "global", "geoClass": "country", "latitude": "65.0", "longitude": "-18.0"}},{"name": "India", "data": {"mapType": "global", "geoClass": "country", "latitude": "20.0", "longitude": "77.0"}},{"name": "Indonesia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-5.0", "longitude": "120.0"}},{"name": "Iran", "data": {"mapType": "global", "geoClass": "country", "latitude": "32.0", "longitude": "53.0"}},{"name": "Iraq", "data": {"mapType": "global", "geoClass": "country", "latitude": "33.0", "longitude": "44.0"}},{"name": "Ireland", "data": {"mapType": "global", "geoClass": "country", "latitude": "53.0", "longitude": "-8.0"}},{"name": "Israel", "data": {"mapType": "global", "geoClass": "country", "latitude": "31.5", "longitude": "34.75"}},{"name": "Italy", "data": {"mapType": "global", "geoClass": "country", "latitude": "42.8333", "longitude": "12.8333"}},{"name": "Jamaica", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.25", "longitude": "-77.5"}},{"name": "Japan", "data": {"mapType": "global", "geoClass": "country", "latitude": "36.0", "longitude": "138.0"}},{"name": "Jordan", "data": {"mapType": "global", "geoClass": "country", "latitude": "31.0", "longitude": "36.0"}},{"name": "Kazakhstan", "data": {"mapType": "global", "geoClass": "country", "latitude": "48.0", "longitude": "68.0"}},{"name": "Kenya", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.0", "longitude": "38.0"}},{"name": "Kiribati", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.4167", "longitude": "173.0"}},{"name": "North Korea", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.0", "longitude": "127.0"}},{"name": "Republic of Korea", "data": {"mapType": "global", "geoClass": "country", "latitude": "37.0", "longitude": "127.5"}},{"name": "Kuwait", "data": {"mapType": "global", "geoClass": "country", "latitude": "29.3375", "longitude": "47.6581"}},{"name": "Kyrgyzstan", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.0", "longitude": "75.0"}},{"name": "Laos", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.0", "longitude": "105.0"}},{"name": "Latvia", "data": {"mapType": "global", "geoClass": "country", "latitude": "57.0", "longitude": "25.0"}},{"name": "Lebanon", "data": {"mapType": "global", "geoClass": "country", "latitude": "33.8333", "longitude": "35.8333"}},{"name": "Lesotho", "data": {"mapType": "global", "geoClass": "country", "latitude": "-29.5", "longitude": "28.5"}},{"name": "Liberia", "data": {"mapType": "global", "geoClass": "country", "latitude": "6.5", "longitude": "-9.5"}},{"name": "Liechtenstein", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.1667", "longitude": "9.5333"}},{"name": "Lithuania", "data": {"mapType": "global", "geoClass": "country", "latitude": "56.0", "longitude": "24.0"}},{"name": "Luxembourg", "data": {"mapType": "global", "geoClass": "country", "latitude": "49.75", "longitude": "6.1667"}},{"name": "Macau", "data": {"mapType": "global", "geoClass": "country", "latitude": "22.1667", "longitude": "113.55"}},{"name": "Macedonia", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.8333", "longitude": "22.0"}},{"name": "Madagascar", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.0", "longitude": "47.0"}},{"name": "Malawi", "data": {"mapType": "global", "geoClass": "country", "latitude": "-13.5", "longitude": "34.0"}},{"name": "Malaysia", "data": {"mapType": "global", "geoClass": "country", "latitude": "2.5", "longitude": "112.5"}},{"name": "Maldives", "data": {"mapType": "global", "geoClass": "country", "latitude": "3.25", "longitude": "73.0"}},{"name": "Mali", "data": {"mapType": "global", "geoClass": "country", "latitude": "17.0", "longitude": "-4.0"}},{"name": "Malta", "data": {"mapType": "global", "geoClass": "country", "latitude": "35.8333", "longitude": "14.5833"}},{"name": "Marshal Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "9.0", "longitude": "168.0"}},{"name": "Martinique", "data": {"mapType": "global", "geoClass": "country", "latitude": "14.6667", "longitude": "-61.0"}},{"name": "Mauritania", "data": {"mapType": "global", "geoClass": "country", "latitude": "20.0", "longitude": "-12.0"}},{"name": "Mauritius", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.2833", "longitude": "57.55"}},{"name": "Mayotte", "data": {"mapType": "global", "geoClass": "country", "latitude": "-12.8333", "longitude": "45.1667"}},{"name": "Mexico", "data": {"mapType": "global", "geoClass": "country", "latitude": "23.0", "longitude": "-102.0"}},{"name": "Micronesia", "data": {"mapType": "global", "geoClass": "country", "latitude": "6.9167", "longitude": "158.25"}},{"name": "Moldova", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.0", "longitude": "29.0"}},{"name": "Monaco", "data": {"mapType": "global", "geoClass": "country", "latitude": "43.7333", "longitude": "7.4"}},{"name": "Mongolia", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.0", "longitude": "105.0"}},{"name": "Montserrat", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.75", "longitude": "-62.2"}},{"name": "Morocco", "data": {"mapType": "global", "geoClass": "country", "latitude": "32.0", "longitude": "-5.0"}},{"name": "Mozambique", "data": {"mapType": "global", "geoClass": "country", "latitude": "-18.25", "longitude": "35.0"}},{"name": "Myanmar", "data": {"mapType": "global", "geoClass": "country", "latitude": "22.0", "longitude": "98.0"}},{"name": "Namibia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-22.0", "longitude": "17.0"}},{"name": "Nauru", "data": {"mapType": "global", "geoClass": "country", "latitude": "-0.5333", "longitude": "166.9167"}},{"name": "Nepal", "data": {"mapType": "global", "geoClass": "country", "latitude": "28.0", "longitude": "84.0"}},{"name": "Netherlands Antilles", "data": {"mapType": "global", "geoClass": "country", "latitude": "12.25", "longitude": "-68.75"}},{"name": "Netherlands", "data": {"mapType": "global", "geoClass": "country", "latitude": "52.5", "longitude": "5.75"}},{"name": "New Caledonia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-21.5", "longitude": "165.5"}},{"name": "New Zealand", "data": {"mapType": "global", "geoClass": "country", "latitude": "-41.0", "longitude": "174.0"}},{"name": "Nicaragua", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.0", "longitude": "-85.0"}},{"name": "Niger", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.0", "longitude": "8.0"}},{"name": "Nigeria", "data": {"mapType": "global", "geoClass": "country", "latitude": "10.0", "longitude": "8.0"}},{"name": "Niue", "data": {"mapType": "global", "geoClass": "country", "latitude": "-19.0333", "longitude": "-169.8667"}},{"name": "Norfolk Island", "data": {"mapType": "global", "geoClass": "country", "latitude": "-29.0333", "longitude": "167.95"}},{"name": "Northern Marianas Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.2", "longitude": "145.75"}},{"name": "Norway", "data": {"mapType": "global", "geoClass": "country", "latitude": "62.0", "longitude": "10.0"}},{"name": "Oman", "data": {"mapType": "global", "geoClass": "country", "latitude": "21.0", "longitude": "57.0"}},{"name": "Pakistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "30.0", "longitude": "70.0"}},{"name": "Palau", "data": {"mapType": "global", "geoClass": "country", "latitude": "7.5", "longitude": "134.5"}},{"name": "Panama", "data": {"mapType": "global", "geoClass": "country", "latitude": "9.0", "longitude": "-80.0"}},{"name": "Papua New Guinea", "data": {"mapType": "global", "geoClass": "country", "latitude": "-6.0", "longitude": "147.0"}},{"name": "Paraguay", "data": {"mapType": "global", "geoClass": "country", "latitude": "-23.0", "longitude": "-58.0"}},{"name": "Peru", "data": {"mapType": "global", "geoClass": "country", "latitude": "-10.0", "longitude": "-76.0"}},{"name": "Philippines", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.0", "longitude": "122.0"}},{"name": "Pitcairn", "data": {"mapType": "global", "geoClass": "country", "latitude": "-24.7", "longitude": "-127.4"}},{"name": "Poland", "data": {"mapType": "global", "geoClass": "country", "latitude": "52.0", "longitude": "20.0"}},{"name": "Portugal", "data": {"mapType": "global", "geoClass": "country", "latitude": "39.5", "longitude": "-8.0"}},{"name": "Puerto Rico", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.25", "longitude": "-66.5"}},{"name": "Qatar", "data": {"mapType": "global", "geoClass": "country", "latitude": "25.5", "longitude": "51.25"}},{"name": "Reunion", "data": {"mapType": "global", "geoClass": "country", "latitude": "-21.1", "longitude": "55.6"}},{"name": "Romania", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.0", "longitude": "25.0"}},{"name": "Russia", "data": {"mapType": "global", "geoClass": "country", "latitude": "60.0", "longitude": "100.0"}},{"name": "Russian Federation", "data": {"mapType": "global", "geoClass": "country", "latitude": "60.0", "longitude": "100.0"}},{"name": "Rwanda", "data": {"longitude": "-2.0", "longitude": "30.0"}},{"name": "Saint Helena", "data": {"mapType": "global", "geoClass": "country", "latitude": "-15.9333", "longitude": "-5.7"}},{"name": "Saint Kitts and Nevis", "data": {"mapType": "global", "geoClass": "country", "latitude": "17.3333", "longitude": "-62.75"}},{"name": "Saint Lucia", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.8833", "longitude": "-61.1333"}},{"name": "Saint Pierre and Miquelon", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.8333", "longitude": "-56.3333"}},{"name": "Saint Vincent and the Grenadines", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.25", "longitude": "-61.2"}},{"name": "Samoa", "data": {"mapType": "global", "geoClass": "country", "latitude": "-13.5833", "longitude": "-172.3333"}},{"name": "San Marino", "data": {"mapType": "global", "geoClass": "country", "latitude": "43.7667", "longitude": "12.4167"}},{"name": "Sao Tome and Principe", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.0", "longitude": "7.0"}},{"name": "Saudi Arabia", "data": {"mapType": "global", "geoClass": "country", "latitude": "25.0", "longitude": "45.0"}},{"name": "Senegal", "data": {"mapType": "global", "geoClass": "country", "latitude": "14.0", "longitude": "-14.0"}},{"name": "Seychelles", "data": {"mapType": "global", "geoClass": "country", "latitude": "-4.5833", "longitude": "55.6667"}},{"name": "Sierra Leone", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.5", "longitude": "-11.5"}},{"name": "Singapore", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.3667", "longitude": "103.8"}},{"name": "Slovak Republic", "data": {"mapType": "global", "geoClass": "country", "latitude": "48.6667", "longitude": "19.5"}},{"name": "Slovenia", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.0", "longitude": "15.0"}},{"name": "Solomon Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-8.0", "longitude": "159.0"}},{"name": "Somalia", "data": {"mapType": "global", "geoClass": "country", "latitude": "10.0", "longitude": "49.0"}},{"name": "South Africa", "data": {"mapType": "global", "geoClass": "country", "latitude": "-29.0", "longitude": "24.0"}},{"name": "South Georgia and the South Sandwich Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-54.5", "longitude": "-37.0"}},{"name": "Spain", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.0", "longitude": "-4.0"}},{"name": "Sri Lanka", "data": {"mapType": "global", "geoClass": "country", "latitude": "7.0", "longitude": "81.0"}},{"name": "Sudan", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "30.0"}},{"name": "Suriname", "data": {"mapType": "global", "geoClass": "country", "latitude": "4.0", "longitude": "-56.0"}},{"name": "Svalbard and Jan Mayen Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "78.0", "longitude": "20.0"}},{"name": "Swaziland", "data": {"mapType": "global", "geoClass": "country", "latitude": "-26.5", "longitude": "31.5"}},{"name": "Sweden", "data": {"mapType": "global", "geoClass": "country", "latitude": "62.0", "longitude": "15.0"}},{"name": "Switzerland", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.0", "longitude": "8.0"}},{"name": "Syria", "data": {"mapType": "global", "geoClass": "country", "latitude": "35.0", "longitude": "38.0"}},{"name": "Taiwan", "data": {"mapType": "global", "geoClass": "country", "latitude": "23.5", "longitude": "121.0"}},{"name": "Tajikistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "39.0", "longitude": "71.0"}},{"name": "Tanzania", "data": {"mapType": "global", "geoClass": "country", "latitude": "-6.0", "longitude": "35.0"}},{"name": "Thailand", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "100.0"}},{"name": "Togo", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "1.1667"}},{"name": "Tokelau", "data": {"mapType": "global", "geoClass": "country", "latitude": "-9.0", "longitude": "-172.0"}},{"name": "Tonga", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.0", "longitude": "-175.0"}},{"name": "Trinidad and Tobago", "data": {"mapType": "global", "geoClass": "country", "latitude": "11.0", "longitude": "-61.0"}},{"name": "Tunisia", "data": {"mapType": "global", "geoClass": "country", "latitude": "34.0", "longitude": "9.0"}},{"name": "Turkey", "data": {"mapType": "global", "geoClass": "country", "latitude": "39.0", "longitude": "35.0"}},{"name": "Turkmenistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.0", "longitude": "60.0"}},{"name": "Turks and Caicos Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "21.75", "longitude": "-71.5833"}},{"name": "Tuvalu", "data": {"mapType": "global", "geoClass": "country", "latitude": "-8.0", "longitude": "178.0"}},{"name": "Uganda", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.0", "longitude": "32.0"}},{"name": "Ukraine", "data": {"mapType": "global", "geoClass": "country", "latitude": "49.0", "longitude": "32.0"}},{"name": "United Arab Emirates", "data": {"mapType": "global", "geoClass": "country", "latitude": "24.0", "longitude": "54.0"}},{"name": "United Kingdom", "data": {"mapType": "global", "geoClass": "country", "latitude": "54.0", "longitude": "-2.0"}},{"name": "United States of America", "data": {"mapType": "global", "geoClass": "country", "latitude": "38.0", "longitude": "-97.0"}},{"name": "Uruguay", "data": {"mapType": "global", "geoClass": "country", "latitude": "-33.0", "longitude": "-56.0"}},{"name": "Uzbekistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.0", "longitude": "64.0"}},{"name": "Vanuatu", "data": {"mapType": "global", "geoClass": "country", "latitude": "-16.0", "longitude": "167.0"}},{"name": "Vatican City", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.9", "longitude": "12.45"}},{"name": "Venezuela", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "-66.0"}},{"name": "Vietnam", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.0", "longitude": "106.0"}},{"name": "British Virgin Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.3333", "longitude": "-64.8333"}},{"name": "US Virgin Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.3333", "longitude": "-64.8333"}},{"name": "Wallis and Futuna Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-13.3", "longitude": "-176.2"}},{"name": "Western Sahara", "data": {"mapType": "global", "geoClass": "country", "latitude": "24.5", "longitude": "-13.0"}},{"name": "Yemen", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "48.0"}},{"name": "Zaire", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.0", "longitude": "30.0"}},{"name": "Zambia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-15.0", "longitude": "30.0"}},{"name": "Zimbabwe", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.0", "longitude": "30.0"}},{"name": "Central Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "", "longitude": ""}},{"name": "Central Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "48.9225", "longitude": "9.22852"}},{"name": "East Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "31.95216", "longitude": "120.41016"}},{"name": "Eastern North America", "data": {"mapType": "global", "geoClass": "region", "latitude": "45.213", "longitude": "-66.44531"}},{"name": "European Union (EU)", "data": {"mapType": "global", "geoClass": "region", "latitude": "48.86471", "longitude": "11.68945"}},{"name": "Central Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "36.73888", "longitude": "93.16406"}},{"name": "Former Soviet bloc countries", "data": {"mapType": "global", "geoClass": "region", "latitude": "49.72448", "longitude": "24.43359"}},{"name": "French North Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "34.45222", "longitude": "0.52734"}},{"name": "Gibraltar", "data": {"mapType": "global", "geoClass": "region", "latitude": "36.1430", "longitude": "5.3530"}},{"name": "Latin America", "data": {"mapType": "global", "geoClass": "region", "latitude": "21.69827", "longitude": "-84.50684"}},{"name": "Oceania", "data": {"mapType": "global", "geoClass": "region", "latitude": "-20.63278", "longitude": "-195.99609"}},{"name": "North Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "26.43123", "longitude": "13.35938"}},{"name": "South America", "data": {"mapType": "global", "geoClass": "region", "latitude": "-21.28937", "longitude": "-58.00781"}},{"name": "South Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "22.91792", "longitude": "82.26563"}},{"name": "Southeast Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "9.1021", "longitude": "111.79688"}},{"name": "Sub-Saharan Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "2.46018", "longitude": "21.97266"}},{"name": "Tibet", "data": {"mapType": "global", "geoClass": "region", "latitude": "29.53523", "longitude": "87.89063"}},{"name": "central America", "data": {"mapType": "global", "geoClass": "region", "latitude": "16.29905", "longitude": "-92.98828"}},{"name": "eastern Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "-7.36247", "longitude": "39.19922"}},{"name": "eastern Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "47.7541", "longitude": "22.59789"}},{"name": "middle Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "5.70345", "longitude": "22.5"}},{"name": "northern Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "57.563", "longitude": "12.56836"}},{"name": "southern Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "-22.35008", "longitude": "25.04883"}},{"name": "southern Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "40.04444", "longitude": "9.14063"}},{"name": "western Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "4.65308", "longitude": "6.32813"}},{"name": "western Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "48.69096", "longitude": "3.51563"}},{"name": "Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "8.58102", "longitude": "21.97266"}},{"name": "Americas", "data": {"mapType": "global", "geoClass": "region", "latitude": "13.23995", "longitude": "-78.39844"}},{"name": "Caribbean", "data": {"mapType": "global", "geoClass": "region", "latitude": "19.64259", "longitude": "-79.10156"}},{"name": "Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "50.84757", "longitude": "19.33594"}},{"name": "Melanesia", "data": {"mapType": "global", "geoClass": "region", "latitude": "-11.3508", "longitude": "165.9375"}},{"name": "Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "40.31304", "longitude": "90.78906"}},{"name": "North America", "data": {"mapType": "global", "geoClass": "region", "latitude": "46.43786", "longitude": "-97.73437"}},{"name": "northern America", "data": {"mapType": "global", "geoClass": "region", "latitude": "45.58329", "longitude": "-91.75781"}},{"name": "western Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "36.45664", "longitude": "57.12891"}},{"name": "Polynesia", "data": {"mapType": "global", "geoClass": "region", "latitude": "1.75754", "longitude": "-156.09375"}},{"name": "eastern Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "30.75128", "longitude": "126.38672"}},{"name": "northern Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "29.53523", "longitude": "14.23828"}},{"name": "south-eastern Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "6.3153", "longitude": "129.375"}},{"name": "southern Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "-1.05463", "longitude": "108.63281"}},{"name": "Alaska", "data": {"mapType": "country", "geoClass": "state", "latitude": "64.3850", "longitude": "-154.2683"}},{"name": "Alabama", "data": {"mapType": "country", "geoClass": "state", "latitude": "32.7990", "longitude": "-86.8073"}},{"name": "Arkansas", "data": {"mapType": "country", "geoClass": "state", "latitude": "34.9513", "longitude": "-92.3809"}},{"name": "Arizona", "data": {"mapType": "country", "geoClass": "state", "latitude": "33.7712", "longitude": "-111.3877"}},{"name": "California", "data": {"mapType": "country", "geoClass": "state", "latitude": "36.1700", "longitude": "-119.7462"}},{"name": "Colorado", "data": {"mapType": "country", "geoClass": "state", "latitude": "39.0646", "longitude": "-105.3272"}},{"name": "Connecticut", "data": {"mapType": "country", "geoClass": "state", "latitude": "41.5834", "longitude": "-72.7622"}},{"name": "District of Columbia", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.8964", "longitude": "-77.0262"}},{"name": "Delaware", "data": {"mapType": "country", "geoClass": "state", "latitude": "39.3498", "longitude": "-75.5148"}},{"name": "Florida", "data": {"mapType": "country", "geoClass": "state", "latitude": "27.8333", "longitude": "-81.7170"}},{"name": "Georgia", "data": {"mapType": "country", "geoClass": "state", "latitude": "32.9866", "longitude": "-83.6487"}},{"name": "Hawaii", "data": {"mapType": "country", "geoClass": "state", "latitude": "21.1098", "longitude": "-157.5311"}},{"name": "Iowa", "data": {"mapType": "country", "geoClass": "state", "latitude": "42.0046", "longitude": "-93.2140"}},{"name": "Idaho", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.2394", "longitude": "-114.5103"}},{"name": "Illinois", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.3363", "longitude": "-89.0022"}},{"name": "Indiana", "data": {"mapType": "country", "geoClass": "state", "latitude": "39.8647", "longitude": "-86.2604"}},{"name": "Kansas", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.5111", "longitude": "-96.8005"}},{"name": "Kentucky", "data": {"mapType": "country", "geoClass": "state", "latitude": "37.6690", "longitude": "-84.6514"}},{"name": "Louisiana", "data": {"mapType": "country", "geoClass": "state", "latitude": "31.1801", "longitude": "-91.8749"}},{"name": "Massachusetts", "data": {"mapType": "country", "geoClass": "state", "latitude": "42.2373", "longitude": "-71.5314"}},{"name": "Maryland", "data": {"mapType": "country", "geoClass": "state", "latitude": "39.0724", "longitude": "-76.7902"}},{"name": "Maine", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.6074", "longitude": "-69.3977"}},{"name": "Michigan", "data": {"mapType": "country", "geoClass": "state", "latitude": "43.3504", "longitude": "-84.5603"}},{"name": "Minnesota", "data": {"mapType": "country", "geoClass": "state", "latitude": "", "longitude": ""}},{"name": "Missouri", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.4623", "longitude": "-92.3020"}},{"name": "Mississippi", "data": {"mapType": "country", "geoClass": "state", "latitude": "32.7673", "longitude": "-89.6812"}},{"name": "Montana", "data": {"mapType": "country", "geoClass": "state", "latitude": "46.9048", "longitude": "-110.3261"}},{"name": "North Carolina", "data": {"mapType": "country", "geoClass": "state", "latitude": "35.6411", "longitude": "-79.8431"}},{"name": "North Dakota", "data": {"mapType": "country", "geoClass": "state", "latitude": "47.5362", "longitude": "-99.7930"}},{"name": "Nebraska", "data": {"mapType": "country", "geoClass": "state", "latitude": "41.1289", "longitude": "-98.2883"}},{"name": "New Hampshire", "data": {"mapType": "country", "geoClass": "state", "latitude": "43.4108", "longitude": "-71.5653"}},{"name": "New Jersey", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.3140", "longitude": "-74.5089"}},{"name": "New Mexico", "data": {"mapType": "country", "geoClass": "state", "latitude": "34.8375", "longitude": "-106.2371"}},{"name": "Nevada", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.4199", "longitude": "-117.1219"}},{"name": "New York", "data": {"mapType": "country", "geoClass": "state", "latitude": "42.1497", "longitude": "-74.9384"}},{"name": "Ohio", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.3736", "longitude": "-82.7755"}},{"name": "Oklahoma", "data": {"mapType": "country", "geoClass": "state", "latitude": "35.5376", "longitude": "-96.9247"}},{"name": "Oregon", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.5672", "longitude": "-122.1269"}},{"name": "Pennsylvania", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.5773", "longitude": "-77.2640"}},{"name": "Rhode Island", "data": {"mapType": "country", "geoClass": "state", "latitude": "41.6772", "longitude": "-71.5101"}},{"name": "South Carolina", "data": {"mapType": "country", "geoClass": "state", "latitude": "33.8191", "longitude": "-80.9066"}},{"name": "Tennessee", "data": {"mapType": "country", "geoClass": "state", "latitude": "35.7449", "longitude": "-86.7489"}},{"name": "South Dakota", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.2853", "longitude": "-99.4632"}},{"name": "Texas", "data": {"mapType": "country", "geoClass": "state", "latitude": "31.1060", "longitude": "-97.6475"}},{"name": "Utah", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.1135", "longitude": "-111.8535"}},{"name": "Virginia", "data": {"mapType": "country", "geoClass": "state", "latitude": "37.7680", "longitude": "-78.2057"}},{"name": "Vermont", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.0407", "longitude": "-72.7093"}},{"name": "Washington", "data": {"mapType": "country", "geoClass": "state", "latitude": "47.3917", "longitude": "-121.5708"}},{"name": "Wisconsin", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.2563", "longitude": "-89.6385"}},{"name": "West Virginia", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.4680", "longitude": "-80.9696"}},{"name": "Wyoming", "data": {"mapType": "country", "geoClass": "state", "latitude": "42.7475", "longitude": "-107.2085"}}]; +var latLongJson = [{"name": "Afghanistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "33.0", "longitude": "65.0"}},{"name": "Albania", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.0", "longitude": "20.0"}},{"name": "Algeria", "data": {"mapType": "global", "geoClass": "country", "latitude": "28.0", "longitude": "3.0"}},{"name": "American Samoa", "data": {"mapType": "global", "geoClass": "country", "latitude": "-14.3333", "longitude": "-170.0"}},{"name": "Andorra", "data": {"mapType": "global", "geoClass": "country", "latitude": "42.5", "longitude": "1.5"}},{"name": "Angola", "data": {"mapType": "global", "geoClass": "country", "latitude": "-12.5", "longitude": "18.5"}},{"name": "Anguilla", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.25", "longitude": "-63.1667"}},{"name": "Antarctica", "data": {"mapType": "global", "geoClass": "country", "latitude": "-90.0", "longitude": "0.0"}},{"name": "Antigua and Barbuda", "data": {"mapType": "global", "geoClass": "country", "latitude": "17.05", "longitude": "-61.8"}},{"name": "Argentina", "data": {"mapType": "global", "geoClass": "country", "latitude": "-34.0", "longitude": "-64.0"}},{"name": "Armenia", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.0", "longitude": "45.0"}},{"name": "Aruba", "data": {"mapType": "global", "geoClass": "country", "latitude": "12.5", "longitude": "-69.9667"}},{"name": "Australia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-27.0", "longitude": "133.0"}},{"name": "Austria", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.3333", "longitude": "13.3333"}},{"name": "Azerbaijan", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.5", "longitude": "47.5"}},{"name": "Bahamas", "data": {"mapType": "global", "geoClass": "country", "latitude": "24.25", "longitude": "-76.0"}},{"name": "Bahrain", "data": {"mapType": "global", "geoClass": "country", "latitude": "26.0", "longitude": "50.55"}},{"name": "Bangladesh", "data": {"mapType": "global", "geoClass": "country", "latitude": "24.0", "longitude": "90.0"}},{"name": "Barbados", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.1667", "longitude": "-59.5333"}},{"name": "Belarus", "data": {"mapType": "global", "geoClass": "country", "latitude": "53.0", "longitude": "28.0"}},{"name": "Belgium", "data": {"mapType": "global", "geoClass": "country", "latitude": "50.8333", "longitude": "4.0"}},{"name": "Belize", "data": {"mapType": "global", "geoClass": "country", "latitude": "17.25", "longitude": "-88.75"}},{"name": "Benin", "data": {"mapType": "global", "geoClass": "country", "latitude": "9.5", "longitude": "2.25"}},{"name": "Bermuda", "data": {"mapType": "global", "geoClass": "country", "latitude": "32.3333", "longitude": "-64.75"}},{"name": "Bhutan", "data": {"mapType": "global", "geoClass": "country", "latitude": "27.5", "longitude": "", "longitude": "90.5"}},{"name": "Bolivia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-17.0", "longitude": "-65.0"}},{"name": "Bosnia and Herzegovina", "data": {"mapType": "global", "geoClass": "country", "latitude": "44.0", "longitude": "18.0"}},{"name": "Botswana", "data": {"mapType": "global", "geoClass": "country", "latitude": "-22.0", "longitude": "24.0"}},{"name": "Bouvet Island", "data": {"mapType": "global", "geoClass": "country", "latitude": "-54.4333", "longitude": "3.4"}},{"name": "Brazil", "data": {"mapType": "global", "geoClass": "country", "latitude": "-10.0", "longitude": "-55.0"}},{"name": "British Indian Ocean Territory", "data": {"mapType": "global", "geoClass": "country", "latitude": "-6.0", "longitude": "71.5"}},{"name": "Brunei", "data": {"mapType": "global", "geoClass": "country", "latitude": "4.5", "longitude": "114.6667"}},{"name": "Bulgaria", "data": {"mapType": "global", "geoClass": "country", "latitude": "43.0", "longitude": "25.0"}},{"name": "Burkina Faso", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.0", "longitude": "-2.0"}},{"name": "Burundi", "data": {"mapType": "global", "geoClass": "country", "latitude": "-3.5", "longitude": "30.0"}},{"name": "Cambodia", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.0", "longitude": "105.0"}},{"name": "Cameroon", "data": {"mapType": "global", "geoClass": "country", "latitude": "6.0", "longitude": "12.0"}},{"name": "Canada", "data": {"mapType": "global", "geoClass": "country", "latitude": "60.0", "longitude": "-95.0"}},{"name": "Cape Verde", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.0", "longitude": "-24.0"}},{"name": "Cayman Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "19.5", "longitude": "-80.5"}},{"name": "Central African Republic", "data": {"mapType": "global", "geoClass": "country", "latitude": "7.0", "longitude": "21.0"}},{"name": "Chad", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "19.0"}},{"name": "Chile", "data": {"mapType": "global", "geoClass": "country", "latitude": "-30.0", "longitude": "-71.0"}},{"name": "China", "data": {"mapType": "global", "geoClass": "country", "latitude": "35.0", "longitude": "105.0"}},{"name": "Christmas Island", "data": {"mapType": "global", "geoClass": "country", "latitude": "-10.5", "longitude": "105.6667"}},{"name": "Cocos (Keeling) Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-12.5", "longitude": "96.8333"}},{"name": "Colombia", "data": {"mapType": "global", "geoClass": "country", "latitude": "4.0", "longitude": "-72.0"}},{"name": "Comoros", "data": {"mapType": "global", "geoClass": "country", "latitude": "-12.1667", "longitude": "44.25"}},{"name": "Congo", "data": {"mapType": "global", "geoClass": "country", "latitude": "-1.0", "longitude": "15.0"}},{"name": "Cook Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-21.2333", "longitude": "-159.7667"}},{"name": "Costa Rica", "data": {"mapType": "global", "geoClass": "country", "latitude": "10.0", "longitude": "-84.0"}},{"name": "Ivory Coast", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "-5.0"}},{"name": "Croatia", "data": {"mapType": "global", "geoClass": "country", "latitude": "45.1667", "longitude": "15.5"}},{"name": "Cuba", "data": {"mapType": "global", "geoClass": "country", "latitude": "21.5", "longitude": "-80.0"}},{"name": "Cyprus", "data": {"mapType": "global", "geoClass": "country", "latitude": "35.0", "longitude": "33.0"}},{"name": "Czech Republic", "data": {"mapType": "global", "geoClass": "country", "latitude": "49.75", "longitude": "15.5"}},{"name": "Denmark", "data": {"mapType": "global", "geoClass": "country", "latitude": "56.0", "longitude": "10.0"}},{"name": "Czechoslovakia", "data": {"mapType": "global", "geoClass": "country", "latitude": "49.75", "longitude": "15.5"}},{"name": "Denmark", "data": {"mapType": "global", "geoClass": "country", "latitude": "56.0", "longitude": "10.0"}},{"name": "Djibouti", "data": {"mapType": "global", "geoClass": "country", "latitude": "11.5", "longitude": "43.0"}},{"name": "Dominica", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.4167", "longitude": "-61.3333"}},{"name": "Dominican Republic", "data": {"mapType": "global", "geoClass": "country", "latitude": "19.0", "longitude": "-70.6667"}},{"name": "Ecuador", "data": {"mapType": "global", "geoClass": "country", "latitude": "-2.0", "longitude": "-77.5"}},{"name": "Egypt", "data": {"mapType": "global", "geoClass": "country", "latitude": "27.0", "longitude": "30.0"}},{"name": "El Salvador", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.8333", "longitude": "-88.9167"}},{"name": "Equatorial Guinea", "data": {"mapType": "global", "geoClass": "country", "latitude": "2.0", "longitude": "10.0"}},{"name": "Eritrea", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "39.0"}},{"name": "Estonia", "data": {"mapType": "global", "geoClass": "country", "latitude": "59.0", "longitude": "26.0"}},{"name": "Ethiopia", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "38.0"}},{"name": "Falkland Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-51.75", "longitude": "-59.0"}},{"name": "Faroe Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "62.0", "longitude": "-7.0"}},{"name": "Fiji", "data": {"mapType": "global", "geoClass": "country", "latitude": "-18.0", "longitude": "175.0"}},{"name": "Finland", "data": {"mapType": "global", "geoClass": "country", "latitude": "64.0", "longitude": "26.0"}},{"name": "France", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.0", "longitude": "2.0"}},{"name": "French Guiana", "data": {"mapType": "global", "geoClass": "country", "latitude": "4.0", "longitude": "-53.0"}},{"name": "French Polynesia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-15.0", "longitude": "-140.0"}},{"name": "French Southern Territories", "data": {"mapType": "global", "geoClass": "country", "latitude": "-43.0", "longitude": "67.0"}},{"name": "Gabon", "data": {"mapType": "global", "geoClass": "country", "latitude": "-1.0", "longitude": "11.75"}},{"name": "Gambia", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.4667", "longitude": "-16.5667"}},{"name": "Georgia", "data": {"mapType": "global", "geoClass": "country", "latitude": "42.0", "longitude": "43.5"}},{"name": "Germany", "data": {"mapType": "global", "geoClass": "country", "latitude": "51.0", "longitude": "9.0"}},{"name": "Ghana", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "-2.0"}},{"name": "Greece", "data": {"mapType": "global", "geoClass": "country", "latitude": "39.0", "longitude": "22.0"}},{"name": "Greenland", "data": {"mapType": "global", "geoClass": "country", "latitude": "72.0", "longitude": "-40.0"}},{"name": "Grenada", "data": {"mapType": "global", "geoClass": "country", "latitude": "12.1167", "longitude": "-61.6667"}},{"name": "Guadeloupe", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.25", "longitude": "-61.5833"}},{"name": "Guam", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.4667", "longitude": "144.7833"}},{"name": "Guatemala", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.5", "longitude": "-90.25"}},{"name": "Guinea", "data": {"mapType": "global", "geoClass": "country", "latitude": "11.0", "longitude": "-10.0"}},{"name": "Guinea-Bissau", "data": {"mapType": "global", "geoClass": "country", "latitude": "12.0", "longitude": "-15.0"}},{"name": "Guyana", "data": {"mapType": "global", "geoClass": "country", "latitude": "5.0", "longitude": "-59.0"}},{"name": "Haiti", "data": {"mapType": "global", "geoClass": "country", "latitude": "19.0", "longitude": "-72.4167"}},{"name": "Heard and McDonald Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-53.1", "longitude": "72.5167"}},{"name": "Honduras", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "-86.5"}},{"name": "Hong Kong", "data": {"mapType": "global", "geoClass": "country", "latitude": "22.25", "longitude": "114.1667"}},{"name": "Hungary", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.0", "longitude": "20.0"}},{"name": "Iceland", "data": {"mapType": "global", "geoClass": "country", "latitude": "65.0", "longitude": "-18.0"}},{"name": "India", "data": {"mapType": "global", "geoClass": "country", "latitude": "20.0", "longitude": "77.0"}},{"name": "Indonesia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-5.0", "longitude": "120.0"}},{"name": "Iran", "data": {"mapType": "global", "geoClass": "country", "latitude": "32.0", "longitude": "53.0"}},{"name": "Iraq", "data": {"mapType": "global", "geoClass": "country", "latitude": "33.0", "longitude": "44.0"}},{"name": "Ireland", "data": {"mapType": "global", "geoClass": "country", "latitude": "53.0", "longitude": "-8.0"}},{"name": "Israel", "data": {"mapType": "global", "geoClass": "country", "latitude": "31.5", "longitude": "34.75"}},{"name": "Italy", "data": {"mapType": "global", "geoClass": "country", "latitude": "42.8333", "longitude": "12.8333"}},{"name": "Jamaica", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.25", "longitude": "-77.5"}},{"name": "Japan", "data": {"mapType": "global", "geoClass": "country", "latitude": "36.0", "longitude": "138.0"}},{"name": "Jordan", "data": {"mapType": "global", "geoClass": "country", "latitude": "31.0", "longitude": "36.0"}},{"name": "Kazakhstan", "data": {"mapType": "global", "geoClass": "country", "latitude": "48.0", "longitude": "68.0"}},{"name": "Kenya", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.0", "longitude": "38.0"}},{"name": "Kiribati", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.4167", "longitude": "173.0"}},{"name": "North Korea", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.0", "longitude": "127.0"}},{"name": "Republic of Korea", "data": {"mapType": "global", "geoClass": "country", "latitude": "37.0", "longitude": "127.5"}},{"name": "Kuwait", "data": {"mapType": "global", "geoClass": "country", "latitude": "29.3375", "longitude": "47.6581"}},{"name": "Kyrgyzstan", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.0", "longitude": "75.0"}},{"name": "Laos", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.0", "longitude": "105.0"}},{"name": "Latvia", "data": {"mapType": "global", "geoClass": "country", "latitude": "57.0", "longitude": "25.0"}},{"name": "Lebanon", "data": {"mapType": "global", "geoClass": "country", "latitude": "33.8333", "longitude": "35.8333"}},{"name": "Lesotho", "data": {"mapType": "global", "geoClass": "country", "latitude": "-29.5", "longitude": "28.5"}},{"name": "Liberia", "data": {"mapType": "global", "geoClass": "country", "latitude": "6.5", "longitude": "-9.5"}},{"name": "Liechtenstein", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.1667", "longitude": "9.5333"}},{"name": "Lithuania", "data": {"mapType": "global", "geoClass": "country", "latitude": "56.0", "longitude": "24.0"}},{"name": "Luxembourg", "data": {"mapType": "global", "geoClass": "country", "latitude": "49.75", "longitude": "6.1667"}},{"name": "Macau", "data": {"mapType": "global", "geoClass": "country", "latitude": "22.1667", "longitude": "113.55"}},{"name": "Macedonia", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.8333", "longitude": "22.0"}},{"name": "Madagascar", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.0", "longitude": "47.0"}},{"name": "Malawi", "data": {"mapType": "global", "geoClass": "country", "latitude": "-13.5", "longitude": "34.0"}},{"name": "Malaysia", "data": {"mapType": "global", "geoClass": "country", "latitude": "2.5", "longitude": "112.5"}},{"name": "Maldives", "data": {"mapType": "global", "geoClass": "country", "latitude": "3.25", "longitude": "73.0"}},{"name": "Mali", "data": {"mapType": "global", "geoClass": "country", "latitude": "17.0", "longitude": "-4.0"}},{"name": "Malta", "data": {"mapType": "global", "geoClass": "country", "latitude": "35.8333", "longitude": "14.5833"}},{"name": "Marshal Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "9.0", "longitude": "168.0"}},{"name": "Martinique", "data": {"mapType": "global", "geoClass": "country", "latitude": "14.6667", "longitude": "-61.0"}},{"name": "Mauritania", "data": {"mapType": "global", "geoClass": "country", "latitude": "20.0", "longitude": "-12.0"}},{"name": "Mauritius", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.2833", "longitude": "57.55"}},{"name": "Mayotte", "data": {"mapType": "global", "geoClass": "country", "latitude": "-12.8333", "longitude": "45.1667"}},{"name": "Mexico", "data": {"mapType": "global", "geoClass": "country", "latitude": "23.0", "longitude": "-102.0"}},{"name": "Micronesia", "data": {"mapType": "global", "geoClass": "country", "latitude": "6.9167", "longitude": "158.25"}},{"name": "Moldova", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.0", "longitude": "29.0"}},{"name": "Monaco", "data": {"mapType": "global", "geoClass": "country", "latitude": "43.7333", "longitude": "7.4"}},{"name": "Mongolia", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.0", "longitude": "105.0"}},{"name": "Montserrat", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.75", "longitude": "-62.2"}},{"name": "Morocco", "data": {"mapType": "global", "geoClass": "country", "latitude": "32.0", "longitude": "-5.0"}},{"name": "Mozambique", "data": {"mapType": "global", "geoClass": "country", "latitude": "-18.25", "longitude": "35.0"}},{"name": "Myanmar", "data": {"mapType": "global", "geoClass": "country", "latitude": "22.0", "longitude": "98.0"}},{"name": "Namibia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-22.0", "longitude": "17.0"}},{"name": "Nauru", "data": {"mapType": "global", "geoClass": "country", "latitude": "-0.5333", "longitude": "166.9167"}},{"name": "Nepal", "data": {"mapType": "global", "geoClass": "country", "latitude": "28.0", "longitude": "84.0"}},{"name": "Netherlands Antilles", "data": {"mapType": "global", "geoClass": "country", "latitude": "12.25", "longitude": "-68.75"}},{"name": "Netherlands", "data": {"mapType": "global", "geoClass": "country", "latitude": "52.5", "longitude": "5.75"}},{"name": "New Caledonia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-21.5", "longitude": "165.5"}},{"name": "New Zealand", "data": {"mapType": "global", "geoClass": "country", "latitude": "-41.0", "longitude": "174.0"}},{"name": "Nicaragua", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.0", "longitude": "-85.0"}},{"name": "Niger", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.0", "longitude": "8.0"}},{"name": "Nigeria", "data": {"mapType": "global", "geoClass": "country", "latitude": "10.0", "longitude": "8.0"}},{"name": "Niue", "data": {"mapType": "global", "geoClass": "country", "latitude": "-19.0333", "longitude": "-169.8667"}},{"name": "Norfolk Island", "data": {"mapType": "global", "geoClass": "country", "latitude": "-29.0333", "longitude": "167.95"}},{"name": "Northern Marianas Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.2", "longitude": "145.75"}},{"name": "Norway", "data": {"mapType": "global", "geoClass": "country", "latitude": "62.0", "longitude": "10.0"}},{"name": "Oman", "data": {"mapType": "global", "geoClass": "country", "latitude": "21.0", "longitude": "57.0"}},{"name": "Pakistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "30.0", "longitude": "70.0"}},{"name": "Palau", "data": {"mapType": "global", "geoClass": "country", "latitude": "7.5", "longitude": "134.5"}},{"name": "Panama", "data": {"mapType": "global", "geoClass": "country", "latitude": "9.0", "longitude": "-80.0"}},{"name": "Papua New Guinea", "data": {"mapType": "global", "geoClass": "country", "latitude": "-6.0", "longitude": "147.0"}},{"name": "Paraguay", "data": {"mapType": "global", "geoClass": "country", "latitude": "-23.0", "longitude": "-58.0"}},{"name": "Peru", "data": {"mapType": "global", "geoClass": "country", "latitude": "-10.0", "longitude": "-76.0"}},{"name": "Philippines", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.0", "longitude": "122.0"}},{"name": "Pitcairn", "data": {"mapType": "global", "geoClass": "country", "latitude": "-24.7", "longitude": "-127.4"}},{"name": "Poland", "data": {"mapType": "global", "geoClass": "country", "latitude": "52.0", "longitude": "20.0"}},{"name": "Portugal", "data": {"mapType": "global", "geoClass": "country", "latitude": "39.5", "longitude": "-8.0"}},{"name": "Puerto Rico", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.25", "longitude": "-66.5"}},{"name": "Qatar", "data": {"mapType": "global", "geoClass": "country", "latitude": "25.5", "longitude": "51.25"}},{"name": "Reunion", "data": {"mapType": "global", "geoClass": "country", "latitude": "-21.1", "longitude": "55.6"}},{"name": "Romania", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.0", "longitude": "25.0"}},{"name": "Russia", "data": {"mapType": "global", "geoClass": "country", "latitude": "60.0", "longitude": "100.0"}},{"name": "Russian Federation", "data": {"mapType": "global", "geoClass": "country", "latitude": "60.0", "longitude": "100.0"}},{"name": "Rwanda", "data": {"longitude": "-2.0", "longitude": "30.0"}},{"name": "Saint Helena", "data": {"mapType": "global", "geoClass": "country", "latitude": "-15.9333", "longitude": "-5.7"}},{"name": "Saint Kitts and Nevis", "data": {"mapType": "global", "geoClass": "country", "latitude": "17.3333", "longitude": "-62.75"}},{"name": "Saint Lucia", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.8833", "longitude": "-61.1333"}},{"name": "Saint Pierre and Miquelon", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.8333", "longitude": "-56.3333"}},{"name": "Saint Vincent and the Grenadines", "data": {"mapType": "global", "geoClass": "country", "latitude": "13.25", "longitude": "-61.2"}},{"name": "Samoa", "data": {"mapType": "global", "geoClass": "country", "latitude": "-13.5833", "longitude": "-172.3333"}},{"name": "San Marino", "data": {"mapType": "global", "geoClass": "country", "latitude": "43.7667", "longitude": "12.4167"}},{"name": "Sao Tome and Principe", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.0", "longitude": "7.0"}},{"name": "Saudi Arabia", "data": {"mapType": "global", "geoClass": "country", "latitude": "25.0", "longitude": "45.0"}},{"name": "Senegal", "data": {"mapType": "global", "geoClass": "country", "latitude": "14.0", "longitude": "-14.0"}},{"name": "Seychelles", "data": {"mapType": "global", "geoClass": "country", "latitude": "-4.5833", "longitude": "55.6667"}},{"name": "Sierra Leone", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.5", "longitude": "-11.5"}},{"name": "Singapore", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.3667", "longitude": "103.8"}},{"name": "Slovak Republic", "data": {"mapType": "global", "geoClass": "country", "latitude": "48.6667", "longitude": "19.5"}},{"name": "Slovenia", "data": {"mapType": "global", "geoClass": "country", "latitude": "46.0", "longitude": "15.0"}},{"name": "Solomon Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-8.0", "longitude": "159.0"}},{"name": "Somalia", "data": {"mapType": "global", "geoClass": "country", "latitude": "10.0", "longitude": "49.0"}},{"name": "South Africa", "data": {"mapType": "global", "geoClass": "country", "latitude": "-29.0", "longitude": "24.0"}},{"name": "South Georgia and the South Sandwich Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-54.5", "longitude": "-37.0"}},{"name": "Spain", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.0", "longitude": "-4.0"}},{"name": "Sri Lanka", "data": {"mapType": "global", "geoClass": "country", "latitude": "7.0", "longitude": "81.0"}},{"name": "Sudan", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "30.0"}},{"name": "Suriname", "data": {"mapType": "global", "geoClass": "country", "latitude": "4.0", "longitude": "-56.0"}},{"name": "Svalbard and Jan Mayen Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "78.0", "longitude": "20.0"}},{"name": "Swaziland", "data": {"mapType": "global", "geoClass": "country", "latitude": "-26.5", "longitude": "31.5"}},{"name": "Sweden", "data": {"mapType": "global", "geoClass": "country", "latitude": "62.0", "longitude": "15.0"}},{"name": "Switzerland", "data": {"mapType": "global", "geoClass": "country", "latitude": "47.0", "longitude": "8.0"}},{"name": "Syria", "data": {"mapType": "global", "geoClass": "country", "latitude": "35.0", "longitude": "38.0"}},{"name": "Taiwan", "data": {"mapType": "global", "geoClass": "country", "latitude": "23.5", "longitude": "121.0"}},{"name": "Tajikistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "39.0", "longitude": "71.0"}},{"name": "Tanzania", "data": {"mapType": "global", "geoClass": "country", "latitude": "-6.0", "longitude": "35.0"}},{"name": "Thailand", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "100.0"}},{"name": "Togo", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "1.1667"}},{"name": "Tokelau", "data": {"mapType": "global", "geoClass": "country", "latitude": "-9.0", "longitude": "-172.0"}},{"name": "Tonga", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.0", "longitude": "-175.0"}},{"name": "Trinidad and Tobago", "data": {"mapType": "global", "geoClass": "country", "latitude": "11.0", "longitude": "-61.0"}},{"name": "Tunisia", "data": {"mapType": "global", "geoClass": "country", "latitude": "34.0", "longitude": "9.0"}},{"name": "Turkey", "data": {"mapType": "global", "geoClass": "country", "latitude": "39.0", "longitude": "35.0"}},{"name": "Turkmenistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "40.0", "longitude": "60.0"}},{"name": "Turks and Caicos Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "21.75", "longitude": "-71.5833"}},{"name": "Tuvalu", "data": {"mapType": "global", "geoClass": "country", "latitude": "-8.0", "longitude": "178.0"}},{"name": "Uganda", "data": {"mapType": "global", "geoClass": "country", "latitude": "1.0", "longitude": "32.0"}},{"name": "Ukraine", "data": {"mapType": "global", "geoClass": "country", "latitude": "49.0", "longitude": "32.0"}},{"name": "United Arab Emirates", "data": {"mapType": "global", "geoClass": "country", "latitude": "24.0", "longitude": "54.0"}},{"name": "United Kingdom", "data": {"mapType": "global", "geoClass": "country", "latitude": "54.0", "longitude": "-2.0"}},{"name": "United States of America", "data": {"mapType": "global", "geoClass": "country", "latitude": "38.0", "longitude": "-97.0"}},{"name": "Uruguay", "data": {"mapType": "global", "geoClass": "country", "latitude": "-33.0", "longitude": "-56.0"}},{"name": "Uzbekistan", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.0", "longitude": "64.0"}},{"name": "Vanuatu", "data": {"mapType": "global", "geoClass": "country", "latitude": "-16.0", "longitude": "167.0"}},{"name": "Vatican City", "data": {"mapType": "global", "geoClass": "country", "latitude": "41.9", "longitude": "12.45"}},{"name": "Venezuela", "data": {"mapType": "global", "geoClass": "country", "latitude": "8.0", "longitude": "-66.0"}},{"name": "Vietnam", "data": {"mapType": "global", "geoClass": "country", "latitude": "16.0", "longitude": "106.0"}},{"name": "British Virgin Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.3333", "longitude": "-64.8333"}},{"name": "US Virgin Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "18.3333", "longitude": "-64.8333"}},{"name": "Wallis and Futuna Islands", "data": {"mapType": "global", "geoClass": "country", "latitude": "-13.3", "longitude": "-176.2"}},{"name": "Western Sahara", "data": {"mapType": "global", "geoClass": "country", "latitude": "24.5", "longitude": "-13.0"}},{"name": "Yemen", "data": {"mapType": "global", "geoClass": "country", "latitude": "15.0", "longitude": "48.0"}},{"name": "Zaire", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.0", "longitude": "30.0"}},{"name": "Zambia", "data": {"mapType": "global", "geoClass": "country", "latitude": "-15.0", "longitude": "30.0"}},{"name": "Zimbabwe", "data": {"mapType": "global", "geoClass": "country", "latitude": "-20.0", "longitude": "30.0"}},{"name": "Central Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "", "longitude": ""}},{"name": "Central Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "48.9225", "longitude": "9.22852"}},{"name": "East Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "31.95216", "longitude": "120.41016"}},{"name": "Eastern North America", "data": {"mapType": "global", "geoClass": "region", "latitude": "45.213", "longitude": "-66.44531"}},{"name": "European Union (EU)", "data": {"mapType": "global", "geoClass": "region", "latitude": "48.86471", "longitude": "11.68945"}},{"name": "Central Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "36.73888", "longitude": "93.16406"}},{"name": "Former Soviet bloc countries", "data": {"mapType": "global", "geoClass": "region", "latitude": "49.72448", "longitude": "24.43359"}},{"name": "French North Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "34.45222", "longitude": "0.52734"}},{"name": "Gibraltar", "data": {"mapType": "global", "geoClass": "region", "latitude": "36.1430", "longitude": "5.3530"}},{"name": "Latin America", "data": {"mapType": "global", "geoClass": "region", "latitude": "21.69827", "longitude": "-84.50684"}},{"name": "Oceania", "data": {"mapType": "global", "geoClass": "region", "latitude": "-18.312777", "longitude": "138.51555"}},{"name": "North Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "26.43123", "longitude": "13.35938"}},{"name": "South America", "data": {"mapType": "global", "geoClass": "region", "latitude": "-21.28937", "longitude": "-58.00781"}},{"name": "South Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "22.91792", "longitude": "82.26563"}},{"name": "Southeast Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "9.1021", "longitude": "111.79688"}},{"name": "Sub-Saharan Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "2.46018", "longitude": "21.97266"}},{"name": "Tibet", "data": {"mapType": "global", "geoClass": "region", "latitude": "29.53523", "longitude": "87.89063"}},{"name": "central America", "data": {"mapType": "global", "geoClass": "region", "latitude": "16.29905", "longitude": "-92.98828"}},{"name": "eastern Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "-7.36247", "longitude": "39.19922"}},{"name": "eastern Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "47.7541", "longitude": "22.59789"}},{"name": "middle Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "5.70345", "longitude": "22.5"}},{"name": "northern Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "57.563", "longitude": "12.56836"}},{"name": "southern Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "-22.35008", "longitude": "25.04883"}},{"name": "southern Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "40.04444", "longitude": "9.14063"}},{"name": "western Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "4.65308", "longitude": "6.32813"}},{"name": "western Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "48.69096", "longitude": "3.51563"}},{"name": "Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "8.58102", "longitude": "21.97266"}},{"name": "Americas", "data": {"mapType": "global", "geoClass": "region", "latitude": "13.23995", "longitude": "-78.39844"}},{"name": "Caribbean", "data": {"mapType": "global", "geoClass": "region", "latitude": "19.64259", "longitude": "-79.10156"}},{"name": "Europe", "data": {"mapType": "global", "geoClass": "region", "latitude": "50.84757", "longitude": "19.33594"}},{"name": "Melanesia", "data": {"mapType": "global", "geoClass": "region", "latitude": "-11.3508", "longitude": "165.9375"}},{"name": "Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "40.31304", "longitude": "90.78906"}},{"name": "North America", "data": {"mapType": "global", "geoClass": "region", "latitude": "46.43786", "longitude": "-97.73437"}},{"name": "northern America", "data": {"mapType": "global", "geoClass": "region", "latitude": "45.58329", "longitude": "-91.75781"}},{"name": "western Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "36.45664", "longitude": "57.12891"}},{"name": "Polynesia", "data": {"mapType": "global", "geoClass": "region", "latitude": "1.75754", "longitude": "-156.09375"}},{"name": "eastern Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "30.75128", "longitude": "126.38672"}},{"name": "northern Africa", "data": {"mapType": "global", "geoClass": "region", "latitude": "29.53523", "longitude": "14.23828"}},{"name": "south-eastern Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "6.3153", "longitude": "129.375"}},{"name": "southern Asia", "data": {"mapType": "global", "geoClass": "region", "latitude": "-1.05463", "longitude": "108.63281"}},{"name": "Alaska", "data": {"mapType": "country", "geoClass": "state", "latitude": "64.3850", "longitude": "-154.2683"}},{"name": "Alabama", "data": {"mapType": "country", "geoClass": "state", "latitude": "32.7990", "longitude": "-86.8073"}},{"name": "Arkansas", "data": {"mapType": "country", "geoClass": "state", "latitude": "34.9513", "longitude": "-92.3809"}},{"name": "Arizona", "data": {"mapType": "country", "geoClass": "state", "latitude": "33.7712", "longitude": "-111.3877"}},{"name": "California", "data": {"mapType": "country", "geoClass": "state", "latitude": "36.1700", "longitude": "-119.7462"}},{"name": "Colorado", "data": {"mapType": "country", "geoClass": "state", "latitude": "39.0646", "longitude": "-105.3272"}},{"name": "Connecticut", "data": {"mapType": "country", "geoClass": "state", "latitude": "41.5834", "longitude": "-72.7622"}},{"name": "District of Columbia", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.8964", "longitude": "-77.0262"}},{"name": "Delaware", "data": {"mapType": "country", "geoClass": "state", "latitude": "39.3498", "longitude": "-75.5148"}},{"name": "Florida", "data": {"mapType": "country", "geoClass": "state", "latitude": "27.8333", "longitude": "-81.7170"}},{"name": "Georgia", "data": {"mapType": "country", "geoClass": "state", "latitude": "32.9866", "longitude": "-83.6487"}},{"name": "Hawaii", "data": {"mapType": "country", "geoClass": "state", "latitude": "21.1098", "longitude": "-157.5311"}},{"name": "Iowa", "data": {"mapType": "country", "geoClass": "state", "latitude": "42.0046", "longitude": "-93.2140"}},{"name": "Idaho", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.2394", "longitude": "-114.5103"}},{"name": "Illinois", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.3363", "longitude": "-89.0022"}},{"name": "Indiana", "data": {"mapType": "country", "geoClass": "state", "latitude": "39.8647", "longitude": "-86.2604"}},{"name": "Kansas", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.5111", "longitude": "-96.8005"}},{"name": "Kentucky", "data": {"mapType": "country", "geoClass": "state", "latitude": "37.6690", "longitude": "-84.6514"}},{"name": "Louisiana", "data": {"mapType": "country", "geoClass": "state", "latitude": "31.1801", "longitude": "-91.8749"}},{"name": "Massachusetts", "data": {"mapType": "country", "geoClass": "state", "latitude": "42.2373", "longitude": "-71.5314"}},{"name": "Maryland", "data": {"mapType": "country", "geoClass": "state", "latitude": "39.0724", "longitude": "-76.7902"}},{"name": "Maine", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.6074", "longitude": "-69.3977"}},{"name": "Michigan", "data": {"mapType": "country", "geoClass": "state", "latitude": "43.3504", "longitude": "-84.5603"}},{"name": "Minnesota", "data": {"mapType": "country", "geoClass": "state", "latitude": "", "longitude": ""}},{"name": "Missouri", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.4623", "longitude": "-92.3020"}},{"name": "Mississippi", "data": {"mapType": "country", "geoClass": "state", "latitude": "32.7673", "longitude": "-89.6812"}},{"name": "Montana", "data": {"mapType": "country", "geoClass": "state", "latitude": "46.9048", "longitude": "-110.3261"}},{"name": "North Carolina", "data": {"mapType": "country", "geoClass": "state", "latitude": "35.6411", "longitude": "-79.8431"}},{"name": "North Dakota", "data": {"mapType": "country", "geoClass": "state", "latitude": "47.5362", "longitude": "-99.7930"}},{"name": "Nebraska", "data": {"mapType": "country", "geoClass": "state", "latitude": "41.1289", "longitude": "-98.2883"}},{"name": "New Hampshire", "data": {"mapType": "country", "geoClass": "state", "latitude": "43.4108", "longitude": "-71.5653"}},{"name": "New Jersey", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.3140", "longitude": "-74.5089"}},{"name": "New Mexico", "data": {"mapType": "country", "geoClass": "state", "latitude": "34.8375", "longitude": "-106.2371"}},{"name": "Nevada", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.4199", "longitude": "-117.1219"}},{"name": "New York", "data": {"mapType": "country", "geoClass": "state", "latitude": "42.1497", "longitude": "-74.9384"}},{"name": "Ohio", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.3736", "longitude": "-82.7755"}},{"name": "Oklahoma", "data": {"mapType": "country", "geoClass": "state", "latitude": "35.5376", "longitude": "-96.9247"}},{"name": "Oregon", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.5672", "longitude": "-122.1269"}},{"name": "Pennsylvania", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.5773", "longitude": "-77.2640"}},{"name": "Rhode Island", "data": {"mapType": "country", "geoClass": "state", "latitude": "41.6772", "longitude": "-71.5101"}},{"name": "South Carolina", "data": {"mapType": "country", "geoClass": "state", "latitude": "33.8191", "longitude": "-80.9066"}},{"name": "Tennessee", "data": {"mapType": "country", "geoClass": "state", "latitude": "35.7449", "longitude": "-86.7489"}},{"name": "South Dakota", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.2853", "longitude": "-99.4632"}},{"name": "Texas", "data": {"mapType": "country", "geoClass": "state", "latitude": "31.1060", "longitude": "-97.6475"}},{"name": "Utah", "data": {"mapType": "country", "geoClass": "state", "latitude": "40.1135", "longitude": "-111.8535"}},{"name": "Virginia", "data": {"mapType": "country", "geoClass": "state", "latitude": "37.7680", "longitude": "-78.2057"}},{"name": "Vermont", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.0407", "longitude": "-72.7093"}},{"name": "Washington", "data": {"mapType": "country", "geoClass": "state", "latitude": "47.3917", "longitude": "-121.5708"}},{"name": "Wisconsin", "data": {"mapType": "country", "geoClass": "state", "latitude": "44.2563", "longitude": "-89.6385"}},{"name": "West Virginia", "data": {"mapType": "country", "geoClass": "state", "latitude": "38.4680", "longitude": "-80.9696"}},{"name": "Wyoming", "data": {"mapType": "country", "geoClass": "state", "latitude": "42.7475", "longitude": "-107.2085"}}]; diff --git a/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl b/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl index c0816bba..b74aab68 100644 --- a/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl +++ b/productMods/templates/freemarker/body/partials/individual/individual-positions.ftl @@ -1,6 +1,6 @@ <#-- $This file is distributed under the terms of the license in /doc/license.txt$ --> -<#-- List of positions for the individual -->

Positions!${core}personInPosition

+<#-- List of positions for the individual --> <#assign positions = propertyGroups.pullProperty("${core}personInPosition")!> <#if positions?has_content> <#-- true when the property is in the list, even if not populated (when editing) --> <#assign localName = positions.localName> diff --git a/productMods/templates/freemarker/body/partials/individual/individual-researchAreas.ftl b/productMods/templates/freemarker/body/partials/individual/individual-researchAreas.ftl index e01938d7..aaabeb05 100644 --- a/productMods/templates/freemarker/body/partials/individual/individual-researchAreas.ftl +++ b/productMods/templates/freemarker/body/partials/individual/individual-researchAreas.ftl @@ -3,8 +3,6 @@ <#-- List of research areas for the individual --> <#assign researchAreas = propertyGroups.pullProperty("${core}hasResearchArea")!> <#assign concepts = propertyGroups.pullProperty("${core}hasAssociatedConcept")!> -<#if concepts?has_content> concepts has content <#else> concepts dont have content -

RESEARCH AREAS: ${core}hasResearchArea

<#if researchAreas?has_content> <#-- true when the property is in the list, even if not populated (when editing) --> <#assign localName = researchAreas.localName>

@@ -14,5 +12,5 @@

<#else> Research areas does not have content + diff --git a/productMods/templates/freemarker/edit/forms/js/addConcept.js b/productMods/templates/freemarker/edit/forms/js/addConcept.js index 4c882f33..d650d349 100644 --- a/productMods/templates/freemarker/edit/forms/js/addConcept.js +++ b/productMods/templates/freemarker/edit/forms/js/addConcept.js @@ -281,7 +281,7 @@ var addConceptForm = { generateIndividualLabelsDisplay:function(label, altLabels) { var labelDisplay = label; if(altLabels != null && altLabels.length > 0) { - labelDisplay += "
(" + altLabels + ")"; + labelDisplay += "
[" + altLabels + "]"; } return labelDisplay; }, diff --git a/productMods/templates/freemarker/lib/lib-home-page.ftl b/productMods/templates/freemarker/lib/lib-home-page.ftl index 45baa28e..d3850f68 100644 --- a/productMods/templates/freemarker/lib/lib-home-page.ftl +++ b/productMods/templates/freemarker/lib/lib-home-page.ftl @@ -205,3 +205,16 @@ var urlsBase = "${urls.base}"; +<#-- retrieves a count, the number of researchers with a geographic focus, --> +<#-- and saves it as a js variable to be used by the homePageMaps.js file --> +<#macro getGeoResearcherCount> + + diff --git a/rdf/abox/filegraph/us-states.rdf b/rdf/abox/filegraph/us-states.rdf index 01252b0d..3fdbdaad 100644 --- a/rdf/abox/filegraph/us-states.rdf +++ b/rdf/abox/filegraph/us-states.rdf @@ -6,201 +6,303 @@ Alabama + Alaska + Arizona + Arkansas + California + Colorado + Connecticut + Delaware + Florida + Georgia + Hawaii + Idaho + Illinois + Indiana + Iowa + Kansas + Kentucky + Louisiana + Maine + Maryland + Massachusetts + Michigan + Minnesota + Mississipi + Missouri + Montana + Nebraska + Nevada + New Hampshire + New Jersey + New Mexico + New York + North Carolina + North Dakota + Ohio + Oklahoma + Oregon + Pennsylvania + Rhode Island + South Carolina + South Dakota + Tennessee + Texas + Utah + Vermont + Virginia + Washington + West Virginia + Wisconsin + Wyoming + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/rdf/display/everytime/homePageDataGetters.n3 b/rdf/display/everytime/homePageDataGetters.n3 index 40a566b8..da71cc26 100644 --- a/rdf/display/everytime/homePageDataGetters.n3 +++ b/rdf/display/everytime/homePageDataGetters.n3 @@ -29,3 +29,23 @@ display:academicDeptsDataGetter """ . + display:hasDataGetter display:researcherCountDataGetter . + +display:researcherCountDataGetter + a ; + display:saveToVar "researcherCountDG" ; + display:query """ + PREFIX geo: + PREFIX rdfs: + PREFIX rdf: + PREFIX core: + PREFIX foaf: + PREFIX vivoc: + + SELECT DISTINCT (COUNT(?person) AS ?count) + WHERE { + ?person rdf:type foaf:Person . + FILTER (EXISTS {?person core:geographicFocus ?focus}) + } + + """ . diff --git a/src/edu/cornell/mannlib/vitro/webapp/controller/ajax/GeoFocusMapLocations.java b/src/edu/cornell/mannlib/vitro/webapp/controller/ajax/GeoFocusMapLocations.java index 2404e181..d7f4de81 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/controller/ajax/GeoFocusMapLocations.java +++ b/src/edu/cornell/mannlib/vitro/webapp/controller/ajax/GeoFocusMapLocations.java @@ -36,7 +36,7 @@ public class GeoFocusMapLocations extends AbstractAjaxResponder { + "PREFIX core: \n" + "PREFIX foaf: \n" + "PREFIX vivoc: \n" - + "SELECT DISTINCT ?label ?location (COUNT(?person) AS ?count) \n" + + "SELECT DISTINCT ?label ?location (COUNT(DISTINCT ?person) AS ?count) \n" + "WHERE { { \n" + " ?location rdf:type core:GeographicRegion . \n" + " ?location rdfs:label ?label . \n" diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java index 84b29774..23d2053c 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/generators/AddAssociatedConceptGenerator.java @@ -16,6 +16,7 @@ import javax.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import com.hp.hpl.jena.ontology.OntModel; import com.hp.hpl.jena.rdf.model.Literal; import com.hp.hpl.jena.rdf.model.Model; import com.hp.hpl.jena.vocabulary.RDF; @@ -27,6 +28,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.ObjectProperty; import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; +import edu.cornell.mannlib.vitro.webapp.dao.ModelAccess; import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; @@ -85,7 +87,7 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements setTemplate(editConfiguration, vreq); // No validators required here // Add preprocessors - addPreprocessors(editConfiguration, vreq.getWebappDaoFactory()); + addPreprocessors(editConfiguration, ModelAccess.on(vreq).getJenaOntModel()); // Adding additional data, specifically edit mode addFormSpecificData(editConfiguration, vreq); // One override for basic functionality, changing url pattern @@ -174,8 +176,10 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements private List generateN3Optional() { return list("?conceptNode <" + RDFS.label.getURI() + "> ?conceptLabel .\n" + "?conceptNode <" + RDFS.isDefinedBy.getURI() + "> ?conceptSource .", - "?conceptNode <" + VIVOCore + "conceptSemanticType> ?conceptSemanticTypeURI ." + - "?conceptSemanticTypeURI <" + RDFS.label.getURI() + "> ?conceptSemanticTypeLabel ." + "?conceptNode <" + VIVOCore + "hasConceptSemanticType> ?conceptSemanticTypeURI ." + + "?conceptSemanticTypeURI <" + VIVOCore + "isConceptSemanticTypeOf> ?conceptNode ." + + "?conceptSemanticTypeURI <" + RDFS.label.getURI() + "> ?conceptSemanticTypeLabel ." + + "?conceptSemanticTypeURI <" + RDF.type.getURI() + "> <" + VIVOCore + "ConceptSemanticType> ." ); } @@ -190,7 +194,7 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements //There are no new resources here, the concept node uri doesn't //get created but already exists, and vocab uri should already exist as well //Adding concept semantic type uri just to test - note this isn't really on the form at all - //newResources.put("conceptSemanticTypeURI", null); + newResources.put("conceptSemanticTypeURI", null); return newResources; } @@ -239,11 +243,11 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements //The URI of the node that defines the concept urisOnForm.add("conceptNode"); urisOnForm.add("conceptSource"); - // urisOnForm.add("conceptSemanticTypeURI"); + urisOnForm.add("conceptSemanticTypeURI"); editConfiguration.setUrisOnform(urisOnForm); //Also need to add the label of the concept literalsOnForm.add("conceptLabel"); - // literalsOnForm.add("conceptSemanticTypeLabel"); + literalsOnForm.add("conceptSemanticTypeLabel"); editConfiguration.setLiteralsOnForm(literalsOnForm); } @@ -272,8 +276,8 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements setConceptNodeField(editConfiguration, vreq); setConceptLabelField(editConfiguration, vreq); setVocabURIField(editConfiguration, vreq); - //setConceptSemanticTypeURIField(editConfiguration,vreq); - //setConceptSemanticTypeLabelField(editConfiguration,vreq); + setConceptSemanticTypeURIField(editConfiguration,vreq); + setConceptSemanticTypeLabelField(editConfiguration,vreq); } //this field will be hidden and include the concept node URI @@ -321,11 +325,14 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements //Add preprocessor - private void addPreprocessors(EditConfigurationVTwo editConfiguration, WebappDaoFactory wadf) { + private void addPreprocessors(EditConfigurationVTwo editConfiguration, OntModel ontModel) { //An Edit submission preprocessor for enabling addition of multiple terms for a single search - + //TODO: Check if this is the appropriate way of getting model + + //Passing model to check for any URIs that are present + editConfiguration.addEditSubmissionPreprocessor( - new AddAssociatedConceptsPreprocessor(editConfiguration, wadf)); + new AddAssociatedConceptsPreprocessor(editConfiguration, ontModel)); } @@ -411,13 +418,13 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements String conceptSemanticTypeURI = null; String conceptSemanticTypeLabel = null; //Can a concept have multiple semantic types? Currently we are only returning the first one - /* - List semanticTypeStatements = conceptIndividual.getObjectPropertyStatements(VIVOCore + "conceptSemanticType"); + + List semanticTypeStatements = conceptIndividual.getObjectPropertyStatements(VIVOCore + "hasConceptSemanticType"); if(semanticTypeStatements.size() > 0) { conceptSemanticTypeURI = semanticTypeStatements.get(0).getObjectURI(); Individual conceptSemanticTypeIndividual = EditConfigurationUtils.getIndividual(vreq, conceptSemanticTypeURI); conceptSemanticTypeLabel = conceptSemanticTypeIndividual.getName(); - }*/ + } //get label //Assuming this is from an external vocabulary source @@ -442,8 +449,8 @@ public class AddAssociatedConceptGenerator extends VivoBaseGenerator implements this.vocabURI = inputVocabURI; this.vocabLabel = inputVocabLabel; this.type = inputType; - //this.conceptSemanticTypeURI = inputConceptSemanticTypeURI; - //this.conceptSemanticTypeLabel = inputConceptSemanticTypeLabel; + this.conceptSemanticTypeURI = inputConceptSemanticTypeURI; + this.conceptSemanticTypeLabel = inputConceptSemanticTypeLabel; } //Getters diff --git a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/AddAssociatedConceptsPreprocessor.java b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/AddAssociatedConceptsPreprocessor.java index b49b9b45..d3fbea33 100644 --- a/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/AddAssociatedConceptsPreprocessor.java +++ b/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/configuration/preprocessors/AddAssociatedConceptsPreprocessor.java @@ -3,19 +3,29 @@ package edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.preprocessors; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import com.hp.hpl.jena.ontology.OntModel; +import com.hp.hpl.jena.query.Query; +import com.hp.hpl.jena.query.QueryExecution; +import com.hp.hpl.jena.query.QueryExecutionFactory; +import com.hp.hpl.jena.query.QueryFactory; +import com.hp.hpl.jena.query.QuerySolution; +import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.rdf.model.Literal; +import com.hp.hpl.jena.rdf.model.Resource; +import com.hp.hpl.jena.vocabulary.RDF; import com.hp.hpl.jena.vocabulary.RDFS; import com.hp.hpl.jena.vocabulary.XSD; -import edu.cornell.mannlib.vitro.webapp.beans.Individual; -import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; + import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.BaseEditSubmissionPreprocessorVTwo; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationUtils; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.VTwo.EditConfigurationVTwo; @@ -27,13 +37,18 @@ public class AddAssociatedConceptsPreprocessor extends protected static final Log log = LogFactory .getLog(AddAssociatedConceptsPreprocessor.class.getName()); - protected WebappDaoFactory wadf = null; - + //TODO: Check if better way to do this? + protected OntModel ontModel = null; // Field names/variables names for n3 - these will have numbers added as // suffix if more than one term private static String conceptNodeBase = "conceptNode"; private static String sourceBase = "conceptSource"; private static String labelBase = "conceptLabel"; + private static String conceptSemanticTypeLabelBase = "conceptSemanticTypeLabel"; + private static String conceptSemanticTypeURIBase = "conceptSemanticTypeURI"; + //keyed off label variable, specifies which uri variable should be used, useful if same label repeated twice + private HashMap labelVarToUriVarHash = null; + private HashMap> conceptSemanticTypeURIVarToValueMap = null; //Also storing submission values private static String conceptNodeValues = null; private static String conceptLabelValues = null; @@ -46,9 +61,12 @@ public class AddAssociatedConceptsPreprocessor extends // Will be editing the edit configuration as well as edit submission here - public AddAssociatedConceptsPreprocessor(EditConfigurationVTwo editConfig, WebappDaoFactory wadf) { + public AddAssociatedConceptsPreprocessor(EditConfigurationVTwo editConfig, OntModel ontModel) { super(editConfig); - this.wadf = wadf; + this.ontModel = ontModel; + this.labelVarToUriVarHash = new HashMap(); + //Saves values of concept type uris + this.conceptSemanticTypeURIVarToValueMap = new HashMap>(); } public void preprocess(MultiValueEditSubmission inputSubmission) { @@ -57,12 +75,14 @@ public class AddAssociatedConceptsPreprocessor extends // as vocab uri (which is based on thge // For query parameters, check whether CUI copySubmissionValues(); - //This will put the URI value in scope for the first semantic type label - //and generate the rest if need be - //processConceptSemanticValues(); + + if (conceptNodeValues != null) { String[] conceptNodes = convertDelimitedStringToArray(conceptNodeValues); int numberConcepts = conceptNodes.length; + //This will put the URI value in scope for the first semantic type label + //and generate the rest if need be + processConceptSemanticValues(); if (numberConcepts > 1) { processConceptNodes(numberConcepts); } @@ -80,6 +100,7 @@ public class AddAssociatedConceptsPreprocessor extends conceptLabelValues = getConceptLabelValues(); conceptNodeValues = getConceptNodeValues(); conceptSourceValues = getConceptSourceValues(); + log.debug("concept label values are " + conceptLabelValues); } @@ -94,14 +115,11 @@ public class AddAssociatedConceptsPreprocessor extends } - - - - - //This is for additional concept nodes (i.e. if user selects more than one concept) private void processConceptNodes(int numberConcepts) { //There are no "new" resources b/c the concept nodes are URIs from external vocabularies + //New resources for concept semantic type uris + addNewResources(numberConcepts); // Add N3Required addN3Required(numberConcepts); //Add N3 Optional as well @@ -115,6 +133,42 @@ public class AddAssociatedConceptsPreprocessor extends } + //This is specifically for concept semantic type URIs which may need to be generated + private void addNewResources(int numberConcepts) { + // TODO Auto-generated method stub + addConceptSemanticTypeURIResources(numberConcepts); + } + + private void addConceptSemanticTypeURIResources(int numberConcepts) { + //Iterate through the labels and get the corresponding uris + HashSet urisToAdd = new HashSet(); + String[] conceptSemanticTypeLabels= convertDelimitedStringToArray(conceptSemanticTypeLabelValues); + //the number of existing values may not match up, or at least existing populated ones + //Now we can't determine whether all concepts will have semantic types - at some point what if + //we ran a search across all external vocabularies? So we can't compare labels to number of concepts + //but we can ensure that it isn't greater than then number of concepts + if(conceptSemanticTypeLabels != null && conceptSemanticTypeLabels.length <= numberConcepts) { + int i; + for(i = 0; i < numberConcepts; i++) { + int suffix = i + 1; + String conceptSemanticTypeLabelVar = conceptSemanticTypeLabelBase + suffix; + if(this.labelVarToUriVarHash.containsKey(conceptSemanticTypeLabelVar)) { + String newResourceName = this.labelVarToUriVarHash.get(conceptSemanticTypeLabelVar); + if(!urisToAdd.contains(newResourceName)) { + urisToAdd.add(newResourceName); + editConfiguration.addNewResource(newResourceName, null); + } + } + + } + } else if(conceptSemanticTypeLabels != null && conceptSemanticTypeLabels.length > numberConcepts){ + log.error("Number of concept semantic type labels is greater than number of concepts"); + } else{ + log.error("Concept semantic type labels returned are null"); + } + + } + //This is where the actual values will be submitted as if they were separate input fields //Each field name will correspond to the names of the fileds/uris on form/literals on form //generated here @@ -126,7 +180,8 @@ public class AddAssociatedConceptsPreprocessor extends addConceptSourceInputs(numberConcepts); addConceptLabelInputs(numberConcepts); //for concept semantic type labels and uris where they exist - //addConceptSemanticTypeLabelInputs(numberConcepts); + //TODO: Make into single method as URIs depend on labels + addConceptSemanticTypeLabelAndURIInputs(numberConcepts); //addConceptSemanticTypeURIInputs(numberConcepts); } @@ -198,12 +253,73 @@ public class AddAssociatedConceptsPreprocessor extends } } - private void addConceptSemanticTypeLabelInputs(int numberConcepts) { - + private void addConceptSemanticTypeLabelAndURIInputs(int numberConcepts) { + String[] labels = convertDelimitedStringToArray(conceptSemanticTypeLabelValues); + HashSet uniqueLabelValues = new HashSet(); + if(labels != null && labels.length == numberConcepts) { + int i; + for(i = 0; i < numberConcepts; i++) { + String thisLabel = labels[i]; + int suffix = i + 1; + String labelInputName = conceptSemanticTypeLabelBase + suffix; + String[] labelValues = new String[1]; + labelValues[0] = thisLabel; + //TODO: Check if there are no funky typed information also stored + //At this point the field should already have been added to edit configuration + FieldVTwo labelField = editConfiguration.getField(labelInputName); + //TODO: Also check to see whether the label is actually populate or will n3 editing take care of that? + if(labelField != null) { + submission.addLiteralToForm(editConfiguration, labelField, labelInputName, labelValues); + //Associate URI + if(!uniqueLabelValues.contains(thisLabel)) { + uniqueLabelValues.add(thisLabel); + this.addConceptSemanticTypeURIInputForLabel(labelInputName, suffix); + } + } else { + log.error("Corresponding field for " + labelInputName + " was not added to edit configuration"); + } + + } + } else if(labels != null && labels.length != numberConcepts){ + log.error("Number of concept semantic type labels did not match the number of concepts to be added"); + } else{ + log.error("Concept labels returned were null"); + } } - private void addConceptSemanticTypeURIInputs(int numberConcepts) { + private void addConceptSemanticTypeURIInputForLabel(String conceptSemanticTypeLabel, int suffix) { + //String[] conceptSemanticTypeURIs= convertDelimitedStringToArray(conceptSemanticTypeURIValues); + //Get the semantic type URI variable name associated with this label + String uriInputName = this.getConceptSemanticTypeURIFieldName(conceptSemanticTypeLabel, suffix); + //List<> + if(this.conceptSemanticTypeURIVarToValueMap.containsKey(uriInputName)) { + List uriVals = this.conceptSemanticTypeURIVarToValueMap.get(uriInputName); + String[] uriValuesArray = uriVals.toArray(new String[uriVals.size()]); + submission.addUriToForm(editConfiguration, uriInputName, uriValuesArray); + } + + + //the number of existing values may not match up, or at least existing populated ones + /* + if(conceptSemanticTypeURIs != null && conceptSemanticTypeURIs.length == numberConcepts) { + int i; + for(i = 0; i < numberConcepts; i++) { + int suffix = i + 1; + String conceptInputName = conceptSemanticTypeURIBase + suffix; + String[] uriValues = new String[1]; + uriValues[0] = conceptSemanticTypeURIs[i]; + //Add value for uri to form + //TODO: Check if value is empty in which case don't add to submission + submission.addUriToForm(editConfiguration, conceptInputName, uriValues); + } + } else if(conceptSemanticTypeURIs != null && conceptSemanticTypeURIs.length != numberConcepts){ + log.error("Number of concept nodes did not match the number of concepts to be added"); + } else{ + log.error("Concept nodes returned were null"); + } + + */ } //Fields @@ -212,16 +328,26 @@ public class AddAssociatedConceptsPreprocessor extends //Clear out all fields in edit configuration first editConfiguration.setFields(new HashMap()); int index; + HashSet conceptSemanticTypeUris = new HashSet(); // First one already included in generator so add additional ones here for (index = 1; index <= numberConcepts; index++) { int suffix = index; String conceptNode = conceptNodeBase + suffix; String label = labelBase + suffix; String source = sourceBase + suffix; + String conceptSemanticTypeLabel = conceptSemanticTypeLabelBase + suffix; + String conceptSemanticTypeURI = this.getConceptSemanticTypeURIFieldName(conceptSemanticTypeLabel, suffix); addConceptNodeField(conceptNode); addLabelField(label); addSourceField(source); + //Also add fields for concept semantic type label + addConceptSemanticTypeLabelField(conceptSemanticTypeLabel); + //and concept semantic type URI + if(!conceptSemanticTypeUris.contains(conceptSemanticTypeURI)) { + conceptSemanticTypeUris.add(conceptSemanticTypeURI); + addConceptSemanticTypeURIField(conceptSemanticTypeURI); + } } } @@ -246,6 +372,25 @@ public class AddAssociatedConceptsPreprocessor extends setName(source)); } + + //TODO: Do we need to check if label is empty string? + private void addConceptSemanticTypeLabelField(String label) { + if(label != null) { + editConfiguration.addField(new FieldVTwo(). + setName(label). + setRangeDatatypeUri(XSD.xstring.toString()) + ); + } + + } + + private void addConceptSemanticTypeURIField(String conceptSemanticTypeURI) { + if(conceptSemanticTypeURI != null) { + editConfiguration.addField(new FieldVTwo(). + setName(conceptSemanticTypeURI)); + } + } + //original literals on form: label, uris on form: conceptNode and conceptSource //This will overwrite the original values in the edit configuration @@ -254,16 +399,24 @@ public class AddAssociatedConceptsPreprocessor extends List literalsOnForm = new ArrayList(); int index; - + HashSet conceptSemanticTypeURIs = new HashSet(); // First one already included so add new ones here for (index = 1; index <= numberTerms; index++) { int suffix = index; String conceptNode = conceptNodeBase + suffix; String label = labelBase + suffix; String source = sourceBase + suffix; + String conceptSemanticTypeLabel = conceptSemanticTypeLabelBase + suffix; + //String conceptSemanticTypeURI = conceptSemanticTypeURIBase + suffix; + String conceptSemanticTypeURI = this.getConceptSemanticTypeURIFieldName(conceptSemanticTypeLabel, suffix); urisOnForm.add(conceptNode); - urisOnForm.add(source); + urisOnForm.add(source); + if(!conceptSemanticTypeURIs.contains(conceptSemanticTypeURI)) { + conceptSemanticTypeURIs.add(conceptSemanticTypeURI); + urisOnForm.add(conceptSemanticTypeURI); + } literalsOnForm.add(label); + literalsOnForm.add(conceptSemanticTypeLabel); } editConfiguration.setUrisOnform(urisOnForm); editConfiguration.setLiteralsOnForm(literalsOnForm); @@ -279,8 +432,7 @@ public class AddAssociatedConceptsPreprocessor extends List n3Required = new ArrayList(); int index; String nodeBase = "?" + conceptNodeBase; - String labelVar = "?" + labelBase; - String sourceVar = "?" + sourceBase; + String prefixStr = "@prefix core: ."; // First one already included so add new ones here for (index = 1; index <= numberConcepts; index++) { @@ -293,30 +445,61 @@ public class AddAssociatedConceptsPreprocessor extends editConfiguration.setN3Required(n3Required); } //Add n3 optional - + //TODO: Rewrite optional N3 private void addN3Optional(int numberConcepts) { List n3Optional = new ArrayList(); int index; String nodeBase = "?" + conceptNodeBase; String labelVar = "?" + labelBase; String sourceVar = "?" + sourceBase; + String conceptSemanticTypeLabelVar = "?" + conceptSemanticTypeLabelBase; String prefixStr = "@prefix core: ."; // First one already included so add new ones here + //We already have a label var to uri var setup for (index = 1; index <= numberConcepts; index++) { int suffix = index; String node = nodeBase + suffix; String label = labelVar + suffix; String source = sourceVar + suffix; + String conceptSemanticTypeLabel = conceptSemanticTypeLabelVar + suffix; + //get the URI appropriate for the concept semantic type label var + String conceptSemanticTypeURI = getConceptSemanticTypeURIVar(conceptSemanticTypeLabelBase + suffix, suffix); + //onceptSemanticTypeURIVar + suffix; String n3String = prefixStr; n3String += node + " <" + RDFS.label.getURI() + "> " + label + " .\n" + - node + " <" + RDFS.isDefinedBy.getURI() + "> " + source + " ."; + node + " <" + RDFS.isDefinedBy.getURI() + "> " + source + " ."; + String n3ConceptTypeString = prefixStr; + n3ConceptTypeString += node + " core:hasConceptSemanticType " + conceptSemanticTypeURI + " ." + + conceptSemanticTypeURI + " core:isConceptSemanticTypeOf " + node + ". " + + conceptSemanticTypeURI + " <" + RDFS.label.getURI() + "> " + conceptSemanticTypeLabel + " .\n" + + conceptSemanticTypeURI + " <" + RDF.type.getURI() + "> core:ConceptSemanticType .\n" ; + n3Optional.add(n3String); + //adding separately so their resolution does not depend on each other + n3Optional.add(n3ConceptTypeString); + } //Already have n3 required so need to add to that editConfiguration.setN3Optional(n3Optional); } + //get the URI variable that is associated with this concept type URI, which might not be + //the same suffix because the same label value might be repeated and we need to use the same URI + //representing that concept semantic type + private String getConceptSemanticTypeURIVar(String labelVar, int suffix) { + // TODO Auto-generated method stub + return "?" + this.getConceptSemanticTypeURIFieldName(labelVar, suffix); + } + + private String getConceptSemanticTypeURIFieldName(String labelVar, int suffix) { + // TODO Auto-generated method stub + if(this.labelVarToUriVarHash.containsKey(labelVar)) { + return this.labelVarToUriVarHash.get(labelVar); + } + return this.conceptSemanticTypeURIBase + suffix; + } + private String[] convertDelimitedStringToArray(String inputString) { String[] inputArray = new String[1]; if (inputString.indexOf(",") != -1) { @@ -357,31 +540,122 @@ public class AddAssociatedConceptsPreprocessor extends //This will either generate or retrieve URIs for the concept semantic type labels if they exist //We will then update the submission to include this private String getConceptSemanticTypeURIValues() { - List conceptSemanticTypeURIs = new ArrayList(); String[] conceptSemanticTypeLabels = convertDelimitedStringToArray(conceptSemanticTypeLabelValues); + //keep track of what label values already exist and to which label variables they map + HashMap> labelValueToVarSuffix = new HashMap>(); int numberLabels = conceptSemanticTypeLabels.length; + String pseudoInputString = ""; - for(int i = 0; i < numberLabels; i++) { - String label = conceptSemanticTypeLabels[i]; - //Make or retrieve URI for this label + //The rest of this code is really only relevant for multiple values, so we could break out the old code above + //as we don't need to set up hashes etc. if there is only one concept node being added + if(numberLabels == 1) { + String label = conceptSemanticTypeLabels[0]; String uri = getURIForSemanticTypeLabel(label); - conceptSemanticTypeURIs.add(uri); + if(uri != "") { + String[] urisToAdd = new String[1]; + urisToAdd[0] = uri; + pseudoInputString = uri; + log.debug("uris to add" + uri); + submission.addUriToForm(this.editConfiguration, "conceptSemanticTypeURI", urisToAdd); + } + } + //if there is more than one concept node, we may have duplicate semantic types + //which will need to be referred to by the same semantic type uri + else if (numberLabels > 1){ - //Set uris as string - //Essentially this will allow the URI to be put in scope - return conceptSemanticTypeURIs.toString(); + for(int i = 0; i < numberLabels; i++) { + int suffix = i + 1; + String label = conceptSemanticTypeLabels[i]; + String labelVar = this.conceptSemanticTypeLabelBase + suffix; + //if label has not already been encountered, create entry for label value + //and list with the label variables that would refer to it + //for unique values, the uri variable will be the same as label + Integer thisSuffix = new Integer(suffix); + if(!labelValueToVarSuffix.containsKey(label)) { + labelValueToVarSuffix.put(label, new ArrayList()); + //Add suffix to list if not already there + labelValueToVarSuffix.get(label).add(thisSuffix); + } else { + //in this case, the label already exists, get the very first element in the list + //and use that as the uri variable + List suffixList = labelValueToVarSuffix.get(label); + if(suffixList != null && suffixList.size() > 0) { + thisSuffix = suffixList.get(0); + } + + } + + //Now add the uri var to the hash mapping label variable to uri variable + String uriVar = this.conceptSemanticTypeURIBase + thisSuffix.intValue(); + this.labelVarToUriVarHash.put(labelVar, uriVar); + + + //Make or retrieve URI for this label + //TODO: Do we create this string with empty inputs ? + String uri = getURIForSemanticTypeLabel(label); + if(uri != "") { + //uri var shouldn't be repeated? + if(!this.conceptSemanticTypeURIVarToValueMap.containsKey(uriVar)) { + this.conceptSemanticTypeURIVarToValueMap.put(uriVar, new ArrayList()); + this.conceptSemanticTypeURIVarToValueMap.get(uriVar).add(uri); + } + } + if(i != 0) { + pseudoInputString += ","; + } + pseudoInputString += uri; + + } + + //Add this string to the uris for the form + String[] urisToAdd = new String[1]; + urisToAdd[0] = pseudoInputString; + log.debug("uris to add" + pseudoInputString); + submission.addUriToForm(this.editConfiguration, "conceptSemanticTypeURI", urisToAdd); + + } + return pseudoInputString; } private String getURIForSemanticTypeLabel(String label) { - //Check if system has an individual with this URI - // - List individualsWithLabel = this.wadf.getIndividualDao().getIndividualsByDataProperty(RDFS.label.getURI(), label); - //We are only interested in concepts - return null; + String existingURI = this.getExistingSemanticTypeURI(label); + if(existingURI != null) { + return existingURI; + } + //if we leave this as null, we should be able to generate a new resource + //empty string because there may be more than one value returned for labels + else return ""; } + private String getExistingSemanticTypeURI(String label) { + String queryStr = "SELECT ?semanticType WHERE { ?semanticType <" + RDF.type.getURI() + "> . " + + "?semanticType <" + RDFS.label.getURI() + "> \"" + label + "\"^^ . }"; + QueryExecution qe = null; + try{ + Query query = QueryFactory.create(queryStr); + qe = QueryExecutionFactory.create(query, this.ontModel); + ResultSet results = null; + results = qe.execSelect(); + + while( results.hasNext()){ + QuerySolution qs = results.nextSolution(); + if(qs.get("semanticType") != null) { + Resource semanticTypeURI = qs.getResource("semanticType"); + log.debug("Semantic Type URI returned " + semanticTypeURI.getURI()); + return semanticTypeURI.getURI(); + } + } + }catch(Exception ex){ + throw new Error("Error in executing query string: \n" + queryStr + '\n' + ex.getMessage()); + }finally{ + if( qe != null) + qe.close(); + } + return null; + } + private Object getFirstElement(List inputList) { if(inputList == null || inputList.size() == 0) return null; diff --git a/themes/wilma/templates/page-home.ftl b/themes/wilma/templates/page-home.ftl index 5a02ac10..8547e0b8 100644 --- a/themes/wilma/templates/page-home.ftl +++ b/themes/wilma/templates/page-home.ftl @@ -97,6 +97,7 @@ stateString: '${i18n().map_state_string}', statewideLocations: '${i18n().statewide_locations}', researchersInString: '${i18n().researchers_in}', + inString: '${i18n().in}', noFacultyFound: '${i18n().no_faculty_found}', placeholderImage: '${i18n().placeholder_image}', viewAllFaculty: '${i18n().view_all_faculty}', @@ -108,7 +109,7 @@ if ( $('input.search-homepage').css('text-align') == "right" ) { $('input.search-homepage').attr("value","${i18n().limit_search} \u2192"); } - + <@lh.getGeoResearcherCount/> \ No newline at end of file