package com.google.gwt.ricordo.server;
import virtuoso.jena.driver.VirtGraph;
import virtuoso.jena.driver.VirtuosoQueryExecution;
import virtuoso.jena.driver.VirtuosoQueryExecutionFactory;
import virtuoso.jena.driver.VirtuosoUpdateFactory;
import virtuoso.jena.driver.VirtuosoUpdateRequest;
import com.hp.hpl.jena.query.ResultSet;
public class RDFHandler {
private static final String BQBIOL = "PREFIX bqbiol: <http://biomodels.net/biology-qualifiers/>";
private static final String RCMD = "PREFIX rcmd: <http://www.ebi.ac.uk/ricordo/model#>";
private static final String SBMLO = "PREFIX sbmlo: <http://www.ebi.ac.uk/ricordo/toolbox/sbmlo/>";
private static final String SPACE =" ";
private static final String INFERANCE ="define input:inference \"ricordo_rule\"";
private static final String RICORDO ="<http://ricordotest.com>";
private VirtGraph graph = null;
public RDFHandler(){
//graph = new VirtGraph ("jdbc:virtuoso://localhost:1111", "dba", "dba");
graph = new VirtGraph ("jdbc:virtuoso://bioonto.gen.cam.ac.uk:1111", "dba", "dba");
}
public ResultSet getModelQuery(String miriumUrn){
StringBuffer buffer = new StringBuffer();
buffer.append(INFERANCE).append(SPACE);
buffer.append(RCMD).append(SPACE);
buffer.append("SELECT DISTINCT ?m COUNT (?s)").append(SPACE);
buffer.append("FROM ").append(RICORDO).append(SPACE);
buffer.append("WHERE { ?s rcmd:elementOf ?m . ?s ?p <").append(miriumUrn).append("> } GROUP BY ?m");
System.out.println(buffer.toString());
VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create (buffer.toString(), graph);
return vqe.execSelect();
}
public ResultSet getVariableQuery(String modelName, String miriumUrn){
StringBuffer buffer = new StringBuffer();
buffer.append(INFERANCE).append(SPACE);
buffer.append(RCMD).append(SPACE);
buffer.append("SELECT DISTINCT ?s ?p").append(SPACE);
buffer.append("FROM ").append(RICORDO).append(SPACE);
buffer.append("WHERE { ?s rcmd:elementOf <").append(modelName).append("> . ?s ?p <").append(miriumUrn).append("> }");
VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create (buffer.toString(), graph);
return vqe.execSelect();
}
public ResultSet getVariableQuery(String modelName){
StringBuffer buffer = new StringBuffer();
buffer.append(INFERANCE).append(SPACE);
buffer.append(RCMD).append(SPACE);
buffer.append("SELECT DISTINCT ?s").append(SPACE);
buffer.append("FROM ").append(RICORDO).append(SPACE);
buffer.append("WHERE { ?s rcmd:elementOf <").append(modelName).append("> }");
VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create (buffer.toString(), graph);
return vqe.execSelect();
}
public ResultSet getVariableAnnotationQuery(String variableName){
StringBuffer buffer = new StringBuffer();
buffer.append(INFERANCE).append(SPACE);
buffer.append(RCMD).append(SPACE);
buffer.append("SELECT DISTINCT ?p ?o").append(SPACE);
buffer.append("FROM ").append(RICORDO).append(SPACE);
buffer.append("WHERE { <").append(variableName).append("> ?p ?o . FILTER regex(str(?p), \"biology\")} ");
VirtuosoQueryExecution vqe = VirtuosoQueryExecutionFactory.create (buffer.toString(), graph);
return vqe.execSelect();
}
public void insertAnnotString(String variableName, String property, String annotValue){
StringBuffer buffer = new StringBuffer();
buffer.append("INSERT INTO GRAPH ").append(RICORDO).append(SPACE);
buffer.append("{ <").append(variableName).append("> <http://biomodels.net/biology-qualifiers/").append(property).append("> <").append(annotValue).append("> }");
VirtuosoUpdateRequest vur = VirtuosoUpdateFactory.create(buffer.toString(), graph);
System.out.println(buffer.toString());
vur.exec();
}
}