package com.bigdata.perf.chem2bio2rdf; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import org.openrdf.query.GraphQueryResult; import org.openrdf.query.TupleQueryResult; import com.bigdata.BigdataStatics; import com.bigdata.util.httpd.Config; import com.bigdata.rdf.sail.webapp.client.DefaultClientConnectionManagerFactory; import com.bigdata.rdf.sail.webapp.client.IPreparedGraphQuery; import com.bigdata.rdf.sail.webapp.client.IPreparedTupleQuery; import com.bigdata.rdf.sail.webapp.client.RemoteRepository; public class TestQuery { private static String query = "PREFIX c2b2r_chembl: <http://chem2bio2rdf.org/chembl/resource/> " + "PREFIX drugbank: <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/> " + "SELECT ?alogp ?hha ?hhd ?molformula ?molweight ?mw_freebase ?num_ro5_violations ?psa ?rtb " + "?affectedOrganism ?biotransformation ?description ?indication ?meltingPoint ?proteinBinding ?toxicity " + "WHERE { " + "GRAPH <file:///home/OPS/develop/openphacts/datasets/chem2bio2rdf/chembl.nt> { " + "OPTIONAL { <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> c2b2r_chembl:alogp ?alogp } " + "OPTIONAL { <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> c2b2r_chembl:hha ?hha } " + "OPTIONAL { <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> c2b2r_chembl:hhd ?hhd } " + "OPTIONAL { <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> c2b2r_chembl:molformula ?molformula } " + "OPTIONAL { <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> c2b2r_chembl:molweight ?molweight } " + "OPTIONAL { <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> c2b2r_chembl:mw_freebase ?mw_freebase } " + "OPTIONAL { <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> c2b2r_chembl:num_ro5_violations ?num_ro5_violations } " + "OPTIONAL { <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> c2b2r_chembl:psa ?psa } " + "OPTIONAL { <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> c2b2r_chembl:rtb ?rtb } " + "} " + "GRAPH <http://linkedlifedata.com/resource/drugbank> { " + "OPTIONAL {<http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugs/DB00398> drugbank:affectedOrganism ?affectedOrganism } " + "OPTIONAL {<http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugs/DB00398> drugbank:biotransformation ?biotransformation } " + "OPTIONAL {<http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugs/DB00398> drugbank:description ?description } " + "} " + "OPTIONAL {<http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugs/DB00398> drugbank:indication ?indication } " + "OPTIONAL {<http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugs/DB00398> drugbank:proteinBinding ?proteinBinding } " + "OPTIONAL {<http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugs/DB00398> drugbank:toxicity ?toxicity } " + "OPTIONAL {<http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugs/DB00398> drugbank:meltingPoint ?meltingPoint} " + "}"; private static String query2 = "PREFIX c2b2r_chembl: <http://chem2bio2rdf.org/chembl/resource/> " + "PREFIX drugbank: <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/> " + "describe <http://chem2bio2rdf.org/chembl/resource/chembl_compounds/276734> <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugs/DB00398> "; /** * @param args */ public static void main(String[] args) throws Exception { final String serviceURL = "http://localhost:" + Config.BLAZEGRAPH_HTTP_PORT + BigdataStatics.getContextPath() + "/sparql"; final HttpClient httpClient = new DefaultHttpClient(DefaultClientConnectionManagerFactory.getInstance().newInstance()); final Executor executor = Executors.newCachedThreadPool(); final RemoteRepository repo = new RemoteRepository(serviceURL, httpClient, executor); long total = 0; for (int i = 0; i < 10; i++) { final long start = System.currentTimeMillis(); // final IPreparedTupleQuery tq = repo.prepareTupleQuery(query2); // // final TupleQueryResult result = tq.evaluate(); final IPreparedGraphQuery gq = repo.prepareGraphQuery(query2); final GraphQueryResult result = gq.evaluate(); int j = 0; while (result.hasNext()) { j++; result.next(); } result.close(); final long duration = System.currentTimeMillis() - start; total += duration; System.err.println("run " + i + ", " + duration + " millis, " + j + " results"); } final long average = total / 10; System.err.println("average time: " + average + " millis"); httpClient.getConnectionManager().shutdown(); System.exit(0); } }