    001    package com.hammurapi.reasoning.impl;
    002
    003    import java.lang.reflect.Method;
    004    import java.util.List;
    005
    006    import com.hammurapi.reasoning.Derivation;
    007    import com.hammurapi.reasoning.ForwardReasoningSession;
    008    import com.hammurapi.reasoning.Handle;
    009
    010    /**
    011     * Knowledge base holds facts and mapping of handles to facts.
    012     * Collections created by the knowledge base shall be tied to
    013     * the knowledge base and shall return null for invalid (removed)
    014     * objects.
    015     * @author Pavel Vlasov
    016     *
    017     */
    018    public interface KnowledgeBase<F> extends CollectionManager<Object>, ForwardReasoningSession<F> {
    019
    020            interface PutDerivedResult<F> {
    021
    022                    /**
    023                     * @return Fact handle.
    024                     */
    025                    Handle<F> getHandle();
    026
    027                    /**
    028                     * @return True if facts was added to the knowledge base. False, if fact was already present in the knowledge base.
    029                     */
    030                    boolean isNew();
    031            }
    032
    033            PutDerivedResult<F> putConclusion(F obj, Object rule, String ruleName, String ruleDescription, Method method, List<Handle<F>> handleList);
    034    }