// Path: src/main/java/org/semanticweb/owl/explanation/impl/blackbox/EntailmentChecker.java
// public interface EntailmentChecker<E> {
// 
//     int getCounter();
// 
//     void resetCounter();
// 
//     E getEntailment();
// 
//     Set<OWLEntity> getEntailmentSignature();
// 
//     Set<OWLEntity> getSeedSignature();
// 
//     boolean isEntailed(Set<OWLAxiom> axiom);
// 
//     Set<OWLAxiom> getEntailingAxioms(Set<OWLAxiom> axioms);
// 
//     Set<OWLAxiom> getModule(Set<OWLAxiom> axioms);
// 
//     String getModularisationTypeDescription();
// 
//     boolean isUseModularisation();
// }
// 
// Path: src/main/java/org/semanticweb/owl/explanation/impl/blackbox/EntailmentCheckerFactory.java
// public interface EntailmentCheckerFactory<E> {
// 
//     EntailmentChecker<E> createEntailementChecker(E entailment);
// }


import org.semanticweb.owl.explanation.impl.blackbox.EntailmentChecker;
import org.semanticweb.owl.explanation.impl.blackbox.EntailmentCheckerFactory;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;
package org.semanticweb.owl.explanation.impl.blackbox.checker;


/**
 * Author: Matthew Horridge<br>
 * Stanford University<br>
 * Bio-Medical Informatics Research Group<br>
 * Date: 14/08/2012
 */
public class PatternBasedConsistencyEntailmentCheckerFactory implements EntailmentCheckerFactory<OWLAxiom> {

    private OWLReasonerFactory rf;

    private long timeout;

    public PatternBasedConsistencyEntailmentCheckerFactory(OWLReasonerFactory rf, long timeout) {
        this.rf = rf;
        this.timeout = timeout;
    }

// Path: src/main/java/org/semanticweb/owl/explanation/impl/blackbox/EntailmentChecker.java
// public interface EntailmentChecker<E> {
// 
//     int getCounter();
// 
//     void resetCounter();
// 
//     E getEntailment();
// 
//     Set<OWLEntity> getEntailmentSignature();
// 
//     Set<OWLEntity> getSeedSignature();
// 
//     boolean isEntailed(Set<OWLAxiom> axiom);
// 
//     Set<OWLAxiom> getEntailingAxioms(Set<OWLAxiom> axioms);
// 
//     Set<OWLAxiom> getModule(Set<OWLAxiom> axioms);
// 
//     String getModularisationTypeDescription();
// 
//     boolean isUseModularisation();
// }
// 
// Path: src/main/java/org/semanticweb/owl/explanation/impl/blackbox/EntailmentCheckerFactory.java
// public interface EntailmentCheckerFactory<E> {
// 
//     EntailmentChecker<E> createEntailementChecker(E entailment);
// }


// Path: src/main/java/org/semanticweb/owl/explanation/impl/blackbox/checker/PatternBasedConsistencyEntailmentCheckerFactory.java
import org.semanticweb.owl.explanation.impl.blackbox.EntailmentChecker;
import org.semanticweb.owl.explanation.impl.blackbox.EntailmentCheckerFactory;
import org.semanticweb.owlapi.model.OWLAxiom;
import org.semanticweb.owlapi.reasoner.OWLReasonerFactory;

package org.semanticweb.owl.explanation.impl.blackbox.checker;


/**
 * Author: Matthew Horridge<br>
 * Stanford University<br>
 * Bio-Medical Informatics Research Group<br>
 * Date: 14/08/2012
 */
public class PatternBasedConsistencyEntailmentCheckerFactory implements EntailmentCheckerFactory<OWLAxiom> {

    private OWLReasonerFactory rf;

    private long timeout;

    public PatternBasedConsistencyEntailmentCheckerFactory(OWLReasonerFactory rf, long timeout) {
        this.rf = rf;
        this.timeout = timeout;
    }

    public EntailmentChecker<OWLAxiom> createEntailementChecker(OWLAxiom entailment) {