private static boolean isFunctionalSafe(final Role role, final CachedNode node) { return !role.isFunctional() || getRNeighbors(node, role).isEmpty(); }
private static boolean isFunctionalSafe(final Role role, final CachedNode node) { return !role.isFunctional() || getRNeighbors(node, role).isEmpty(); }
private static boolean isParentFunctionalSafe(final Role role, final Individual parent) { return !role.isFunctional() || parent.getRNeighbors(role).size() <= 1; }
private static boolean isParentFunctionalSafe(final Role role, final Individual parent) { return !role.isFunctional() || parent.getRNeighbors(role).size() <= 1; }
default Set<ATermAppl> getFunctionalProperties() { final Set<ATermAppl> set = new HashSet<>(); for (final Role role : getRBox().getRoles().values()) { final ATermAppl p = role.getName(); if (ATermUtils.isPrimitive(p) && role.isFunctional()) set.add(p); } set.add(ATermUtils.BOTTOM_DATA_PROPERTY); set.add(ATermUtils.BOTTOM_OBJECT_PROPERTY); return set; }
default Set<ATermAppl> getFunctionalProperties() { final Set<ATermAppl> set = new HashSet<>(); for (final Role role : getRBox().getRoles().values()) { final ATermAppl p = role.getName(); if (ATermUtils.isPrimitive(p) && role.isFunctional()) set.add(p); } set.add(ATermUtils.BOTTOM_DATA_PROPERTY); set.add(ATermUtils.BOTTOM_OBJECT_PROPERTY); return set; }
if (!role.isFunctional()) continue; if (role == null || !role.isFunctional()) continue;
if (!role.isFunctional()) continue; if (role == null || !role.isFunctional()) continue;
public int getMaxCard(final Role r) { int min = Integer.MAX_VALUE; for (final ATermAppl mc : _types[MAX]) { // max(r, n) is in normalized form not(min(p, n + 1)) final ATermAppl maxCard = (ATermAppl) mc.getArgument(0); final Role maxR = _abox.getRole(maxCard.getArgument(0)); final int max = ((ATermInt) maxCard.getArgument(1)).getInt() - 1; if (r.isSubRoleOf(maxR) && max < min) min = max; } if (r.isFunctional() && min > 1) min = 1; return min; }
public void applyFunctionality(final Individual subj, final Role pred, final Node obj) { DependencySet maxCardDS = pred.isFunctional() ? pred.getExplainFunctional() : subj.hasMax1(pred); if (maxCardDS != null) _maxRule.applyFunctionalMaxRule(subj, pred, ATermUtils.getTop(pred), maxCardDS); if (pred.isDatatypeRole() && pred.isInverseFunctional()) applyFunctionalMaxRule((Literal) obj, pred, DependencySet.INDEPENDENT); else if (pred.isObjectRole()) { final Individual val = (Individual) obj; final Role invR = pred.getInverse(); maxCardDS = invR.isFunctional() ? invR.getExplainFunctional() : val.hasMax1(invR); if (maxCardDS != null) _maxRule.applyFunctionalMaxRule(val, invR, ATermUtils.TOP, maxCardDS); } }
public int getMaxCard(final Role r) { int min = Integer.MAX_VALUE; for (final ATermAppl mc : _types[MAX]) { // max(r, n) is in normalized form not(min(p, n + 1)) final ATermAppl maxCard = (ATermAppl) mc.getArgument(0); final Role maxR = _abox.getRole(maxCard.getArgument(0)); final int max = ((ATermInt) maxCard.getArgument(1)).getInt() - 1; if (r.isSubRoleOf(maxR) && max < min) min = max; } if (r.isFunctional() && min > 1) min = 1; return min; }
public void applyFunctionality(final Individual subj, final Role pred, final Node obj) { DependencySet maxCardDS = pred.isFunctional() ? pred.getExplainFunctional() : subj.hasMax1(pred); if (maxCardDS != null) _maxRule.applyFunctionalMaxRule(subj, pred, ATermUtils.getTop(pred), maxCardDS); if (pred.isDatatypeRole() && pred.isInverseFunctional()) applyFunctionalMaxRule((Literal) obj, pred, DependencySet.INDEPENDENT); else if (pred.isObjectRole()) { final Individual val = (Individual) obj; final Role invR = pred.getInverse(); maxCardDS = invR.isFunctional() ? invR.getExplainFunctional() : val.hasMax1(invR); if (maxCardDS != null) _maxRule.applyFunctionalMaxRule(val, invR, ATermUtils.TOP, maxCardDS); } }
public boolean isRedundantMax(final ATermAppl maxCard) { final Role maxR = _abox.getRole(maxCard.getArgument(0)); if (maxR == null) return false; final int max = ((ATermInt) maxCard.getArgument(1)).getInt() - 1; if (max == 1 && maxR.isFunctional()) return true; final ATermAppl maxQ = (ATermAppl) maxCard.getArgument(2); for (final ATermAppl mc : _types[MAX]) { // max(r, n) is in normalized form not(min(p, n + 1)) final ATermAppl prevMaxCard = (ATermAppl) mc.getArgument(0); final Role prevMaxR = _abox.getRole(prevMaxCard.getArgument(0)); if (prevMaxR == null) continue; final int prevMax = ((ATermInt) prevMaxCard.getArgument(1)).getInt() - 1; final ATermAppl prevMaxQ = (ATermAppl) prevMaxCard.getArgument(2); if (max >= prevMax && maxR.isSubRoleOf(prevMaxR) && (maxQ.equals(prevMaxQ) || ATermUtils.isTop(prevMaxQ))) return true; } return false; }
public boolean isRedundantMax(final ATermAppl maxCard) { final Role maxR = _abox.getRole(maxCard.getArgument(0)); if (maxR == null) return false; final int max = ((ATermInt) maxCard.getArgument(1)).getInt() - 1; if (max == 1 && maxR.isFunctional()) return true; final ATermAppl maxQ = (ATermAppl) maxCard.getArgument(2); for (final ATermAppl mc : _types[MAX]) { // max(r, n) is in normalized form not(min(p, n + 1)) final ATermAppl prevMaxCard = (ATermAppl) mc.getArgument(0); final Role prevMaxR = _abox.getRole(prevMaxCard.getArgument(0)); if (prevMaxR == null) continue; final int prevMax = ((ATermInt) prevMaxCard.getArgument(1)).getInt() - 1; final ATermAppl prevMaxQ = (ATermAppl) prevMaxCard.getArgument(2); if (max >= prevMax && maxR.isSubRoleOf(prevMaxR) && (maxQ.equals(prevMaxQ) || ATermUtils.isTop(prevMaxQ))) return true; } return false; }
if (role.isFunctional())
if (role.isFunctional())
default boolean isTransitiveProperty(final ATermAppl r) { if (null == r) return false; final Role role = getRole(r); if (role == null) { Base.handleUndefinedEntity(r + _isNotAnKnowProperty); return false; } if (role.isTransitive()) { if (doExplanation()) getABox().setExplanation(role.getExplainTransitive()); return true; } else if (!role.isObjectRole() || role.isFunctional() || role.isInverseFunctional()) return false; ensureConsistency(); final ATermAppl c = ATermUtils.makeTermAppl("_C_"); final ATermAppl notC = ATermUtils.makeNot(c); final ATermAppl test = ATermUtils.makeAnd(ATermUtils.makeSomeValues(r, ATermUtils.makeSomeValues(r, c)), ATermUtils.makeAllValues(r, notC)); return !getABox().isSatisfiable(test); }
default boolean isTransitiveProperty(final ATermAppl r) { if (null == r) return false; final Role role = getRole(r); if (role == null) { Base.handleUndefinedEntity(r + _isNotAnKnowProperty); return false; } if (role.isTransitive()) { if (doExplanation()) getABox().setExplanation(role.getExplainTransitive()); return true; } else if (!role.isObjectRole() || role.isFunctional() || role.isInverseFunctional()) return false; ensureConsistency(); final ATermAppl c = ATermUtils.makeTermAppl("_C_"); final ATermAppl notC = ATermUtils.makeNot(c); final ATermAppl test = ATermUtils.makeAnd(ATermUtils.makeSomeValues(r, ATermUtils.makeSomeValues(r, c)), ATermUtils.makeAllValues(r, notC)); return !getABox().isSatisfiable(test); }
final ATermAppl minC = (ATermAppl) minCard.getArgument(2); if (minR.isFunctional() && min > 1)
final ATermAppl minC = (ATermAppl) minCard.getArgument(2); if (minR.isFunctional() && min > 1)