Re: JESS: Re: Charlemagne engine preview
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 ?
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
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?
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
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
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