Index: /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikidataTagCellRenderer.java
===================================================================
--- /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikidataTagCellRenderer.java	(revision 31914)
+++ /applications/editors/josm/plugins/wikipedia/src/org/wikipedia/WikidataTagCellRenderer.java	(revision 31915)
@@ -2,4 +2,9 @@
 
 import java.awt.Component;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Callable;
@@ -14,4 +19,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.tools.LanguageInfo;
+import org.openstreetmap.josm.tools.Predicates;
 import org.openstreetmap.josm.tools.Utils;
 
@@ -50,24 +56,46 @@
 
         final String id = ((Map<?, ?>) value).keySet().iterator().next().toString();
-        if (!WikipediaApp.WIKIDATA_PATTERN.matcher(id).matches()) {
-            return null;
+        final JLabel component = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+        if (WikipediaApp.WIKIDATA_PATTERN.matcher(id).matches()) {
+            return renderValues(Collections.singleton(id), table, component);
+        } else if (id.contains(";")) {
+            final List<String> ids = Arrays.asList(id.split("\\s*;\\s*"));
+            if (Utils.forAll(ids, Predicates.stringMatchesPattern(WikipediaApp.WIKIDATA_PATTERN))) {
+                return renderValues(ids, table, component);
+            }
+        }
+        return null;
+    }
+
+    protected JLabel renderValues(Collection<String> ids, JTable table, JLabel component) {
+
+        for (String id : ids) {
+            if (!labelCache.containsKey(id)) {
+                labelCache.put(id, Main.worker.submit(new LabelLoader(id, table)));
+            }
         }
 
-        if (!labelCache.containsKey(id)) {
-            labelCache.put(id, Main.worker.submit(new LabelLoader(id, table)));
+        final Collection<String> texts = new ArrayList<>(ids.size());
+        for (String id : ids) {
+            if (!labelCache.get(id).isDone()) {
+                return null;
+            }
+            final String label;
+            try {
+                label = labelCache.get(id).get();
+            } catch (InterruptedException | ExecutionException e) {
+                Main.warn("Could not fetch Wikidata label for " + id);
+                Main.warn(e);
+                return null;
+            }
+            if (label == null) {
+                return null;
+            }
+            texts.add(Utils.escapeReservedCharactersHTML(id)
+                    + " <span color='gray'>" + Utils.escapeReservedCharactersHTML(label) + "</span>");
         }
-        try {
-            final String label = labelCache.get(id).isDone() ? labelCache.get(id).get() : null;
-            final JLabel component = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
-            component.setText("<html>" + Utils.escapeReservedCharactersHTML(id) + (label != null
-                    ? " <span color='gray'>" + Utils.escapeReservedCharactersHTML(label) + "</span>"
-                    : ""));
-            component.setToolTipText(label);
-            return component;
-        } catch (InterruptedException | ExecutionException e) {
-            Main.warn("Could not fetch Wikidata label for " + id);
-            Main.warn(e);
-            return null;
-        }
+        component.setText("<html>" + Utils.join("; ", texts));
+        component.setToolTipText("<html>" + Utils.joinAsHtmlUnorderedList(texts));
+        return component;
     }
 }
Index: /applications/editors/josm/plugins/wikipedia/test/unit/org/wikipedia/WikidataTagCellRendererTest.java
===================================================================
--- /applications/editors/josm/plugins/wikipedia/test/unit/org/wikipedia/WikidataTagCellRendererTest.java	(revision 31915)
+++ /applications/editors/josm/plugins/wikipedia/test/unit/org/wikipedia/WikidataTagCellRendererTest.java	(revision 31915)
@@ -0,0 +1,44 @@
+package org.wikipedia;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import java.util.Arrays;
+import java.util.List;
+
+import javax.swing.JLabel;
+import javax.swing.JTable;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.openstreetmap.josm.Main;
+
+public class WikidataTagCellRendererTest {
+
+    @Before
+    public void setUp() throws Exception {
+        Main.initApplicationPreferences();
+    }
+
+    @Test
+    public void testRenderLabel() throws Exception {
+        final List<String> ids = Arrays.asList("Q84", "Q1741", "Q278250");
+        final WikidataTagCellRenderer renderer = new WikidataTagCellRenderer();
+        renderer.renderValues(ids, new JTable(), new JLabel());
+        Main.worker.submit(new Runnable() {
+            @Override
+            public void run() {
+            }
+        }).get(); // wait for labels to be fetched
+        final JLabel label = renderer.renderValues(ids, new JTable(), new JLabel());
+        assertThat(label.getText(), is("<html>" +
+                "Q84 <span color='gray'>London</span>; " +
+                "Q1741 <span color='gray'>Vienna</span>; " +
+                "Q278250 <span color='gray'>Völs</span>"));
+        assertThat(label.getToolTipText(), is("<html><ul>" +
+                "<li>Q84 <span color='gray'>London</span></li>" +
+                "<li>Q1741 <span color='gray'>Vienna</span></li>" +
+                "<li>Q278250 <span color='gray'>Völs</span></li></ul>"));
+    }
+
+}
