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
Modifier and TypeFieldDescriptionprotected String
protected Map
<PredicateIndicator, ResultSetMetaData> protected Connection
protected int
the number of columns that this customisation creates (default is 2: the j_negated and j_annots columns)static final String
protected String
Fields inherited from class jason.bb.ChainBBAdapter
nextBB
Fields inherited from class jason.bb.BeliefBase
APercept, ASelf, TPercept, TSelf
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Removes all believes with some functor/arity in the default namespaceboolean
Adds a belief in the BB at index position, returns true if succeedboolean
Adds a belief in the end of the BB, returns true if succeed.void
clear()
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 String
returns a SQL command to count the number of instances of a predicateprotected String
getCreateTable
(String table, int arity, Structure columns) returns the SQL command to create a new tableprotected String
returns a SQL command to delete all entries for a predicateprotected String
returns the SQL command to insert l into the DBprotected String
returns the SQL command for a select that retrieves the literal l from the DBprotected String
returns the SQL command the selects all literals of type piprotected String
protected String
protected String
returns the where clausule for a select for literal lvoid
Called 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 boolean
returns true if the table for pi was created by Jasonprotected boolean
returns true if the literal is stored in a DBiterator()
Returns an iterator for all beliefs.boolean
Removes a literal from BB, returns true if succeedprotected Literal
translates the current line of a result set into a Literalint
size()
Returns the number of beliefs in BBvoid
stop()
Called just before the end of MAS executionstatic Timestamp
structure2timestamp
(Term timestamp) translates structure like "timestamp(Y,M,D,H,M,S)" into a SQL timestampvoid
test()
just create some data to teststatic Structure
timestamp2structure
(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, toString
Methods inherited from class jason.bb.BeliefBase
abolish, getLock, getNameSpaceProp, getNameSpaceProps, setNameSpaceProp
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods 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:BeliefBase
Called 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:
init
in classChainBBAdapter
-
stop
public void stop()Description copied from class:BeliefBase
Called just before the end of MAS execution- Overrides:
stop
in classChainBBAdapter
-
clear
public void clear()Description copied from class:BeliefBase
removes all beliefs from BB- Overrides:
clear
in 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:BeliefBase
Returns 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:
contains
in classChainBBAdapter
-
add
Description copied from class:BeliefBase
Adds 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:
add
in classChainBBAdapter
- Throws:
JasonException
-
add
Description copied from class:BeliefBase
Adds a belief in the BB at index position, returns true if succeed- Overrides:
add
in classChainBBAdapter
- Throws:
JasonException
-
remove
Description copied from class:BeliefBase
Removes a literal from BB, returns true if succeed- Overrides:
remove
in classChainBBAdapter
-
abolish
Description copied from class:BeliefBase
Removes all believes with some functor/arity in the default namespace- Overrides:
abolish
in classChainBBAdapter
-
getCandidateBeliefs
Description copied from class:BeliefBase
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. 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:
getCandidateBeliefs
in classChainBBAdapter
-
size
public int size()Description copied from class:BeliefBase
Returns the number of beliefs in BB- Overrides:
size
in classChainBBAdapter
-
iterator
Description copied from class:BeliefBase
Returns an iterator for all beliefs.- Specified by:
iterator
in interfaceIterable<Literal>
- Overrides:
iterator
in 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
-