/* * (c) Copyright 2010 Epimorphics Ltd. * All rights reserved. * [See end of file] */ package reports; import org.openjena.atlas.logging.Log ; import com.hp.hpl.jena.query.ARQ ; import com.hp.hpl.jena.query.QueryExecution ; import com.hp.hpl.jena.query.QueryExecutionFactory ; import com.hp.hpl.jena.query.QuerySolution ; import com.hp.hpl.jena.query.ResultSet ; import com.hp.hpl.jena.rdf.model.RDFNode ; public class ReportRemoteVirtuoso { static { Log.setLog4j() ; } public static void main(String[] args) { String service = "http://pubmed.bio2rdf.org/sparql"; String querystring = "PREFIX dc: \n" + "PREFIX pub: \n" + "PREFIX pubres: \n" + "PREFIX foaf: \n" + "select ?title ?mesh ?last ?first \n" + "where { \n" + "pub:18231773 dc:title ?title . \n" + "pub:18231773 pubres:subject_headings ?mesh . \n" + "pub:18231773 pubres:author ?authorid . \n" + "?authorid foaf:lastName ?last . \n" + "?authorid foaf:firstName ?first . \n" + "} "; ResultSet results = remoteSelectQuery(service, querystring); String[] kws = {"title", "mesh", "author"}; // long count = ResultSetFormatter.consume(results) ; // System.out.println("Count = "+count) ; printResults(results, kws); } private static ResultSet remoteSelectQuery(String service, String querystring) { System.out.println(querystring); if ( true ) ARQ.getContext().setTrue(ARQ.useSAX) ; QueryExecution qexec = QueryExecutionFactory.sparqlService(service, querystring); try { return qexec.execSelect(); } finally { //****** TOO EARLY qexec.close(); } } private static void printResults(ResultSet results, String[] strings) { int line = 0 ; while (results.hasNext()) { line++ ; System.out.printf("%03d: ", line) ; QuerySolution soln = results.nextSolution(); for (String s : strings) { RDFNode x = soln.get(s); // Get a result variable by name. if (x != null) { System.out.println(s + ": " + x.toString()); } } } } } /* * (c) Copyright 2010 Epimorphics Ltd. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */