Paul,
I'm not an XG member either, but will give my â‚¬0.02.
On 26 May 2008, at 15:31, Paul Tyson wrote:
> Here is a rough cut straw man proposal. It has several defects, and
> raises many questions. I would like to submit this to the XG for
> discussion on at least 3 topics:
> 1) the validity and usefulness of the schema itself (or any such
> schema);
Some details are obviously missing, such as unique keys, nullabilitiy,
default values, and it's not clear how you would actually express
tuple data. The most interesting question is how to deal with types.
Would you define a set of SQL types (sql:VARCHAR, in analogy to
xsd:string); or would you define a mapping from SQL types to XSD types?
I would insist that such a schema should be modelled after the SQL
standard rather than the relational algebra.
> 2) possible use in automated SQL-SPARQL rewriting (2-way);
SPARQL-to-SQL over such a schema is straightforward, although I don't
believe this is a useful way to access relational data.
> 3) possible use as an intermediate format between RDB and domain-
> specific ontologies.
Well, you could use it as an intermediate format, and use a rules
language to map into a domain-specific ontology.
This requires that:
a) there is a rules language sufficiently expressive to deal with real-
world mapping scenarios; and that
b) evaluation of these rules can be efficiently pushed down into the
database engine as part of the query execution. Another question is
wether
c) it's preferable to develop mappings in a rules language, or in a
custom database-oriented language.
I'm not sure about the answers.
Relevant prior art in this area is the Relation.OWL series of
publications [1].
Best,
Richard
[1] http://dbs.cs.uni-duesseldorf.de/RDF/
>
>
> @prefix rdfs: http://www.w3.org/2000/01/rdf-schema# .
> @prefix rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns# .
> @prefix rdb: http://www.w3.org/xg-rdb2rdf/rdb# .
>
> rdb:Relation a rdfs:Class . # a database table
> rdb:relationName a rdf:Property ; # the table name
> rdfs:domain rdb:Relation .
> rdb:header a rdf:Property ;
> rdfs:domain rdb:Relation ;
> rdfs:range rdb:RelationHeader .
> rdb:body a rdf:Property ;
> rdfs:domain rdb:Relation ;
> rdfs:range rdb:RelationBody .
> rdb:RelationHeader a rdfs:Bag . # of TypeDefinitions
> rdb:TypeDefinition a rdfs:Class .
> rdb:typeName a rdf:Property ; # of a TypeDefinition or TypedValue
> rdfs:range rdb:TypeDefinition ;
> rdfs:range rdb:TypedValue .
> rdb:underlyingType a rdf:Property ; # of a TypeDefinition
> rdfs:range rdb:TypeDefinition .
> rdb:primaryKey a rdf:Property ; # boolean
> rdfs:range rdb:TypeDefinition .
> rdb:foreignKey a rdf:Property ; # reference to foreign typeName
> rdfs:range rdb:TypeDefinition .
> rdb:RelationBody a rdfs:Bag . # of Tuples
> rdb:Tuple a rdfs:Bag . # of TypedValues
> rdb:TypedValue a rdfs:Class .
> rdb:value a rdf:Property ; # of a TypedValue
> rdfs:range rdb:TypedValue;
>