- From: Pierre-Antoine Champin <pierre-antoine.champin@ercim.eu>
- Date: Mon, 15 Nov 2021 12:21:12 +0100
- To: William Van Woensel <william.vanwoensel@gmail.com>, Pierre-Antoine Champin <pierre-antoine@w3.org>, "public-n3-dev@w3.org" <public-n3-dev@w3.org>
- Message-ID: <bd32cac1-2377-d4f6-04b3-856d3fb59af3@ercim.eu>
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
>
Attachments
- application/pgp-keys attachment: OpenPGP public key
Received on Monday, 15 November 2021 11:21:17 UTC