/** * The results of this function is not guaranteed to be complete. Use {@link ClassesBase#hasRange(ATermAppl, ATermAppl)} to get complete answers. * * @param name * @return the domain restrictions on the property. */ public default Set<ATermAppl> getRanges(final ATerm name) { if (null == name) return Collections.emptySet(); ensureConsistency(); final Set<ATermAppl> set = Collections.emptySet(); final Role prop = getRBox().getRole(name); if (prop == null) { Base.handleUndefinedEntity(name + _isNotAnProperty); return set; } return ATermUtils.primitiveOrBottom(prop.getRanges()); }
/** * The results of this function is not guaranteed to be complete. Use {@link ClassesBase#hasRange(ATermAppl, ATermAppl)} to get complete answers. * * @param name * @return the domain restrictions on the property. */ public default Set<ATermAppl> getRanges(final ATerm name) { if (null == name) return Collections.emptySet(); ensureConsistency(); final Set<ATermAppl> set = Collections.emptySet(); final Role prop = getRBox().getRole(name); if (prop == null) { Base.handleUndefinedEntity(name + _isNotAnProperty); return set; } return ATermUtils.primitiveOrBottom(prop.getRanges()); }
public void applyDomainRange(final Individual subj, final Role pred, final Node obj, final DependencySet ds) { final Set<ATermAppl> domains = pred.getDomains(); final Set<ATermAppl> ranges = pred.getRanges(); for (final ATermAppl domain : domains) { if (_logger.isLoggable(Level.FINE) && !subj.hasType(domain)) _logger.fine("DOM : " + obj + " <- " + pred + " <- " + subj + " : " + ATermUtils.toString(domain)); addType(subj, domain, ds.union(pred.getExplainDomain(domain), _abox.doExplanation())); if (subj.isPruned() || obj.isPruned()) return; } for (final ATermAppl range : ranges) { if (_logger.isLoggable(Level.FINE) && !obj.hasType(range)) _logger.fine("RAN : " + subj + " -> " + pred + " -> " + obj + " : " + ATermUtils.toString(range)); addType(obj, range, ds.union(pred.getExplainRange(range), _abox.doExplanation())); if (subj.isPruned() || obj.isPruned()) return; } }
public void applyDomainRange(final Individual subj, final Role pred, final Node obj, final DependencySet ds) { final Set<ATermAppl> domains = pred.getDomains(); final Set<ATermAppl> ranges = pred.getRanges(); for (final ATermAppl domain : domains) { if (_logger.isLoggable(Level.FINE) && !subj.hasType(domain)) _logger.fine("DOM : " + obj + " <- " + pred + " <- " + subj + " : " + ATermUtils.toString(domain)); addType(subj, domain, ds.union(pred.getExplainDomain(domain), _abox.doExplanation())); if (subj.isPruned() || obj.isPruned()) return; } for (final ATermAppl range : ranges) { if (_logger.isLoggable(Level.FINE) && !obj.hasType(range)) _logger.fine("RAN : " + subj + " -> " + pred + " -> " + obj + " : " + ATermUtils.toString(range)); addType(obj, range, ds.union(pred.getExplainRange(range), _abox.doExplanation())); if (subj.isPruned() || obj.isPruned()) return; } }
if (obj instanceof AtomIVariable) final Set<ATermAppl> ranges = getRole(prop).getRanges(); if (ranges != null) MultiMapUtils.addAll(types, obj, ranges);
if (obj instanceof AtomIVariable) final Set<ATermAppl> ranges = getRole(prop).getRanges(); if (ranges != null) MultiMapUtils.addAll(types, obj, ranges);
if (role1.isObjectRole()) final ATermAppl c = !role1.getRanges().isEmpty() ? role1.getRanges().iterator().next() : !role2.getRanges().isEmpty() ? role2.getRanges().iterator().next() : ATermUtils.makeTermAppl("_C_"); final ATermAppl notC = ATermUtils.makeNot(c); test = ATermUtils.makeOr(ATermUtils.makeAnd(ATermUtils.makeSomeValues(p1, c), ATermUtils.makeAllValues(p2, notC)), ATermUtils.makeAnd(ATermUtils.makeSomeValues(p2, c), ATermUtils.makeAllValues(p1, notC)));
if (role1.isObjectRole()) final ATermAppl c = !role1.getRanges().isEmpty() ? role1.getRanges().iterator().next() : !role2.getRanges().isEmpty() ? role2.getRanges().iterator().next() : ATermUtils.makeTermAppl("_C_"); final ATermAppl notC = ATermUtils.makeNot(c); test = ATermUtils.makeOr(ATermUtils.makeAnd(ATermUtils.makeSomeValues(p1, c), ATermUtils.makeAllValues(p2, notC)), ATermUtils.makeAnd(ATermUtils.makeSomeValues(p2, c), ATermUtils.makeAllValues(p1, notC)));
public void applyUniversalRestrictions(final Individual node) { addType(node, ATermUtils.TOP, DependencySet.INDEPENDENT); final Set<Role> reflexives = _abox.getKB().getRBox().getReflexiveRoles(); for (final Role r : reflexives) { _logger.fine(() -> "REF : " + node + " " + r); addEdge(node, r, node, r.getExplainReflexive()); if (node.isMerged()) return; } final Role topObjProp = _abox.getKB().getRole(ATermUtils.TOP_OBJECT_PROPERTY); for (final ATermAppl domain : topObjProp.getDomains()) { addType(node, domain, topObjProp.getExplainDomain(domain)); if (node.isMerged()) continue; } for (final ATermAppl range : topObjProp.getRanges()) { addType(node, range, topObjProp.getExplainRange(range)); if (node.isMerged()) continue; } }
public void applyUniversalRestrictions(final Individual node) { addType(node, ATermUtils.TOP, DependencySet.INDEPENDENT); final Set<Role> reflexives = _abox.getKB().getRBox().getReflexiveRoles(); for (final Role r : reflexives) { _logger.fine(() -> "REF : " + node + " " + r); addEdge(node, r, node, r.getExplainReflexive()); if (node.isMerged()) return; } final Role topObjProp = _abox.getKB().getRole(ATermUtils.TOP_OBJECT_PROPERTY); for (final ATermAppl domain : topObjProp.getDomains()) { addType(node, domain, topObjProp.getExplainDomain(domain)); if (node.isMerged()) continue; } for (final ATermAppl range : topObjProp.getRanges()) { addType(node, range, topObjProp.getExplainRange(range)); if (node.isMerged()) continue; } }
final Set<ATermAppl> ranges = r.getRanges(); if (ranges != null) if (rangeToDatatype)
final Set<ATermAppl> ranges = r.getRanges(); if (!ranges.isEmpty() && !ranges.equals(TOP_SET))
final Set<ATermAppl> ranges = r.getRanges(); if (!ranges.isEmpty() && !ranges.equals(TOP_SET))
final Set<ATermAppl> ranges = r.getRanges(); if (ranges != null) if (rangeToDatatype)
final Set<ATermAppl> ranges = r.getRanges(); if (ranges != null) if (rangeToDatatype)
final DependencySet ds = e.getDepends(); for (final ATermAppl range : pred.getRanges()) if (requiredAddType(node, range)) if (!OpenlletOptions.USE_TRACING)
final DependencySet ds = e.getDepends(); for (final ATermAppl range : pred.getRanges()) if (requiredAddType(node, range)) if (!OpenlletOptions.USE_TRACING)
@Test public void testIncrementalTBoxDisjointRemove6() { // test that a disjoint axiom absorbed into range axiom cannot // be removed final Properties newOptions = new PropertiesBuilder().set("USE_TRACING", "true").set("USE_ROLE_ABSORPTION", "true").build(); final Properties savedOptions = OpenlletOptions.setOptions(newOptions); try { final ATermAppl A = ATermUtils.makeTermAppl("A"); final ATermAppl p = ATermUtils.makeTermAppl("p"); final KnowledgeBase kb = new KnowledgeBaseImpl(); kb.addClass(A); kb.addObjectProperty(p); kb.addSubClass(TOP, all(p, A)); final Role r = kb.getRole(p); assertTrue(kb.isConsistent()); assertTrue(r.getRanges().contains(A)); assertFalse(kb.removeAxiom(ATermUtils.makeSub(TOP, all(p, A)))); } finally { OpenlletOptions.setOptions(savedOptions); } }