docs: private void fetchSubclassHierarchy() throws IOException {
  		System.out.println("Fetching subclass relationships from SPARQL ...");
  		try (InputStream response = runSparqlQuery("PREFIX ps: <http://www.wikidata.org/prop/statement/>\n"
  				+ "PREFIX p: <http://www.wikidata.org/prop/>\n"
  				+ "SELECT ?subC ?supC WHERE { ?subC p:P279/ps:P279 ?supC }")) {
  			System.out.println("Processing subclass relationships ...");
  
  			// DEBUG
  			// BufferedReader br = new BufferedReader(new InputStreamReader(
  			// response));
  			// String read;
  			// while ((read = br.readLine()) != null) {
  			// System.out.println(read);
  			// }
  			// System.out.println("*** done ***");
  
  			ObjectMapper mapper = new ObjectMapper();
  			JsonNode root = mapper.readTree(response);
  			JsonNode bindings = root.path("results").path("bindings");
  			int count = 0;
  			for (JsonNode binding : bindings) {
  				count++;
  				Integer subId = getNumId(binding.path("subC").path("value")
  						.asText(), true);
  				Integer supId = getNumId(binding.path("supC").path("value")
  						.asText(), true);
  				if (supId == 0 || subId == 0) {
  					System.out.println("Ignoring "
  							+ binding.path("subC").path("value").asText()
  							+ " subClassOf "
  							+ binding.path("supC").path("value").asText());
  					continue;
  				}
  				getClassRecord(subId).directSuperClasses.add(supId);
  				ClassRecord superClass = getClassRecord(supId);
  				superClass.subclassCount++;
  				if (count % 10000 == 0) {
  					System.out.print("*");
  				}
  			}
  			System.out.println("Found " + count
  					+ " subclass relationships among "
  					+ this.classRecords.size() + " Wikidata items.");
  
  			System.out.println("Computing indirect subclass relationships ...");
  			for (ClassRecord classRecord : this.classRecords.values()) {
  				for (Integer superClass : classRecord.directSuperClasses) {
  					addSuperClasses(superClass, classRecord);
  				}
  			}
  
  			System.out.println("Computing total subclass counts ...");
  			for (ClassRecord classRecord : this.classRecords.values()) {
  				for (Integer superClass : classRecord.superClasses) {
  					getClassRecord(superClass).allSubclassCount++;
  				}
  			}
  
  			System.out.println("Preprocessing of class hierarchy complete.");
  		}
  	}