Index: trunk/src/org/openstreetmap/josm/tools/Tag2Link.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Tag2Link.java	(revision 16433)
+++ trunk/src/org/openstreetmap/josm/tools/Tag2Link.java	(revision 16434)
@@ -5,9 +5,8 @@
 import static org.openstreetmap.josm.tools.I18n.trn;
 
-import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.Map;
@@ -24,6 +23,4 @@
 
 import org.openstreetmap.josm.data.osm.OsmUtils;
-import org.openstreetmap.josm.io.CachedFile;
-import org.openstreetmap.josm.spi.preferences.Config;
 
 /**
@@ -80,6 +77,5 @@
         try {
             wikidataRules.clear();
-            fetchRulesViaSPARQL("resource://data/tag2link.wikidata.sparql", Config.getUrls().getJOSMWebsite() + "/remote/wikidata-sparql");
-            fetchRulesViaSPARQL("resource://data/tag2link.sophox.sparql", Config.getUrls().getJOSMWebsite() + "/remote/sophox-sparql");
+            initializeFromResources();
         } catch (Exception e) {
             Logging.error("Failed to initialize tag2link rules");
@@ -89,27 +85,19 @@
 
     /**
-     * Fetches rules from Wikidata using a SPARQL query.
+     * Initializes the tag2link rules from the resources.
      *
-     * @param query the SPARQL query
-     * @param server the query server
      * @throws IOException in case of I/O error
      */
-    private static void fetchRulesViaSPARQL(final String query, final String server) throws IOException {
-        final int initialSize = wikidataRules.size();
-        final String sparql;
-        try (CachedFile cachedFile = new CachedFile(query)) {
-            sparql = new String(cachedFile.getByteContent(), StandardCharsets.UTF_8);
-        }
-
+    private static void initializeFromResources() throws IOException {
+        final String resource = "META-INF/resources/webjars/tag2link/2020.5.16/index.json";
         final JsonArray rules;
-        try (CachedFile cachedFile = new CachedFile(server + "?query=" + Utils.encodeUrl(sparql));
-             BufferedReader reader = cachedFile.setHttpAccept("application/json").getContentReader();
-             JsonReader jsonReader = Json.createReader(reader)) {
-            rules = jsonReader.read().asJsonObject().getJsonObject("results").getJsonArray("bindings");
+        try (InputStream inputStream = Tag2Link.class.getClassLoader().getResourceAsStream(resource);
+             JsonReader jsonReader = Json.createReader(inputStream)) {
+            rules = jsonReader.readArray();
         }
 
         for (JsonValue rule : rules) {
-            final String key = rule.asJsonObject().getJsonObject("OSM_key").getString("value");
-            final String url = rule.asJsonObject().getJsonObject("formatter_URL").getString("value");
+            final String key = rule.asJsonObject().getString("key");
+            final String url = rule.asJsonObject().getString("url");
             if (key.startsWith("Key:")) {
                 wikidataRules.put(key.substring("Key:".length()), url);
@@ -120,9 +108,9 @@
                 .forEach(wikidataRules::remove);
 
-        final int size = wikidataRules.size() - initialSize;
+        final int size = wikidataRules.size();
         Logging.info(trn(
                 "Obtained {0} Tag2Link rule from {1}",
                 "Obtained {0} Tag2Link rules from {1}",
-                size, size, server));
+                size, size, resource));
     }
 
