/* * Copyright Aduna (http://www.aduna-software.com/) (c) 2007. * * Licensed under the Aduna BSD-style license. */ package org.openrdf.query.dawg; import org.openrdf.model.Graph; import org.openrdf.model.Statement; import org.openrdf.model.impl.GraphImpl; import org.openrdf.query.QueryEvaluationException; import org.openrdf.query.TupleQueryResult; import org.openrdf.query.TupleQueryResultHandlerException; import org.openrdf.query.impl.TupleQueryResultBuilder; import org.openrdf.rio.RDFHandlerException; import org.openrdf.rio.helpers.StatementCollector; /** * @author Arjohn Kampman */ public class DAWGTestResultSetUtil { public static TupleQueryResult toTupleQueryResult(Iterable<? extends Statement> dawgGraph) throws DAWGTestResultSetParseException { TupleQueryResultBuilder tqrBuilder = new TupleQueryResultBuilder(); DAWGTestResultSetParser parser = new DAWGTestResultSetParser(tqrBuilder); try { parser.startRDF(); for (Statement st : dawgGraph) { parser.handleStatement(st); } parser.endRDF(); return tqrBuilder.getQueryResult(); } catch (RDFHandlerException e) { throw new DAWGTestResultSetParseException(e.getMessage(), e); } } public static Graph toGraph(TupleQueryResult tqr) throws QueryEvaluationException { Graph graph = new GraphImpl(); DAWGTestResultSetWriter writer = new DAWGTestResultSetWriter(new StatementCollector(graph)); try { writer.startQueryResult(tqr.getBindingNames()); while (tqr.hasNext()) { writer.handleSolution(tqr.next()); } writer.endQueryResult(); } catch (TupleQueryResultHandlerException e) { // No exceptions expected from DAWGTestResultSetWriter or // StatementCollector, foud a bug? throw new RuntimeException(e); } return graph; } public static boolean toBooleanQueryResult(Iterable<? extends Statement> dawgGraph) throws DAWGTestResultSetParseException { DAWGTestBooleanParser parser = new DAWGTestBooleanParser(); try { parser.startRDF(); for (Statement st : dawgGraph) { parser.handleStatement(st); } parser.endRDF(); return parser.getValue(); } catch (RDFHandlerException e) { throw new DAWGTestResultSetParseException(e.getMessage(), e); } } }