Search in sources :

Example 1 with MarkedRule

use of fr.lirmm.graphik.graal.rulesetanalyser.graph.MarkedVariableSet.MarkedRule in project graal by graphik-team.

the class StickyProperty method check.

public boolean check(MarkedVariableSet markedVariableSet) {
    int nbOccurence;
    for (MarkedRule mrule : markedVariableSet.getMarkedRuleCollection()) {
        for (Term mvar : mrule.markedVars) {
            nbOccurence = 0;
            CloseableIteratorWithoutException<Atom> it = mrule.rule.getBody().iterator();
            while (it.hasNext()) {
                Atom a = it.next();
                for (Term t : a) {
                    if (mvar.equals(t)) {
                        ++nbOccurence;
                        if (nbOccurence > 1) {
                            return false;
                        }
                    }
                }
            }
        }
    }
    return true;
}
Also used : Term(fr.lirmm.graphik.graal.api.core.Term) Atom(fr.lirmm.graphik.graal.api.core.Atom) MarkedRule(fr.lirmm.graphik.graal.rulesetanalyser.graph.MarkedVariableSet.MarkedRule)

Example 2 with MarkedRule

use of fr.lirmm.graphik.graal.rulesetanalyser.graph.MarkedVariableSet.MarkedRule in project graal by graphik-team.

the class WeaklyStickyProperty method check.

private boolean check(MarkedVariableSet markedVariableSet, GraphPositionDependencies gpd) {
    int nbOccurence;
    int position;
    boolean thereIsAFiniteRank;
    for (MarkedRule mrule : markedVariableSet.getMarkedRuleCollection()) {
        for (Term mvar : mrule.markedVars) {
            nbOccurence = 0;
            thereIsAFiniteRank = false;
            CloseableIteratorWithoutException<Atom> it = mrule.rule.getBody().iterator();
            while (it.hasNext()) {
                Atom a = it.next();
                position = -1;
                for (Term t : a) {
                    ++position;
                    if (mvar.equals(t)) {
                        ++nbOccurence;
                        if (gpd.isFiniteRank(a.getPredicate(), position)) {
                            thereIsAFiniteRank = true;
                        }
                    }
                }
            }
            if (nbOccurence > 1 && !thereIsAFiniteRank) {
                return false;
            }
        }
    }
    return true;
}
Also used : Term(fr.lirmm.graphik.graal.api.core.Term) Atom(fr.lirmm.graphik.graal.api.core.Atom) MarkedRule(fr.lirmm.graphik.graal.rulesetanalyser.graph.MarkedVariableSet.MarkedRule)

Aggregations

Atom (fr.lirmm.graphik.graal.api.core.Atom)2 Term (fr.lirmm.graphik.graal.api.core.Term)2 MarkedRule (fr.lirmm.graphik.graal.rulesetanalyser.graph.MarkedVariableSet.MarkedRule)2