All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.coode.dlquery.OWLClassExpressionNodeQueryVisitor Maven / Gradle / Ivy

There is a newer version: 4.0.1
Show newest version
package org.coode.dlquery;

import java.util.HashSet;
import java.util.Set;

import org.protege.editor.owl.model.OWLModelManager;
import org.protege.editor.owl.model.classexpression.OWLClassExpressionLeafNode;
import org.protege.editor.owl.model.classexpression.OWLClassExpressionNodeDifference;
import org.protege.editor.owl.model.classexpression.OWLClassExpressionNodePossibly;
import org.protege.editor.owl.model.classexpression.OWLClassExpressionNodeUnion;
import org.protege.editor.owl.model.classexpression.OWLClassExpressionNodeVisitor;
import org.semanticweb.owlapi.model.OWLClassExpression;
import org.semanticweb.owlapi.model.OWLObject;
import org.semanticweb.owlapi.reasoner.OWLReasoner;


/**
 * Author: Matthew Horridge
* The University Of Manchester
* Medical Informatics Group
* Date: 11-Oct-2006

* * [email protected]
* www.cs.man.ac.uk/~horridgm

*/ public class OWLClassExpressionNodeQueryVisitor implements OWLClassExpressionNodeVisitor { private final OWLModelManager owlModelManager; private final OWLReasoner reasoner; private final ReasonerQueryInvoker queryInvoker; private final Set results = new HashSet<>(); public OWLClassExpressionNodeQueryVisitor(OWLModelManager manager, OWLReasoner reasoner, ReasonerQueryInvoker queryInvoker) { this.owlModelManager = manager; this.reasoner = reasoner; this.queryInvoker = queryInvoker; } public void reset() { results.clear(); } public Set getResults() { return new HashSet(results); } public void visit(OWLClassExpressionNodeDifference node) { node.getLeftNode().accept(this); Set leftResults = results; node.getRightNode().accept(this); Set rightResults = results; results.clear(); results.addAll(leftResults); results.remove(node.getRightNode().getClassExpression()); results.removeAll(rightResults); } public void visit(OWLClassExpressionNodeUnion node) { node.getLeftNode().accept(this); Set leftResults = results; node.getRightNode().accept(this); Set rightResults = results; results.clear(); results.addAll(leftResults); results.addAll(rightResults); } public void visit(OWLClassExpressionNodePossibly node) { // LEFTDESC minus not(RIGHTDESC) OWLClassExpression leftDesc = node.getLeftNode().getClassExpression(); OWLClassExpression rightDesc = node.getRightNode().getClassExpression(); OWLClassExpression negRightDesc = owlModelManager.getOWLDataFactory().getOWLObjectComplementOf(rightDesc); Set leftResults = queryInvoker.getAnswer(reasoner, leftDesc); Set rightResults = queryInvoker.getAnswer(reasoner, negRightDesc); results.clear(); results.addAll(leftResults); results.removeAll(rightResults); } public void visit(OWLClassExpressionLeafNode node) { results.clear(); results.addAll(queryInvoker.getAnswer(reasoner, node.getClassExpression())); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy