- 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