public void precomputeSameAsEquivalenceClasses() { checkPreConditions(); if (m_dlOntology.getAllIndividuals().size()>0) { initialiseClassInstanceManager(); m_instanceManager.computeSameAsEquivalenceClasses(m_configuration.reasonerProgressMonitor); } } public NodeSet<OWLClass> getTypes(OWLNamedIndividual namedIndividual,boolean direct) {
/** * Precompute. */ public void precomputeSameAsEquivalenceClasses() { checkPreConditions(); if (!m_dlOntology.getAllIndividuals().isEmpty()) { initialiseClassInstanceManager(); m_instanceManager.computeSameAsEquivalenceClasses(m_configuration.reasonerProgressMonitor); } } @Override
protected void realise() { checkPreConditions(); if (m_dlOntology.getAllIndividuals().size()>0) { classifyClasses(); initialiseClassInstanceManager(); m_instanceManager.realize(m_configuration.reasonerProgressMonitor); } } public void realiseObjectProperties() {
protected void realise() { checkPreConditions(); if (!m_dlOntology.getAllIndividuals().isEmpty()) { classifyClasses(); initialiseClassInstanceManager(); m_instanceManager.realize(m_configuration.reasonerProgressMonitor); } } /**
protected NodeSet<OWLNamedIndividual> sortBySameAsIfNecessary(Set<Individual> individuals) { OWLDataFactory factory=getDataFactory(); Set<Node<OWLNamedIndividual>> result=new HashSet<>(); if (m_configuration.individualNodeSetPolicy==IndividualNodeSetPolicy.BY_SAME_AS) { // group the individuals by same as equivalence classes while (!individuals.isEmpty()) { initialiseClassInstanceManager(); Individual individual=individuals.iterator().next(); Set<Individual> sameIndividuals=m_instanceManager.getSameAsIndividuals(individual); Set<OWLNamedIndividual> sameNamedIndividuals=new HashSet<>(); for (Individual sameIndividual : sameIndividuals) sameNamedIndividuals.add(factory.getOWLNamedIndividual(IRI.create(sameIndividual.getIRI()))); individuals.removeAll(sameIndividuals); result.add(new OWLNamedIndividualNode(sameNamedIndividuals)); } } else { for (Individual individual : individuals) result.add(new OWLNamedIndividualNode(factory.getOWLNamedIndividual(IRI.create(individual.getIRI())))); } return new OWLNamedIndividualNodeSet(result); } protected Set<OWLNamedIndividual> getAllNamedIndividuals() {
protected NodeSet<OWLNamedIndividual> sortBySameAsIfNecessary(Set<Individual> individuals) { OWLDataFactory factory=getDataFactory(); Set<Node<OWLNamedIndividual>> result=new HashSet<Node<OWLNamedIndividual>>(); if (m_configuration.individualNodeSetPolicy==IndividualNodeSetPolicy.BY_SAME_AS) { // group the individuals by same as equivalence classes while (!individuals.isEmpty()) { initialiseClassInstanceManager(); Individual individual=individuals.iterator().next(); Set<Individual> sameIndividuals=m_instanceManager.getSameAsIndividuals(individual); Set<OWLNamedIndividual> sameNamedIndividuals=new HashSet<OWLNamedIndividual>(); for (Individual sameIndividual : sameIndividuals) sameNamedIndividuals.add(factory.getOWLNamedIndividual(IRI.create(sameIndividual.getIRI()))); individuals.removeAll(sameIndividuals); result.add(new OWLNamedIndividualNode(sameNamedIndividuals)); } } else { for (Individual individual : individuals) result.add(new OWLNamedIndividualNode(factory.getOWLNamedIndividual(IRI.create(individual.getIRI())))); } return new OWLNamedIndividualNodeSet(result); } protected Set<OWLNamedIndividual> getAllNamedIndividuals() {
/** * @param namedIndividual1 namedIndividual1 * @param namedIndividual2 namedIndividual2 * @return true if same individual */ public boolean isSameIndividual(OWLNamedIndividual namedIndividual1,OWLNamedIndividual namedIndividual2) { checkPreConditions(namedIndividual1,namedIndividual2); if (!m_isConsistent.booleanValue()) return true; if (m_dlOntology.getAllIndividuals().isEmpty()) return false; else { initialiseClassInstanceManager(); m_instanceManager.computeSameAsEquivalenceClasses(m_configuration.reasonerProgressMonitor); return m_instanceManager.isSameIndividual(H(namedIndividual1),H(namedIndividual2)); } } @Override
public boolean isSameIndividual(OWLNamedIndividual namedIndividual1,OWLNamedIndividual namedIndividual2) { checkPreConditions(namedIndividual1,namedIndividual2); if (!m_isConsistent) return true; if (m_dlOntology.getAllIndividuals().size()==0) return false; else { initialiseClassInstanceManager(); m_instanceManager.computeSameAsEquivalenceClasses(m_configuration.reasonerProgressMonitor); return m_instanceManager.isSameIndividual(H(namedIndividual1),H(namedIndividual2)); } } public Node<OWLNamedIndividual> getSameIndividuals(OWLNamedIndividual namedIndividual) {
public NodeSet<OWLClass> getTypes(OWLNamedIndividual namedIndividual,boolean direct) { checkPreConditions(namedIndividual); Set<HierarchyNode<AtomicConcept>> result; if (!isDefined(namedIndividual)) { classifyClasses(); result=new HashSet<HierarchyNode<AtomicConcept>>(); result.add(m_atomicConceptHierarchy.getTopNode()); } else { if (direct) classifyClasses(); initialiseClassInstanceManager(); if (direct) m_instanceManager.setToClassifiedConceptHierarchy(m_atomicConceptHierarchy); result=m_instanceManager.getTypes(H(namedIndividual),direct); } return atomicConceptHierarchyNodesToNodeSet(result); } public boolean hasType(OWLNamedIndividual namedIndividual,OWLClassExpression type,boolean direct) {
@Override public NodeSet<OWLClass> getTypes(OWLNamedIndividual namedIndividual,boolean direct) { checkPreConditions(namedIndividual); Set<HierarchyNode<AtomicConcept>> result; if (!isDefined(namedIndividual)) { classifyClasses(); result=new HashSet<>(); result.add(m_atomicConceptHierarchy.getTopNode()); } else { if (direct) classifyClasses(); initialiseClassInstanceManager(); if (direct) m_instanceManager.setToClassifiedConceptHierarchy(m_atomicConceptHierarchy); result=m_instanceManager.getTypes(H(namedIndividual),direct); } return atomicConceptHierarchyNodesToNodeSet(result); } /**
@Override public Node<OWLNamedIndividual> getSameIndividuals(OWLNamedIndividual namedIndividual) { checkPreConditions(namedIndividual); if (!m_isConsistent.booleanValue()) return new OWLNamedIndividualNode(getAllNamedIndividuals()); if (m_dlOntology.getAllIndividuals().isEmpty() || !m_dlOntology.containsIndividual(H(namedIndividual))) return new OWLNamedIndividualNode(namedIndividual); else { initialiseClassInstanceManager(); Set<Individual> sameIndividuals=m_instanceManager.getSameAsIndividuals(H(namedIndividual)); OWLDataFactory factory=getDataFactory(); Set<OWLNamedIndividual> result=new HashSet<>(); for (Individual individual : sameIndividuals) result.add(factory.getOWLNamedIndividual(IRI.create(individual.getIRI()))); return new OWLNamedIndividualNode(result); } } @Override
public Node<OWLNamedIndividual> getSameIndividuals(OWLNamedIndividual namedIndividual) { checkPreConditions(namedIndividual); if (!m_isConsistent) return new OWLNamedIndividualNode(getAllNamedIndividuals()); if (m_dlOntology.getAllIndividuals().size()==0 || !m_dlOntology.containsIndividual(H(namedIndividual))) return new OWLNamedIndividualNode(namedIndividual); else { initialiseClassInstanceManager(); Set<Individual> sameIndividuals=m_instanceManager.getSameAsIndividuals(H(namedIndividual)); OWLDataFactory factory=getDataFactory(); Set<OWLNamedIndividual> result=new HashSet<OWLNamedIndividual>(); for (Individual individual : sameIndividuals) result.add(factory.getOWLNamedIndividual(IRI.create(individual.getIRI()))); return new OWLNamedIndividualNode(result); } } public NodeSet<OWLNamedIndividual> getDifferentIndividuals(OWLNamedIndividual namedIndividual) {
initialiseClassInstanceManager(); Set<Individual> result=null; if (classExpression instanceof OWLClass)
initialiseClassInstanceManager(); Set<Individual> result=new HashSet<Individual>(); if (classExpression instanceof OWLClass)
if (direct) classifyClasses(); initialiseClassInstanceManager(); if (direct) m_instanceManager.setToClassifiedConceptHierarchy(m_atomicConceptHierarchy);
public boolean hasType(OWLNamedIndividual namedIndividual,OWLClassExpression type,boolean direct) { checkPreConditions(namedIndividual,type); if (!m_isConsistent) return true; if (!isDefined(namedIndividual)) return getEquivalentClasses(type).contains(m_rootOntology.getOWLOntologyManager().getOWLDataFactory().getOWLThing()); else { if (type instanceof OWLClass) { if (direct) classifyClasses(); initialiseClassInstanceManager(); if (direct) m_instanceManager.setToClassifiedConceptHierarchy(m_atomicConceptHierarchy); return m_instanceManager.hasType(H(namedIndividual),H((OWLClass)type),direct); } else { OWLDataFactory factory=getDataFactory(); OWLAxiom negatedAssertionAxiom=factory.getOWLClassAssertionAxiom(type.getObjectComplementOf(),namedIndividual); Tableau tableau=getTableau(negatedAssertionAxiom); boolean result=tableau.isSatisfiable(true,true,null,null,null,null,null,ReasoningTaskDescription.isInstanceOf(namedIndividual,type)); tableau.clearAdditionalDLOntology(); return !result; } } } public NodeSet<OWLNamedIndividual> getInstances(OWLClassExpression classExpression,boolean direct) {