/** * Clears the reasoner and reloads all the axioms in the imports closure. */ @Override public void refresh() { synchronized (_visitor) { _visitor.clear(); _kb.clear(); _visitor.setAddAxiom(true); _ontology.importsClosure().forEach(ont -> ont.accept(_visitor)); _visitor.verify(); _shouldRefresh = false; } }
public ATermAppl term(final OWLObject d) { _visitor.reset(); _visitor.setAddAxiom(false); d.accept(_visitor); final ATermAppl a = _visitor.result(); if (a == null) throw new InternalReasonerException("Cannot create ATerm from description " + d); return a; }
public PelletLoader(final KnowledgeBase kb) { _kb = kb; _visitor = new PelletVisitor(kb); _processImports = true; }
@Override public void visit(final AddAxiom change) { _visitor.setAddAxiom(true); change.getAxiom().accept(_visitor); _reloadRequired = _visitor.isReloadRequired(); }
_atermConverter.clear(); _atermConverter.setAddAxiom(true); final ATermAppl aterm = _atermConverter.result();
public void load(final Set<OWLOntology> ontologies) { final Optional<Timer> timer = _kb.getTimers().startTimer("load"); final Collection<OWLOntology> toBeLoaded = new LinkedHashSet<>(); for (final OWLOntology ontology : ontologies) load(ontology, false, toBeLoaded); _visitor.reset(); _visitor.setAddAxiom(true); for (final OWLOntology ontology : toBeLoaded) ontology.accept(_visitor); _visitor.verify(); timer.ifPresent(t -> t.stop()); }
@Override public void visit(final OWLDisjointObjectPropertiesAxiom axiom) { if (!_addAxioms) { _reloadRequired = true; return; } final OWLObjectPropertyExpression[] disjs = axiom.properties().toArray(OWLObjectPropertyExpression[]::new); for (int i = 0; i < disjs.length - 1; i++) { final OWLObjectPropertyExpression prop1 = disjs[i]; addSimpleProperty(prop1); for (int j = i + 1; j < disjs.length; j++) { final OWLObjectPropertyExpression prop2 = disjs[j]; addSimpleProperty(prop2); prop1.accept(this); final ATermAppl p1 = _term; prop2.accept(this); final ATermAppl p2 = _term; _kb.addDisjointProperty(p1, p2); } } }
@Override public void visit(final OWLSubPropertyChainOfAxiom axiom) { if (!_addAxioms) { _reloadRequired = true; return; } _compositePropertyAxioms.add(getNamedProperty(axiom.getSuperProperty()), axiom); axiom.getSuperProperty().accept(this); final ATermAppl prop = result(); final List<OWLObjectPropertyExpression> propChain = axiom.getPropertyChain(); ATermList chain = ATermUtils.EMPTY_LIST; for (int i = propChain.size() - 1; i >= 0; i--) { propChain.get(i).accept(this); chain = chain.insert(result()); } _kb.addSubProperty(chain, prop); }
@Override public void visit(final OWLDataOneOf enumeration) { ATermList ops = ATermUtils.EMPTY_LIST; for (final OWLLiteral value : asList(enumeration.values())) { value.accept(this); ops = ops.insert(ATermUtils.makeValue(result())); } _term = ATermUtils.makeOr(ops); }
public void dispose() { _kb = null; clear(); }
@Override public void visit(final SWRLRule rule) { if (!OpenlletOptions.DL_SAFE_RULES) return; if (!_addAxioms) { _reloadRequired = true; return; } final List<RuleAtom> head = parseAtomList(asList(rule.head())); final List<RuleAtom> body = parseAtomList(asList(rule.body())); if (head == null || body == null) { addUnsupportedAxiom(rule); return; } final Rule pelletRule = new Rule(head, body); _kb.addRule(pelletRule); }
private void addSimpleProperty(final OWLObjectPropertyExpression ope) { if (!_addAxioms) // no need to mark simple properties during removal return; final OWLObjectProperty prop = getNamedProperty(ope); _simpleProperties.add(prop); prop.accept(this); final Role role = _kb.getRBox().getRole(_term); role.setForceSimple(true); }
public Set<OWLAxiom> getUnsupportedAxioms() { return _visitor.getUnsupportedAxioms(); }
public void verify() { for (final Map.Entry<OWLObjectProperty, Set<OWLObjectPropertyAxiom>> entry : _compositePropertyAxioms.entrySet()) { final OWLObjectProperty nonSimpleProperty = entry.getKey(); if (!_simpleProperties.contains(nonSimpleProperty)) continue; final Set<OWLObjectPropertyAxiom> axioms = entry.getValue(); for (final OWLObjectPropertyAxiom axiom : axioms) addUnsupportedAxiom(axiom); final ATermAppl name = ATermUtils.makeTermAppl(nonSimpleProperty.getIRI().toString()); final Role role = _kb.getRBox().getRole(name); role.removeSubRoleChains(); } }
@Override public void visit(final RemoveAxiom change) { synchronized (_visitor) { _visitor.setAddAxiom(false); change.getAxiom().accept(_visitor); reloadRequired = _visitor.isReloadRequired(); } }
public void load(final Set<OWLOntology> ontologies) { final Optional<Timer> timer = _kb.getTimers().startTimer("load"); final Collection<OWLOntology> toBeLoaded = new LinkedHashSet<>(); for (final OWLOntology ontology : ontologies) load(ontology, false, toBeLoaded); _visitor.reset(); _visitor.setAddAxiom(true); for (final OWLOntology ontology : toBeLoaded) ontology.accept(_visitor); _visitor.verify(); timer.ifPresent(t -> t.stop()); }
@Override public void visit(final OWLDisjointObjectPropertiesAxiom axiom) { if (!_addAxioms) { _reloadRequired = true; return; } final OWLObjectPropertyExpression[] disjs = axiom.properties().toArray(OWLObjectPropertyExpression[]::new); for (int i = 0; i < disjs.length - 1; i++) { final OWLObjectPropertyExpression prop1 = disjs[i]; addSimpleProperty(prop1); for (int j = i + 1; j < disjs.length; j++) { final OWLObjectPropertyExpression prop2 = disjs[j]; addSimpleProperty(prop2); prop1.accept(this); final ATermAppl p1 = _term; prop2.accept(this); final ATermAppl p2 = _term; _kb.addDisjointProperty(p1, p2); } } }
@Override public void visit(final OWLSubPropertyChainOfAxiom axiom) { if (!_addAxioms) { _reloadRequired = true; return; } _compositePropertyAxioms.add(getNamedProperty(axiom.getSuperProperty()), axiom); axiom.getSuperProperty().accept(this); final ATermAppl prop = result(); final List<OWLObjectPropertyExpression> propChain = axiom.getPropertyChain(); ATermList chain = ATermUtils.EMPTY_LIST; for (int i = propChain.size() - 1; i >= 0; i--) { propChain.get(i).accept(this); chain = chain.insert(result()); } _kb.addSubProperty(chain, prop); }
@Override public void visit(final OWLDataOneOf enumeration) { ATermList ops = ATermUtils.EMPTY_LIST; for (final OWLLiteral value : asList(enumeration.values())) { value.accept(this); ops = ops.insert(ATermUtils.makeValue(result())); } _term = ATermUtils.makeOr(ops); }
public void dispose() { _kb = null; clear(); }