public NodeSet<OWLNamedIndividual> getDifferentIndividuals(OWLNamedIndividual namedIndividual) { checkPreConditions(namedIndividual); if (!m_isConsistent) { Node<OWLNamedIndividual> node=new OWLNamedIndividualNode(getAllNamedIndividuals()); return new OWLNamedIndividualNodeSet(Collections.singleton(node)); } Individual individual=H(namedIndividual); Tableau tableau=getTableau(); Set<Individual> result=new HashSet<Individual>(); for (Individual potentiallyDifferentIndividual : m_dlOntology.getAllIndividuals()) if (isResultRelevantIndividual(potentiallyDifferentIndividual) && !individual.equals(potentiallyDifferentIndividual)) if (!tableau.isSatisfiable(true,true,Collections.singleton(Atom.create(Equality.INSTANCE,individual,potentiallyDifferentIndividual)),null,null,null,null,new ReasoningTaskDescription(true,"is {0} different from {1}",individual,potentiallyDifferentIndividual))) result.add(potentiallyDifferentIndividual); return sortBySameAsIfNecessary(result); } public NodeSet<OWLNamedIndividual> getObjectPropertyValues(OWLNamedIndividual namedIndividual,OWLObjectPropertyExpression propertyExpression) {
@Override public NodeSet<OWLNamedIndividual> getDifferentIndividuals(OWLNamedIndividual namedIndividual) { checkPreConditions(namedIndividual); if (!m_isConsistent.booleanValue()) { Node<OWLNamedIndividual> node=new OWLNamedIndividualNode(getAllNamedIndividuals()); return new OWLNamedIndividualNodeSet(Collections.singleton(node)); } Individual individual=H(namedIndividual); Tableau tableau=getTableau(); Set<Individual> result=new HashSet<>(); for (Individual potentiallyDifferentIndividual : m_dlOntology.getAllIndividuals()) if (isResultRelevantIndividual(potentiallyDifferentIndividual) && !individual.equals(potentiallyDifferentIndividual)) if (!tableau.isSatisfiable(true,true,Collections.singleton(Atom.create(Equality.INSTANCE,individual,potentiallyDifferentIndividual)),null,null,null,null,new ReasoningTaskDescription(true,"is {0} different from {1}",individual,potentiallyDifferentIndividual))) result.add(potentiallyDifferentIndividual); return sortBySameAsIfNecessary(result); } @Override
@Override public NodeSet<OWLNamedIndividual> getObjectPropertyValues(OWLNamedIndividual namedIndividual,OWLObjectPropertyExpression propertyExpression) { checkPreConditions(namedIndividual,propertyExpression); if (!m_isConsistent.booleanValue()) { Node<OWLNamedIndividual> node=new OWLNamedIndividualNode(getAllNamedIndividuals()); return new OWLNamedIndividualNodeSet(Collections.singleton(node)); } AtomicRole role=H(propertyExpression.getNamedProperty()); if (!m_dlOntology.containsObjectRole(role)) return new OWLNamedIndividualNodeSet(); initialisePropertiesInstanceManager(); Individual individual=H(namedIndividual); Set<Individual> result; if (propertyExpression.isAnonymous()) { // inverse role result=m_instanceManager.getObjectPropertySubjects(role,individual); } else { // named role result=m_instanceManager.getObjectPropertyValues(role,individual); } return sortBySameAsIfNecessary(result); } /**
public NodeSet<OWLNamedIndividual> getObjectPropertyValues(OWLNamedIndividual namedIndividual,OWLObjectPropertyExpression propertyExpression) { checkPreConditions(namedIndividual,propertyExpression); if (!m_isConsistent) { Node<OWLNamedIndividual> node=new OWLNamedIndividualNode(getAllNamedIndividuals()); return new OWLNamedIndividualNodeSet(Collections.singleton(node)); } AtomicRole role=H(propertyExpression.getNamedProperty()); if (!m_dlOntology.containsObjectRole(role)) return new OWLNamedIndividualNodeSet(); initialisePropertiesInstanceManager(); Individual individual=H(namedIndividual); Set<Individual> result; if (propertyExpression.getSimplified().isAnonymous()) { // inverse role result=m_instanceManager.getObjectPropertySubjects(role,individual); } else { // named role result=m_instanceManager.getObjectPropertyValues(role,individual); } return sortBySameAsIfNecessary(result); } public Map<OWLNamedIndividual,Set<OWLNamedIndividual>> getObjectPropertyInstances(OWLObjectProperty property) {