Re: JESS: Re: Charlemagne engine preview

2004-03-25 Thread Agustin Gonzalez-Tuchmann
At 08:36 AM 3/25/2004, [EMAIL PROTECTED] wrote:

I think [EMAIL PROTECTED] wrote:

 Since XML representations are for data exchange and aren't intended for 
human consumption,
In my experience, the assumption that XML is not for humans is a myth. it 
may not be intended for human
consumption but in reality it consumed by many humans. Thus, in many cases 
one needs to be aware
of this fact (it may be consumed by humans) when designing new XML dialects.



Agustin Gonzalez, Ph.D.
Director
Town Lake Software
www.townlakesoftware.com
512-422-6806 


To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]



Re: JESS: when functional language is better that structuredlanguage ?

2003-06-07 Thread Agustin Gonzalez-Tuchmann
At 08:29 AM 6/7/2003 -0700, [EMAIL PROTECTED] wrote:
I think [EMAIL PROTECTED] wrote:

 Hi,

 I have a basic question
 could u please tell me that what kind of problems
 can be easily solved using functional languages
 like Lisp or Jess rather than using a structured language
 like C or Java.

Great question. I am not sure what the answer is. AI people like it because 
I think AI people do a lot of
symbol manipulation (i.e not so much numeric manipulation but symbol). 
Also, I guess AI people are more
interested in telling the computer what to do instead of how to do it. 
Functional languages tend to be more
declarative than imperative languages like C, Pascal, or Java.

I think we, humans, think in an imperative way. We humans like to express 
our thoughts in an imperative way.
But the paradox is that, IMO, we humans like to see other's thoughts in a 
declarative way! If this holds
any water, then I would say that a declarative language is a great way to 
express the meaning of a
computer program when we want to communicate that meaning to humans and we 
hope the target audience
can manipulate that meaning (i.e. declarative programs). However, an imperative
one is a better tool for a human to put together that meaning.

Thus, if a functional language is also declarative, then use it when you 
want non-technical people to understand and
manipulated  the programming logic you wrote.
Rules are great to communicate meaning, specially for dynamic logic that 
needs to be changed
frequently (i.e. business rules).


Neither Lisp nor Jess is really a functional language in the sense
that ML or Haskell or OCaml are, although some dialects of Lisp offer
good support for a functional programming style (Scheme in
particular.) Because Lisp and Jess offer variables and assignment,
they're really pretty much equivalent in capability and expressiveness
to C and Java.
Turing complete functional languages are as expressive as an imperative 
language. The
issue is not expressive power but it is an issue of fit of use to the 
particular domain.

Agustin Gonzalez, Ph.D.
Director
Town Lake Software
www.townlakesoftware.com
512-422-6806

To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]



RE: JESS: publications / Forgy paper

2002-02-01 Thread Agustin Gonzalez

Maybe it's time for one of us, especially those of us that have the paper 
and are trained, to create a formal paper describing the public domain RETE 
algorithm and make the paper publicly available? I can do that if there is 
enough interest and enough people agrees with me that I won;t have any 
legal problems (I don't think so because it is public domain).

---
Agustin Gonzalez, Principal
Town Lake Software
www.townlakesoftware.com
(512) 248-9839


On Friday, February 01, 2002 8:44 AM, James Patterson 
[SMTP:[EMAIL PROTECTED]] wrote:
 I can tell you that it is a waste of time trying to contact the
 publisher... An Elsevier representative told me that the issue is out of
 print and they do not have reprint service anymore. They offered to
 individually reprint the entire journal issue for a couple of hundred
 dollars (my boss said no).  I'm not a student and therefore can't get
 any cooperation from the local universities.  I even emailed Dr Forgy
 (and tried to find a coworker of his during a stint at Ericcson) about
 the Elsevier problems (but they didn't respond - and I started feeling
 like a stalker so I gave up).

 Good luck,
 James

 -Original Message-
 From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
 On Behalf Of Oliver Hoffmann
 Sent: Friday, February 01, 2002 6:54 AM
 To: Jess Mailing List
 Subject: JESS: publications / Forgy paper


 Hi :)

 I highly doubt that the contents of published academic papers are
 generally
 copyright protected. What might be copyright protected is the specific
 paper version of a specific paper as distributed by a specific
 publisher.
 The point of publishing research results is to make them readily
 available,
 therefore copyright is simply the wrong approach here. More
 information on http://www.cogsci.soton.ac.uk/~harnad/Tp/resolution.htm
 I don't want to encourage anyone to re-distribute scanned journal pages
 without authorization etc., but there are better ways to deal with
 academic
 content than waiting for a library employee to get a photocopy 
 within
 some weeks. I highly recommend self-archiving content and making these
 copies available over personal or university web sites and I also highly

 recommend getting original articles from the people or institutions that

 created them - everything else is pre-internet and a waste of time and
 effort.

 :) Oliver Hoffmann

 At 04:23 AM 1/02/2002 -0800, [EMAIL PROTECTED] wrote:
 Hi Folks,
 
 This comes up periodically, so please forgive the intrusion while I
 discuss it, once again.
 
 The Charles Forgy paper on the Rete algorithm was published in an
 academic journal called Artificial Intelligence. The contents are
 protected by copyright law. Although you can make a photocopy for your
 own use, it's illegal to (for instance) scan it into your computer and
 post the result on the Internet. Whatever you do, do -not- post a copy
 to this mailing list, nor even post the URL where it might be
 downloaded. This goes for any other copyrighted material as well, of
 course. If you're interested in getting a copy of this paper (or any
 academic paper):
 
 1) Go to your local public library, or the library of your local
 college or University; or ask a student friend or a friend in another
 country to do so.
 
 2) Check their collection for the appropriate issue of the journal.
 It's 20 years old, so may be on microfilm or archived in some other
 way. Ask the librarian for help -- that's why they're there.
 
 3) If they have it, great, make yourself a copy.
 
 4) If they don't, go to the front desk and ask them to get a copy
 through the Interlibrary Loan program. They should be able to get it
 within a few weeks.
 
 
 
 -
 Ernest Friedman-Hill
 Distributed Systems ResearchPhone: (925) 294-2154
 Sandia National LabsFAX:   (925) 294-2234
 Org. 8920, MS 9012  [EMAIL PROTECTED]
 PO Box 969  http://herzberg.ca.sandia.gov
 Livermore, CA 94550
 
 
 To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'

 in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use
 your own address!) List problems? Notify [EMAIL PROTECTED]
 


 
 To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
 in the BODY of a message to [EMAIL PROTECTED], NOT to the list (use
 your own address!) List problems? Notify [EMAIL PROTECTED]
 


 
 To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
 in the BODY of a message to [EMAIL PROTECTED], NOT to the list
 (use your own address!) List problems? Notify 
[EMAIL PROTECTED

JESS: Could Jess be made open source?

2001-07-30 Thread Agustin Gonzalez

Hi everybody,
I wondered if this topic has been discussed before, I am sure it has.
However, I want to bug a little bit with it even if it has. I think it would
be very beneficial for Jess and the software development community if Jess
is put under the open source code licensing.

For instance, I worked in a for-profit company where we almost used Jess to
integrate it with EJB (I integrated Jess with EJB back in April 2000, I
wrote a toy pricing engine demo where the rules where evaluated with Jess
using a session EJB bean to model a product catalog). Jess was attractive
but we did not use it mainly because the complicated licensing policies. I
think we would have definitely used it if it had been open source. Where
this had been the case, maybe by this time they may have been an open source
connector from Jess to EJB.

My .2 cents on the Jess open source discussion.

--
Agustin Gonzalez, Ph.D.
(512) 248-9839

P.S. I think the obvious response to my email will be: Jess is owned by the
US government. My response to this would be: the US would benefit more if
Jess is owned by the US developers instead.


-
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the
list (use your own address!) List problems? Notify [EMAIL PROTECTED]
-




RE: JESS: JESS vs. Prolog

2000-06-21 Thread Agustin Gonzalez

Hi Chuck,
You bring very good points to the table. The need to assert new facts comes
about because the matching algorithm, RETE, needs the new facts, as you
point out, to figure out if new rules need to fire.

But in a way the comparison is not fair. Because you can get the same effect
as in prolog (display) just by printing "mortal ?x" (again the syntax is not
correct) in the head of the defrule.

However, if you need to use the mortal(?x) fact in other rules you need to
assert
it. Similar thing in prolog. If it needed mortal(x) because it's used in
another rule it would need to create a "temporary" fact to be able to fire
the rule.

I guess what bothers you, and that's a very good point, is that in RETE
intensional facts (i.e. those that only appear in heads of rules)
remain after they are asserted and not removed from the RETE net.

 --
Agustin Gonzalez
Staff Software Engineer
LiveMedia, Inc.
(512) 248-9839


 -Original Message-
 From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
 Behalf Of [EMAIL PROTECTED]
 Sent: Wednesday, June 21, 2000 9:50 AM
 To: [EMAIL PROTECTED]
 Subject: JESS: JESS vs. Prolog




 Please forgive me if this is a misguided missive.  I am trying to
 understand how
 to use a rule based system, and as such I am sure I am operating
 under many
 misunderstandings and misconceptions.  I am trying to clear them
 up, and I would
 appreciate any corrections to my thoughts below.

 I have played around a bit with Prolog.  As a basic example, I
 understand if I
 have these facts and rules:

  human(Socrates)
  mortal(X) :- human(X)

 Then, I can ask the Prolog engine is Socrates mortal by stating
 "mortal(Socrates)" at the engine prompt, and it will respond with
 "yes".  I can
 also ask it for all the known mortals with the statement
 "mortal(X)", and it
 will respond with "Socrates".

 I was then thinking how I would do this using Jess.  I believe I
 would use the
 deffact of

  (deffact myfacts (human Socrates))

 and the defrule of

  (defrule universal-truth  ((human ?x) = (assert (mortal ?x

 To find all the mortals, I can define a defquery

   (defquery all-mortals  (mortals ?x))

 (Sorry, the syntax may be a bit off.  I'm not too worried about
 that.  I don't
 necessarily need responses correcting that.  That's easy to fix
 and understand.
 It's the concepts that I'm trying to address.)

 Then, do a (reset) and a (run).

 Then execute the defquery with the statement

  (bind ?e (run-query all-mortal))

 and use an iteration of ?e to get all the results.  (The Jess
 Language manual
 has an example.)

 I believe this is the only way to get a similiar functionality to
 the Prolog
 query "mortal(X)".

 If that is true, what troubles me about it is the defrule.  It
 basically adds
 new facts to the set of facts.  What this means to me is if I
 have a set of 100
 "human" facts, after I do the (reset), I now have an additional
 100 "mortal"
 facts, doubling the number of facts.  And if I have some other rule about
 humans, it would also add another 100 facts.

 This may be considered a feature (because when the new facts are
 asserted, it
 may cause other rules to fire), or it may be just a result of the
 implementation.  But, also, In some ways (from one particular
 angle of view),
 these asserted facts can be considered "pollution"
 1.  They take up space.
 2.  They take up time to generate.
 3.  If I remove a human fact, the corresponding mortal fact
 remains.  I have to
 specifically perform extra steps to get rid of it.

 In the Prolog implementation, issues 3 is not an issue.  There
 can be a minor
 argument about whether Prolog has issues 1 and 2, but definitely,
 Prolog will
 not multiply the number of facts by the number of rules like Jess does.

 So is there a way to express relationships between facts (ie if X
 is human, then
 X is also mortal) without having the relationship specifically
 stated as a fact
 for each candidate of the relationship (ie "(human Socrates)", "(mortal
 Socrates)", "(human Chuck)", "(mortal Chuck)", etc.)?

 Chuck Sterbis
 Senior Programmer/Analyst
  Denniston  Denniston, Inc.











 -
 To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
 in the BODY of a message to [EMAIL PROTECTED], NOT to the
 list (use your own address!) List problems? Notify
 [EMAIL PROTECTED]
 -




-
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the
list (use your own address!) List problems? Notify [EMAIL PROTECTED]
-




FW: JESS: JESS vs. Prolog

2000-06-21 Thread Agustin Gonzalez

A correction:
An intensional fact are those facts that appear in heads of rules (but they
may
also appear in bodies).

 -Original Message-
 From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
 Behalf Of Agustin Gonzalez
 Sent: Wednesday, June 21, 2000 10:39 AM
 To: [EMAIL PROTECTED]
 Subject: RE: JESS: JESS vs. Prolog


 Hi Chuck,
 You bring very good points to the table. The need to assert new
 facts comes
 about because the matching algorithm, RETE, needs the new facts, as you
 point out, to figure out if new rules need to fire.

 But in a way the comparison is not fair. Because you can get the
 same effect
 as in prolog (display) just by printing "mortal ?x" (again the
 syntax is not
 correct) in the head of the defrule.

 However, if you need to use the mortal(?x) fact in other rules you need to
 assert
 it. Similar thing in prolog. If it needed mortal(x) because it's used in
 another rule it would need to create a "temporary" fact to be able to fire
 the rule.

 I guess what bothers you, and that's a very good point, is that in RETE
 intensional facts (i.e. those that only appear in heads of rules)
 remain after they are asserted and not removed from the RETE net.

  --
 Agustin Gonzalez
 Staff Software Engineer
 LiveMedia, Inc.
 (512) 248-9839


  -Original Message-
  From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On
  Behalf Of [EMAIL PROTECTED]
  Sent: Wednesday, June 21, 2000 9:50 AM
  To: [EMAIL PROTECTED]
  Subject: JESS: JESS vs. Prolog
 
 
 
 
  Please forgive me if this is a misguided missive.  I am trying to
  understand how
  to use a rule based system, and as such I am sure I am operating
  under many
  misunderstandings and misconceptions.  I am trying to clear them
  up, and I would
  appreciate any corrections to my thoughts below.
 
  I have played around a bit with Prolog.  As a basic example, I
  understand if I
  have these facts and rules:
 
   human(Socrates)
   mortal(X) :- human(X)
 
  Then, I can ask the Prolog engine is Socrates mortal by stating
  "mortal(Socrates)" at the engine prompt, and it will respond with
  "yes".  I can
  also ask it for all the known mortals with the statement
  "mortal(X)", and it
  will respond with "Socrates".
 
  I was then thinking how I would do this using Jess.  I believe I
  would use the
  deffact of
 
   (deffact myfacts (human Socrates))
 
  and the defrule of
 
   (defrule universal-truth  ((human ?x) = (assert (mortal ?x
 
  To find all the mortals, I can define a defquery
 
(defquery all-mortals  (mortals ?x))
 
  (Sorry, the syntax may be a bit off.  I'm not too worried about
  that.  I don't
  necessarily need responses correcting that.  That's easy to fix
  and understand.
  It's the concepts that I'm trying to address.)
 
  Then, do a (reset) and a (run).
 
  Then execute the defquery with the statement
 
   (bind ?e (run-query all-mortal))
 
  and use an iteration of ?e to get all the results.  (The Jess
  Language manual
  has an example.)
 
  I believe this is the only way to get a similiar functionality to
  the Prolog
  query "mortal(X)".
 
  If that is true, what troubles me about it is the defrule.  It
  basically adds
  new facts to the set of facts.  What this means to me is if I
  have a set of 100
  "human" facts, after I do the (reset), I now have an additional
  100 "mortal"
  facts, doubling the number of facts.  And if I have some other
 rule about
  humans, it would also add another 100 facts.
 
  This may be considered a feature (because when the new facts are
  asserted, it
  may cause other rules to fire), or it may be just a result of the
  implementation.  But, also, In some ways (from one particular
  angle of view),
  these asserted facts can be considered "pollution"
  1.  They take up space.
  2.  They take up time to generate.
  3.  If I remove a human fact, the corresponding mortal fact
  remains.  I have to
  specifically perform extra steps to get rid of it.
 
  In the Prolog implementation, issues 3 is not an issue.  There
  can be a minor
  argument about whether Prolog has issues 1 and 2, but definitely,
  Prolog will
  not multiply the number of facts by the number of rules like Jess does.
 
  So is there a way to express relationships between facts (ie if X
  is human, then
  X is also mortal) without having the relationship specifically
  stated as a fact
  for each candidate of the relationship (ie "(human Socrates)", "(mortal
  Socrates)", "(human Chuck)", "(mortal Chuck)", etc.)?
 
  Chuck Sterbis
  Senior Programmer/Analyst
   Denniston  Denniston, Inc.
 
 
 
 
 
 
 
 
 
 
 
  -
  To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PRO