private boolean hasOrderByClause(DatalogProgram query) { boolean toReturn = false; if (query.getQueryModifiers().hasModifiers()) { final List<OrderCondition> conditions = query.getQueryModifiers() .getSortConditions(); toReturn = (!conditions.isEmpty()); } return toReturn; }
private boolean hasSelectDistinctStatement(DatalogProgram query) { boolean toReturn = false; if (query.getQueryModifiers().hasModifiers()) { toReturn = query.getQueryModifiers().isDistinct(); } return toReturn; }
@Override public DatalogProgram getDatalogProgram(MutableQueryModifiers modifiers) { DatalogProgram p = new DatalogProgramImpl(); p.getQueryModifiers().copy(modifiers); return p; }
@Override public DatalogProgram getDatalogProgram(MutableQueryModifiers modifiers, Collection<CQIE> rules) { DatalogProgram p = new DatalogProgramImpl(); p.appendRule(rules); p.getQueryModifiers().copy(modifiers); return p; }
@Override public DatalogProgram getSameAsRewriting(DatalogProgram pr) { if (targetPredicates == null) targetPredicates = SameAsTargets.extract(saturatedMapping); DatalogProgram result = datalogFactory.getDatalogProgram(pr.getQueryModifiers()); for (CQIE q: pr.getRules()) { List<Function> body = new ArrayList<>(q.getBody().size()); for (Function a : q.getBody()) { Function ap = addSameAs(a, result, "sameAs" + (rules++)); body.add(ap); } result.appendRule(datalogFactory.getCQIE(q.getHead(), body)); } return result; }
Optional<ImmutableQueryModifiers> topQueryModifiers = convertModifiers(queryProgram.getQueryModifiers());
private IQ preProcess(InternalSparqlQuery translation) throws OntopInvalidInputQueryException, EmptyQueryException { DatalogProgram program = translation.getProgram(); log.debug("Datalog program translated from the SPARQL query: \n{}", program); if(settings.isSameAsInMappingsEnabled()){ program = sameAsRewriter.getSameAsRewriting(program); log.debug("Datalog program after SameAs rewriting \n{}", program); } log.debug("Replacing equivalences..."); DatalogProgram newprogramEq = datalogFactory.getDatalogProgram(program.getQueryModifiers()); for (CQIE query : program.getRules()) { CQIE rule = query.clone(); // EQNormalizer cannot be removed because it is used in NULL propagation in OPTIONAL eqNormalizer.enforceEqualities(rule); newprogramEq.appendRule(rule); } if (newprogramEq.getRules().isEmpty()) throw new OntopInvalidInputQueryException("Error, the translation of the query generated 0 rules. " + "This is not possible for any SELECT query (other queries are not supported by the translator)."); return datalogConverter.convertDatalogProgram(newprogramEq, ImmutableList.of(), translation.getSignature()); }
Optional<ImmutableQueryModifiers> topQueryModifiers = convertModifiers(queryProgram.getQueryModifiers());
if (queryProgram.getQueryModifiers().hasModifiers()) { final String outerViewName = "SUB_QVIEW"; String subquery = generateQuery(signature, ruleIndex, predicatesInBottomUp, extensionalPredicates); List<OrderCondition> conditions = queryProgram.getQueryModifiers().getSortConditions(); List<Variable> groupby = queryProgram.getQueryModifiers().getGroupConditions(); long limit = queryProgram.getQueryModifiers().getLimit(); long offset = queryProgram.getQueryModifiers().getOffset();
DatalogProgram programAfterRewriting = datalogFactory.getDatalogProgram(program.getQueryModifiers(), outputRules); IQ convertedIQ = datalogConverter.convertDatalogProgram(programAfterRewriting, ImmutableList.of(), query.getProjectionAtom().getArguments());
MutableQueryModifiers modifiers = program.getQueryModifiers(); modifiers.setOffset(slice.getOffset()); modifiers.setLimit(slice.getLimit()); program.getQueryModifiers().setDistinct(); return translate(distinct.getArg()); MutableQueryModifiers modifiers = program.getQueryModifiers(); for (OrderElem c : order.getElements()) { ValueExpr expression = c.getExpr();
MutableQueryModifiers queryModifiers = queryProgram.getQueryModifiers(); isDistinct = queryModifiers.hasModifiers() && queryModifiers.isDistinct(); isOrderBy = queryModifiers.hasModifiers() && !queryModifiers.getSortConditions().isEmpty();
MutableQueryModifiers queryModifiers = queryProgram.getQueryModifiers(); isDistinct = queryModifiers.hasModifiers() && queryModifiers.isDistinct(); isOrderBy = queryModifiers.hasModifiers() && !queryModifiers.getSortConditions().isEmpty();