public RBoxImpl() { _fsmBuilder = new FSMBuilder(this); addDatatypeRole(ATermUtils.TOP_DATA_PROPERTY); addDatatypeRole(ATermUtils.BOTTOM_DATA_PROPERTY); final Role topObjProp = addObjectRole(ATermUtils.TOP_OBJECT_PROPERTY); final Role bottomObjProp = addObjectRole(ATermUtils.BOTTOM_OBJECT_PROPERTY); topObjProp.setTransitive(true, DependencySet.INDEPENDENT); topObjProp.setReflexive(true, DependencySet.INDEPENDENT); bottomObjProp.setIrreflexive(true, DependencySet.INDEPENDENT); bottomObjProp.setAsymmetric(true, DependencySet.INDEPENDENT); addEquivalentRole(topObjProp.getName(), topObjProp.getInverse().getName(), DependencySet.INDEPENDENT); addEquivalentRole(bottomObjProp.getName(), bottomObjProp.getInverse().getName(), DependencySet.INDEPENDENT); }
@Override public void computeSubRoles(final Role r, final Set<Role> subRoles, final Set<ATermList> subRoleChains, final Map<ATerm, DependencySet> dependencies, final DependencySet ds) { // check for loops if (subRoles.contains(r)) return; // reflexive subRoles.add(r); dependencies.put(r.getName(), ds); // transitive closure final Map<ATerm, DependencySet> immSubs = new ConcurrentHashMap<>(); computeImmediateSubRoles(r, immSubs); for (final Entry<ATerm, DependencySet> entry : immSubs.entrySet()) { final ATerm sub = entry.getKey(); final DependencySet subDS = OpenlletOptions.USE_TRACING ? ds.union(entry.getValue(), true) : DependencySet.INDEPENDENT; if (sub instanceof ATermAppl) { final Role subRole = getRole(sub); computeSubRoles(subRole, subRoles, subRoleChains, dependencies, subDS); } else { subRoleChains.add((ATermList) sub); dependencies.put(sub, subDS); } } }
@Override public Iterator<ATermAppl> getAssertedDomains(final Role r) { final Map<ATermAppl, Set<Set<ATermAppl>>> domains = getDomainAssertions().get(r); return domains == null ? IteratorUtils.<ATermAppl> emptyIterator() : new ValueIterator(new DomainRangeIterator(domains, r, true)); }
@Override public Iterator<ATermAppl> getAssertedRanges(final Role r) { final Map<ATermAppl, Set<Set<ATermAppl>>> ranges = getRangeAssertions().get(r); return ranges == null ? IteratorUtils.<ATermAppl> emptyIterator() : new ValueIterator(new DomainRangeIterator(ranges, r, false)); }
@Override public void computeImmediateSubRoles(final Role r, final Map<ATerm, DependencySet> subs) { final Role invR = r.getInverse(); if (invR != null && invR != r) { for (final Role invSubR : invR.getSubRoles()) { final Role subR = invSubR.getInverse(); if (subR == null) _logger.fine(() -> "Property " + invSubR + " was supposed to be an ObjectProperty but it is not!"); else if (subR != r) subs.put(subR.getName(), invR.getExplainSub(invSubR.getName())); } for (final ATermList roleChain : invR.getSubRoleChains()) subs.put(inverse(roleChain), invR.getExplainSub(roleChain)); } for (final Role sub : r.getSubRoles()) subs.put(sub.getName(), r.getExplainSub(sub.getName())); for (final ATermList subChain : r.getSubRoleChains()) subs.put(subChain, r.getExplainSub(subChain)); }
@Override public void clear() { if (_abox == null) _abox = new ABoxImpl(this); else { final boolean doExplanation = _abox.doExplanation(); final boolean keepLastCompletion = _abox.isKeepLastCompletion(); _abox = new ABoxImpl(this); _abox.setDoExplanation(doExplanation); _abox.setKeepLastCompletion(keepLastCompletion); } _tbox = TBoxFactory.createTBox(this); _rbox = new RBoxImpl(); _rules.clear(); // All operations are atomic (and we must allow null normalized rules). _expChecker = new ExpressivityChecker(this); _individuals.clear(); _aboxAssertions.clear(); _instances.clear(); _builder = Optional.empty(); _state.clear(); _changes = EnumSet.of(ChangeType.ABOX_ADD, ChangeType.TBOX_ADD, ChangeType.RBOX_ADD); }
@Override public Iterator<ATermAppl> getAssertedRanges(final Role r) { final Map<ATermAppl, Set<Set<ATermAppl>>> ranges = getRangeAssertions().get(r); return ranges == null ? IteratorUtils.<ATermAppl> emptyIterator() : new ValueIterator(new DomainRangeIterator(ranges, r, false)); }
@Override public void computeImmediateSubRoles(final Role r, final Map<ATerm, DependencySet> subs) { final Role invR = r.getInverse(); if (invR != null && invR != r) { for (final Role invSubR : invR.getSubRoles()) { final Role subR = invSubR.getInverse(); if (subR == null) _logger.fine(() -> "Property " + invSubR + " was supposed to be an ObjectProperty but it is not!"); else if (subR != r) subs.put(subR.getName(), invR.getExplainSub(invSubR.getName())); } for (final ATermList roleChain : invR.getSubRoleChains()) subs.put(inverse(roleChain), invR.getExplainSub(roleChain)); } for (final Role sub : r.getSubRoles()) subs.put(sub.getName(), r.getExplainSub(sub.getName())); for (final ATermList subChain : r.getSubRoleChains()) subs.put(subChain, r.getExplainSub(subChain)); }
@Override public void clear() { if (_abox == null) _abox = new ABoxImpl(this); else { final boolean doExplanation = _abox.doExplanation(); final boolean keepLastCompletion = _abox.isKeepLastCompletion(); _abox = new ABoxImpl(this); _abox.setDoExplanation(doExplanation); _abox.setKeepLastCompletion(keepLastCompletion); } _tbox = TBoxFactory.createTBox(this); _rbox = new RBoxImpl(); _rules.clear(); // All operations are atomic (and we must allow null normalized rules). _expChecker = new ExpressivityChecker(this); _individuals.clear(); _aboxAssertions.clear(); _instances.clear(); _builder = Optional.empty(); _state.clear(); _changes = EnumSet.of(ChangeType.ABOX_ADD, ChangeType.TBOX_ADD, ChangeType.RBOX_ADD); }
public RBoxImpl() { _fsmBuilder = new FSMBuilder(this); addDatatypeRole(ATermUtils.TOP_DATA_PROPERTY); addDatatypeRole(ATermUtils.BOTTOM_DATA_PROPERTY); final Role topObjProp = addObjectRole(ATermUtils.TOP_OBJECT_PROPERTY); final Role bottomObjProp = addObjectRole(ATermUtils.BOTTOM_OBJECT_PROPERTY); topObjProp.setTransitive(true, DependencySet.INDEPENDENT); topObjProp.setReflexive(true, DependencySet.INDEPENDENT); bottomObjProp.setIrreflexive(true, DependencySet.INDEPENDENT); bottomObjProp.setAsymmetric(true, DependencySet.INDEPENDENT); addEquivalentRole(topObjProp.getName(), topObjProp.getInverse().getName(), DependencySet.INDEPENDENT); addEquivalentRole(bottomObjProp.getName(), bottomObjProp.getInverse().getName(), DependencySet.INDEPENDENT); }
@Override public void computeSubRoles(final Role r, final Set<Role> subRoles, final Set<ATermList> subRoleChains, final Map<ATerm, DependencySet> dependencies, final DependencySet ds) { // check for loops if (subRoles.contains(r)) return; // reflexive subRoles.add(r); dependencies.put(r.getName(), ds); // transitive closure final Map<ATerm, DependencySet> immSubs = new ConcurrentHashMap<>(); computeImmediateSubRoles(r, immSubs); for (final Entry<ATerm, DependencySet> entry : immSubs.entrySet()) { final ATerm sub = entry.getKey(); final DependencySet subDS = OpenlletOptions.USE_TRACING ? ds.union(entry.getValue(), true) : DependencySet.INDEPENDENT; if (sub instanceof ATermAppl) { final Role subRole = getRole(sub); computeSubRoles(subRole, subRoles, subRoleChains, dependencies, subDS); } else { subRoleChains.add((ATermList) sub); dependencies.put(sub, subDS); } } }
@Override public Iterator<ATermAppl> getAssertedDomains(final Role r) { final Map<ATermAppl, Set<Set<ATermAppl>>> domains = getDomainAssertions().get(r); return domains == null ? IteratorUtils.<ATermAppl> emptyIterator() : new ValueIterator(new DomainRangeIterator(domains, r, true)); }