package at.ac.univie.mminf.qskos4j.util.vocab;
import org.openrdf.OpenRDFException;
import org.openrdf.model.Resource;
import org.openrdf.model.URI;
import org.openrdf.model.impl.URIImpl;
import org.openrdf.repository.Repository;
import org.openrdf.repository.RepositoryConnection;
import org.openrdf.repository.sail.SailRepository;
import org.openrdf.rio.RDFFormat;
import org.openrdf.sail.memory.MemoryStore;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.net.URL;
public class SkosOntology {
private final static Logger logger = LoggerFactory.getLogger(SkosOntology.class);
public final static String SKOS_BASE_URI = "http://www.w3.org/2004/02/skos/core";
public final static String SKOS_ONTO_URI = "http://www.w3.org/2009/08/skos-reference/skos.rdf";
private static SkosOntology ourInstance = new SkosOntology();
private static Repository skosRepo;
public static SkosOntology getInstance() {
if (skosRepo == null) {
try {
ourInstance.createSkosRepo();
}
catch (Exception e) {
logger.error("Error creating SKOS repository", e);
}
}
return ourInstance;
}
private void createSkosRepo() throws OpenRDFException, IOException {
skosRepo = new SailRepository(new MemoryStore());
skosRepo.initialize();
RepositoryConnection repCon = skosRepo.getConnection();
try {
repCon.add(new URL(SKOS_ONTO_URI),
SKOS_BASE_URI,
RDFFormat.RDFXML);
}
finally {
repCon.close();
}
}
private SkosOntology() {
}
public URI getUri(String element) {
return new URIImpl(SKOS_BASE_URI +"#"+ element);
}
public Repository getRepository() {
return skosRepo;
}
public boolean isSkosResource(Resource resource) {
return resource.stringValue().startsWith(SparqlPrefix.SKOS.getNameSpace());
}
}