Package jason.bb
Class JDBCPersistentBB
java.lang.Object
jason.bb.BeliefBase
jason.bb.ChainBBAdapter
jason.bb.JDBCPersistentBB
- Direct Known Subclasses:
AgentJDBCPersistentBB
Implementation of BB that stores some beliefs in a relational data base.
The parameters for this customisation are:
- args[0] is the Database Engine JDBC drive
- args[1] is the JDBC URL connection string
The url can use the agent name as parameter as in "jdbc:mysql://localhost/%s". In this case, %s will be replaced by the agent's name. - args[2] is the username
- args[3] is the password
- args[4] is an AS list with all beliefs that are mapped to DB.
Each element of the list is in the form
predicate(arity [, table_name [, columns]])
and columns is in the form
columns( col_name(col_type), col_name(col_type), ....)
Example in .mas2j project, the agent c uses a JDBC belief base:
agents:
c beliefBaseClass jason.bb.JDBCPersistentBB(
"org.hsqldb.jdbcDriver", // driver for HSQLDB
"jdbc:hsqldb:bookstore", // URL connection
"sa", // user
"", // password
"[a(1,tablea,columns(runs(integer))),
book(5),
book_author(2),
author(2,author,columns(id(integer),name(varchar(30)))),
publisher(2)]");
The predicate a/1 is mapped to a table called "tablea" with an integer column called runs;
predicate book (with arity 5) is mapped to a table called "book"; and so on.
The name and type of the columns are used only if the table does not exits and have to be created.
If no column name/type is provided, an arbitrary name is used with type varchar(256).
If no table name is provided, the predicate name is used for the table name.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Stringprotected Map<PredicateIndicator, ResultSetMetaData> protected Connectionprotected intthe number of columns that this customisation creates (default is 2: the j_negated and j_annots columns)static final Stringprotected StringFields inherited from class jason.bb.ChainBBAdapter
nextBBFields inherited from class jason.bb.BeliefBase
APercept, ASelf, TPercept, TSelf -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanRemoves all believes with some functor/arity in the default namespacebooleanAdds a belief in the BB at index position, returns true if succeedbooleanAdds a belief in the end of the BB, returns true if succeed.voidclear()removes all beliefs from BBReturns the literal l as it is in BB, this method does not consider annotations in the search.Returns an iterator for all literals relevant for l's predicate indicator, if l is a var, returns all beliefs.
The unifier u may contain values for variables in l.protected Stringreturns a SQL command to count the number of instances of a predicateprotected StringgetCreateTable(String table, int arity, Structure columns) returns the SQL command to create a new tableprotected Stringreturns a SQL command to delete all entries for a predicateprotected Stringreturns the SQL command to insert l into the DBprotected Stringreturns the SQL command for a select that retrieves the literal l from the DBprotected Stringreturns the SQL command the selects all literals of type piprotected Stringprotected Stringprotected Stringreturns the where clausule for a select for literal lvoidCalled before the MAS execution with the agent that uses this BB and the args informed in .mas2j project.
Example in .mas2j:
agent BeliefBaseClass(1,bla);
the init args will be ["1", "bla"].protected booleanreturns true if the table for pi was created by Jasonprotected booleanreturns true if the literal is stored in a DBiterator()Returns an iterator for all beliefs.booleanRemoves a literal from BB, returns true if succeedprotected Literaltranslates the current line of a result set into a Literalintsize()Returns the number of beliefs in BBvoidstop()Called just before the end of MAS executionstatic Timestampstructure2timestamp(Term timestamp) translates structure like "timestamp(Y,M,D,H,M,S)" into a SQL timestampvoidtest()just create some data to teststatic Structuretimestamp2structure(Timestamp timestamp) translates a SQL timestamp into a structure like "timestamp(Y,M,D,H,M,S)"Methods inherited from class jason.bb.ChainBBAdapter
clone, getAsDOM, getCandidateBeliefs, getLastBB, getNameSpaces, getNextAdapter, getPercepts, setNext, toStringMethods inherited from class jason.bb.BeliefBase
abolish, getLock, getNameSpaceProp, getNameSpaceProps, setNameSpacePropMethods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliterator
-
Field Details
-
extraCols
protected int extraColsthe number of columns that this customisation creates (default is 2: the j_negated and j_annots columns) -
conn
-
url
-
agentName
-
belsDB
-
timestampFunctor
- See Also:
-
-
Constructor Details
-
JDBCPersistentBB
public JDBCPersistentBB() -
JDBCPersistentBB
-
-
Method Details
-
init
Description copied from class:BeliefBaseCalled before the MAS execution with the agent that uses this BB and the args informed in .mas2j project.
Example in .mas2j:
agent BeliefBaseClass(1,bla);
the init args will be ["1", "bla"].- Overrides:
initin classChainBBAdapter
-
stop
public void stop()Description copied from class:BeliefBaseCalled just before the end of MAS execution- Overrides:
stopin classChainBBAdapter
-
clear
public void clear()Description copied from class:BeliefBaseremoves all beliefs from BB- Overrides:
clearin classChainBBAdapter
-
isDB
returns true if the literal is stored in a DB -
isCreatedByJason
returns true if the table for pi was created by Jason- Throws:
SQLException
-
contains
Description copied from class:BeliefBaseReturns the literal l as it is in BB, this method does not consider annotations in the search.
Example, if BB={a(10)[a,b]},contains(a(10)[d])returns a(10)[a,b].- Overrides:
containsin classChainBBAdapter
-
add
Description copied from class:BeliefBaseAdds a belief in the end of the BB, returns true if succeed. The annots of l may be changed to reflect what was changed in the BB, for example, if l is p[a,b] in a BB with p[a], l will be changed to p[b] to produce the event +p[b], since only the annotation b is changed in the BB.- Overrides:
addin classChainBBAdapter- Throws:
JasonException
-
add
Description copied from class:BeliefBaseAdds a belief in the BB at index position, returns true if succeed- Overrides:
addin classChainBBAdapter- Throws:
JasonException
-
remove
Description copied from class:BeliefBaseRemoves a literal from BB, returns true if succeed- Overrides:
removein classChainBBAdapter
-
abolish
Description copied from class:BeliefBaseRemoves all believes with some functor/arity in the default namespace- Overrides:
abolishin classChainBBAdapter
-
getCandidateBeliefs
Description copied from class:BeliefBaseReturns an iterator for all literals relevant for l's predicate indicator, if l is a var, returns all beliefs.
The unifier u may contain values for variables in l. Example, if BB={a(10),a(20),a(2,1),b(f)}, thengetCandidateBeliefs(a(5), {})= {{a(10),a(20)}.
if BB={a(10),a(20)}, thengetCandidateBeliefs(X)= {{a(10),a(20)}. ThegetCandidateBeliefs(a(X), {X -> 5})should also return {{a(10),a(20)}.- Overrides:
getCandidateBeliefsin classChainBBAdapter
-
size
public int size()Description copied from class:BeliefBaseReturns the number of beliefs in BB- Overrides:
sizein classChainBBAdapter
-
iterator
Description copied from class:BeliefBaseReturns an iterator for all beliefs.- Specified by:
iteratorin interfaceIterable<Literal>- Overrides:
iteratorin classChainBBAdapter
-
resultSetToLiteral
translates the current line of a result set into a Literal- Throws:
SQLException
-
getTableName
- Throws:
SQLException
-
getTableName
- Throws:
SQLException
-
getCreateTable
returns the SQL command to create a new table- Throws:
SQLException
-
getSelect
returns the SQL command for a select that retrieves the literal l from the DB- Throws:
SQLException
-
getSelectAll
returns the SQL command the selects all literals of type pi- Throws:
SQLException
-
getWhere
returns the where clausule for a select for literal l- Throws:
SQLException
-
getInsert
returns the SQL command to insert l into the DB- Throws:
Exception
-
getDeleteAll
returns a SQL command to delete all entries for a predicate- Throws:
SQLException
-
getCountQuery
returns a SQL command to count the number of instances of a predicate- Throws:
SQLException
-
test
public void test()just create some data to test -
timestamp2structure
translates a SQL timestamp into a structure like "timestamp(Y,M,D,H,M,S)"- Throws:
SQLException
-
structure2timestamp
translates structure like "timestamp(Y,M,D,H,M,S)" into a SQL timestamp- Throws:
Exception
-