Re: scope of _:existentials in N3Logic?

Jakub,

For your case fred likes the same blank node:

$ cat varscope2.n3 
@prefix : <evarscope#>.
@keywords is, of, a.

bob likes _:somebody.
{bob likes ?X} => {fred likes ?X}.


$ cwm varscope2.n3 --think --data
#Processed by Id: cwm.py,v 1.197 2007/12/13 15:38:39 syosi Exp 
        #    using base file:///home/jdroo/temp/varscope2.n3
 
#  Notation3 generation by
#       notation3.py,v 1.200 2007/12/11 21:18:08 syosi Exp

#   Base was: file:///home/jdroo/temp/varscope2.n3
     @prefix : <evarscope#> .
    @prefix va: <#> .
 
     @forSome va:_g0 .
 
    :bob     :likes va:_g0 .
 
    :fred     :likes va:_g0 .
 
#ENDS


$ eye --nope varscope2.n3 --pass
#Processed by $Id: euler.yap 3310 2010-02-24 21:31:52Z josd $

@prefix : <evarscope#>.
@prefix var: <http://localhost/var#>.
@prefix e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>.
@prefix r: <http://www.w3.org/2000/10/swap/reason#>.
@prefix n3: <http://www.w3.org/2004/06/rei#>.

:bob :likes _:somebody_1.
:fred :likes _:somebody_1.


#ENDS 0 msec
#Trunk : 9/15 = 60.0 %
#Branch: 1/4 = 25.0 %

Kind regards,

Jos De Roo | Agfa HealthCare
Senior Researcher | HE/Advanced Clinical Applications Research
T  +32 3444 7618
http://www.agfa.com/w3c/jdroo/

Quadrat NV, Kortrijksesteenweg 157, 9830 Sint-Martens-Latem, Belgium
http://www.agfa.com/healthcare



Jakub Kotowski <jakubkotowski@gmx.net> 
02/25/2010 10:59 AM

To
Jos De Roo/AMDUS/AGFA@AGFA
cc
connolly@w3.org, public-cwm-talk@w3.org, public-cwm-talk-request@w3.org
Subject
Re: scope of _:existentials in N3Logic?







Jos and Dan,

So it means that rule bodies match graphs and rule heads create
different graphs...? Why is it so? Rule heads could well "create"
triples in the same graph that matched the body and then the blank-node
wouldn't and shouldn't have to be renamed.

I am wondering what happens if a rule body variable binds to a
blank-node and rule head creates a new triple with this binding.

For example:

:bob :likes _:somebody_1.
{bob likes ?X} => {fred likes ?X}

is the blank node in the new fred likes ... triple different from
_:somebody_1 too?

Regards,
Jakub


jos.deroo@agfa.com schrieb:
> It took us 10 years to realize that the scope of blank nodes is the
> graph in which they occur :-)
> The answer we get from euler is the same as you got from cwm:
> 
> eye --nope varscope1.n3 --pass
> #Processed by $Id: euler.yap 3310 2010-02-24 21:31:52Z josd $
> 
> @prefix : <evarscope1#>.
> @prefix var: <http://localhost/var#>.
> @prefix e: <http://eulersharp.sourceforge.net/2003/03swap/log-rules#>.
> @prefix r: <http://www.w3.org/2000/10/swap/reason#>.
> @prefix n3: <http://www.w3.org/2004/06/rei#>.
> 
> :bob :likes _:somebody_1.
> :fred :likes _:somebody_1.
> :alice :likes :trina.
> :trina :likes _:sk0.
> 
> 
> Kind regards,
> 
> Jos De Roo | Agfa HealthCare
> Senior Researcher | HE/Advanced Clinical Applications Research
> T  +32 3444 7618
> http://www.agfa.com/w3c/jdroo/
> 
> Quadrat NV, Kortrijksesteenweg 157, 9830 Sint-Martens-Latem, Belgium
> http://www.agfa.com/healthcare
> 
> 
> *Dan Connolly <connolly@w3.org>*
> Sent by: public-cwm-talk-request@w3.org
> 
> 02/23/2010 11:16 PM
> 
> 
> To
>                public-cwm-talk@w3.org
> cc
> 
> Subject
>                scope of _:existentials in N3Logic?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> I'm re-implementing N3Logic in scala... in particular, parsing
> N3 syntax into Coherent formulas. I'm trying to figure
> out how existential variables work in N3, and I'm surprised about
> something.
> 
> Consider:
> 
>  There's somebody that Bob likes and Fred likes.
>  And everybody that Alice likes also likes this somebody.
>  Also, Alice likes Trina.
> 
>  Does Trina like this somebody?
> 
> Of course Trina does, but when I try to write the problem
> down in N3, cwm doesn't handle it as I'd expect. cwm concludes
> that Trina likes something, but not that Trina likes
> the same somebody that Bob and Fred like.
> 
> $ cat ...varscope1.n3
> @prefix : <evarscope1#>.
> @keywords is, of, a.
> 
> bob likes _:somebody.
> fred likes _:somebody.
> { alice likes ?X } => { ?X likes _:somebody }.
> alice likes trina.
> 
> $ cwm.py ...varscope1.n3 --think
> #Processed by Id: cwm.py,v 1.197 2007/12/13 15:38:39 syosi Exp
>        #    using base
> file:///home/connolly/projects/rdfsem/src/test/resources/varscope1.n3
> 
> #  Notation3 generation by
> #       notation3.py,v 1.200 2007/12/11 21:18:08 syosi Exp
> 
> #   Base was:
> file:///home/connolly/projects/rdfsem/src/test/resources/varscope1.n3
>     @prefix : <evarscope1#> .
>    @prefix va: <#> .
> 
>     @forAll va:X.
>         @forSome va:_g0 .
> 
>    :alice     :likes :trina .
> 
>    :bob     :likes va:_g0 .
> 
>    :fred     :likes va:_g0 .
> 
>    :trina     :likes  [
>         ] .
>    {
>        :alice     :likes va:X .
> 
>        }     <http://www.w3.org/2000/10/swap/log#implies>
> {va:X     :likes  [
>             ] .
>        } .
> 
> #ENDS
> 
> The surprise is bad news, but the good news is that cwm's
> way of reading this formula does fit inside coherent logic,
> which makes my coding goal straightforward...
> 
> -- 
> Dan Connolly, W3C http://www.w3.org/People/Connolly/
> gpg D3C2 887B 0F92 6005 C541  0875 0F91 96DE 6E52 C29E
> 
> 
> 
> 

Received on Thursday, 25 February 2010 12:06:48 UTC