// Path: src/edu/toronto/cs/xcurator/utils/IOUtils.java
// public class IOUtils {
// 
//     public static List<String> readFileLineByLine(String file) {
//         String content = null;
//         try {
//             content = FileUtils.readFileToString(new File(file));
//         } catch (IOException ex) {
//             Logger.getLogger(IOUtils.class.getName()).log(Level.SEVERE, null, ex);
//         }
//         List<String> lines = Arrays.asList(content.split("\\r\\n|\\n|\\r"));
//         return lines;
//     }
// 
//     public static <T> String printMapAsJson(Map<String, T> map) {
//         StringBuilder sb = new StringBuilder();
//         if (map.isEmpty()) {
//             return "{}";
//         }
//         sb.append("{");
//         for (String key : map.keySet()) {
//             final Object val = (Object) map.get(key);
//             sb.append("\"").append(key).append("\":");
//             if (val.getClass().isPrimitive()) {
//                 sb.append("\"");
//             }
//             sb.append(val.toString());
//             if (val.getClass().isPrimitive()) {
//                 sb.append("\"");
//             }
//             sb.append(",");
//         }
//         sb.deleteCharAt(sb.length() - 1);
//         sb.append("}");
//         return sb.toString();
//     }
// 
//     public static void main(String[] args) {
//         Map<String, String> map = new HashMap<>();
//         map.put("hello", "345");
//         map.put("bye", "byebye");
//         System.out.println(printMapAsJson(map));
//     }
// }


import edu.toronto.cs.xcurator.common.NsContext;
import edu.toronto.cs.xcurator.utils.IOUtils;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.w3c.dom.Element;

    // Return the XML type from which this entity was extracted
    public String getXmlTypeUri() {
        return xmlTypeUri;
    }

    public String getRdfTypeUri() {
        return rdfTypeUri;
    }

    public void resetRdfTypeUri(String typeUri) {
        rdfTypeUri = typeUri;
    }

    @Override
    public String toString() {
        StringBuilder sbForInstances = new StringBuilder();
        sbForInstances.append("[");
        if (!instances.isEmpty()) {
            for (Element elem : instances) {
                sbForInstances.append(elem.getNodeValue()).append(", ");
            }
            sbForInstances.deleteCharAt(sbForInstances.length() - 1);
            sbForInstances.deleteCharAt(sbForInstances.length() - 1);
        }
        sbForInstances.append("]");
        return "{"
                + "\"Schema\": {"
                + "\"namespaceContext\":" + "\"" + namespaceContext + "\""
                + ", \"xmlTypeUri\":" + "\"" + xmlTypeUri + "\""
// Path: src/edu/toronto/cs/xcurator/utils/IOUtils.java
// public class IOUtils {
// 
//     public static List<String> readFileLineByLine(String file) {
//         String content = null;
//         try {
//             content = FileUtils.readFileToString(new File(file));
//         } catch (IOException ex) {
//             Logger.getLogger(IOUtils.class.getName()).log(Level.SEVERE, null, ex);
//         }
//         List<String> lines = Arrays.asList(content.split("\\r\\n|\\n|\\r"));
//         return lines;
//     }
// 
//     public static <T> String printMapAsJson(Map<String, T> map) {
//         StringBuilder sb = new StringBuilder();
//         if (map.isEmpty()) {
//             return "{}";
//         }
//         sb.append("{");
//         for (String key : map.keySet()) {
//             final Object val = (Object) map.get(key);
//             sb.append("\"").append(key).append("\":");
//             if (val.getClass().isPrimitive()) {
//                 sb.append("\"");
//             }
//             sb.append(val.toString());
//             if (val.getClass().isPrimitive()) {
//                 sb.append("\"");
//             }
//             sb.append(",");
//         }
//         sb.deleteCharAt(sb.length() - 1);
//         sb.append("}");
//         return sb.toString();
//     }
// 
//     public static void main(String[] args) {
//         Map<String, String> map = new HashMap<>();
//         map.put("hello", "345");
//         map.put("bye", "byebye");
//         System.out.println(printMapAsJson(map));
//     }
// }


// Path: src/edu/toronto/cs/xcurator/mapping/Schema.java
import edu.toronto.cs.xcurator.common.NsContext;
import edu.toronto.cs.xcurator.utils.IOUtils;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.w3c.dom.Element;


    // Return the XML type from which this entity was extracted
    public String getXmlTypeUri() {
        return xmlTypeUri;
    }

    public String getRdfTypeUri() {
        return rdfTypeUri;
    }

    public void resetRdfTypeUri(String typeUri) {
        rdfTypeUri = typeUri;
    }

    @Override
    public String toString() {
        StringBuilder sbForInstances = new StringBuilder();
        sbForInstances.append("[");
        if (!instances.isEmpty()) {
            for (Element elem : instances) {
                sbForInstances.append(elem.getNodeValue()).append(", ");
            }
            sbForInstances.deleteCharAt(sbForInstances.length() - 1);
            sbForInstances.deleteCharAt(sbForInstances.length() - 1);
        }
        sbForInstances.append("]");
        return "{"
                + "\"Schema\": {"
                + "\"namespaceContext\":" + "\"" + namespaceContext + "\""
                + ", \"xmlTypeUri\":" + "\"" + xmlTypeUri + "\""
                + ", \"relations\":" + IOUtils.printMapAsJson(relations)