package esl.cuenet.query;
import com.hp.hpl.jena.ontology.OntModel;
import com.hp.hpl.jena.ontology.ProfileRegistry;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.vocabulary.RDF;
import com.hp.hpl.jena.vocabulary.VCARD;
import esl.cuenet.mapper.parser.MappingParser;
import esl.cuenet.mapper.parser.ParseException;
import esl.cuenet.mapper.tree.*;
import org.junit.Test;
import test.TestBase;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
public class QueryEngineTest extends TestBase {
@Test
public void parseSingleQuery() {
// OntModel model = ModelFactory.createOntologyModel(ProfileRegistry.OWL_LANG);
//
// String personURI = "http://somewhere/arjun-satish-uri";
// String givenName = "Arjun";
// String familyName = "Satish";
// String fullName = givenName + " " + familyName;
//
// model.createResource(personURI).addProperty(VCARD.FN, fullName)
// .addProperty(VCARD.N, model.createResource()
// .addProperty(VCARD.Given, givenName)
// .addProperty(VCARD.Family, familyName));
//
// personURI = "http://somewhere/john-smith-uri";
// givenName = "John";
// familyName = "Smith";
// fullName = givenName + " " + familyName;
//
// model.createResource(personURI).addProperty(VCARD.FN, fullName)
// .addProperty(VCARD.N, model.createResource()
// .addProperty(VCARD.Given, givenName)
// .addProperty(VCARD.Family, familyName));
//
// personURI = "http://somewhere/adarsh-satish-uri";
// givenName = "Adarsh";
// familyName = "Satish";
// fullName = givenName + " " + familyName;
//
// model.createResource(personURI).addProperty(VCARD.FN, fullName)
// .addProperty(VCARD.N, model.createResource()
// .addProperty(VCARD.Given, givenName)
// .addProperty(VCARD.Family, familyName));
// String queryString = "SELECT ?x ?givenName ?name" +
// " WHERE { " +
// "?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> ?fullname . " +
// "?x <http://www.w3.org/2001/vcard-rdf/3.0#N> ?name . " +
// "?x <http://www.w3.org/2001/vcard-rdf/3.0#AGE> 40 . " +
// "?name <http://www.w3.org/2001/vcard-rdf/3.0#Given> ?givenName . " +
// " FILTER (?x!=<http://somewhere/arjun-satish-uri> && ?givenName!=\"Nujre\") }";
OntModel 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();
}
SourceMapper mapper = getSourceMapper(model, "./mappings/sources.map");
String queryString = "SELECT ?x " +
" WHERE { " +
"?x <" + RDF.type + "> <http://www.w3.org/1999/02/22-rdf-syntax-ns#event> . " +
"?p <http://www.semanticweb.org/arjun/cuenet-main.owl#participant-in> ?x ." +
"?p <" + RDF.type + "> <http://www.semanticweb.org/arjun/cuenet-main.owl#person> ." +
"?p <http://www.semanticweb.org/arjun/cuenet-main.owl#email> \"arjun.satish@gmail.com\" ." +
"?p <http://www.semanticweb.org/arjun/cuenet-main.owl#name> \"Arjun Satish\" }";
System.out.println(queryString);
QueryEngine engine = new QueryEngine(model, mapper);
engine.execute(queryString);
}
private SourceMapper getSourceMapper(OntModel model,String filename) {
MappingParser parser = null;
try {
parser = new MappingParser(new FileInputStream(filename));
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
parser.setIParseTreeCreator(new ParseTree(filename));
IParseTree tree = null;
try {
tree = parser.parse_document();
} catch (ParseException e) {
e.printStackTrace();
}
ParseTreeInterpreter interpreter = new ParseTreeInterpreter(tree);
interpreter.setOntologyModel(model);
try {
interpreter.interpret();
} catch (SourceParseException e) {
e.printStackTrace();
}
return interpreter.getSourceMapper();
}
}