use of edu.cmu.ml.proppr.prove.wam.Query in project ProPPR by TeamCohen.
the class PathDprProverTest method test.
@Test
public void test() throws IOException, LogicProgramException {
APROptions apr = new APROptions();
apr.epsilon = 1e-5;
apr.alpha = 0.01;
WamProgram program = WamBaseProgram.load(new File(RULES));
WamPlugin[] plugins = new WamPlugin[] { SparseGraphPlugin.load(apr, new File(SparseGraphPluginTest.PLUGIN)) };
PathDprProver p = new PathDprProver(apr);
Query query = Query.parse("kids(bette,Y)");
StateProofGraph pg = new StateProofGraph(query, apr, program, plugins);
p.prove(pg, new StatusLogger());
}
use of edu.cmu.ml.proppr.prove.wam.Query in project ProPPR by TeamCohen.
the class QueryParserTest method testArity0.
@Test
public void testArity0() {
Query q = Query.parse("bob");
checkTo0(q);
assertEquals("head arity", 0, q.getRhs()[0].getArity());
}
use of edu.cmu.ml.proppr.prove.wam.Query in project ProPPR by TeamCohen.
the class QueryParserTest method testArity2.
@Test
public void testArity2() {
Query q = Query.parse("bob(joe,X)");
q.variabilize();
System.out.println(q);
checkTo0(q);
assertEquals("head arity", 2, q.getRhs()[0].getArity());
assertEquals("head arg0", new ConstantArgument("joe"), q.getRhs()[0].getArg(0));
assertEquals("head arg1", new VariableArgument(-1), q.getRhs()[0].getArg(1));
}
use of edu.cmu.ml.proppr.prove.wam.Query in project ProPPR by TeamCohen.
the class SimpleProgramProofGraphTest method test.
@Test
public void test() throws LogicProgramException, IOException {
WamProgram program = WamBaseProgram.load(new File(SimpleProgramProverTest.PROGRAM));
Query q = new Query(new Goal("coworker", new ConstantArgument("steve"), new ConstantArgument("X")));
StateProofGraph pg = new StateProofGraph(q, new APROptions(), program);
HashMap<String, Integer> solutions = new HashMap<String, Integer>();
solutions.put("steve", 0);
solutions.put("sven", 0);
Map<State, Double> vec = new HashMap<State, Double>();
vec.put(pg.getStartState(), 1.0);
// step 1: coworker -> employee,boss
System.out.println("Step 1");
for (State s : vec.keySet()) System.out.println(s);
List<Outlink> outlinks = pg.pgOutlinks(pg.getStartState(), false);
assertEquals("1. coworker :- employee,boss", 2, outlinks.size());
vec = nextVec(vec, normalized(outlinks));
vec.remove(pg.getStartState());
assertEquals("1. statecount", 1, vec.size());
// step 2:
System.out.println("Step 2");
for (State s : vec.keySet()) System.out.println(s);
outlinks = pg.pgOutlinks(vec.keySet().iterator().next(), false);
assertEquals("2. employee :- management,boss", 2, outlinks.size());
vec = nextVec(vec, normalized(outlinks));
vec.remove(pg.getStartState());
assertEquals("2. statecount", 1, vec.size());
// step 3:
System.out.println("Step 3");
for (State s : vec.keySet()) System.out.println(s);
outlinks = pg.pgOutlinks(vec.keySet().iterator().next(), false);
assertEquals("3. management :- sookie", 2, outlinks.size());
vec = nextVec(vec, normalized(outlinks));
vec.remove(pg.getStartState());
assertEquals("3. statecount", 1, vec.size());
// step 4:
System.out.println("Step 4");
for (State s : vec.keySet()) System.out.println(s);
outlinks = pg.pgOutlinks(vec.keySet().iterator().next(), false);
assertEquals("4. boss(sookie,X) :- _steve_ + sven", 2, outlinks.size());
vec = nextVec(vec, normalized(outlinks));
vec.remove(pg.getStartState());
assertEquals("4. statecount", 1, vec.size());
// step 5:
System.out.println("Step 5");
for (State s : vec.keySet()) {
System.out.println(s);
System.out.println(Dictionary.buildString(pg.asDict(s), new StringBuilder(), "\n\t").substring(1));
}
outlinks = pg.pgOutlinks(vec.keySet().iterator().next(), false);
assertEquals("5. boss(sookie,X) :- steve + sven", 3, outlinks.size());
vec = nextVec(vec, normalized(outlinks));
vec.remove(pg.getStartState());
assertEquals("5. statecount", 2, vec.size());
// step 6:
System.out.println("Step 6");
for (State s : vec.keySet()) {
System.out.println(s);
Map<Argument, String> dict = pg.asDict(s);
System.out.println(Dictionary.buildString(dict, new StringBuilder(), "\n\t").substring(1));
assertTrue(s.isCompleted());
for (String v : dict.values()) {
if (solutions.containsKey(v))
solutions.put(v, solutions.get(v) + 1);
}
}
for (Map.Entry<String, Integer> e : solutions.entrySet()) assertEquals(e.getKey(), 1, e.getValue().intValue());
}
use of edu.cmu.ml.proppr.prove.wam.Query in project ProPPR by TeamCohen.
the class GrounderTest method doGroundExampleTest.
public void doGroundExampleTest(String msg, Prover p, int nodes, int edges, double value, String npos, String nneg, double alpha) throws IOException, LogicProgramException {
APROptions apr = new APROptions();
WamProgram program = WamBaseProgram.load(new File(RULES));
WamPlugin[] plugins = new WamPlugin[] { FactsPlugin.load(apr, new File(FACTS), false) };
Grounder grounder = new Grounder(apr, p, program, plugins);
Query query = Query.parse("predict(howard,Y)");
GroundedExample ex = grounder.groundExample(p, new InferenceExample(query, new Query[] { Query.parse("predict(howard,bird)") }, new Query[] { Query.parse("predict(howard,mammal)") }));
makeAssertions(ex, msg, nodes, edges, value, 1, npos, 1, nneg);
// predict(howard,Y) +predict(howard,bird) -predict(howard,mammal)
}
Aggregations