/*
* Created on May 7, 2004
*/
package org.mindswap.swoop.utils.owlapi;
import java.net.URI;
import java.util.Hashtable;
import java.util.Iterator;
import org.semanticweb.owl.io.ShortFormProvider;
import org.semanticweb.owl.io.vocabulary.OWLVocabularyAdapter;
import org.semanticweb.owl.io.vocabulary.RDFSVocabularyAdapter;
import org.semanticweb.owl.io.vocabulary.RDFVocabularyAdapter;
import org.semanticweb.owl.io.vocabulary.XMLSchemaSimpleDatatypeVocabulary;
/**
* @author Evren Sirin
*/
public class DefaultShortFormProvider implements ShortFormProvider {
Hashtable alwaysOn;
/* (non-Javadoc)
* @see org.mindswap.swoop.ShortFormProvider#shortForm(java.net.URI)
*/
public DefaultShortFormProvider() {
// AK: adding namespaces that should always be displayed
alwaysOn = new Hashtable();
alwaysOn.put(OWLVocabularyAdapter.OWL, "owl");
alwaysOn.put(RDFSVocabularyAdapter.RDFS, "rdfs");
alwaysOn.put(RDFVocabularyAdapter.RDF, "rdf");
alwaysOn.put(XMLSchemaSimpleDatatypeVocabulary.XS, "xsd");
}
public String shortForm(URI uri) {
String label = uri.toString();
String label2 = uri.toString();
// AK: adding namespaces that should always be displayed
String prefix = "";
Iterator iter = alwaysOn.keySet().iterator();
while (iter.hasNext()) {
String alwaysOnURI = iter.next().toString();
if (label.startsWith(alwaysOnURI)) prefix = alwaysOn.get(alwaysOnURI).toString()+":";
}
if (label.endsWith("#")) {
label = label.substring(0, label.length()-1);
label2 = label;
}
// urn support
if ((label.startsWith("urn")) || ((label.indexOf("#")==-1) && (label.indexOf("/")==-1))) {
label = label.substring(label.lastIndexOf(":")+1, label.length());
return label;
}
if (label.indexOf("#")>=0) {
label = label.substring(label.indexOf("#")+1, label.length());
}
else {
label2= label.substring(0, label.lastIndexOf("/"));
label = label.substring(label.lastIndexOf("/")+1, label.length());
if (label.length()==0) {
label2 = label2.substring(label2.lastIndexOf("/")+1, label2.length());
return(prefix+label2);
}
}
return prefix+label;
}
}