package org.nextprot.api.rdf.utils; import java.util.HashMap; import java.util.Map; public class RdfPrefixUtils { private static Map<String, String> ns2pfx = null; public static String getPrefixFromNameSpace(String prefixes, String ns) { initialize(prefixes); return ns2pfx.get(ns); } public static String getPrefixedNameFromURI(String prefixes, String uri) { initialize(prefixes); String ns = ""; String ln = ""; for (String k : ns2pfx.keySet()) { if (uri.startsWith(k) && k.length() > ns.length()) ns = k; } ln = uri.substring(ns.length()); if (ns2pfx.containsKey(ns)) ns = ns2pfx.get(ns); return ns + ln; } private static void initialize(String prefixes) { if (ns2pfx == null) { ns2pfx = new HashMap<String, String>(); // replaces any TAB with SPACE & remove contiguous SPACEs String pfx = prefixes.replace("\t", " "); int lng = pfx.length(); while (true) { pfx = pfx.replace(" ", " "); if (pfx.length() == lng) break; lng = pfx.length(); } // put namespace -> prefix into the map String[] lines = pfx.split("\n"); for (int i = 0; i < lines.length; i++) { String line = lines[i].trim(); String[] elems = line.split(" "); String ns = elems[2].replace("<", "").replace(">", ""); String px = elems[1]; ns2pfx.put(ns, px); } } } }