- From: Peter F. Patel-Schneider <pfpschneider@gmail.com>
- Date: Tue, 26 Aug 2025 14:20:14 -0400
- To: public-rdf-star-wg@w3.org
The problem with BNODE() is that it is a different bnode that the one in the binding set. Admittedly, sending a bnode through a service request is a bit tricky, but I imagine that there might be a reason in some cases to have bnode identity survive the transition. In any case, I don't believe that BIND can be used for the OVERALL case. peter On 8/26/25 3:10 AM, Olaf Hartig wrote: > On Mon, 2025-08-25 at 17:00 -0400, Peter F. Patel-Schneider wrote: >> I believe that there is a problem with SERVICE constructs - you can't send the >> binding sets to the remote service as a VALUES construct because you can't >> send blank nodes correctly. > > You are right, that is a problem. > > An alternative to adding such VALUES clauses would be to add BIND clauses, one BIND clause per variable bound in μ_ctx. > In this case, for each variable ?v ∈ dom(μ_ctx) for which μ_ctx(?v) is a blank node, the BIND clause would be: > > BIND( BNODE() AS ?v ) > > It is okay that these are fresh blank nodes because the blank nodes in μ_ctx would be disjoint from the blank nodes at > the SPARQL endpoint anyways. > > For the OVERALL variant, it would have to be a UNION of multiple blocks of BIND clauses, one block per solution mapping > in Ω_ctx. > > The only tricky bit is the case in which μ_ctx binds multiple variables to the *same* blank node; e.g., ?v1,?v2 ∈ > dom(μ_ctx) such that μ_ctx(?v1) is the same blank node as μ_ctx(?v2). I am not sure how to solve that. > > -Olaf > > >> peter >> >> >> On 8/24/25 2:54 PM, Olaf Hartig wrote: >>> Hi EXISTS TF members, >>> >>> I have updated my document after last Friday's discussion. >>> >>> https://gist.github.com/hartig/3fffc7a02f3e0411158298e313b4c9c2 >>> >>> Most importantly, I have added a detailed discussion of all cases >>> possible for the pattern within an EXISTS expression---see the section >>> called "Why is a similar change not needed for the other cases?" >>> >>> I have also tried to add the document into the repo [1], but somehow >>> the CI run of the corresponding PR failed. Until this is fixed, the >>> link above is the most recent version of the document. >>> >>> -Olaf >>> >>> [1] >>> https://github.com/w3c/sparql-query/pull/270 >>> >>> >>> On Fri, 2025-08-22 at 11:03 +0000, Olaf Hartig wrote: >>>> Hi, >>>> >>>> As the different variations were mentioned only informally in Peter's >>>> email, I wanted to convince myself that we can >>>> also define them formally in the spec. For the DEEP INJECTION >>>> variations it was not immediately clear to me how this >>>> could be done; especially not for the OVERALL-variant of DEEP >>>> INJECTION. >>>> >>>> I found a way to do it (based on an idea that Andy mentioned during >>>> the last TF meeting), and wrote a short document to >>>> describe the exact changes that are needed: >>>> >>>> https://gist.github.com/hartig/3fffc7a02f3e0411158298e313b4c9c2 >>>> >>>> >>>> Best, >>>> Olaf >>>> >>>> >>>> On Thu, 2025-08-21 at 10:09 +0000, Olaf Hartig wrote: >>>>> On Thu, 2025-08-21 at 03:17 +0200, James Anderson wrote: >>>>>> On 20. Aug 2025, at 22:30, Andy Seaborne <andy@apache.org> wrote: >>>>>>> On 16/08/2025 15:45, Peter F. Patel-Schneider wrote: >>>>>>>> There was again discussion in the SPARQL EXISTS task force on >>>>>>>> different solutions to the SPARQL EXISTS >>>>>>>> problems. >>>>>>>> The solutions amount to, roughly: >>>>>>>> Simple LEFTJOIN, where no bindings from outside the EXISTS >>>>>>>> affect the pattern inside. >>>>>>> >>>>>>> SEMIJOIN? >>>>>> >>>>>> is it not the case that, where no variable from the solution is >>>>>> free in the exists pattern, that pattern reduces to >>>>>> a >>>>>> boolean constant value which depends only on the state of the >>>>>> target graph? >>>>> >>>>> What do you mean with a variable being "free in the exists >>>>> pattern"? >>>>> >>>>> I agree with Andy, it is a SEMIJOIN. >>>>> >>>>> @Peter, thanks for this great summary! I agree with your believe >>>>> that ONCE versus OVERALL is relevant only for DEEP >>>>> INJECTION. >>>>> >>>>> -Olaf >>>>> >>>>> >>>>>>> >>>>>>>> Values injection at the beginning of the pattern (SHALLOW >>>>>>>> INJECTION). >>>>>>>> Values injection inside the pattern (DEEP INJECTION), with >>>>>>>> two variations >>>>>>>> values projected out in sub-SELECTs are not affected >>>>>>>> (PROJECTION) and >>>>>>>> values projected out in sub-SELECTs are affected. >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>>> --- >>>>>> james anderson | james@dydra.com | >>>>>> https://dydra.com/ >>>>>> >>>>>> >>>>>> >>>>> >>>> >>> >> >> >
Received on Tuesday, 26 August 2025 18:20:20 UTC