- From: Boris Villazon-Terrazas <boris.villazon@deri.org>
- Date: Fri, 29 Jul 2011 14:50:32 +0100
- To: Juan Sequeda <juanfederico@gmail.com>
- CC: Richard Cyganiak <richard@cyganiak.de>, public-rdb2rdf-wg@w3.org
- Message-ID: <4E32BAA8.9050401@deri.org>
On 29/07/2011 14:36, Juan Sequeda wrote: > Boris, > > Thanks! I should have figured it out by myself that I could have done > this in a SQL query. > > Part of me says that this is kind of a hack. Shouldn't R2RML have > enough expressivity to represent this, instead of writing it in a SQL > query? Maybe I'm wrong. I was just expecting it. Yes, you are right, the test case we have for this is one way to do it, not the only one. I'll add a new r2rml mapping for this test case, using your suggestion. Thanks Boris > > The relationship Student-Course is represented in a referencing object > map which is represented by exactly one rr:parentTriplesMap and it may > have one or more rr:joinCondition. Therefore, I could imagine seeing > the following: > > <#TriplesMap1> > rr:logicalTable [ rr:tableName "student"; ] > rr:subjectMap [ > rr:template "http://data.example.com/student/{s_id} > <http://data.example.com/student/%7Bs_id%7D>"; > rr:class ex:Student; > ]; > rr:predicateObjectMap [ > rr:predicateMap [ rr:predicate ex:name; ]; > rr:objectMap [ rr:column "name" ]; > ]; > rr:predicateObjectMap [ > rr:predicateMap [ rr:predicate ex:isEnrolled ] ; > rr:refObjectMap [ rr:parentTriplesMap <#TriplesMap2> ]; > ]. > <#TriplesMap2> > rr:logicalTable [ rr:tableName "course"; ] > rr:subjectMap [ > rr:template "http://data.example.com/course/{c_id} > <http://data.example.com/course/%7Bc_id%7D>"; > rr:class ex:Course; > ]; > rr:predicateObjectMap [ > rr:predicateMap [ rr:predicate ex:title; ]; > rr:objectMap [ rr:column "title" ]; > ]; > rr:predicateObjectMap [ > rr:predicateMap [ rr:predicate ex:hasStudent ] ; > rr:refObjectMap [ rr:parentTriplesMap <#TriplesMap1> ]; > ]. > > And the mapping author is going to expect this to work. Is this r2rml > wrong? Or is this just an implementation issue? > > I would suggest to add the many-to-many example in the spec and if my > previous r2rml is not wrong, create and Test Case for it. > > Thanks! > > Juan Sequeda > +1-575-SEQ-UEDA > www.juansequeda.com <http://www.juansequeda.com> > > > On Fri, Jul 29, 2011 at 8:23 AM, Boris Villazon-Terrazas > <boris.villazon@deri.org <mailto:boris.villazon@deri.org>> wrote: > > Hi Juan > > Thanks for asking! > > We have a Test Case for this > http://www.w3.org/2001/sw/rdb2rdf/test-cases/TCOverview.html#D011-M2MRelations > It includes the Direct Graph and R2RML mapping, and it is a good > opportunity to check it. > > The associated files to this test case are here > https://dvcs.w3.org/hg/rdb2rdf-tests/file/fd8f7c555644/D011-M2MRelations > > Thanks > > Boris > > > > > On 29/07/2011 14:10, Juan Sequeda wrote: >> Richard, all >> >> >> This may be a dumb question, but I haven't been able to figure >> out how to represent a many-to-many relationship in r2rml. For >> example: >> >> Student(s_id, name) >> Course(c_id, title) >> Enrolled(s_id, c_id) >> >> Where Enrolled is the many-to-many relationship. >> >> These are the TripleMaps for the Student and Course table: >> >> <#TriplesMap1> >> rr:logicalTable [ rr:tableName "student"; ] >> rr:subjectMap [ >> rr:template "http://data.example.com/student/{s_id} >> <http://data.example.com/student/%7Bs_id%7D>"; >> rr:class ex:Student; >> ]; >> rr:predicateObjectMap [ >> rr:predicateMap [ rr:predicate ex:name; ]; >> rr:objectMap [ rr:column "name" ]; >> ]. >> <#TriplesMap2> >> rr:logicalTable [ rr:tableName "course"; ] >> rr:subjectMap [ >> rr:template "http://data.example.com/course/{c_id} >> <http://data.example.com/course/%7Bc_id%7D>"; >> rr:class ex:Course; >> ]; >> rr:predicateObjectMap [ >> rr:predicateMap [ rr:predicate ex:title; ]; >> rr:objectMap [ rr:column "title" ]; >> ]. >> >> I assume that I should add a predicateObjectMap to TriplesMap1 >> (student) which is going to connect to TriplesMap2 (course), but >> the joinCondition is on the enrolled table. >> >> <#TriplesMap1> >> rr:predicateObjectMap [ >> rr:predicateMap [ rr:predicate ex:isEnrolled; ]; >> rr:objectMap [ >> rr:parentTriplesMap <#TriplesMap2>; >> rr:joinCondition [ >> rr:child "?????"; >> rr:parent "???"; >> ]; >> ]. >> >> How is this suppose to be done? And could you add an example in >> the specs. >> >> Thanks! >> >> Juan Sequeda >> +1-575-SEQ-UEDA >> www.juansequeda.com <http://www.juansequeda.com> > >
Received on Friday, 29 July 2011 13:51:18 UTC