package org.deri.vocidex.describers;
import org.codehaus.jackson.node.ObjectNode;
import org.deri.vocidex.SPARQLRunner;
import com.hp.hpl.jena.query.QuerySolution;
import com.hp.hpl.jena.rdf.model.Resource;
/**
* Produces a JSON description of a vocabulary, using the metadata present in LOV.
*
* @author Richard Cyganiak
*/
public class LOVVocabularyDescriber extends SPARQLDescriber {
public final static String TYPE = "vocabulary";
public LOVVocabularyDescriber(SPARQLRunner source) {
super(source);
}
public void describe(Resource vocabulary, ObjectNode descriptionRoot) {
QuerySolution qs = getSource().getOneSolution("describe-lov-vocab.sparql", "vocab", vocabulary);
descriptionRoot.put("type", TYPE);
putString(descriptionRoot, "uri", vocabulary.getURI());
putString(descriptionRoot, "prefix", qs.get("prefix").asLiteral().getLexicalForm());
putString(descriptionRoot, "label", qs.get("title").asLiteral().getLexicalForm());
putString(descriptionRoot, "shortLabel", qs.contains("shortTitle") ? qs.get("shortTitle").asLiteral().getLexicalForm() : null);
putString(descriptionRoot, "comment", qs.contains("description") ? qs.get("description").asLiteral().getLexicalForm() : null);
putString(descriptionRoot, "homepage", qs.contains("homepage") ? qs.get("homepage").asResource().getURI() : null);
}
}