package org.aksw.sparqlify.core.interfaces; import java.util.List; import java.util.Map; import org.aksw.jena_sparql_api.views.VarDefinition; import org.aksw.jena_sparql_api.views.ViewInstance; import org.aksw.sparqlify.core.domain.input.Mapping; import org.aksw.sparqlify.core.domain.input.ViewDefinition; import org.apache.jena.query.SortCondition; import org.apache.jena.sparql.core.Var; import org.apache.jena.sparql.core.VarExprList; import org.apache.jena.sparql.expr.ExprAggregator; import org.apache.jena.sparql.expr.ExprList; /** * Interface for the mapping algebra operations. * * @author Claus Stadler <cstadler@informatik.uni-leipzig.de> * */ public interface MappingOps { Mapping createMapping(ViewInstance<ViewDefinition> viewInstance); /** * Creates a new mapping with all column references * in the variable definition renamed, and injects an * approprate SqlProjection into the logical table */ Mapping rename(Mapping a, Map<String, String> columnRenames); Mapping join(Mapping a, Mapping b); Mapping leftJoin(Mapping a, Mapping b, ExprList exprs); // A binary union would be sucky to compute (permanently moving projections around) // Therfore we use one that deals with lists. Mapping union(List<Mapping> members); /** * * * @param a * @param limit The limit. Null for no limit * @param offset The offset. Null for no offset * @return */ Mapping slice(Mapping a, Long limit, Long offset); Mapping project(Mapping a, List<Var> vars); Mapping filter(Mapping a, ExprList exprs); Mapping distinct(Mapping a); Mapping groupBy(Mapping a, VarExprList groupVars, List<ExprAggregator> aggregators); Mapping extend(Mapping a, VarDefinition varDef); Mapping order(Mapping a, List<SortCondition> sortConditions); }