[Reasoner4j-user] SF.net SVN: reasoner4j:[50] trunk/reasoner4j
Status: Pre-Alpha
Brought to you by:
luc_peuvrier
|
From: <luc...@us...> - 2010-12-30 11:57:56
|
Revision: 50
http://reasoner4j.svn.sourceforge.net/reasoner4j/?rev=50&view=rev
Author: luc_peuvrier
Date: 2010-12-30 11:57:47 +0000 (Thu, 30 Dec 2010)
Log Message:
-----------
clean up to go back to rev 45
Revision Links:
--------------
http://reasoner4j.svn.sourceforge.net/reasoner4j/?rev=45&view=rev
Modified Paths:
--------------
trunk/reasoner4j/doc/builtin.txt
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/IBuiltin.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/AbstractBuiltin.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/BlankNodeBuiltin.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/BuiltinSupport.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/InListBuiltin.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/ListAppendBuiltin.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/ListBuiltin.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/math/MathProductBuiltin.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/math/MathSumBuiltin.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/provider/DefaultBuiltinProvider.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/provider/IBuiltinProvider.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/CauseIdentifiedFact.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/AbstractKnowledgeBase.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/AllKnowledgeBase.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/IKnowledgeBase.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/KnowledgeBaseView.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/MainKnowledgeBaseFactory.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/IMotor.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/Motor.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/MotorFactory.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/AbstractPremiseTable.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/AssertedPremiseTable.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/BuiltinPremiseTable.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/IPremiseTable.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/PremiseTable.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/PremiseTableAndDefault.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/ReteRule.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/service/PremiseTableFactory.java
trunk/reasoner4j/src/main/java/net/sf/reasoner4j/retemgr/service/ReteBuilder.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/AbstractTestCase.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/ReteRuleToString.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestBasicInference.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestBuiltin.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestExistential.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestExpressionCompute.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestReasoner.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestReteTable.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/rete/entity/TestPremiseTable.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/retetest/ReteSimulator.java
trunk/reasoner4j/src/test/java/net/sf/reasoner4j/retetest/ReteSimulatorTest.java
trunk/reasoner4j/src/test/resources/log4j.properties
Modified: trunk/reasoner4j/doc/builtin.txt
===================================================================
--- trunk/reasoner4j/doc/builtin.txt 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/doc/builtin.txt 2010-12-30 11:57:47 UTC (rev 50)
@@ -80,32 +80,3 @@
?CNP number ?NUMBER.
}.
- ------------------
-{
- ?CT a ConsumerType.
-} => {
- ?CNP consummerType ?CT.
-}.
-
-{
- ?CNP consummerType ?CTOFCNP.
- ?CTOFCNP value ?VOFCNP.
- ?CN consumerType ?CT.
- ?CT value ?V
- ?V mathNotLessThan ?VOFCNP .
- ?CNP list ?LIST. <--- default empty list if fact does not exist
- ?CN number ?N.
-} => {
- ?N inList ?LIST
-}.
-
-
-{
- ?CNP list ?LIST.
- ?LIST mathSum ?NUMBER.
-} => {
- #?CNP number ?NUMBER. <----- replacement of ?NUMBER
- ?CNP number ?NUMBER
-}
-
-
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/IBuiltin.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/IBuiltin.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/IBuiltin.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -33,9 +33,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public interface IBuiltin<T, L> extends IConclusionListener<T> {
+public interface IBuiltin<T> extends IConclusionListener<T> {
/**
* in builtin fact parameter and result term are null
@@ -44,7 +43,7 @@
*/
IFact<T> getBuiltinFact();
- void initialize(BuiltinSupport<T, L> builtinSupport);
+ void initialize(BuiltinSupport<T> builtinSupport);
/**
* @param ruleIdentifier
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/AbstractBuiltin.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/AbstractBuiltin.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/AbstractBuiltin.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -35,9 +35,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public abstract class AbstractBuiltin<T, L> implements IBuiltin<T, L> {
+public abstract class AbstractBuiltin<T> implements IBuiltin<T> {
private final String subjectIdentifier;
@@ -45,7 +44,7 @@
private final String objectIdentifier;
- private BuiltinSupport<T, L> builtinSupport;
+ private BuiltinSupport<T> builtinSupport;
/** builtin fact, parameter and result term are null */
private IFact<T> builtinFact;
@@ -59,7 +58,7 @@
}
@Override
- public void initialize(final BuiltinSupport<T, L> builtinSupport) {
+ public void initialize(final BuiltinSupport<T> builtinSupport) {
this.builtinSupport = builtinSupport;
builtinFact = new Fact<T>(getTerm(subjectIdentifier),
getTerm(predicateIdentifier), getTerm(objectIdentifier));
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/BlankNodeBuiltin.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/BlankNodeBuiltin.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/BlankNodeBuiltin.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -35,9 +35,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class BlankNodeBuiltin<T, L> extends AbstractBuiltin<T, L> {
+public class BlankNodeBuiltin<T> extends AbstractBuiltin<T> {
public BlankNodeBuiltin() {
super(TermIdentifierConstant.EMPTY_TERM,
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/BuiltinSupport.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/BuiltinSupport.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/BuiltinSupport.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -43,13 +43,12 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class BuiltinSupport<T, L> {
+public class BuiltinSupport<T> {
private final IBuitinTermProvider<T> buitinTermProvider;
- private final AllKnowledgeBase<T, L> knowledgeBase;
+ private final AllKnowledgeBase<T> knowledgeBase;
private final IBlankNodeProvider<T> blankNodeProvider;
@@ -64,7 +63,7 @@
private final IFactSet<T> allFactSet;
public BuiltinSupport(final IBuitinTermProvider<T> buitinTermProvider,
- final AllKnowledgeBase<T, L> knowledgeBase,
+ final AllKnowledgeBase<T> knowledgeBase,
final IBlankNodeProvider<T> blankNodeProvider) {
super();
this.buitinTermProvider = buitinTermProvider;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/InListBuiltin.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/InListBuiltin.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/InListBuiltin.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -36,9 +36,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class InListBuiltin<T, L> extends AbstractBuiltin<T, L> {
+public class InListBuiltin<T> extends AbstractBuiltin<T> {
public InListBuiltin() {
super(null, TermIdentifierConstant.IN_LIST_PREDICATE_IDENTIFIER, null);
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/ListAppendBuiltin.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/ListAppendBuiltin.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/ListAppendBuiltin.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -39,9 +39,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class ListAppendBuiltin<T, L> extends AbstractBuiltin<T, L> {
+public class ListAppendBuiltin<T> extends AbstractBuiltin<T> {
public ListAppendBuiltin() {
super(null, TermIdentifierConstant.LIST_APPEND_PREDICATE_IDENTIFIER,
@@ -80,6 +79,8 @@
@Override
public void removed(final int ruleIdentifier, final T subject,
final T predicate, final T object) {
+ // FIXME __for test
+ System.err.println(subject + " " + predicate + " " + object);
// FIXMELUC list can be used elsewhere
// removeList(ruleIdentifier, object);
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/ListBuiltin.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/ListBuiltin.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/list/ListBuiltin.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -40,7 +40,7 @@
*/
// FIXMELUC ListBuiltin no more needed
@Deprecated
-public class ListBuiltin<T, L> extends AbstractBuiltin<T, L> {
+public class ListBuiltin<T> extends AbstractBuiltin<T> {
@SuppressWarnings("unchecked")
private final List<T> emptyList = Collections.EMPTY_LIST;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/math/MathProductBuiltin.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/math/MathProductBuiltin.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/math/MathProductBuiltin.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -41,9 +41,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class MathProductBuiltin<T, L> extends AbstractBuiltin<T, L> {
+public class MathProductBuiltin<T> extends AbstractBuiltin<T> {
private final IBuiltinComputer<T> builtinComputer;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/math/MathSumBuiltin.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/math/MathSumBuiltin.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/impl/math/MathSumBuiltin.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -41,9 +41,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class MathSumBuiltin<T, L> extends AbstractBuiltin<T, L> {
+public class MathSumBuiltin<T> extends AbstractBuiltin<T> {
private final IBuiltinComputer<T> builtinComputer;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/provider/DefaultBuiltinProvider.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/provider/DefaultBuiltinProvider.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/provider/DefaultBuiltinProvider.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -37,25 +37,24 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class DefaultBuiltinProvider<T, L> implements IBuiltinProvider<T, L> {
+public class DefaultBuiltinProvider<T> implements IBuiltinProvider<T> {
- private final List<IBuiltin<T, L>> builtinList = new LinkedList<IBuiltin<T, L>>();
+ private final List<IBuiltin<T>> builtinList = new LinkedList<IBuiltin<T>>();
public DefaultBuiltinProvider(final IBuiltinComputer<T> builtinComputer) {
super();
- builtinList.add(new BlankNodeBuiltin<T, L>());
- builtinList.add(new MathProductBuiltin<T, L>(builtinComputer));
- builtinList.add(new MathSumBuiltin<T, L>(builtinComputer));
+ builtinList.add(new BlankNodeBuiltin<T>());
+ builtinList.add(new MathProductBuiltin<T>(builtinComputer));
+ builtinList.add(new MathSumBuiltin<T>(builtinComputer));
// FIXMELUC ListBuiltin no more needed
// builtinList.add(new ListBuiltin<T>());
- builtinList.add(new InListBuiltin<T, L>());
- builtinList.add(new ListAppendBuiltin<T, L>());
+ builtinList.add(new InListBuiltin<T>());
+ builtinList.add(new ListAppendBuiltin<T>());
}
@Override
- public List<IBuiltin<T, L>> getBuiltinList() {
+ public List<IBuiltin<T>> getBuiltinList() {
return builtinList;
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/provider/IBuiltinProvider.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/provider/IBuiltinProvider.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/builtin/provider/IBuiltinProvider.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -31,10 +31,9 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public interface IBuiltinProvider<T, L> {
+public interface IBuiltinProvider<T> {
- List<IBuiltin<T, L>> getBuiltinList();
+ List<IBuiltin<T>> getBuiltinList();
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/CauseIdentifiedFact.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/CauseIdentifiedFact.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/fact/CauseIdentifiedFact.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -83,4 +83,32 @@
return "CauseIdentifiedFact [fact=" + fact + ", ruleIdentifier="
+ ruleIdentifier + "]";
}
+
+ // FIXMELUC hashcode/equals no rule id see motor
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((fact == null) ? 0 : fact.hashCode());
+ return result;
+ }
+
+ // FIXMELUC hashcode/equals no rule id see motor
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ CauseIdentifiedFact<T> other = (CauseIdentifiedFact<T>) obj;
+ if (fact == null) {
+ if (other.fact != null)
+ return false;
+ } else if (!fact.equals(other.fact))
+ return false;
+ return true;
+ }
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/AbstractKnowledgeBase.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/AbstractKnowledgeBase.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/AbstractKnowledgeBase.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -38,17 +38,15 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public abstract class AbstractKnowledgeBase<T, L> implements
- IKnowledgeBase<T, L> {
+public abstract class AbstractKnowledgeBase<T> implements IKnowledgeBase<T> {
private final Map<IKnowledgeBaseListener<T>, IFactSetListener<T>> listenerMap =
/**/new HashMap<IKnowledgeBaseListener<T>, IFactSetListener<T>>();
protected final IFactSet<T> factSet;
- private Motor<T, L> motor;
+ private Motor<T> motor;
public AbstractKnowledgeBase(final IFactSet<T> factSet) {
super();
@@ -59,11 +57,11 @@
return factSet;
}
- public Motor<T, L> getMotor() {
+ public Motor<T> getMotor() {
return motor;
}
- public void setMotor(final Motor<T, L> motor) {
+ public void setMotor(final Motor<T> motor) {
this.motor = motor;
}
@@ -108,15 +106,15 @@
}
@Override
- public IKnowledgeBase<T, L> view(final T subject, final T predicate,
+ public IKnowledgeBase<T> view(final T subject, final T predicate,
final T object) {
- final IKnowledgeBase<T, L> view;
+ final IKnowledgeBase<T> view;
final IFactSet<T> factSetView = factSet
.view(subject, predicate, object);
if (factSetView == null) {
view = null;
} else {
- final KnowledgeBaseView<T, L> knowledgeBaseView = new KnowledgeBaseView<T, L>(
+ final KnowledgeBaseView<T> knowledgeBaseView = new KnowledgeBaseView<T>(
this, factSetView);
knowledgeBaseView.setMotor(motor);
view = knowledgeBaseView;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/AllKnowledgeBase.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/AllKnowledgeBase.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/AllKnowledgeBase.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -36,47 +36,32 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class AllKnowledgeBase<T, L> extends AbstractKnowledgeBase<T, L>
- implements IBlankNodeIdentifierProvider {
+public class AllKnowledgeBase<T> extends AbstractKnowledgeBase<T> implements
+ IBlankNodeIdentifierProvider {
- private final Map<T, L> literalMap = new HashMap<T, L>();
+ private final Map<Rule<T>, ReteRule<T>> reteRuleMap =
+ /**/new HashMap<Rule<T>, ReteRule<T>>();
- private final Map<Rule<T>, ReteRule<T, L>> reteRuleMap =
- /**/new HashMap<Rule<T>, ReteRule<T, L>>();
-
private int nextBlankNodeIdentifier;
AllKnowledgeBase() {
super(new AllFactSet<T>());
}
- public L getLiteral(final T term) {
- return literalMap.get(term);
- }
-
- public L setLiteral(final T term, final L literal) {
- return literalMap.put(term, literal);
- }
-
- public L removeLiteral(final T term) {
- return literalMap.remove(term);
- }
-
- public void addReteRule(final ReteRule<T, L> reteRule) {
+ public void addReteRule(final ReteRule<T> reteRule) {
reteRuleMap.put(reteRule.getRule(), reteRule);
}
public void removeReteRule(final Rule<T> rule) {
- final ReteRule<T, L> reteRule = reteRuleMap.get(rule);
+ final ReteRule<T> reteRule = reteRuleMap.get(rule);
if (reteRule != null) {
reteRule.dispose();
}
}
@Fortest
- public ReteRule<T, L> getReteRule(final Rule<T> rule) {
+ public ReteRule<T> getReteRule(final Rule<T> rule) {
return reteRuleMap.get(rule);
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/IKnowledgeBase.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/IKnowledgeBase.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/IKnowledgeBase.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -31,9 +31,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public interface IKnowledgeBase<T, L> {
+public interface IKnowledgeBase<T> {
void addListener(IKnowledgeBaseListener<T> listener);
@@ -45,7 +44,7 @@
IFact<T> get(T subject, T predicate, T object);
- IKnowledgeBase<T, L> view(T subject, T predicate, T object);
+ IKnowledgeBase<T> view(T subject, T predicate, T object);
Iterator<IFact<T>> iterator();
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/KnowledgeBaseView.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/KnowledgeBaseView.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/KnowledgeBaseView.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -29,13 +29,12 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class KnowledgeBaseView<T, L> extends AbstractKnowledgeBase<T, L> {
+public class KnowledgeBaseView<T> extends AbstractKnowledgeBase<T> {
- private final IKnowledgeBase<T, L> parentKnowledgeBase;
+ private final IKnowledgeBase<T> parentKnowledgeBase;
- KnowledgeBaseView(final IKnowledgeBase<T, L> parentKnowledgeBase,
+ KnowledgeBaseView(final IKnowledgeBase<T> parentKnowledgeBase,
final IFactSet<T> factSet) {
super(factSet);
this.parentKnowledgeBase = parentKnowledgeBase;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/MainKnowledgeBaseFactory.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/MainKnowledgeBaseFactory.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/kb/MainKnowledgeBaseFactory.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -27,11 +27,10 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public final class MainKnowledgeBaseFactory<T, L> {
+public final class MainKnowledgeBaseFactory<T> {
- public IKnowledgeBase<T, L> create() {
- return new AllKnowledgeBase<T, L>();
+ public IKnowledgeBase<T> create() {
+ return new AllKnowledgeBase<T>();
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/IMotor.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/IMotor.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/IMotor.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -33,13 +33,12 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public interface IMotor<T, L> {
+public interface IMotor<T> {
- void addBuiltin(IBuiltinProvider<T, L> builtinProvider);
+ void addBuiltin(IBuiltinProvider<T> builtinProvider);
- void addBuiltin(IBuiltin<T, L> builtin);
+ void addBuiltin(IBuiltin<T> builtin);
/**
* add a rule<br>
@@ -56,6 +55,6 @@
void retractFact(IFact<T> fact);
- IKnowledgeBase<T, L> getKnowledgeBase();
+ IKnowledgeBase<T> getKnowledgeBase();
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/Motor.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/Motor.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/Motor.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -24,10 +24,12 @@
import java.util.Deque;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import org.apache.log4j.Logger;
@@ -53,41 +55,40 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class Motor<T, L> implements IConclusionListener<T>, IMotor<T, L> {
+public class Motor<T> implements IConclusionListener<T>, IMotor<T> {
private final static Logger LOGGER = Logger.getLogger(Motor.class);
- private final AllKnowledgeBase<T, L> allKnowledgeBase;
+ private final AllKnowledgeBase<T> allKnowledgeBase;
- private final ReteBuilder<T, L> reteBuilder = new ReteBuilder<T, L>(this);
+ private final ReteBuilder<T> reteBuilder = new ReteBuilder<T>(this);
private final Deque<CauseIdentifiedFact<T>> assertedStack = new LinkedList<CauseIdentifiedFact<T>>();
private final Deque<CauseIdentifiedFact<T>> retractedStack = new LinkedList<CauseIdentifiedFact<T>>();
- private final Map<IFact<T>, IBuiltin<T, L>> builtinMap = new HashMap<IFact<T>, IBuiltin<T, L>>();
+ private final Map<IFact<T>, IBuiltin<T>> builtinMap = new HashMap<IFact<T>, IBuiltin<T>>();
private final IBlankNodeProvider<T> blankNodeProvider;
private final IBuitinTermProvider<T> buitinTermProvider;
- private BuiltinSupport<T, L> builtinSupport;
+ private BuiltinSupport<T> builtinSupport;
- Motor(final IKnowledgeBase<T, L> allKnowledgeBase,
+ Motor(final IKnowledgeBase<T> allKnowledgeBase,
final IBlankNodeProvider<T> blankNodeProvider) {
this(allKnowledgeBase, blankNodeProvider, null);
}
- Motor(final IKnowledgeBase<T, L> allKnowledgeBase,
+ Motor(final IKnowledgeBase<T> allKnowledgeBase,
final IBlankNodeProvider<T> blankNodeProvider,
final IBuitinTermProvider<T> buitinTermProvider) {
super();
if (!AllKnowledgeBase.class.equals(allKnowledgeBase.getClass())) {
throw new ReasonerException("bad knowledge base argument type");
}
- this.allKnowledgeBase = (AllKnowledgeBase<T, L>) allKnowledgeBase;
+ this.allKnowledgeBase = (AllKnowledgeBase<T>) allKnowledgeBase;
this.allKnowledgeBase.setMotor(this);
this.blankNodeProvider = blankNodeProvider;
this.buitinTermProvider = buitinTermProvider;
@@ -102,18 +103,17 @@
}
@Override
- public void addBuiltin(final IBuiltinProvider<T, L> builtinProvider) {
- final List<IBuiltin<T, L>> buitinList = builtinProvider
- .getBuiltinList();
- for (IBuiltin<T, L> builtin : buitinList) {
+ public void addBuiltin(final IBuiltinProvider<T> builtinProvider) {
+ final List<IBuiltin<T>> buitinList = builtinProvider.getBuiltinList();
+ for (IBuiltin<T> builtin : buitinList) {
addBuiltin(builtin);
}
}
@Override
- public void addBuiltin(final IBuiltin<T, L> builtin) {
+ public void addBuiltin(final IBuiltin<T> builtin) {
if (builtinSupport == null) { // lazy initialization
- builtinSupport = new BuiltinSupport<T, L>(buitinTermProvider,
+ builtinSupport = new BuiltinSupport<T>(buitinTermProvider,
allKnowledgeBase, blankNodeProvider);
}
builtin.initialize(builtinSupport);
@@ -121,20 +121,21 @@
}
@Fortest
- public BuiltinSupport<T, L> getBuiltinSupport() {
+ public BuiltinSupport<T> getBuiltinSupport() {
if (builtinSupport == null) { // lazy initialization
- builtinSupport = new BuiltinSupport<T, L>(buitinTermProvider,
+ builtinSupport = new BuiltinSupport<T>(buitinTermProvider,
allKnowledgeBase, blankNodeProvider);
}
return builtinSupport;
}
- public IBuiltin<T, L> builtin(final IFact<T> fact) {
+ public IBuiltin<T> builtin(final IFact<T> fact) {
T subject = fact.getSubject();
T predicate = fact.getPredicate();
// T object=fact.getObject();
// FIXMELUC builtin always based on predicate ?
- IBuiltin<T, L> builtin;
+ // FIXMELUC why not a builtin premise to avoid this ?
+ IBuiltin<T> builtin;
builtin = builtinMap.get(new Fact<T>(null, predicate, null));
if (builtin == null) {
builtin = builtinMap.get(new Fact<T>(subject, predicate, null));
@@ -144,7 +145,7 @@
@Override
public void addRule(final Rule<T> rule) {
- final ReteRule<T, L> reteRule = reteBuilder.addRule(rule);
+ final ReteRule<T> reteRule = reteBuilder.addRule(rule);
allKnowledgeBase.addReteRule(reteRule);
// TODO create fact conclusion of new added rule according to existing
// fact
@@ -178,26 +179,63 @@
}
public void updateKnowledgeBaseWithConclusion() {
- // FIXMELUC _multiple occurrence of same fact
+ // FIXMELUC _multiple occurrence of same fact, do assert ?
+ final Set<IFact<T>> assertedSet = new HashSet<IFact<T>>();
+ final Set<IFact<T>> retractedSet = new HashSet<IFact<T>>();
+
CauseIdentifiedFact<T> asserted = assertedStack.poll();
CauseIdentifiedFact<T> retracted = retractedStack.poll();
- do {
+ while (asserted != null || retracted != null) {
if (retracted != null) {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("conclusion retraction " + retracted,
+ if (assertedStack.contains(retracted)
+ || retracted.equals(asserted)) {
+ throw new ReasonerException("retracted " + retracted
+ + " is in asserted stack",
retracted.getCreationTraceForDebug());
}
+ if (assertedSet.contains(retracted.getFact())) {
+ throw new ReasonerException("retracted " + retracted
+ + " has been asserted",
+ retracted.getCreationTraceForDebug());
+ }
+ if (retractedSet.contains(retracted.getFact())) {
+ throw new ReasonerException("retracted " + retracted
+ + " has been retracted",
+ retracted.getCreationTraceForDebug());
+ }
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("conclusion retraction " + retracted);
+ }
+ retractedSet.add(retracted.getFact());
+
allKnowledgeBase.retractFactInFactSet(retracted);
retracted = retractedStack.poll();
} else if (asserted != null) {
- if (LOGGER.isDebugEnabled()) {
- LOGGER.debug("conclusion assertion " + asserted,
+ if (retractedStack.contains(asserted)
+ || asserted.equals(retracted)) {
+ throw new ReasonerException("asserted " + asserted
+ + " is in retracted stack",
asserted.getCreationTraceForDebug());
}
+ if (assertedSet.contains(asserted.getFact())) {
+ throw new ReasonerException("asserted " + asserted
+ + " has been asserted",
+ asserted.getCreationTraceForDebug());
+ }
+ if (retractedSet.contains(asserted.getFact())) {
+ throw new ReasonerException("asserted " + asserted
+ + " has been retracted",
+ asserted.getCreationTraceForDebug());
+ }
+ if (LOGGER.isDebugEnabled()) {
+ LOGGER.debug("conclusion assertion " + asserted);
+ }
+ assertedSet.add(asserted.getFact());
+
allKnowledgeBase.assertFactInFactSet(asserted);
asserted = assertedStack.poll();
}
- } while (asserted != null || retracted != null);
+ }
}
@Override
@@ -212,8 +250,8 @@
@Override
public void conclusionViewRetraction(final CauseIdentifiedFact<T> fact) {
- final IKnowledgeBase<T, L> view = allKnowledgeBase.view(
- fact.getSubject(), fact.getPredicate(), fact.getObject());
+ final IKnowledgeBase<T> view = allKnowledgeBase.view(fact.getSubject(),
+ fact.getPredicate(), fact.getObject());
final Iterator<IFact<T>> iterator = view.iterator();
while (iterator.hasNext()) {
// conclusionRetraction(new CauseIdentifiedFact<T>(iterator.next(),
@@ -228,7 +266,7 @@
}
@Override
- public AllKnowledgeBase<T, L> getKnowledgeBase() {
+ public AllKnowledgeBase<T> getKnowledgeBase() {
return allKnowledgeBase;
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/MotorFactory.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/MotorFactory.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/motor/MotorFactory.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -30,19 +30,18 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public final class MotorFactory<T, L> {
+public final class MotorFactory<T> {
- public IMotor<T, L> create(final IKnowledgeBase<T, L> allKnowledgeBase,
+ public IMotor<T> create(final IKnowledgeBase<T> allKnowledgeBase,
final IBlankNodeProvider<T> blankNodeProvider) {
- return new Motor<T, L>(allKnowledgeBase, blankNodeProvider);
+ return new Motor<T>(allKnowledgeBase, blankNodeProvider);
}
- public IMotor<T, L> create(final IKnowledgeBase<T, L> allKnowledgeBase,
+ public IMotor<T> create(final IKnowledgeBase<T> allKnowledgeBase,
final IBlankNodeProvider<T> blankNodeProvider,
final IBuitinTermProvider<T> buitinTermProvider) {
- return new Motor<T, L>(allKnowledgeBase, blankNodeProvider,
+ return new Motor<T>(allKnowledgeBase, blankNodeProvider,
buitinTermProvider);
}
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/AbstractPremiseTable.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/AbstractPremiseTable.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/AbstractPremiseTable.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -30,8 +30,8 @@
*
* @param <T>
*/
-public abstract class AbstractPremiseTable<T, L> extends AbstractTable<T>
- implements IPremiseTable<T, L> {
+public abstract class AbstractPremiseTable<T> extends AbstractTable<T>
+ implements IPremiseTable<T> {
protected final IPremise<T> premise;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/AssertedPremiseTable.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/AssertedPremiseTable.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/AssertedPremiseTable.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -41,13 +41,12 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class AssertedPremiseTable<T, L> implements IPremiseTable<T, L> {
+public class AssertedPremiseTable<T> implements IPremiseTable<T> {
private final int ruleIdentifier;
- private final AllKnowledgeBase<T, L> knowledgeBase;
+ private final AllKnowledgeBase<T> knowledgeBase;
private final IBlankNodeProvider<T> blankNodeProvider;
@@ -59,7 +58,7 @@
public AssertedPremiseTable(final int ruleIdentifier,
final IPremise<T> premise,
final VariableKeyValueMapping<T> mapping,
- final AllKnowledgeBase<T, L> knowledgeBase,
+ final AllKnowledgeBase<T> knowledgeBase,
final IBlankNodeProvider<T> blankNodeProvider) {
super();
this.ruleIdentifier = ruleIdentifier;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/BuiltinPremiseTable.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/BuiltinPremiseTable.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/BuiltinPremiseTable.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -37,16 +37,15 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class BuiltinPremiseTable<T, L> extends AbstractPremiseTable<T, L> {
+public class BuiltinPremiseTable<T> extends AbstractPremiseTable<T> {
private final int ruleIdentifier;
- private final IBuiltin<T, L> buitin;
+ private final IBuiltin<T> buitin;
public BuiltinPremiseTable(final IPremise<T> premise,
- final int ruleIdentifier, final IBuiltin<T, L> buitin,
+ final int ruleIdentifier, final IBuiltin<T> buitin,
final VariableKeyValueMapping<T> mapping) {
super(premise);
this.ruleIdentifier = ruleIdentifier;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/IPremiseTable.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/IPremiseTable.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/IPremiseTable.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -31,7 +31,7 @@
*
* @param <T>
*/
-public interface IPremiseTable<T, L> extends ITable<T> {
+public interface IPremiseTable<T> extends ITable<T> {
void dispose();
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/PremiseTable.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/PremiseTable.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/PremiseTable.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -38,9 +38,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class PremiseTable<T, L> extends AbstractPremiseTable<T, L> implements
+public class PremiseTable<T> extends AbstractPremiseTable<T> implements
IFactSetListener<T> {
protected final IFactSet<T> factSet;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/PremiseTableAndDefault.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/PremiseTableAndDefault.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/PremiseTableAndDefault.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -33,9 +33,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class PremiseTableAndDefault<T, L> extends PremiseTable<T, L> {
+public class PremiseTableAndDefault<T> extends PremiseTable<T> {
private final T defaultSubject;
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/ReteRule.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/ReteRule.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/entity/ReteRule.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -33,9 +33,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class ReteRule<T, L> {
+public class ReteRule<T> {
private static final int INITIAL_RULE_IDENTIFIER = 0;
@@ -49,7 +48,7 @@
private final Rule<T> rule;
- private final List<IPremiseTable<T, L>> premiseTableList = new LinkedList<IPremiseTable<T, L>>();
+ private final List<IPremiseTable<T>> premiseTableList = new LinkedList<IPremiseTable<T>>();
private ITable<T> rootTable;
@@ -71,12 +70,12 @@
this.rootTable = rootTable;
}
- public boolean add(final IPremiseTable<T, L> premiseTable) {
+ public boolean add(final IPremiseTable<T> premiseTable) {
return premiseTableList.add(premiseTable);
}
public void dispose() {
- for (IPremiseTable<T, L> premiseTable : premiseTableList) {
+ for (IPremiseTable<T> premiseTable : premiseTableList) {
premiseTable.dispose();
}
premiseTableList.clear();
@@ -88,7 +87,7 @@
}
@Fortest
- public List<IPremiseTable<T, L>> getPremiseTableList() {
+ public List<IPremiseTable<T>> getPremiseTableList() {
return premiseTableList;
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/service/PremiseTableFactory.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/service/PremiseTableFactory.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/rete/service/PremiseTableFactory.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -35,9 +35,8 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class PremiseTableFactory<T, L> {
+public class PremiseTableFactory<T> {
/**
*
@@ -46,18 +45,17 @@
* @param factSet
* @return
*/
- public PremiseTable<T, L> create(final IPremise<T> premise,
+ public PremiseTable<T> create(final IPremise<T> premise,
final VariableKeyValueMapping<T> mapping, final IFactSet<T> factSet) {
final IFactSet<T> view = factSet.view(premise.getSubject(),
premise.getPredicate(), premise.getObject());
- final PremiseTable<T, L> premiseTable;
+ final PremiseTable<T> premiseTable;
if (EnumPremiseType.DEFAULT.equals(premise.getType())) {
- premiseTable = new PremiseTableAndDefault<T, L>(
+ premiseTable = new PremiseTableAndDefault<T>(
(AbstractPremiseAndDefault<T>) premise, view,
premise.getMode());
} else {
- premiseTable = new PremiseTable<T, L>(premise, view,
- premise.getMode());
+ premiseTable = new PremiseTable<T>(premise, view, premise.getMode());
}
return premiseTable;
}
Modified: trunk/reasoner4j/src/main/java/net/sf/reasoner4j/retemgr/service/ReteBuilder.java
===================================================================
--- trunk/reasoner4j/src/main/java/net/sf/reasoner4j/retemgr/service/ReteBuilder.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/main/java/net/sf/reasoner4j/retemgr/service/ReteBuilder.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -62,27 +62,26 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
-public class ReteBuilder<T, L> implements IReteNodeVisitor<T> {
+public class ReteBuilder<T> implements IReteNodeVisitor<T> {
- private final PremiseTableFactory<T, L> premiseTableFactory = new PremiseTableFactory<T, L>();
+ private final PremiseTableFactory<T> premiseTableFactory = new PremiseTableFactory<T>();
private final MergeTableFactory<T> mergeTableFactory = new MergeTableFactory<T>();
private Deque<ITable<T>> stack;
- private final Motor<T, L> motor;
+ private final Motor<T> motor;
- private ReteRule<T, L> reteRule;
+ private ReteRule<T> reteRule;
- public ReteBuilder(final Motor<T, L> motor) {
+ public ReteBuilder(final Motor<T> motor) {
super();
this.motor = motor;
}
- public ReteRule<T, L> addRule(final Rule<T> rule) {
- reteRule = new ReteRule<T, L>(rule);
+ public ReteRule<T> addRule(final Rule<T> rule) {
+ reteRule = new ReteRule<T>(rule);
IReteTableNode<T> previousNode = null;
final Iterator<IPremise<T>> premiseIterator = rule.premiseIterator();
while (premiseIterator.hasNext()) {
@@ -106,7 +105,7 @@
stack = new LinkedList<ITable<T>>();
rootNode.accept(this);
stack = null;// NOPMD free memory
- final ReteRule<T, L> result = reteRule;
+ final ReteRule<T> result = reteRule;
reteRule = null;// NOPMD release/free memory
return result;
}
@@ -115,13 +114,13 @@
public void visit(final PremiseReteNode<T> premiseReteNode) {
final IPremise<T> premise = premiseReteNode.getPremise();
final VariableKeyValueMapping<T> mapping = premiseReteNode.getMapping();
- final IPremiseTable<T, L> premiseTable;
- final IBuiltin<T, L> builtin = buitin(premise);
+ final IPremiseTable<T> premiseTable;
+ final IBuiltin<T> builtin = buitin(premise);
switch (premise.getType()) {
case ASSERTED:
assertNotBuitlin(builtin, premise);
// FIXMELUC use of premiseTableFactory
- premiseTable = new AssertedPremiseTable<T, L>(
+ premiseTable = new AssertedPremiseTable<T>(
reteRule.getIdentifier(), premise, mapping,
motor.getKnowledgeBase(), motor.getBlankNodeProvider());
reteRule.add(premiseTable);
@@ -134,13 +133,13 @@
break;
case STANDARD:
if (builtin == null) {
- final PremiseTable<T, L> factPremiseTable = premiseTableFactory
+ final PremiseTable<T> factPremiseTable = premiseTableFactory
.create(premise, mapping, motor.getAllFactSet());
reteRule.add(factPremiseTable);
premiseTable = factPremiseTable;
} else {
// FIXMELUC use of premiseTableFactory
- premiseTable = new BuiltinPremiseTable<T, L>(premise,
+ premiseTable = new BuiltinPremiseTable<T>(premise,
reteRule.getIdentifier(), builtin, mapping);
}
break;
@@ -150,26 +149,26 @@
stack.push(premiseTable);
}
- private IBuiltin<T, L> buitin(final IPremise<T> premise) {
+ private IBuiltin<T> buitin(final IPremise<T> premise) {
final IFact<T> fact = new Fact<T>(premise.getSubject(),
premise.getPredicate(), premise.getObject());
return motor.builtin(fact);
}
- private IBuiltin<T, L> buitin(final IConclusion<T> conclusion) {
+ private IBuiltin<T> buitin(final IConclusion<T> conclusion) {
final IFact<T> fact = new Fact<T>(conclusion.getSubject(),
conclusion.getPredicate(), conclusion.getObject());
return motor.builtin(fact);
}
- private void assertNotBuitlin(final IBuiltin<T, L> builtin,
+ private void assertNotBuitlin(final IBuiltin<T> builtin,
final IPremise<T> premise) {
if (builtin != null) {
throw new ReasonerException("can not be a buitlin : " + premise);
}
}
- private void assertNotBuitlin(final IBuiltin<T, L> builtin,
+ private void assertNotBuitlin(final IBuiltin<T> builtin,
final IConclusion<T> conclusion) {
if (builtin != null) {
throw new ReasonerException("can not be a buitlin : " + conclusion);
@@ -195,7 +194,7 @@
final ITable<T> table = stack.peek();
final IConclusion<T> conclusion = conclusionReteNode.getConclusion();
final int[] mapping = conclusionReteNode.getMapping();
- final IBuiltin<T, L> builtin = buitin(conclusion);
+ final IBuiltin<T> builtin = buitin(conclusion);
@SuppressWarnings("unused")
final IConclusionNotifier<T> conclusionNotifier;
switch (conclusion.getType()) {
Modified: trunk/reasoner4j/src/test/java/net/sf/reasoner4j/AbstractTestCase.java
===================================================================
--- trunk/reasoner4j/src/test/java/net/sf/reasoner4j/AbstractTestCase.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/test/java/net/sf/reasoner4j/AbstractTestCase.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -36,9 +36,8 @@
public abstract class AbstractTestCase extends TestCase implements
IBlankNodeProvider<String>, IBuitinTermProvider<String> {
- protected final DefaultBuiltinProvider<String, String> defaultBuiltinProvider =
- /**/new DefaultBuiltinProvider<String, String>(
- new BuiltinComputerForTests());
+ protected final DefaultBuiltinProvider<String> defaultBuiltinProvider =
+ /**/new DefaultBuiltinProvider<String>(new BuiltinComputerForTests());
@Override
public String getBlankNode(final int blankNodeIdentifier) {
Modified: trunk/reasoner4j/src/test/java/net/sf/reasoner4j/ReteRuleToString.java
===================================================================
--- trunk/reasoner4j/src/test/java/net/sf/reasoner4j/ReteRuleToString.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/test/java/net/sf/reasoner4j/ReteRuleToString.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -34,16 +34,15 @@
* @author luc peuvrier
*
* @param <T>
- * @param <L>
*/
@Fortest
-public class ReteRuleToString<T, L> implements ITableVisitor<T> {
+public class ReteRuleToString<T> implements ITableVisitor<T> {
private StringBuilder stringBuilder;
private int tableNumber;
- public String toString(final ReteRule<T, L> reteRule) {
+ public String toString(final ReteRule<T> reteRule) {
String result = null;
try {
stringBuilder = new StringBuilder();
Modified: trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestBasicInference.java
===================================================================
--- trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestBasicInference.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestBasicInference.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -58,10 +58,10 @@
* ( ?A "x" ?B ) imply ( ?A "has" "x" )
*/
public void testSinglePremise() {
- final MainKnowledgeBaseFactory<String, String> kbFactory = new MainKnowledgeBaseFactory<String, String>();
- final MotorFactory<String, String> motorFactory = new MotorFactory<String, String>();
- final IKnowledgeBase<String, String> kb = kbFactory.create();
- final IMotor<String, String> motor = motorFactory.create(kb, this);
+ final MainKnowledgeBaseFactory<String> kbFactory = new MainKnowledgeBaseFactory<String>();
+ final MotorFactory<String> motorFactory = new MotorFactory<String>();
+ final IKnowledgeBase<String> kb = kbFactory.create();
+ final IMotor<String> motor = motorFactory.create(kb, this);
final Rule<String> rule = new Rule<String>();
final IPremise<String> premise = new Premise<String>(
/* subject */"?A", null,
@@ -94,8 +94,8 @@
* imply (?X "a" "herbivore")
*/
public void testMultiplePremise() {
- final MainKnowledgeBaseFactory<String, String> kbFactory = new MainKnowledgeBaseFactory<String, String>();
- final MotorFactory<String, String> motorFactory = new MotorFactory<String, String>();
+ final MainKnowledgeBaseFactory<String> kbFactory = new MainKnowledgeBaseFactory<String>();
+ final MotorFactory<String> motorFactory = new MotorFactory<String>();
final Rule<String> rule = new Rule<String>();
IPremise<String> premise = new Premise<String>(
/* subject */"?X", null,
@@ -146,10 +146,8 @@
final IFact<String> secondFact = list2
.remove(secondPremiseIndex);
final IFact<String> thirdFact = list2.get(0);
- final IKnowledgeBase<String, String> kb = kbFactory
- .create();
- final IMotor<String, String> motor = motorFactory.create(
- kb, this);
+ final IKnowledgeBase<String> kb = kbFactory.create();
+ final IMotor<String> motor = motorFactory.create(kb, this);
motor.addRule(rule);
motor.assertFact(firstFact);
assertFalse(kb.contains(expectedConclusion));
@@ -178,10 +176,10 @@
}
public void testSameConclusion() {
- final MainKnowledgeBaseFactory<String, String> kbFactory = new MainKnowledgeBaseFactory<String, String>();
- final MotorFactory<String, String> motorFactory = new MotorFactory<String, String>();
- final IKnowledgeBase<String, String> kb = kbFactory.create();
- final IMotor<String, String> motor = motorFactory.create(kb, this);
+ final MainKnowledgeBaseFactory<String> kbFactory = new MainKnowledgeBaseFactory<String>();
+ final MotorFactory<String> motorFactory = new MotorFactory<String>();
+ final IKnowledgeBase<String> kb = kbFactory.create();
+ final IMotor<String> motor = motorFactory.create(kb, this);
// first rule
Rule<String> rule = new Rule<String>();
IPremise<String> premise = new Premise<String>(
@@ -224,10 +222,10 @@
}
public void testRetract() {
- final MainKnowledgeBaseFactory<String, String> kbFactory = new MainKnowledgeBaseFactory<String, String>();
- final MotorFactory<String, String> motorFactory = new MotorFactory<String, String>();
- final IKnowledgeBase<String, String> kb = kbFactory.create();
- final IMotor<String, String> motor = motorFactory.create(kb, this);
+ final MainKnowledgeBaseFactory<String> kbFactory = new MainKnowledgeBaseFactory<String>();
+ final MotorFactory<String> motorFactory = new MotorFactory<String>();
+ final IKnowledgeBase<String> kb = kbFactory.create();
+ final IMotor<String> motor = motorFactory.create(kb, this);
Rule<String> rule = new Rule<String>();
final IPremise<String> premise = new Premise<String>(
/* subject */"?X", null,
@@ -257,7 +255,7 @@
assertNull(kb.get("food", "available", "gateau"));
}
- private class IncrementBuiltin extends AbstractBuiltin<String, String> {
+ private class IncrementBuiltin extends AbstractBuiltin<String> {
public IncrementBuiltin() {
super(null, "increment", null);
}
@@ -274,11 +272,10 @@
}
public void testCountRetract() {
- final MainKnowledgeBaseFactory<String, String> kbFactory = new MainKnowledgeBaseFactory<String, String>();
- final MotorFactory<String, String> motorFactory = new MotorFactory<String, String>();
- final IKnowledgeBase<String, String> kb = kbFactory.create();
- final IMotor<String, String> motor = motorFactory
- .create(kb, this, this);
+ final MainKnowledgeBaseFactory<String> kbFactory = new MainKnowledgeBaseFactory<String>();
+ final MotorFactory<String> motorFactory = new MotorFactory<String>();
+ final IKnowledgeBase<String> kb = kbFactory.create();
+ final IMotor<String> motor = motorFactory.create(kb, this, this);
motor.addBuiltin(new IncrementBuiltin());
// first rule
Rule<String> rule = new Rule<String>();
@@ -328,8 +325,7 @@
assertNull(kb.get("myCar", "koCount", "2"));
}
- private void logKoCount(final String title,
- final IKnowledgeBase<String, String> kb) {
+ private void logKoCount(final String title, final IKnowledgeBase<String> kb) {
if (LOGGER.isDebugEnabled()) {
final Iterator<IFact<String>> iterator = kb.view("myCar",
"koCount", null).iterator();
Modified: trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestBuiltin.java
===================================================================
--- trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestBuiltin.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestBuiltin.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -51,11 +51,10 @@
private static final Logger LOGGER = Logger.getLogger(TestBuiltin.class);
public void testPropertySetToProductResult() {
- final MainKnowledgeBaseFactory<String, String> kbFactory = new MainKnowledgeBaseFactory<String, String>();
- final MotorFactory<String, String> motorFactory = new MotorFactory<String, String>();
- final IKnowledgeBase<String, String> kb = kbFactory.create();
- final IMotor<String, String> motor = motorFactory
- .create(kb, this, this);
+ final MainKnowledgeBaseFactory<String> kbFactory = new MainKnowledgeBaseFactory<String>();
+ final MotorFactory<String> motorFactory = new MotorFactory<String>();
+ final IKnowledgeBase<String> kb = kbFactory.create();
+ final IMotor<String> motor = motorFactory.create(kb, this, this);
motor.addBuiltin(defaultBuiltinProvider);
Rule<String> rule = new Rule<String>();
@@ -139,40 +138,44 @@
// :hasXAcceleration 20.0 ;
// :hasElapsedTime 0.3 .
- IFact<String> fact;
- fact = new Fact<String>(":creamTart", ":hasElapsedTime", "0.3");
- motor.assertFact(fact);
- fact = new Fact<String>(":creamTart", ":hasXAcceleration", "20.0");
- motor.assertFact(fact);
+ motor.assertFact(
+ /**/new Fact<String>(":creamTart", ":hasElapsedTime", "0.3"));
+ motor.assertFact(
+ /**/new Fact<String>(":creamTart", ":hasXAcceleration", "20.0"));
- final IFactSet<String> allFactSet = ((Motor<String, String>) motor)
+ // assert result accessing to internal fact set
+ final IFactSet<String> allFactSet = ((Motor<String>) motor)
.getAllFactSet();
final IFactSet<String> view = allFactSet.view(":creamTart", ":hasX",
null);
assertNotNull(view);
-
- // assert result accessing to internal fact set
Iterator<IFact<String>> iterator = view.iterator();
assertTrue(iterator.hasNext());
assertEquals("0.8999999999999999", iterator.next().getObject());
assertFalse(iterator.hasNext());
// assert result accessing knowledge base view
- IKnowledgeBase<String, String> kbView = kb.view(":creamTart", ":hasX",
- null);
+ IKnowledgeBase<String> kbView = kb.view(":creamTart", ":hasX", null);
assertNotNull(kbView);
iterator = kbView.iterator();
assertTrue(iterator.hasNext());
assertEquals("0.8999999999999999", iterator.next().getObject());
assertFalse(iterator.hasNext());
+
+ // retract test
+ motor.retractFact(
+ /**/new Fact<String>(":creamTart", ":hasElapsedTime", "0.3"));
+ kbView = kb.view(":creamTart", ":hasX", null);
+ assertNotNull(kbView);
+ iterator = kbView.iterator();
+ assertFalse(iterator.hasNext());
}
public void testPropertyIsProductResultOfAnOtherProperty() {
- final MainKnowledgeBaseFactory<String, String> kbFactory = new MainKnowledgeBaseFactory<String, String>();
- final MotorFactory<String, String> motorFactory = new MotorFactory<String, String>();
- final IKnowledgeBase<String, String> kb = kbFactory.create();
- final IMotor<String, String> motor = motorFactory
- .create(kb, this, this);
+ final MainKnowledgeBaseFactory<String> kbFactory = new MainKnowledgeBaseFactory<String>();
+ final MotorFactory<String> motorFactory = new MotorFactory<String>();
+ final IKnowledgeBase<String> kb = kbFactory.create();
+ final IMotor<String> motor = motorFactory.create(kb, this, this);
motor.addBuiltin(defaultBuiltinProvider);
Rule<String> rule = new Rule<String>();
@@ -225,14 +228,13 @@
fact = new Fact<String>("truc", "factor", "6");
motor.assertFact(fact);
- final IFactSet<String> allFactSet = ((Motor<String, String>) motor)
+ final IFactSet<String> allFactSet = ((Motor<String>) motor)
.getAllFactSet();
final IFactSet<String> view = allFactSet.view(null, "xxx", null);
assertNotNull(view);
assertFalse(view.iterator().hasNext());
- final IKnowledgeBase<String, String> kbView = kb
- .view(null, "xxx", null);
+ final IKnowledgeBase<String> kbView = kb.view(null, "xxx", null);
assertNotNull(kbView);
assertFalse(kbView.iterator().hasNext());
}
Modified: trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestExistential.java
===================================================================
--- trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestExistential.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestExistential.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -47,12 +47,11 @@
* ( ?T "a" "t" ) => ( ?CT "a" "ct" )
*/
public void test() {
- final MainKnowledgeBaseFactory<String, String> kbFactory = new MainKnowledgeBaseFactory<String, String>();
- final MotorFactory<String, String> motorFactory = new MotorFactory<String, String>();
- final IKnowledgeBase<String, String> kb = kbFactory.create();
- final IMotor<String, String> motor = motorFactory
- .create(kb, this, this);
- motor.addBuiltin(new BlankNodeBuiltin<String, String>());
+ final MainKnowledgeBaseFactory<String> kbFactory = new MainKnowledgeBaseFactory<String>();
+ final MotorFactory<String> motorFactory = new MotorFactory<String>();
+ final IKnowledgeBase<String> kb = kbFactory.create();
+ final IMotor<String> motor = motorFactory.create(kb, this, this);
+ motor.addBuiltin(new BlankNodeBuiltin<String>());
final Rule<String> rule = new Rule<String>();
IPremise<String> premise = new Premise<String>(
/* subject */"?T", null,
@@ -83,7 +82,7 @@
LOGGER.debug(stringBuilder.toString());
}
- final IKnowledgeBase<String, String> view = kb.view(null, "a", "ct");
+ final IKnowledgeBase<String> view = kb.view(null, "a", "ct");
final Iterator<IFact<String>> iterator = view.iterator();
assertTrue(iterator.hasNext());
final IFact<String> created = iterator.next();
Modified: trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestExpressionCompute.java
===================================================================
--- trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestExpressionCompute.java 2010-12-29 10:11:09 UTC (rev 49)
+++ trunk/reasoner4j/src/test/java/net/sf/reasoner4j/TestExpressionCompute.java 2010-12-30 11:57:47 UTC (rev 50)
@@ -27,18 +27,22 @@
import net.sf.reasoner4j.builtin.impl.BuiltinSupport;
import net.sf.reasoner4j.fact.Fact;
+import net.sf.reasoner4j.kb.AllKnowledgeBase;
import net.sf.reasoner4j.kb.IKnowledgeBase;
import net.sf.reasoner4j.kb.MainKnowledgeBaseFactory;
import net.sf.reasoner4j.motor.IMotor;
import net.sf.reasoner4j.motor.Motor;
import net.sf.reasoner4j.motor.MotorFactory;
+import net.sf.reasoner4j.rete.entity.ReteRule;
import net.sf.reasoner4j.rule.AffectConclusion;
import net.sf.reasoner4j.rule.AssertConclusion;
import net.sf.reasoner4j.rule.AssertedPremise;
import net.sf.reasoner4j.rule.IConclusion;
import net.sf.reasoner4j.rule.IPremise;
import net.sf.reasoner4j.rule.Premise;
+import net.sf.reasoner4j.rule.PremiseAndDefaultNotConclude;
import net.sf.reasoner4j.rule.PremiseAndDefaultNotListening;
+import net.sf.reasoner4j.rule.ReplaceConclusion;
import net.sf.reasoner4j.rule.Rule;
import org.apache.log4j.Logger;
@@ -54,13 +58,12 @@
.getLogger(TestExpressionCompute.class);
public void testListInListAndPropertySum() {
- final MainKnowledgeBaseFactory<String, String> kbFactory = new MainKnowledgeBaseFactory<String, String>();
- final MotorFactory<String, String> motorFactory = new MotorFactory<String, String>();
- final IKnowledgeBase<String, String> kb = kbFactory.create();
- final IMotor<String, String> motor = motorFactory
- .create(kb, this, this);
+ final MainKnowledgeBaseFactory<String> kbFactory = new MainKnowledgeBaseFactory<String>();
+ final MotorFactory<String> motorFactory = new MotorFactory<String>();
+ final IKnowledgeBase<String> kb = kbFactory.create();
+ final IMotor<String> motor = motorFactory.create(kb, this, this);
motor.addBuiltin(defaultBuiltinProvider);
- final BuiltinSupport<String, String> builtinSupport = ((Motor<String, String>) motor)
+ final BuiltinSupport<String> builtinSupport = ((Motor<String>) motor)
.getBuiltinSupport();
/*
@@ -88,6 +91,8 @@
rule.addConclusion(conclusion);
motor.addRule(rule);
+ final ReteRule<String>...
[truncated message content] |