package org.aksw.sparqlify.algebra.sql.nodes; import java.util.List; import org.aksw.sparqlify.core.sql.schema.Schema; import org.apache.jena.atlas.io.IndentedWriter; /** * An SqlNode corresponds to an operator in the relational algebra. * Each SqlNode owns a (immutable) description of its corresponding schema. * * * @author Claus Stadler <cstadler@informatik.uni-leipzig.de> * */ public interface SqlOp { Schema getSchema(); boolean isEmpty(); // Whether the op indicates a zero-row-count relation public List<SqlOp> getSubOps(); //String getIndentedString(); void write(IndentedWriter writer); /** * Create a copy of the SqlOp with a projected schema. * The new schema will only hold information of the selected columns. * Used to filter an Op to only the referenced columns. * * This is different from a projection! */ SqlOp copy(Schema schema, List<SqlOp> newOps); }