W3C home > Mailing lists > Public > public-rdb2rdf-wg@w3.org > August 2011

Re: Proposal for the Direct Mapping

From: Juan Sequeda <juanfederico@gmail.com>
Date: Tue, 2 Aug 2011 06:44:05 -0500
Message-Id: <B846FDBC-3F80-4680-921D-31EFE317828A@gmail.com>
Cc: Eric Prud'hommeaux <eric@w3.org>, rdb2RDF WG <public-rdb2rdf-wg@w3.org>
To: Michael Hausenblas <michael.hausenblas@deri.org>
Eric,

This is great. I was planning to write up a proposal myself, but you saved my time. I do have some comments and suggestions. I'm writing up a new proposal based on what you have. I should have it done before the meeting

Juan Sequeda
www.juansequeda.com

On Aug 2, 2011, at 2:01 AM, Michael Hausenblas <michael.hausenblas@deri.org> wrote:

> 
> Eric,
> 
>> PROPOSAL: that the English definition of the direct mapping be defined as:
>> [[
>> The Direct Mapping is a formula for creating an RDF graph from the
>> rows in a table. A base IRI defines a web space for the labels in
> 
> ...
> 
> Thanks a lot for this proposal, Eric! I'm wondering if we're ready to resolve this today or if the WG feels that we need to discuss a bit more. In any case I'm flexible to change today's agenda [1] if the WG thinks it makes sense ...
> 
> Cheers,
>    Michael
> 
> [1] http://lists.w3.org/Archives/Public/public-rdb2rdf-wg/2011Jul/0183.html
> --
> Dr. Michael Hausenblas, Research Fellow
> LiDRC - Linked Data Research Centre
> DERI - Digital Enterprise Research Institute
> NUIG - National University of Ireland, Galway
> Ireland, Europe
> Tel. +353 91 495730
> http://linkeddata.deri.ie/
> http://sw-app.org/about.html
> 
> On 2 Aug 2011, at 00:22, Eric Prud'hommeaux wrote:
> 
>> * Richard Cyganiak <richard@cyganiak.de> [2011-07-26 19:41+0100]
>>> Hi all,
>>> 
>>> The Direct Mapping document is stuck because we have a stalemate between the editors. With Last Call approaching, we need *some* way of breaking the stalemate. So here's a proposal. This is a possible new outline for the document, along with assignments of separate sections to separate editors.
>>> 
>>> 
>>>   1. Introduction
>>>      - What is this?
>>>      - How does it relate to R2RML
>>>      - Target audience, assumed level of knowledge
>>>      - RDF terms and SQL/relational terms are used as defined in
>>>        documents XXX and YYY
>>> 
>>>   2. Example (Informative)
>>>      - A simple two-table example
>>>      - Quick explanation of foreign key handling
>>>      - Quick explanation of tables w/o PKs
>>> 
>>>   3. The Direct Mapping [in Plain English]
>>>      - “The Direct Graph of a database is the union of the Table Graphs
>>>         of all tables in the database.”
>>>      - “The Table Graph of a table is the union of the Row Graphs...”
>>>      - “The Row Graph of a row is ...”
>>>      - ...
>> 
>> PROPOSAL: that the English definition of the direct mapping be defined as:
>> [[
>> The Direct Mapping is a formula for creating an RDF graph from the
>> rows in a table. A base IRI defines a web space for the labels in
>> this graph; all labels are generated by appending to the base.
>> 
>> The functions scalar and reference extract the scalar and reference
>> attributes (those participating in a foreign key) respectively:
>> 
>> dfn references: the attributes in a table's foreign keys.
>> 
>> dfn scalars: the attributes in a table which are NOT in any foreign
>>  key.
>> 
>> dfn: non-unary references: the references for which the table's
>>  foreign key is NOT composed of a single attribute.
>> 
>> SQL table and attribute identifiers compose RDF IRIs in the direct
>> graph. These identifiers are separated by the punctuation characters
>> '#', ',', '/' and '='. All SQL identifiers are escaped following URL-
>> encoding
>> <http://www.w3.org/TR/html5/association-of-controls-and-forms.html#url-encoded-form-data>
>> except that only the above punctuation and the characters not
>> permitted in RDF IRIs are escaped.
>> 
>> In the direct graph, there is an identifier for each row in a database
>> table. If the row is in a table with a primary key, this is formed
>> from the table name and the attribute names and values of each attribute
>> in the primary key. If there is no primary key for the table, the row
>> identifier is a fresh blank node:
>> 
>> dfn row identifier:
>> 
>>  if the table has a primary key with attributes, the relative IRI for
>>  the row identifier is the concationation of the table name, '/', and
>>  a ','-separated concatonation of each attribute name, '=', and the
>>  attribute value.
>> 
>>  if the table has no primary key, the row identifier is a fresh blank
>>  node.
>> 
>> A (potentially unary) list of attribute names in a table form a
>> property IRI:
>> 
>> dfn property IRI: the concationation of the table name, '/', and a
>>  ','-separated concatonation of each attribute name, and a '#' at
>>  the end of the property IRI.
>> 
>> The values in a row are mapped to RDF literals:
>> 
>> dfn litaral map: a mapping from an SQL value with a datatype to an RDF
>>  literal with and XML Schema datatype where the RDF literal has a
>>  lexical value equivalent to the SQL lexical value and the datatype
>>  mapping is found in this table:
>> 
>> SQL      XSD datatype
>> ___     ____________
>> INT    http://www.w3.org/TR/xmlschema-2/#integer
>> FLOAT    http://www.w3.org/TR/xmlschema-2/#float
>> DATE    http://www.w3.org/TR/xmlschema-2/#date
>> TIME    http://www.w3.org/TR/xmlschema-2/#time
>> TIMESTAMP    http://www.w3.org/TR/xmlschema-2/#dateTime
>> CHAR    plain literal
>> VARCHAR plain literal
>> STRING    plain literal
>> 
>> The Direct Maping is defined by a set of mapping functions from table
>> rows to RDF triples:
>> 
>> dfn direct mapping: the set of triples produced by invoking the
>>  <table mapping> on each table in a database.
>> 
>> dfn table mapping: the set of RDF triples created by invoking the
>>  <row mapping> on each row in a table.
>> 
>> dfn row mapping: using a row identifier S for the row,
>> the type triple:
>>   (S, rdf:type, <table type>)
>> plus the scalar triples:
>>   for each attribute in the list of <scalars> where the attribute
>>     value is non-NULL:
>>     (S,
>>      the <property IRI> for the attribute,
>>      the <literal map> for the attribute value).
>> plus the reference triples:
>>   for each list of attributes in the <non-unary references> where none
>>     of the attribute values are NULL:
>>     (S,
>>      the <property IRI> for the attributes,
>>      the <row identifier> for the referenced triple)
>> ]]
>> 
>>>   A. Appendix: Formalisms (Informative)
>>>      - should be crisp, short, precise, with only minimum explanation
>>>        and examples
>>>      A.1 Datalog Rules
>>>      A.2 Denotational Semantics
>>>      A.3 Set-Style Direct Mapping
>>> 
>>>   B. Acknowledgements (Informative)
>>> 
>>>   C. References
>>> 
>>> 
>>> I see Juan and Marcelo editing A.1.
>>> 
>>> I see Alexandre editing A.2.
>>> 
>>> I see Eric editing 2 (which he already wrote), 3 (which *mostly* exists), and A.3.
>>> 
>>> I don't know about 1, B, and C.
>>> 
>>> My reasoning is that there is no objective way of picking any of the formalisms over another formalism, so the normative expression should be the lowest common denominator: plain English. By making the formalisms all informative, we free them from the burden of having to explain the direct mapping itself in a generally accessible way. The focus can be totally on presenting the formalisms in all their terseness to an audience that is familiar with datalog/denotational semantics/whatever.
>>> 
>>> I hope this proposal aids discussion.
>>> 
>>> Best,
>>> Richard
>> 
>> -- 
>> -ericP
>> 
> 
> 
Received on Tuesday, 2 August 2011 11:44:39 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:00:26 UTC