Mapping Relational Data to RDF

On August 14, 2012 the W3C published two documents from the RDB2RDF WG as Proposed Recommendations. This is an important step in bringing the disparate worlds of Relational Data and the Web together. Relational databases underpin most business, government and scientific enterprises . Data and transactions double every two years – it is a 15 Billion dollar business. But for users of the Web, working with Relational data is not straightforward. The Proposed Recommendations from the RDB2RDF WG make it much easier.

Once Relational data is made available as RDF it can be combined with data from other sources on the Web. Moreover, Relational databases are notoriously semantics-free. The RDF representation of Relational data can have additional semantics added to it using OWL or some kind of Rules formalism. And, if you want to integrate data from different Relational sources – a common usecase – the RDF representation can be a great help.

The Direct Mapping document describes a default mapping – an algorithm – that translates a Relation Database schema into an RDF schema. This can be used in a couple of different ways: it can be used to load an RDF store with data from a Relational database or it can be used to translate SPARQL queries written on the RDF schema to SQL queries on the underlying database.

The R2RML document allows the mapping from Relational data to RDF to be customized using the full power of the SQL language. Thus, data can be massaged and transformed and made to turn handsprings before it is mapped to RDF. Users may want to start with the Default Mapping, examine it carefully and then customize it to meet their needs.

The R2RML customized mapping is written in RDF “Turtle” syntax. The RDFS class Table2TriplesMap maps the rows in a logical table, represented by a SQL query or view, into RDF triples. In general, each triple has a subject derived from the primary key, column name as predicate and value as object. The RDFS class RDFTermMap class represents the mapping to any RDF term: URIs, blank nodes, or literals. It has subclasses RDFSubjectTermMap, IRIMap, bNodeMap, and LiteralMap The RDFS class ForeignKey specifies a foreign key relationship.

The uptake of these two specifications has been gratifying. The formal W3C Implementation report includes test results from six implementations for each specification. In addition, anecdotal evidence suggests that there are several more implementations in the wild that have not taken the trouble to run the tests and report the results. Also, some members of the WG did not report on their implementations due to marketing and/or timing reasons.

We expect more implementations to surface in the coming months. The WG has not decided whether further work on the specifications, in terms of a 1.1 or a 2.0, is desirable. We actively solicit comments and feedback. Please send comments to public-rdb2rdf-comments@w3.org

Many thanks!