package model;
import com.hp.hpl.jena.ontology.OntClass;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.OntProperty;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;
import com.hp.hpl.jena.vocabulary.RDF;
import esl.cuenet.ranking.URINode;
import esl.system.SysLoggerUtils;
import org.apache.log4j.Logger;
import org.junit.BeforeClass;
import org.junit.Test;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
public class OntologyReadTests {
private static OntModel model = null;
private Logger logger = Logger.getLogger(OntologyReadTests.class);
@BeforeClass
public static void setup() {
SysLoggerUtils.initLogger();
model = ModelFactory.createOntologyModel();
try {
model.read(new FileReader("/home/arjun/Documents/Dropbox/Ontologies/cuenet-main/cuenet-main.owl"),
"http://www.semanticweb.org/arjun/cuenet-main.owl");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
@Test
public void listBlanks() {
HashMap<String, URINode> blankNodeMap = new HashMap<String, URINode>(100);
Resource subject;
RDFNode object;
StmtIterator iter = model.listStatements();
while (iter.hasNext()) {
Statement statement = iter.nextStatement();
subject = statement.getSubject();
object = statement.getObject();
if (subject.asNode().isBlank())
blankNodeMap.put(subject.toString(), null);
if (object.asNode().isBlank())
blankNodeMap.put(object.toString(), null);
}
for (String s: blankNodeMap.keySet()) logger.info(s);
}
@Test
public void listClasses() {
ExtendedIterator<OntClass> eIter = model.listClasses();
while (eIter.hasNext()) {
OntClass eit = eIter.next();
// logger.info(eit + " => " + eit.isRestriction());
}
}
@Test
public void listProperties() {
ExtendedIterator<OntProperty> eIter = model.listAllOntProperties();
while (eIter.hasNext()) {
String uri = eIter.next().getURI();
// if (uri.trim().length() > 0) logger.info(uri);
}
}
@Test
public void listStatements() {
Resource subject, predicate;
RDFNode object;
Set<String> types = new HashSet<String>();
StmtIterator iter = model.listStatements();
while (iter.hasNext()) {
Statement statement = iter.nextStatement();
subject = statement.getSubject();
predicate = statement.getPredicate();
object = statement.getObject();
// if (subject.asNode().isBlank())
logger.info(subject + " => " + (predicate) + " .... " + object);
if (predicate.equals(RDF.type)) {
types.add(object.toString());
// logger.info(subject + " => " + (predicate) + " .... " + object);
}
}
// for (String s: types) logger.info(s);
}
}