public static DatalogProgram program(Collection<CQIE> rules){ DatalogProgram datalogProgram = DATALOG_FACTORY.getDatalogProgram(); datalogProgram.appendRule(rules); return datalogProgram; }
@Override public DatalogProgram getDatalogProgram(MutableQueryModifiers modifiers, Collection<CQIE> rules) { DatalogProgram p = new DatalogProgramImpl(modifiers); p.appendRule(rules); return p; }
private void appendRule(Function head, List<Function> body) { CQIE rule = datalogFactory.getCQIE(head, body); program.appendRule(rule); }
/** * Translate the swrl_rule * Return a datalog program containing the supported datalog facts * @param rule an SWRLRule * @return DatalogProgram */ public DatalogProgram createDatalog(SWRLRule rule){ rule.accept(this); if (notSupported){ log.warn("Not Supported Translation of: "+ errors); errors.clear(); } DatalogProgram dp = datalogFactory.getDatalogProgram(); dp.appendRule(facts); return dp; }
private CQIE createRule(DatalogProgram pr, String headName, List<Term> headParameters, Function... body) { Predicate pred = datalogFactory.getSubqueryPredicate(headName, headParameters.size()); Function head = termFactory.getFunction(pred, headParameters); CQIE rule = datalogFactory.getCQIE(head, body); pr.appendRule(rule); return rule; }
@Override public DatalogProgram getDatalogProgram(MutableQueryModifiers modifiers, Collection<CQIE> rules) { DatalogProgram p = new DatalogProgramImpl(); p.appendRule(rules); p.getQueryModifiers().copy(modifiers); return p; }
/** * Translate the swrl_rules contained in the ontology * Return a datalog program containing the supported datalog facts * @param onto an OWLOntology * @return DatalogProgram */ public DatalogProgram createDatalog(OWLOntology onto) { for (OWLAxiom axiom: onto.getAxioms()){ if(axiom.getAxiomType().equals(AxiomType.SWRL_RULE)){ SWRLRule rule =(SWRLRule) axiom; rule.accept(this); if (notSupported){ log.warn("Not Supported Translation of: "+ errors); errors.clear(); } } } DatalogProgram dp = datalogFactory.getDatalogProgram(); dp.appendRule(facts); return dp; }
atoms); pr.appendRule(newrule);
@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; }
pr.appendRule(newrule);
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()); }