Re: New proposal for the semantics


On 11/11/2021 15:49, William Van Woensel wrote:
>
> Hi Pierre-Antoine,
>
> > In your proposal: > > _:x a :Penguin. :bob :thinks {_:x a :Bird}. 
> {:bob :thinks > _:y}=>{{:bob :is :wise}=>_:y}. > > |= > > {:bob :is 
> :wise} => {_:x a :Bird}. > > Where “_:x” would be considered as a 
> universal variable when the rule > is fired (I think?)
>
> Well, variables occurring *only* in the consequence are treated a 
> little differently.
>
> One way to look at it is to consider that they are treated as 
> existentials, scoped to the consequence graph. As such they generate a 
> new blank node.
>
> Another way to look at it is to consider that they are treated as 
> universals, scoped to the top level, but that the derivation generates 
> a witness (blank node).
>
> Ah indeed, sorry, it wasn’t an ideal example. I do understand your 
> proposal treats variables differently depending on their 
> “range-restrictedness”.
>
> > Now, I’m not trying to be flippant, but I believe this was disliked 
> > by Doerthe and yourself :-) and, I’m wondering what has changed.
>
> fair question :-)
>
> Let's say that a lot of discussions, and a lot of struggling with 
> implicit quantifications, made me gradually change my mind. Also, I 
> still do not consider this as dynamic scoping per se. Granted, to 
> explain the working of the proposed semantics, I use words such as 
> "when the rule is fired", which makes it sound very "execution"- or 
> "dynamic"-oriented. But the way the semantics is defined is very static.
>
> But yes, following different paths, we landed roughly in the same place :)
>
>                 Well, it’s good to hear this general notion wasn’t too 
> far out there :-) And, yes, I was abusing the definition of dynamic 
> scoping a bit – but then again semantic degradation is a common 
> practice in CS :-)
>
> > Personally, I had already shot myself in the foot under that > 
> particular interpretation: I was generating rules that had /widely > 
> different meanings/ depending on whether blank nodes or URIs were > 
> being used to structure the data. I believe this will be the result > 
> of this new interpretation as well (?)
>
> Yes -- the pathological example in my email is something that I am not 
> very happy with...
>
> But my impression is that we
>
> (Did your thought get cut off here?)
>
Yes apparently it was :-/

I guess what I wanted to write was that: the right balance between 
simplicity (staying away from explicit quantification) and 
expressiveness (especially the ability to describe proofs or import 
content with log:semantics) is hard to find. This kind of corner cases 
are the price to pay, I believe.

Which is not to say that the balance I found here is the best possible one!

> Honestly, this particular issue is what made me move away from the 
> whole “dynamic scoping” idea (= the original implementation in jen3). 
> Personally I think it will be quite difficult to debug these kinds of 
> cases, and I’m unsure how one would be able to solve them once 
> identified (some skolem-based solution likely?). Of course, they only 
> occur when people are generating rules – I don’t know whether this 
> will be a very popular practice – but I end up doing it quite often.
>
 From what I understand, this is something that Dörthe also did...

Actually, I suspect that you don't need to be /generating/ rules to run 
into that kind of problems. Simply "extracting" rules from a quoted 
graph requires some juggling with variable scopes, I believe. E.g.:

{ ?x a :Specialist; :says { ?y => ?z } } => { ?y => ?z }.

   best

> > You also mention that blank nodes outside of rules are not > 
> intrinsically quantified – but their scope does seem to be > 
> document-wide (as per Doerthe’s example 2)? I haven’t had the time to 
> > read your semantics document, so it may become clearer afterwards > :-)
>
> We must distinguish here the syntactic scope and the semantic scope.
>
> In my proposal, blank node labels and quick vars are syntactically 
> scoped to the whole document, yes. Meaning: the same bnode label / 
> quickvar represents the same thing across the whole document, but may 
> represent different things in different documents.
>
> The "semantic scope" is the scope of the quantification. But variables 
> have no intrinsic quantification here.
>
> I’m unsure whether I fully understand this difference – but I’m sure 
> it will become clearer to me once I understand your proposal better :-)
>
> Thanks
>
> William
>

Received on Monday, 15 November 2021 11:21:17 UTC