package org.aksw.sparqlify.core.interfaces;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.aksw.jena_sparql_api.views.VarDefinition;
import org.aksw.sparqlify.core.domain.input.Mapping;
import org.aksw.sparqlify.core.domain.input.MappingUnion;
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;
/**
* TODO Work in progress...
* The question is, whether it is sufficient to only have a MappingUnion structure, or whether we should go for
* an analog to the ElementTreeAnalyzer
*
* Main motivation for this approach is group by / aggregation: When we encounter group by node, we may remove mappings
* which yield a type error with the aggregate function e.g. if such members would result in computing the sum of strings.
*
* @author raven
*
*/
public class MappingUnionOpsImpl
implements MappingUnionOps
{
private MappingOps mappingOps;
@Override
public MappingUnion rename(MappingUnion a, Map<String, String> columnRenames) {
// TODO Auto-generated method stub
return null;
}
@Override
public MappingUnion join(MappingUnion a, Mapping b) {
// TODO Auto-generated method stub
return null;
}
@Override
public MappingUnion leftJoin(MappingUnion a, Mapping b) {
// TODO Auto-generated method stub
return null;
}
@Override
public MappingUnion union(List<MappingUnion> members) {
// TODO Auto-generated method stub
return null;
}
@Override
public MappingUnion slice(MappingUnion a, Long limit, Long offset) {
// TODO Auto-generated method stub
return null;
}
@Override
public MappingUnion project(MappingUnion a, List<Var> vars) {
// TODO Auto-generated method stub
return null;
}
@Override
public MappingUnion filter(MappingUnion as, ExprList exprs) {
List<Mapping> ms = new ArrayList<Mapping>(as.getMappings().size());
for(Mapping a : as.getMappings()) {
Mapping m = mappingOps.filter(a, exprs);
if(!m.isEmpty()) {
ms.add(m);
}
}
MappingUnion result = new MappingUnion(ms);
return result;
}
@Override
public MappingUnion distinct(MappingUnion a) {
// TODO Auto-generated method stub
return null;
}
@Override
public MappingUnion groupBy(MappingUnion a, VarExprList groupVars,
List<ExprAggregator> aggregators) {
//mappingOps.groupBy(a, groupVars, aggregators)
return null;
}
@Override
public MappingUnion extend(MappingUnion a, VarDefinition varDef) {
// TODO Auto-generated method stub
return null;
}
@Override
public MappingUnion order(MappingUnion a, List<SortCondition> sortConditions) {
// TODO Auto-generated method stub
return null;
}
}