From - Thu Feb  5 13:22:33 2004
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Path: acsu.buffalo.edu!rapaport
From: rapaport@cse.buffalo.edu (William J. Rapaport)
Newsgroups: sunyab.cse.740
Subject: SNePS TUTORIAL QUESTION
Date: Wed, 4 Feb 2004 14:35:28 -0500 (EST)
Organization: Computer Science and Engineering
Lines: 50
Sender: Ncs@buffalo.edu
Distribution: sunyab
Message-ID: <bvrhi0$2fl$1@prometheus.acsu.buffalo.edu>
NNTP-Posting-Host: wasat.cse.buffalo.edu
X-Trace: prometheus.acsu.buffalo.edu 1075923328 2549 128.205.32.15 (4 Feb 2004 19:35:28 GMT)
X-Complaints-To: abuse@buffalo.edu
NNTP-Posting-Date: Wed, 4 Feb 2004 19:35:28 +0000 (UTC)
X-Newsreader: trn 4.0-test76 (Apr 2, 2001)
Xref: acsu.buffalo.edu sunyab.cse.740:63

A student writes:

> 1) in the following expression (found at
> 
> http://www.cse.buffalo.edu/sneps/Tutorial/node70.html)
> 
> 
> (describe (assert forall $r
>                   ant (build member *r class Roman)
>                   cq  (build min 1 max 1
>                              arg ((build arg1 *r
>                                          rel loyal\ to
>                                          arg2 Caesar)
>                                   (build arg1 *r
>                                          rel hate
>                                          arg2 Caesar)))))
> 
> it looks as if there are two nodes attached to a single relation arc:
> 
> relation arc -   arg
> nodes -          (build arg1 *r rel loyal\ to arg2 Caesar) and
>                  (build arg1 *r rel hate arg2 Caesar)
> 
> I understand the semantics of the expression I just have hard time
> picturing it.

That's because it can't easily be pictured! :-)  SNePS relations, like
"arg", actually take *sets* of nodes as arguments.  So, in the above
expression, "arg" takes a set of two nodes, one representing "r is loyal
to Caesar" and the other representing "r hates Caesar".  SNePS allows
this very same situation to be described in a clearer way:

(describe (assert forall $r
                  ant (build member *r class Roman)
                  cq  (build min 1 max 1
                             arg (build arg1 *r rel loyal\ to arg2 Caesar)
			     arg (build arg1 *r rel hate arg2 Caesar))))

So:  A *single* "arg" arc pointing to a set of 2 nodes is equivalent to 2
"arg" arcs each pointing to one of those 2 nodes.
			

> 
> 
> 2) Should the expression "Elephants are animals." from programming project
> 1 be interpreted as ALL Elephants are animals (i.e. for all x if x is an
> elephant than it belongs to the class of animals) or simply elephant is a
> member of class of animals?

Your choice; just be consistent.
