@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
public Map<OWLNamedIndividual,Set<OWLNamedIndividual>> getObjectPropertyInstances(OWLObjectProperty property) { checkPreConditions(property); Map<OWLNamedIndividual,Set<OWLNamedIndividual>> result=new HashMap<OWLNamedIndividual,Set<OWLNamedIndividual>>(); if (!m_isConsistent) { Set<OWLNamedIndividual> all=getAllNamedIndividuals(); for (OWLNamedIndividual ind : all) result.put(ind,all); return result; } initialisePropertiesInstanceManager(); AtomicRole role=H(property); Map<Individual,Set<Individual>> relations=m_instanceManager.getObjectPropertyInstances(role); OWLDataFactory factory=getDataFactory(); for (Individual individual : relations.keySet()) { Set<OWLNamedIndividual> successors=new HashSet<OWLNamedIndividual>(); result.put(factory.getOWLNamedIndividual(IRI.create(individual.getIRI())),successors); for (Individual successorIndividual : relations.get(individual)) successors.add(factory.getOWLNamedIndividual(IRI.create(successorIndividual.getIRI()))); } return result; } public boolean hasObjectPropertyRelationship(OWLNamedIndividual subject,OWLObjectPropertyExpression propertyExpression,OWLNamedIndividual object) {
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) {
/** * @param property property * @return object property instances */ public Map<OWLNamedIndividual,Set<OWLNamedIndividual>> getObjectPropertyInstances(OWLObjectProperty property) { checkPreConditions(property); Map<OWLNamedIndividual,Set<OWLNamedIndividual>> result=new HashMap<>(); if (!m_isConsistent.booleanValue()) { Set<OWLNamedIndividual> all=getAllNamedIndividuals(); for (OWLNamedIndividual ind : all) result.put(ind,all); return result; } initialisePropertiesInstanceManager(); AtomicRole role=H(property); Map<Individual,Set<Individual>> relations=m_instanceManager.getObjectPropertyInstances(role); OWLDataFactory factory=getDataFactory(); relations.forEach((individual, set)->{ Set<OWLNamedIndividual> successors=new HashSet<>(); result.put(factory.getOWLNamedIndividual(IRI.create(individual.getIRI())),successors); for (Individual successorIndividual : set) successors.add(factory.getOWLNamedIndividual(IRI.create(successorIndividual.getIRI()))); }); return 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) {
checkPreConditions(classExpression); if (!m_isConsistent) { Node<OWLNamedIndividual> node=new OWLNamedIndividualNode(getAllNamedIndividuals()); return new OWLNamedIndividualNodeSet(Collections.singleton(node));
checkPreConditions(classExpression); if (!m_isConsistent.booleanValue()) { Node<OWLNamedIndividual> node=new OWLNamedIndividualNode(getAllNamedIndividuals()); return new OWLNamedIndividualNodeSet(Collections.singleton(node));
@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) {