What string and date operations does Jess support?
I saw a str-cat operator, is there some for "string compare", "like" or
"in"
something like these?> How do I define conditions for date operations?
Like date less than current
date or so?
Where can I find more information on the available string/date operations.

Hi Nara,

Your questions fall under the heading of "manipulating Java objects from
Jess", so it's good to review that chapter in the documentation before you
proceed with my suggestions.  Check out:
http://herzberg.ca.sandia.gov/jess/docs/70/java.html#  <-- this # might not
be included in so cut and paste the URL.

Next, bookmark this page if you have not already :-)
http://herzberg.ca.sandia.gov/jess/docs/70/function_index.html

Near the bottom, you will see that Jess supports the following string
functions:

asc, lowcase, regexp, str-cat, str-compare, str-index, str-length,
sub-string, sym-cat, upcase


Many new Jess users overlook that everything that you have available to you
in Java proper you also have available to you through Jess.  Therefore, you
could write something like:

   (bind ?mystring "over the hills and far away")

and then use any of the methods of java.lang.String i.e.

   (bind ?tokens (?mystring split " "))  ; Using String.split(" ")

which Jess will massage into its preferred list structure rather than a
String array.
You could then use this list like:

   (foreach ?token ?tokens
       (printout t "token=" ?token crlf))

and Jess will print out:

token=over
token=the
token=hills
token=and
token=far
token=away

As for Dates, the same principle applies: Jess simply uses the Java objects
for dates and times, which are largely centered around the
java.util.Calendar class now.  You could do something like this:

; Jess script snippet
   (import java.util.Locale)
   (import java.util.Calendar)
   (bind ?locale (new Locale Locale.ENGLISH Locale.US))
   (bind ?calendar (call Calendar getInstance ?locale))

Once you have a Calendar object, see these pages for all the things you can
do with it.
Again, this really isn't special, it's just how the Jess language works
with Java proper.
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html
http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html

As for your question about "one date less than another" and so forth, note
that java.util.Date implements java.lang.Comparable, so you have a whole
bunch of ways to compare two Date objects.
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Date.html

You will want to see George Williamson's excellent notes on the Jess Wiki as
well.
http://herzberg.ca.sandia.gov/jesswiki/view?WorkingWithDates

So, the basic formula is:
1. Get familiar with how to manipulate any Java object from Jess.
2. Look up the API that you want to use and figure out what methods you need
to use.
3. Convert the pure Java API to the corresponding Jess language syntax
(list-based).
4. Rinse and repeat as necessary.  ;-)

Hope this helps!
Cheers,
Jason
-----------------------------------------------------------
Jason C. Morris
Worcester Polytechnic Institute     Phone: (508) 831-5006
Department of Computer Science      FAX:   (508) 831-5776
Fuller Laboratories - Room 312      [EMAIL PROTECTED]
Artificial Intelligence Lab (AIRG)
100 Institute Road
Worcester, MA 01609-2280
-----------------------------------------------------------

Reply via email to