Re: documenting a default mapping

Eric,

Welcome back, good to see you in action, again ;)

> I'd like to get this into a forum for disucssion with rdb2rdf WG and
> the broader community. If folks here are interested in this material,
> I'll draw up a WG-publishable document. If not, I can make it available
> elsewhere. Either way, the feedback will be useful to us.

I like the idea. How about an Editor's Draft re "Core R2RML" or "Abstract
Syntax for R2RML" or " R2RML Semantics" that capture this?

I doubt that we'll have time tomorrow (completing UC, panel at SemTech,
etc.) but I put it on the agenda for next week, makes sense?

Cheers,
      Michael

-- 
Dr. Michael Hausenblas
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



> From: Eric Prud'hommeaux <eric@w3.org>
> Organization: World Wide Web Consortium (W3C) - http://www.w3.org/
> Date: Mon, 31 May 2010 08:45:52 +0200
> To: RDB2RDF WG <public-rdb2rdf-wg@w3.org>
> Subject: documenting a default mapping
> Resent-From: RDB2RDF WG <public-rdb2rdf-wg@w3.org>
> Resent-Date: Mon, 31 May 2010 06:46:32 +0000
> 
> Noting Irina Astrova's "Rules for Mapping SQL Relational Databases to
> OWL Ontologies", I suspect it would be useful to write down a base
> case transformation from relations to RDF, analogous to D2R's minimal
> configuration for relations with single primary keys. Following is an
> algebra and an explaination for that:
> 
> Suppose we want to RDF-ize a relation R:
>   R:relation := (name:string, data:set(T:tuple))†
>   T := set (A:attribute)
>   attributes := (name:string, value:string, function:null|pk|reference|scalar)
> meaning attributes are SQL NULL, a primary key, a foreign key, or
> scalar values. (Yes, this minimal mapping precludes attributes from
> being both primary AND foreign keys.)
> 
> RDFr(R)    := set (RDFt(T) for each T in R.data)
> RDFt(T)    := set (RDFl(S, A) for each scalar A in T)
>             + set (RDFn(S, A) for each reference A in T) | S = nodemap(pk(T))
> RDFl(S, A) := triple (S, predicatemap(A), literalmap(A))
> RDFn(S, A) := triple (S, predicatemap(A), nodemap(A))
> 
> literalmap produces RDF literal with XSD datatypes with this type
> mapping TM:
>   SQL  XSD
>   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  http://www.w3.org/TR/xmlschema-2/#string
>   VARCHAR http://www.w3.org/TR/xmlschema-2/#string
>   STRING http://www.w3.org/TR/xmlschema-2/#string
> 
> literalmap := rdfLiteral(A,value, TM(A.type))
> 
> nodemap and predicate map are lexical transformations producing IRIs,
> either hash
>   nodemap(A):IRI = IRI(stemURI + "/" + R.name "/" A.name + "." + A.value +
> "#_")
>   predicatemap(A):IRI = IRI(stemURI + "/" + R.name "#" A.name)
> or slash-compatible:
>   nodemap(A):IRI = IRI(stemURI + "/" + R.name "/" A.name + "/" + A.value)
>   predicatemap(A):IRI = IRI(stemURI + "/" + R.name "/" A.name)
> 
> † A variant of this algebra with the traditional relation definition
>     R:relation := (name:string, header:set(D:definition),
> data:multiset(T:tuple))
>   was implemented in scala
>     
> https://dvcs.w3.org/hg/stemGraph/file/4ace3eb848d4/src/main/scala/Main.scala
>   but the extra rigor ensuring consistent attributes provides more noise
>   than value to this application.
> 
> 
> I'd like to get this into a forum for disucssion with rdb2rdf WG and
> the broader community. If folks here are interested in this material,
> I'll draw up a WG-publishable document. If not, I can make it available
> elsewhere. Either way, the feedback will be useful to us.
> -- 
> -ericP
> 

Received on Monday, 31 May 2010 09:13:13 UTC