package dnars.siebog.agents; import java.util.List; import javax.ejb.Remote; import javax.ejb.Stateful; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import siebog.SiebogClient; import siebog.agents.Agent; import siebog.agents.AgentBuilder; import siebog.agents.AgentInitArgs; import siebog.interaction.ACLMessage; import dnars.base.Statement; import dnars.siebog.DNarsAgent; import dnars.siebog.annotations.BeliefAdded; import dnars.siebog.annotations.BeliefUpdated; import dnars.siebog.annotations.Beliefs; import dnars.siebog.annotations.Domain; @Stateful @Remote(Agent.class) // knowledge domain for this agent is Hello @Domain(name = "Hello") public class HelloDNars extends DNarsAgent { private static final long serialVersionUID = 1L; private static final Logger LOG = LoggerFactory.getLogger(HelloDNars.class); @Override protected void doInit(AgentInitArgs args) { } @Beliefs public String[] initialBeliefs() { // set of initial beliefs return new String[] { "tiger -> animal (1.0, 0.9)" }; } @BeliefAdded public void anyBeliefAdded(List<Statement> beliefs) { LOG.info("anyBeliefAdded: {}", beliefs); } @BeliefAdded(subj = "tiger", copula = "->", pred = "animal") public void tigerIsTypeOfAnimal(List<Statement> beliefs) { LOG.info("tiger is a type of animal: {}", beliefs); // this will change the belief's truth-value, which in turn will invoke the next method graph().include(beliefs.toArray(new Statement[0])); } @BeliefUpdated public void anyBeliefUpdated(List<Statement> beliefs) { LOG.info("anyBeliefUpdated: {}", beliefs); } @Override protected void onAclMessage(ACLMessage msg) { } public static void main(String[] args) { SiebogClient.connect("localhost"); AgentBuilder.module("dnars-web").ejb(HelloDNars.class).randomName().start(); } }