Re: New proposal for the semantics

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?) 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.
> 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 Thursday, 11 November 2021 14:50:16 UTC