// (c) 2005 Andreas Harth package org.olap4j.driver.olap4ld.linkeddata; import org.olap4j.driver.olap4ld.helper.GraphVizVisualisationVisitor; /** * A query plan. How to encode the plan is not yet clear is a plan constructed * out of a program or a rule? What happens to the program that is the answer to * a query and what to the program that is the "background knowledge"? * * @author aharth */ public class LogicalOlapQueryPlan { // root of the plan (might be arraylist in case there's a forrest/union/cart // product) LogicalOlapOp _root = null; /** * Constructor. */ public LogicalOlapQueryPlan(LogicalOlapOp root) { _root = root; } public String toString() { if (_root != null) return _root.toString(); return null; } /** * Generate the query plan (cascading iterators) based on the plan and the * Lexicon and the QuadIndex. * * Return a list of variable bindings in clear text. Maybe should have * something to return a list of statements as well (need to find out why * conjunctions are not allowed in the head). */ /* * public ValuesIterator generateIterator(Lexicon lex, QuadIndex quads) * throws IOException { return new ValuesIterator(lex, _root.iterator(lex, * quads)); } */ public String toXML() throws QueryException { // LogicalOlapQueryPlan2Xml rel2xml = new LogicalOlapQueryPlan2Xml(); // _root.accept(rel2xml); // // return (String)rel2xml.getNewRoot(); return null; } public String toDOT() throws QueryException { // Store dot notation GraphVizVisualisationVisitor graphvizvisitor = new GraphVizVisualisationVisitor(); _root.accept(graphvizvisitor); return (String) graphvizvisitor.getNewRoot(); } /** * Entry method that visits all nodes recursively and returns the root of * the transformed tree. */ public Object visitAll(LogicalOlapOperatorQueryPlanVisitor v) throws QueryException { _root.accept(v); return v.getNewRoot(); } }