diff --git a/wdtk-examples/src/main/java/org/wikidata/wdtk/examples/ClassPropertyUsageAnalyzer.java b/wdtk-examples/src/main/java/org/wikidata/wdtk/examples/ClassPropertyUsageAnalyzer.java index 89ae1db32..171c5b4b5 100644 --- a/wdtk-examples/src/main/java/org/wikidata/wdtk/examples/ClassPropertyUsageAnalyzer.java +++ b/wdtk-examples/src/main/java/org/wikidata/wdtk/examples/ClassPropertyUsageAnalyzer.java @@ -107,7 +107,6 @@ private abstract class UsageRecord { * The description of this item. If there isn't any English * description available, the description is set to a hyphen. */ - // public String description; } /** @@ -616,33 +615,43 @@ private void writePropertyData() { */ private void writeClassData() { try (PrintStream out = new PrintStream( - ExampleHelpers.openExampleFileOuputStream("Classes.csv"), + ExampleHelpers.openExampleFileOuputStream("classes.js"), true, "UTF-8")) { - - out.println("Id" + ",Label" + ",URL" - + ",Image" - + ",Number of direct instances" - + ",Number of direct subclasses" - + ",Direct superclasses" - + ",All superclasses" - + ",Related properties"); - + out.println("classes = \"{"); + out.println("}\";"); List> list = new ArrayList<>( this.classRecords.entrySet()); Collections.sort(list, new ClassUsageRecordComparator()); for (Entry entry : list) { - if (entry.getValue().itemCount > 0 - || entry.getValue().subclassCount > 0) { - printClassRecord(out, entry.getValue(), - entry.getKey()); - } + printClassRecord(out, entry.getValue(), + entry.getKey()); } - } catch (IOException e) { e.printStackTrace(); } } + /* + * private void writeClassData() { try (PrintStream out = new + * PrintStream( + * ExampleHelpers.openExampleFileOuputStream("Classes.csv"), true, + * "UTF-8")) { + * + * out.println("Id" + ",Label" + ",URL" + ",Image" + + * ",Number of direct instances" + ",Number of direct subclasses" + + * ",Direct superclasses" + ",All superclasses" + + * ",Related properties"); + * + * List> list = new ArrayList<>( + * this.classRecords.entrySet()); Collections.sort(list, new + * ClassUsageRecordComparator()); for (Entry + * entry : list) { if (entry.getValue().itemCount > 0 || + * entry.getValue().subclassCount > 0) { printClassRecord(out, + * entry.getValue(), entry.getKey()); } } + * + * } catch (IOException e) { e.printStackTrace(); } } + */ + /** * Prints the data for a single class to the given stream. This will be * a single line in CSV. @@ -656,25 +665,51 @@ private void writeClassData() { */ private void printClassRecord(PrintStream out, ClassRecord classRecord, EntityIdValue entityIdValue) { - printTerms(out, classRecord, entityIdValue); - printImage(out, classRecord); - - out.print("," + classRecord.itemCount + "," - + classRecord.subclassCount); - - printClassList(out, classRecord.superClasses); - - HashSet superClasses = new HashSet<>(); - for (EntityIdValue superClass : classRecord.superClasses) { - addSuperClasses(superClass, superClasses); - } - - printClassList(out, superClasses); + StringBuilder builder = new StringBuilder(); + builder.append(jsonStringEscape(entityIdValueToInt(entityIdValue))) + .append(":{"); + builder.append(jsonStringEscape("label")).append(":") + .append(jsonStringEscape(classRecord.label)) + .append(","); + builder.append(jsonStringEscape("items")).append(":") + .append(classRecord.itemCount).append(","); + builder.append(buildStringForRelatedProperties(classRecord)); + builder.append("}"); + out.println(builder.toString()); + } + + private String buildStringForRelatedProperties(ClassRecord classRecord) { + return ""; + } - printRelatedProperties(out, classRecord); + private String jsonStringEscape(String string) { + string = string.replace("\\", "\\\\\\\\"); + return "\\\"" + string.replace("\"", "\\\\\"") + "\\\""; + } - out.println(""); + private String entityIdValueToInt(EntityIdValue entityIdValue) { + return entityIdValue.getId().substring(1); } + /* + * private void printClassRecord(PrintStream out, ClassRecord + * classRecord, EntityIdValue entityIdValue) { printTerms(out, + * classRecord, entityIdValue); printImage(out, classRecord); + * + * out.print("," + classRecord.itemCount + "," + + * classRecord.subclassCount); + * + * printClassList(out, classRecord.superClasses); + * + * HashSet superClasses = new HashSet<>(); for + * (EntityIdValue superClass : classRecord.superClasses) { + * addSuperClasses(superClass, superClasses); } + * + * printClassList(out, superClasses); + * + * printRelatedProperties(out, classRecord); + * + * out.println(""); } + */ /** * Prints the URL of a thumbnail for the given item document to the