/** * init c'tor */ public SyntacticLocalityChecker() { topEval = new TopEquivalenceEvaluator(this); botEval = new BotEquivalenceEvaluator(this); }
@Override public void visit(OWLClass expr) { isBotEq = !getSignature().topCLocal() && !getSignature().contains(expr); }
/** * @return true iff EXPR is bottom equivalent */ @Override public boolean isBotEquivalent(OWLObject expr) { return botEval.isBotEquivalent(expr); }
/** * @param n cardinality * @param r property * @param c class * @return true iff (<= n R.C) is botEq */ private boolean isMaxBotEquivalent(int n, OWLPropertyExpression r, OWLPropertyRange c) { return isBotEquivalent(r) && isCardLargerThan(c, n); }
@Override public void visit(OWLDataExactCardinality expr) { int n = expr.getCardinality(); isBotEq = isMinBotEquivalent(n, expr.getProperty(), expr.getFiller()) || isMaxBotEquivalent(n, expr .getProperty(), expr.getFiller()); }
@Override public void visit(OWLObjectSomeValuesFrom expr) { isBotEq = isMinBotEquivalent(1, expr.getProperty(), expr.getFiller()); }
@Override public void visit(OWLDataMaxCardinality expr) { isBotEq = isMaxBotEquivalent(expr.getCardinality(), expr.getProperty(), expr.getFiller()); }
/** * cardinality of a concept/data expression interpretation * * @param c class * @param n cardinality * @return true if #C^I > n */ private boolean isCardLargerThan(OWLObject c, int n) { if (n == 0) { return isBotDistinct(c); } if (c instanceof OWLDatatype) { return ((OWLDatatype) c).isBuiltIn() && !((OWLDatatype) c).getBuiltInDatatype() .isFinite(); } // FIXME!! try to be more precise return false; }
@Override public void visit(OWLObjectExactCardinality expr) { int n = expr.getCardinality(); isBotEq = isMinBotEquivalent(n, expr.getProperty(), expr.getFiller()) || isMaxBotEquivalent(n, expr .getProperty(), expr.getFiller()); }
/** * @param n cardinality * @param r property * @param c class * @return true iff (<= n R.C) is botEq */ private boolean isMaxBotEquivalent(int n, OWLPropertyExpression r, OWLPropertyRange c) { return isBotEquivalent(r) && isCardLargerThan(c, n); }
@Override public void visit(OWLObjectSomeValuesFrom expr) { isBotEq = isMinBotEquivalent(1, expr.getProperty(), expr.getFiller()); }
@Override public void visit(OWLObjectMaxCardinality expr) { isBotEq = isMaxBotEquivalent(expr.getCardinality(), expr.getProperty(), expr.getFiller()); }
/** * cardinality of a concept/data expression interpretation * * @param c class * @param n cardinality * @return true if #C^I > n */ private boolean isCardLargerThan(OWLObject c, int n) { if (n == 0) { return isBotDistinct(c); } if (c instanceof OWLDatatype) { return ((OWLDatatype) c).isBuiltIn() && !((OWLDatatype) c).getBuiltInDatatype() .isFinite(); } // FIXME!! try to be more precise return false; }
/** * @return true iff EXPR is bottom equivalent */ @Override public boolean isBotEquivalent(OWLObject expr) { return botEval.isBotEquivalent(expr); }
@Override public void visit(OWLDataExactCardinality expr) { int n = expr.getCardinality(); isBotEq = isMinBotEquivalent(n, expr.getProperty(), expr.getFiller()) || isMaxBotEquivalent(n, expr .getProperty(), expr.getFiller()); }
/** * @param n cardinality * @param r property * @param c class * @return true iff (<= n R.C) is botEq */ private boolean isMaxBotEquivalent(int n, OWLPropertyExpression r, OWLPropertyRange c) { return isBotEquivalent(r) && isCardLargerThan(c, n); }
@Override public void visit(OWLDataSomeValuesFrom expr) { isBotEq = isMinBotEquivalent(1, expr.getProperty(), expr.getFiller()); }
@Override public void visit(OWLClass expr) { isBotEq = !getSignature().topCLocal() && !getSignature().contains(expr); }
@Override public void visit(OWLObjectMaxCardinality expr) { isBotEq = isMaxBotEquivalent(expr.getCardinality(), expr.getProperty(), expr.getFiller()); }
/** * init c'tor */ public SyntacticLocalityChecker() { topEval = new TopEquivalenceEvaluator(this); botEval = new BotEquivalenceEvaluator(this); }