Skip to content

Commit

Permalink
fixes bug: vocab.mapping-based rewriting of query pattern should not …
Browse files Browse the repository at this point in the history
…fail if there is a FILTER inside the pattern! (applying the vocab.mapping to such a FILTER is a different thing, captured by #257)
  • Loading branch information
hartig committed Apr 25, 2023
1 parent f9ddead commit 8efde46
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ public Graph getVocabularyMappingAsGraph() {
}

@Override
public Set<SolutionMapping> translateSolutionMapping( final SolutionMapping sm) {
public Set<SolutionMapping> translateSolutionMapping( final SolutionMapping sm ) {
Set<BindingBuilder> bbs = new HashSet<>();
bbs.add( BindingBuilder.create() );

Expand Down Expand Up @@ -384,7 +384,8 @@ public Set<SolutionMapping> translateSolutionMapping( final SolutionMapping sm)

final Set<SolutionMapping> results = new HashSet<>();
for (final BindingBuilder b : bbs) {
results.add(new SolutionMappingImpl(b.build()));
final SolutionMapping translatedSM = new SolutionMappingImpl( b.build() );
results.add(translatedSM);
}
return results;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@
import org.apache.jena.graph.Triple;
import org.apache.jena.sparql.algebra.Op;
import org.apache.jena.sparql.algebra.op.OpBGP;
import org.apache.jena.sparql.algebra.op.OpFilter;
import org.apache.jena.sparql.algebra.op.OpJoin;
import org.apache.jena.sparql.algebra.op.OpSequence;
import org.apache.jena.sparql.algebra.op.OpUnion;
import org.apache.jena.sparql.expr.ExprList;

import se.liu.ida.hefquin.engine.data.VocabularyMapping;
import se.liu.ida.hefquin.engine.query.BGP;
Expand All @@ -21,6 +23,7 @@
import se.liu.ida.hefquin.engine.query.impl.BGPImpl;
import se.liu.ida.hefquin.engine.query.impl.GenericSPARQLGraphPatternImpl1;
import se.liu.ida.hefquin.engine.query.impl.GenericSPARQLGraphPatternImpl2;
import se.liu.ida.hefquin.engine.query.impl.QueryPatternUtils;
import se.liu.ida.hefquin.engine.query.impl.SPARQLGroupPatternImpl;
import se.liu.ida.hefquin.engine.query.impl.SPARQLUnionPatternImpl;
import se.liu.ida.hefquin.engine.query.impl.TriplePatternImpl;
Expand Down Expand Up @@ -113,11 +116,9 @@ public static SPARQLGraphPattern translateGraphPattern( final Op op,
else if ( op instanceof OpUnion ) {
return translateGraphPattern( (OpUnion) op, vm );
}
/* TODO
else if ( op instanceof OpFilter ) {
return translateGraphPattern( (OpFilter) op, vm );
}
*/
else if ( op instanceof OpBGP ) {
return translateGraphPattern( (OpBGP) op, vm );
}
Expand Down Expand Up @@ -191,4 +192,19 @@ public static SPARQLGraphPattern translateGraphPattern( final OpSequence op,
return new SPARQLGroupPatternImpl(subPatterns);
}

public static SPARQLGraphPattern translateGraphPattern( final OpFilter op,
final VocabularyMapping vm ) {
final Op subOp = op.getSubOp();
final SPARQLGraphPattern translatedSubPlan = translateGraphPattern(subOp, vm);
final ExprList translatedExprs = translateExpressions( op.getExprs(), vm );
return QueryPatternUtils.merge(translatedExprs, translatedSubPlan);
}

public static ExprList translateExpressions( final ExprList exprs,
final VocabularyMapping vm ) {
// TODO: translate the filter expressions

return exprs;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ public LogicalPlan apply( final LogicalPlan inputPlan ) {
} else if (inputPlan.getRootOperator() instanceof LogicalOpFilter){
final LogicalOpFilter filterOp = (LogicalOpFilter) inputPlan.getRootOperator();
final LogicalPlan rw = rewriteToUseLocalVocabulary(inputPlan.getSubPlan(0));
// TODO: the expressions of 'filterOp' should be rewritten too
return new LogicalPlanWithUnaryRootImpl(filterOp,rw);
} else {
throw new IllegalArgumentException("The given logical plan is not supported by this function because it has a root operator of type: " + inputPlan.getRootOperator().getClass().getName() );
Expand Down

0 comments on commit 8efde46

Please sign in to comment.