default boolean addInverseRole(final ATerm s, final ATerm r, final DependencySet ds) { final Role roleS = getRole(s); final Role roleR = getRole(r); if (roleS == null || roleR == null || !roleS.isObjectRole() || !roleR.isObjectRole()) return false; else addEquivalentRole(roleS.getInverse().getName(), r, ds); return true; }
/** * @return the set of all object properties. */ default Set<ATermAppl> getObjectProperties() { final Set<ATermAppl> set = new HashSet<>(); for (final Role role : getRBox().getRoles().values()) { final ATermAppl p = role.getName(); if (ATermUtils.isPrimitive(p) && role.isObjectRole()) set.add(p); } return set; }
/** * @return the set of all object properties. */ default Set<ATermAppl> getObjectProperties() { final Set<ATermAppl> set = new HashSet<>(); for (final Role role : getRBox().getRoles().values()) { final ATermAppl p = role.getName(); if (ATermUtils.isPrimitive(p) && role.isObjectRole()) set.add(p); } return set; }
default boolean addInverseRole(final ATerm s, final ATerm r, final DependencySet ds) { final Role roleS = getRole(s); final Role roleR = getRole(r); if (roleS == null || roleR == null || !roleS.isObjectRole() || !roleR.isObjectRole()) return false; else addEquivalentRole(roleS.getInverse().getName(), r, ds); return true; }
/** * {@inheritDoc} */ @Override public boolean hasRNeighbor(final Role role) { return _outEdges.hasEdge(role) || role.isObjectRole() && _inEdges.hasEdge(role.getInverse()); }
/** * {@inheritDoc} */ @Override public boolean hasRNeighbor(final Role role) { return _outEdges.hasEdge(role) || role.isObjectRole() && _inEdges.hasEdge(role.getInverse()); }
/** * @return the set of all properties. */ public default Set<ATermAppl> getProperties() { final Set<ATermAppl> set = new HashSet<>(); for (final Role role : getRBox().getRoles().values()) { final ATermAppl p = role.getName(); if (ATermUtils.isPrimitive(p) && (role.isObjectRole() || role.isDatatypeRole() || role.isAnnotationRole())) set.add(p); } return set; }
/** * @return the set of all properties. */ public default Set<ATermAppl> getProperties() { final Set<ATermAppl> set = new HashSet<>(); for (final Role role : getRBox().getRoles().values()) { final ATermAppl p = role.getName(); if (ATermUtils.isPrimitive(p) && (role.isObjectRole() || role.isDatatypeRole() || role.isAnnotationRole())) set.add(p); } return set; }
public static ATermAppl selectRandomObjectProperty(final KnowledgeBaseImpl kb) { //get all classes final List<Role> roles = new ArrayList<>(kb.getRBox().getRoles().values()); Role role = null; do { role = roles.get(_rand.nextInt(roles.size())); } while (!role.isObjectRole()); return role.getName(); }
private static boolean intersectsRNeighbors(final Set<ATermAppl> samesAndMaybes, final CachedNode node, final Role role) { if (samesAndMaybes.isEmpty()) return false; for (final Edge edge : node.getOutEdges()) if (samesAndMaybes.contains(edge.getToName()) && edge.getRole().isSubRoleOf(role)) return true; if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) if (samesAndMaybes.contains(edge.getFromName()) && edge.getRole().isSubRoleOf(invRole)) return true; } return false; } }
private static Set<ATermAppl> getRNeighbors(final CachedNode node, final Role role) { final Set<ATermAppl> neighbors = new HashSet<>(); for (final Edge edge : node.getOutEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(role)) neighbors.add(edge.getToName()); } if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(invRole)) neighbors.add(edge.getFromName()); } } return neighbors; }
private static boolean intersectsRNeighbors(final Set<ATermAppl> samesAndMaybes, final CachedNode node, final Role role) { if (samesAndMaybes.isEmpty()) return false; for (final Edge edge : node.getOutEdges()) if (samesAndMaybes.contains(edge.getToName()) && edge.getRole().isSubRoleOf(role)) return true; if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) if (samesAndMaybes.contains(edge.getFromName()) && edge.getRole().isSubRoleOf(invRole)) return true; } return false; } }
private static Set<ATermAppl> getRNeighbors(final CachedNode node, final Role role) { final Set<ATermAppl> neighbors = new HashSet<>(); for (final Edge edge : node.getOutEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(role)) neighbors.add(edge.getToName()); } if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(invRole)) neighbors.add(edge.getFromName()); } } return neighbors; }
private static Set<ATermAppl> getRNeighbors(final CachedNode node, final Role role) { final Set<ATermAppl> neighbors = new HashSet<>(); for (final Edge edge : node.getOutEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(role)) neighbors.add(edge.getToName()); } if (role.isObjectRole()) { final Role invRole = role.getInverse(); for (final Edge edge : node.getInEdges()) { final Role r = edge.getRole(); if (r.isSubRoleOf(invRole)) neighbors.add(edge.getFromName()); } } return neighbors; }
private static MultiValueMap<ATermAppl, Role> collectNeighbors(final CachedNode ind) { final MultiValueMap<ATermAppl, Role> neighbors = new MultiValueMap<>(); for (final Edge edge : ind.getInEdges()) { final Role role = edge.getRole(); final ATermAppl neighbor = edge.getFromName(); if (!ATermUtils.isBnode(neighbor)) neighbors.putSingle(neighbor, role); } for (final Edge edge : ind.getOutEdges()) { final Role role = edge.getRole(); final ATermAppl neighbor = edge.getToName(); if (role.isObjectRole() && !ATermUtils.isBnode(neighbor)) neighbors.putSingle(neighbor, role.getInverse()); } return neighbors; }
private static MultiValueMap<ATermAppl, Role> collectNeighbors(final CachedNode ind) { final MultiValueMap<ATermAppl, Role> neighbors = new MultiValueMap<>(); for (final Edge edge : ind.getInEdges()) { final Role role = edge.getRole(); final ATermAppl neighbor = edge.getFromName(); if (!ATermUtils.isBnode(neighbor)) neighbors.putSingle(neighbor, role); } for (final Edge edge : ind.getOutEdges()) { final Role role = edge.getRole(); final ATermAppl neighbor = edge.getToName(); if (role.isObjectRole() && !ATermUtils.isBnode(neighbor)) neighbors.putSingle(neighbor, role.getInverse()); } return neighbors; }
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 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 void applyPropertyRestrictions(final Individual subj, final Role pred, final Node obj, final DependencySet ds) { applyDomainRange(subj, pred, obj, ds); if (subj.isPruned() || obj.isPruned()) return; applyFunctionality(subj, pred, obj); if (subj.isPruned() || obj.isPruned()) return; applyDisjointness(subj, pred, obj, ds); _allValuesRule.applyAllValues(subj, pred, obj, ds); if (subj.isPruned() || obj.isPruned()) return; if (pred.isObjectRole()) { final Individual o = (Individual) obj; _allValuesRule.applyAllValues(o, pred.getInverse(), subj, ds); checkReflexivitySymmetry(subj, pred, o, ds); checkReflexivitySymmetry(o, pred.getInverse(), subj, ds); applyDisjointness(o, pred.getInverse(), subj, ds); } }
public void applyPropertyRestrictions(final Individual subj, final Role pred, final Node obj, final DependencySet ds) { applyDomainRange(subj, pred, obj, ds); if (subj.isPruned() || obj.isPruned()) return; applyFunctionality(subj, pred, obj); if (subj.isPruned() || obj.isPruned()) return; applyDisjointness(subj, pred, obj, ds); _allValuesRule.applyAllValues(subj, pred, obj, ds); if (subj.isPruned() || obj.isPruned()) return; if (pred.isObjectRole()) { final Individual o = (Individual) obj; _allValuesRule.applyAllValues(o, pred.getInverse(), subj, ds); checkReflexivitySymmetry(subj, pred, o, ds); checkReflexivitySymmetry(o, pred.getInverse(), subj, ds); applyDisjointness(o, pred.getInverse(), subj, ds); } }