- From: Juan Sequeda <juanfederico@gmail.com>
- Date: Thu, 17 Feb 2011 12:34:39 -0600
- To: Alexandre Bertails <bertails@w3.org>
- Cc: public-rdb2rdf-wg@w3.org
- Message-ID: <AANLkTikbE8Dh5fS0shKDdk8GzNsWx4eHD+huV6FDRrQc@mail.gmail.com>
> > > > [1] is a clear improvement of the RDF semantics, using proper maths > (denotational semantics). If you're not familiar with it, I suggest > you read [4]. I'm not claiming this is the final version and I already > know what I want to improve. > aha moment! Reading [4], I now understand where you are coming from and your motivation. I'm not a programming languages guy and from the small amount of what I have read about denotational semantics, is that it's a way to formalize the meaning of a programming language. However, the direct mapping is a mapping and not a programming language. So this has always been my confusion of why do it this way. Now reading that in [4], they used denotational semantics to describe the formal semantics of XSLT, a way to translate (map) from one XML doc to another XML doc, I understand where you are coming from. If only [4] was shared earlier... :P > Alexandre. > > [3] http://www.w3.org/TR/2010/WD-rdb-direct-mapping-20101118/#alg > [4] > http://homepages.inf.ed.ac.uk/wadler/papers/xsl-semantics/xsl-semantics.pdf > > > > > > > > [1] http://www.w3.org/2011/02/16-DM-denotational-rdf-semantics > > [2] http://www.w3.org/TR/2010/WD-rdb-direct-mapping-20101118/#RDFdef > > > > > > Juan Sequeda > > +1-575-SEQ-UEDA > > www.juansequeda.com > > > > > > On Wed, Feb 16, 2011 at 2:14 PM, Juan Sequeda <juanfederico@gmail.com> > > wrote: > > > > > > On Wed, Feb 16, 2011 at 1:56 PM, Alexandre Bertails > > <bertails@w3.org> wrote: > > On Wed, 2011-02-16 at 13:50 -0600, Juan Sequeda wrote: > > > On Wed, Feb 16, 2011 at 1:26 PM, Alexandre Bertails > > <bertails@w3.org> > > > wrote: > > > Hi Juan, > > > > > > On Wed, 2011-02-16 at 13:15 -0600, Juan > > Sequeda wrote: > > > > Alex, Eric > > > > > > > > > > > > Can you guys clarify some issues that I'm > > not understanding > > > correctly. > > > > > > > > > It's funny you ask these things right after > > I sent [1] :-) > > > > > > > > > > > > Yes, what a coincidence. You sent your email 1 hour > > ago. I've been > > > working on this for the last two. > > > > > > I suggest you follow [2] instead of what you > > found in the > > > current draft. > > > This is an updated version (far simpler and > > much more > > > complete) and I'll > > > be happy to help you going through it. > > > > > > > > > Damn.. 2 hours of work down the drain.... > > > > > > Sorry for that :-/ > > > > > > Np. Not your fault ;) > > > > One good indication of our work is to follow the > > activity on the > > repository. We don't produce the maths without having > > the corresponding > > code and tests. This part is now living in the > > "no_hierarchy" branch but > > I plan to merge that into the default one in the next > > days. That will > > also update the web application but this will be > > transparent, as both > > branches pass exactly the same test-suite. > > > > > > ok > > > > > > Alexandre. > > > > > > > > > > > > > > > Alexandre Bertails. > > > > > > [1] > > http://www.w3.org/mid/1297880900.11894.25.camel@simplet > > > [2] > > > http://www.w3.org/2011/02/16-DM-denotational-rdf-semantics > > > > > > > > > > > > > > > > > > Thanks! > > > > > > > > > > > > I'm going to use this as my > > > > example: > > > > > > http://www.w3.org/TR/2010/WD-rdb-direct-mapping-20101118/#lead-ex > > > > > > > > > > > > First, I'm going to define a Database > > Model, following: > > > > > > > > > > http://www.w3.org/TR/2010/WD-rdb-direct-mapping-20101118/#Rel > > > > > > > > > > > > Database = {"Address -> Table1, "People" > > -> Table2} > > > > > > > > > > > > Table1 = (Header1, 0, [id], 0, Body1) > > > > Header1 = {id -> int, city -> char, state > > ->char} > > > > Body1 = [Tuple1, Tuple2] > > > > Tuple1 = {id -> 18, city -> Cambridge, > > state -> MA} > > > > Tuple2 = {id -> 19, city -> Austin, state > > -> TX} > > > > > > > > > > > > Table2 = {Header2, 0, [id], FK2, Body2) > > > > Header2 = {id -> int, fname -> char, addr > > -> int} > > > > FK2 = { [addr] -> (Table1, [id]) } > > > > Body2 = [Tuple3, Tuple4, Tuple5] > > > > Tuple3 = {id -> 7, fname -> Bob, addr -> > > 18} > > > > Tuple4 = {id -> 8, fname -> Sue, addr -> > > null} > > > > Tuple5 = {id -> 9, fname -> Joe, addr -> > > 19} > > > > > > > > > > > > So lets start! > > > > [23] > > > > directDB() > > > > ≝ > > > > { directR(R, M) ∣ > > > > R ∈ DB } > > > > > > > > > > > > First of all, I do not know what M is. I'm > > assuming that DB > > > is the > > > > Database, therefore: > > > > > > > > > > > > R = {"Address -> Table1, "People" -> > > Table2} > > > > > > > > > > > > If I understand the notation correctly, > > then: > > > > > > > > > > > > directDB() = {directR("Address -> Table1, > > M), > > > directR("People" -> > > > > Table2, M)} > > > > > > > > > > > > so let's do the first directR > > > > > > > > > > > > 24] > > > > directR(R, M) > > > > ≝ > > > > { directT(T, R, > > > > M) ∣ T ∈ R.Body } > > > > > > > > I'm still unclear what is M > > > > > > > > > > > > What is R.Body? I'm assuming you are > > retrieving Body. > > > Therefore Body > > > > of Table1 is [Tuple1, Tuple2], therefore I > > assume: > > > > > > > > > > > > T = [Tuple1, Tuple2] > > > > > > > > > > > > now we have: > > > > > > > > > > > > directR("Address -> Table1, M) = > > { directT([Tuple1, Tuple2], > > > "Address > > > > -> Table1, M) } > > > > > > > > > > > > now let's go to the definition of directT > > > > > > > > > > > > 25] > > > > directT(T, R, M) > > > > ≝ > > > > { directS(S, T, > > > > R, M) ∣ S = > > > > subject(T, R, > > > > M) } > > > > > > > > > > > > now we need to know what is S > > > > > > > > > > > > 26] > > > > subject(T, R, M) > > > > ≝ > > > > if (pk(R) = > > > > ∅) then new blank > > > > node else rowIRI(R, T[pk(R)]) # references > > the ultimate > > > referent of hierarchical key > > > > > > > > > > > > What is pk(R)? > > > > > > > > > > > > now we have: > > > > > > > > > > > > subject([Tuple1, Tuple2], "Address -> > > Table1, M) = if > > > (pk("Address -> > > > > Table1) = 0 > > > > > > > > then new blank node > > > > > > > > else > > > > > > > > rowIRI("Address -> Table1, > > T[pk("Address -> > > > Table1)]) > > > > > > > > > > > > > > > > > > > > I'm assuming tat pk("Address -> Table1) > > will return the > > > primary key, > > > > then we have > > > > > > > > > > > > pk("Address -> Table1) = [id] > > > > > > > > > > > > Now we have > > > > > > > > > > > > subject([Tuple1, Tuple2], "Address -> > > Table1, M) = > > > rowIRI("Address -> > > > > Table1, T[[id]]) > > > > > > > > > > > > Now let's go to the definition of rowIRI > > > > > > > > > > > > [31] > > > > rowIRI(R, As) > > > > ≝ > > > > IRI(UE(R.name) + > > > > "/" + (join(',', > > > > UE(A.name) + "=" > > > > + UE(A.value)) ∣ > > > > A ∈ As ) + "#_") > > > > > > > > > > > > What is UE()? > > > > > > > > > > > > What is R.name? Where is it defined? > > > > > > > > > > > > Ok, I'm stopping here. > > > > > > > > > > > > p.s. By the time I finished doing all of > > this, I saw that > > > Alex sent an > > > > email with a new version of the > > denotational semantics. I'm > > > guessing I > > > > should re-do what I just did with the new > > version? > > > > > > > > > > > > Thanks guys for the clarifications! > > > > > > > > > > > > Juan Sequeda > > > > +1-575-SEQ-UEDA > > > > www.juansequeda.com > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
Received on Thursday, 17 February 2011 18:38:13 UTC