// OPEn = OPE and OPEi < OPE for each 1 <= i <= n-1. [LAST_EQUAL]
if (axiom.getPropertyChain().size() < 2) {
profileViolations.add(new InsufficientPropertyExpressions(
getCurrentOntology(), axiom));
}
OWLObjectPropertyExpression superProp = axiom.getSuperProperty();
if (superProp.isOWLTopObjectProperty()
|| axiom.isEncodingOfTransitiveProperty()) {
// TOP or TRANSITIVE_PROP: no violation can occur
return;
}
List<OWLObjectPropertyExpression> chain = axiom.getPropertyChain();
OWLObjectPropertyExpression first = chain.get(0);
OWLObjectPropertyExpression last = chain.get(chain.size() - 1);
assert last != null;
// center part of the chain must be smaller in any case
for (int i = 1; i < chain.size() - 1; i++) {
OWLObjectPropertyExpression propB = chain.get(i);
assert propB != null;
if (getPropertyManager().isLessThan(superProp, propB)) {
profileViolations.add(new UseOfPropertyInChainCausesCycle(
getCurrentOntology(), axiom, propB));
}