tuffy.ground
Class KBMC
java.lang.Object
tuffy.ground.KBMC
public class KBMC
- extends java.lang.Object
"Syntactic" Knowledge Base Model Constructor.
Analyze the query and the MLN rules to identify
relevant atoms that need to be grounded to answer the query.
Here KBMC only
materialize relevant portion of predicate tables, while further refinement
of active set of predicates and grounding
of clauses are left to class Grounding
.
Nested Class Summary |
private static class |
KBMC.AtomCutSet
AtomCutSet is set of atoms with the same predicate. |
Method Summary |
void |
run()
Run KBMC to identify and materialize relevant groundings of predicates. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
mln
private MarkovLogicNetwork mln
- MLN used in this KBMC.
allowedClauses
public java.util.HashSet<Clause> allowedClauses
KBMC
public KBMC(MarkovLogicNetwork mln)
- Constructor of KBMC.
- Parameters:
mln
- MLN used in this KBMC.
run
public void run()
- Run KBMC to identify and materialize relevant groundings of predicates.
Here the relevant atoms needed to be grounded is determined as
follows. One atom may be potentially relevant if it is in a clause $c$
that contains a literal $a$ that has the same predicate as another
potentially relevant tuple $b$. If $a$ and this predicate $b$
has MGU $m$, substituting this atom with $m$ will obtain tuple that
is potentially relevant. Recursively do this until no potentially
relevant tuples are generated according current set of potentially
relevant tuples. Here $m$'s role is providing restrictions on possible
groundings.
Only ground a set of tuples, s.t., 1) $\forall$ tuple $a$, $b$ in this
set, $a$ does not subsume $b$; and 2) $\forall$ tuple $c$ that is
potentially relevant, there exists tuple $a$ in this set, that $a$
subsumes $c$.
Note that, grounding both $a$ and $b$ when $a$ subsumes $b$ is not
necessary, because the grounding results of $a$ will include $b$.