package org.semanticweb.HermiT.tableau;
import java.util.Collections;
import java.util.HashMap;
import java.util.Set;
import org.semanticweb.HermiT.blocking.AnywhereBlocking;
import org.semanticweb.HermiT.blocking.BlockingSignatureCache;
import org.semanticweb.HermiT.blocking.BlockingStrategy;
import org.semanticweb.HermiT.blocking.PairWiseDirectBlockingChecker;
import org.semanticweb.HermiT.existentials.CreationOrderStrategy;
import org.semanticweb.HermiT.existentials.ExistentialExpansionStrategy;
import org.semanticweb.HermiT.model.Atom;
import org.semanticweb.HermiT.model.AtomicRole;
import org.semanticweb.HermiT.model.DLClause;
import org.semanticweb.HermiT.model.DLOntology;
import org.semanticweb.HermiT.model.Variable;
public class DLClauseEvaluationTest extends AbstractReasonerInternalsTest {
protected static final AtomicRole R=AtomicRole.create("R");
protected static final AtomicRole S=AtomicRole.create("S");
protected static final AtomicRole T=AtomicRole.create("T");
protected static final AtomicRole U=AtomicRole.create("U");
protected static final DLClause CL_1;
protected static final DLOntology TEST_DL_ONTOLOGY;
static {
Variable X=Variable.create("X");
Variable Y=Variable.create("Y");
Variable Z=Variable.create("Z");
Variable W=Variable.create("W");
CL_1=DLClause.create(new Atom[] { Atom.create(U,Z,W) },new Atom[] { Atom.create(R,X,Y),Atom.create(S,Y,Z),Atom.create(T,W,W) });
Set<DLClause> dlClauses=Collections.singleton(CL_1);
TEST_DL_ONTOLOGY=getTestDLOntology(dlClauses);
}
protected Tableau m_tableau;
protected ExtensionManager m_extensionManager;
public DLClauseEvaluationTest(String name) {
super(name);
}
protected void setUp() {
PairWiseDirectBlockingChecker directChecker=new PairWiseDirectBlockingChecker();
BlockingSignatureCache blockingSignatureCache=new BlockingSignatureCache(directChecker);
BlockingStrategy blockingStrategy=new AnywhereBlocking(directChecker,blockingSignatureCache);
ExistentialExpansionStrategy ExpansionStrategy=new CreationOrderStrategy(blockingStrategy);
m_tableau=new Tableau(new InterruptFlag(-1),null,ExpansionStrategy,false,TEST_DL_ONTOLOGY,null,new HashMap<String,Object>());
m_extensionManager=m_tableau.getExtensionManager();
}
public void testEvaluator() {
DependencySet emptySet=m_tableau.getDependencySetFactory().emptySet();
Node a=m_tableau.createNewNINode(emptySet);
Node b=m_tableau.createNewNINode(emptySet);
Node c=m_tableau.createNewNINode(emptySet);
Node d=m_tableau.createNewNINode(emptySet);
Node e=m_tableau.createNewNINode(emptySet);
m_extensionManager.addRoleAssertion(R,a,b,emptySet,false);
m_extensionManager.addRoleAssertion(R,a,c,emptySet,false);
m_extensionManager.addRoleAssertion(S,b,d,emptySet,false);
m_extensionManager.addRoleAssertion(T,e,e,emptySet,false);
m_extensionManager.addRoleAssertion(T,c,d,emptySet,false);
assertTrue(m_tableau.runCalculus());
assertRetrieval(m_extensionManager.getTernaryExtensionTable(),T(U,null,null),ExtensionTable.View.EXTENSION_THIS,new Object[][] { T(U,d,e) });
}
}