package edu.isi.karma.kr2rml; import java.util.Collection; import java.util.HashSet; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; public class ShortHandURIGenerator { private Set<Prefix> prefixes = new HashSet<>(); private Map<String, Prefix> prefixMapping = new ConcurrentHashMap<>(); public ShortHandURI getShortHand(String URI) { Prefix p = prefixMapping.get(URI); if (p != null) { return createShortHand(URI, p); } for (Prefix prefix : prefixes) { if (URI.indexOf(prefix.getNamespace()) >= 0) { prefixMapping.put(URI, prefix); return createShortHand(URI, prefix); } } return new ShortHandURI(null, URI); } private ShortHandURI createShortHand(String URI, Prefix p) { if(URI.startsWith("<") || URI.endsWith(">")) { URI = URI.substring(URI.startsWith("<") ?1: 0, URI.endsWith(">")?URI.length()-1:URI.length()); } try{ return new ShortHandURI(p.getPrefix(), URI.substring(p.getNamespace().length())); } catch(Exception e) { return new ShortHandURI(null, URI); } } public void addPrefixes(Collection<Prefix> prefixes) { this.prefixes.addAll(prefixes); } }