- From: Lee Feigenbaum <lee@thefigtrees.net>
- Date: Wed, 11 Nov 2009 15:15:47 -0500
- To: Andy Seaborne <andy.seaborne@talis.com>
- CC: Steve Harris <steve.harris@garlik.com>, SPARQL Working Group <public-rdf-dawg@w3.org>
Andy Seaborne wrote: > > > On 11/11/2009 13:46, Lee Feigenbaum wrote: > ... >> It would definitely help me in trying to figure out the cost of adopting >> this work; it seems particularly relevant to me whether the existing >> implementations that we think all implement assignment are actually >> implementing the same thing or not, to know whether we're talking about >> an obvious syntactic rewrite or whether the potential design space is >> larger (and therefore more fraught). >> >> Also, the commenters are using ARQ and have mentioned that the rewrite >> interpretation comes from you, I believe, so it would probably be best >> for you to provide it. :-) > > TopQuandrant are using ARQ (and other RDF systems) but their > requirements and experiences are theirs alone and I can't answer for > them. They have asked me (on jena-dev) the WG status and I directed > them to the comments list. They've pretty explicitly stated that their requirements are standardization of the feature that they use, which is ARQ's assignment implementation. > I had not seen Jeremy's rewrite description before; within this WG, and > to them probably, usually on jena-dev, I have talked about it being a > syntactic transformation for some time now. By that, I mean it gets > done in the algebra translation step and there is no modification to the > algebra to accomodate it. Well, I still don't understand it, in any case, which makes me wary of suggesting that it's a simple thing for us to standardize. > The term "sophisitic" (sic) has been used. There is no trickery going on. ? Don't understand. >>> It would also be helpful if you describe what OpenAnzo does. (ditto >>> other impls). I hope that Steve will provide the concrete example of >>> what he thinks Holger is asking for and any examples that concern him. >> >> Open Anzo attaches LETs at the group level (a la FILTERs) and applies >> them to the solution set that results from evaluating the group. It >> applies them in the lexical order that they're found. It (conceptually) >> evaluates each assignment to get a new one row, one column solution set, >> and joins that solution set with the the group's solution set. Rinse and >> repeat for the rest of the assignments attached to the group. > > Thanks. > > Because it's a conceptual join, per row, you allow solutions where the > same value is already bound to the named variable? Right. > (PS But what happens about errors in evaluation?) If the expr evaluates to a type error, I intended to have that discard a solution if the variable were already bound, and act as a no-op otherwise. But re-looking now I have a few bugs in the handling there. >>>>> We know LET->SELECT and SELECT->LET as syntatic transforms.. There is >>>>> no new functionality (it does not change the algebra at all); it's all >>>>> in the syntax to algebra translation step, which is what I consider >>>>> syntactic suger. >>>>> >>>>> I understand the comment as a request to make it easier to use by >>>>> exposing the assignment part of AS without the project interactions - >>>> >>>> Is this the "Extend" operator in the FPWD? I'm having trouble >>>> understanding the definition (and, again, checking if this is >>>> consistent >>>> with my implementation). >>> >>> Yes - "Extend" is the thing that does the AS part. >>> >>> The message 2009OctDec/0270.html tries to explain that - if anything >>> is not clear, then ask away on that thread. >>> >>> http://lists.w3.org/Archives/Public/public-rdf-dawg/2009OctDec/0270.html >> >> The explanation in that message doesn't really get at the details of the >> 3-argument algebraic forms in the document, which is what I'm most >> interested in. The def'n there says: >> >> extend(μ, var, term) = { (x,t) | x in dom(μ) and t = μ(v) or x = var and >> t = term } >> >> First, I assume mu(v) should be mu(x)? > > Yes. > >> Second, I don't understand how >> this definition treats the case in which mu already binds var to a value >> different from term. Best I can read is that you end up with solution >> that has 2 bindings for x, but I'd be surprised if that's the intention, >> so I imagine I'm reading it wrong? > > A solution mapping is a function so there can only be one x binding. > > (x,t) for x in dom(μ) and t != μ(v) is not in the set. > > Better would be: > > { (x,t) | > (x in dom(μ) and t = μ(x)) or (x not in dom(μ) and t = term) > } So this says that the LET assignment is ignored completely if the variable is already bound. That's different from what I do. Am I understanding this correctly? Lee > The first condition is not needed if there is a syntactic restriction > requiring new names but then you loose the relationship to BGP matching > and FILTERs, which OpenAnzo has. > Paul - what do you do? > >>> See also: >>> C.J.Date, "An Introduction to Database Systems", 8th edition, p197 >>> >>> (which I have just found - the use of the same name is co-incidence or >>> my subconscious). >>> >>>> One of the things that I'm trying to evaluate in looking at >>>> TopQuadrant's request is whether this is as simple as they and you >>>> claim. Part of trying to evaluate that is seeing if the various >>>> implementors really have implemented the same thing. Another part is >>>> figuring out if different people have different expectations about what >>>> LET would do. (Easy case, do people expect to be able to do LET ?y >>>> := ?y >>>> + 1 with any other effect besides returning no solutions.) >>> >>> I know of no one expecting that. I would argue against it and anything >>> that replaces one value with another. >>> >>> Don't know if you saw, someone asked about this >>> http://tech.groups.yahoo.com/group/jena-dev/message/42041 >>> >>> My implementation is described at: >>> http://www.openjena.org/ARQ/assignment.html >>> where the assignment rules align pattern matching and assignment. >> >> The rule there about how you handle expressions that evaluate to type >> errors does not match what Open Anzo does. > > You didn't describe that part - is there a documentation link? > > http://www.openanzo.org/projects/openanzo/wiki/SPARQLExtensions does not > say ;-) > > (The F2F discussed errors in SELECT-exprs and concluded they should not > pass the current solution. That would be compatible.) > >> Again, I mainly bring this up >> to determine how small the design space for this suggested feature >> actually is, how much it actually is purely a syntactic rewrite, and how >> much there is existing consensus from implementors and users around the >> expectations of the feature. My desire to reconsider the feature (or >> not) depends largely on these things. >> >> Lee > > Andy >
Received on Wednesday, 11 November 2009 20:16:28 UTC