package org.deri.vocidex.describers;
import org.codehaus.jackson.node.ObjectNode;
import org.deri.vocidex.SPARQLRunner;
import com.hp.hpl.jena.rdf.model.Resource;
public abstract class TermDescriber extends SPARQLDescriber {
protected final LabelDescriber labelDescriber;
private final String prefix;
public TermDescriber(SPARQLRunner source, String prefix) {
super(source);
this.prefix = prefix;
this.labelDescriber = new LabelDescriber(source);
}
public String getURI(Resource term) {
return term.getURI();
}
public String getLocalName(Resource term) {
return term.getLocalName();
}
public String getComment(Resource term) {
return getSource().getLangString("term-comment.sparql", term, "comment");
}
public void describe(String type, Resource term, ObjectNode descriptionRoot) {
descriptionRoot.put("type", type);
putString(descriptionRoot, "uri", getURI(term));
if (prefix != null) {
descriptionRoot.put("prefix", prefix);
descriptionRoot.put("prefixedName", prefix + ":" + getLocalName(term));
};
putString(descriptionRoot, "localName", getLocalName(term));
// Adds "label" key
labelDescriber.describe(term, descriptionRoot);
putString(descriptionRoot, "comment", getComment(term));
}
}