Index: /applications/editors/josm/plugins/wikipedia/.settings/org.eclipse.core.resources.prefs
===================================================================
--- /applications/editors/josm/plugins/wikipedia/.settings/org.eclipse.core.resources.prefs	(revision 33993)
+++ /applications/editors/josm/plugins/wikipedia/.settings/org.eclipse.core.resources.prefs	(revision 33993)
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/<project>=UTF-8
Index: /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java
===================================================================
--- /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java	(revision 33992)
+++ /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikipediaApp.java	(revision 33993)
@@ -35,4 +35,5 @@
 import org.openstreetmap.josm.tools.HttpClient;
 import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.Pair;
 import org.openstreetmap.josm.tools.Utils;
 import org.w3c.dom.Document;
@@ -258,13 +259,34 @@
                 .collect(Collectors.toList());
         if (!unresolved.isEmpty()) {
-            final Map<String, String> redirects = resolveRedirectsForArticles(unresolved);
-            final Map<String, String> result2 = getWikidataForArticles0(redirects.values());
+            doResolveWikidataItems(unresolved, result);
+        }
+        return result;
+    }
+
+    private Pair<Map<String, String>, Map<String, String>> doResolveWikidataItems(List<String> unresolved, Map<String, String> result) {
+        final Map<String, String> redirects = resolveRedirectsForArticles(unresolved);
+        final Map<String, String> result2 = getWikidataForArticles0(redirects.values());
+        final List<String> unresolved2 = new ArrayList<>();
+        redirects.forEach((original, resolved) -> {
+            if (result2.containsKey(resolved)) {
+                result.put(original, result2.get(resolved));
+            } else if (!Objects.equals(original, resolved)) {
+                // Handle double redirection like USA -> United States of America -> United States (as of 9th January 2018)
+                unresolved2.add(resolved);
+            }
+        });
+        if (!unresolved2.isEmpty()) {
+            Pair<Map<String, String>, Map<String, String>> p = doResolveWikidataItems(unresolved2, result);
             redirects.forEach((original, resolved) -> {
-                if (result2.containsKey(resolved)) {
-                    result.put(original, result2.get(resolved));
+                if (!result2.containsKey(resolved)) {
+                    p.a.forEach((original2, resolved2) -> {
+                        if (p.b.containsKey(resolved2)) {
+                            result.put(original, p.b.get(resolved2));
+                        }
+                    });
                 }
             });
         }
-        return result;
+        return Pair.create(redirects, result2);
     }
 
Index: /applications/editors/josm/plugins/wikipedia/test/unit/org/wikipedia/WikipediaAppTest.java
===================================================================
--- /applications/editors/josm/plugins/wikipedia/test/unit/org/wikipedia/WikipediaAppTest.java	(revision 33992)
+++ /applications/editors/josm/plugins/wikipedia/test/unit/org/wikipedia/WikipediaAppTest.java	(revision 33993)
@@ -124,5 +124,5 @@
         assertThat(map.get("einstein"), is("Q937"));
         assertThat(map.get("USA"), is("Q30"));
-        assertThat(map.size(), is(2));
+        assertThat(map.size(), is(3));
     }
 
