Not another mapping markup language!

Kingsley Idehen has again graciously given LinqToRdf some much needed link-love. He mentioned it in a post that was primarily concerned with the issues of mapping between the ontology, relational and object domains. His assertion is that LinqtoRdf, being an offshoot of an ORM related initiative, is reversing the natural order of mappings. He believes that in the world of ORM systems, the emphasis should be in mapping from the relational to the object domain.

I think that he has a point, but not for the reason he’s putting forward. I think that the natural direction of mapping stems from the relative richness of the domains being mapped. The impedence mismatch between the relational and object domains stems from (1) the implicitness of meaning in the relationships of relational systems and (2) the representation of relationships and (3) type mismatches.

If the object domain has great expressiveness and explicit meaning in relationships it has a ‘larger’ language than that expressible using relational databases. Relationships are still representable, but their meaning is implicit. For that reason you would have to confine your mappings to those that can be represented in the target (relational) domain. In that sense you get a priority inversion that forces the lowest common denominator language to control what gets mapped.

The same form of inversion occurs between the ontological and object domains, only this time it is the object domain that is the lowest common denominator. OWL is able to represent such things as restriction classes and multiple inheritance and sub-properties that are hard or impossible to represent in languages like C# or Java. When I heard of the RDF2RDB working group at the W3C, I suggested (to thunderous silence) that they direct their attentions to coming up with a general purpose mapping ontology that could be used for performing any kind of mapping.

I felt that it would have been extremely valuable to have a standard language for defining mappings. Just off the top of my head I can think of the following places where it would be useful:

  1. Object/Relational Mapping Systems (O/R or ORM)
  2. Ontology/Object Mappings (such as in LinqToRdf)
  3. Mashups (merging disparate data sources)
  4. Ontology Reconciliation – finding intersects between two sets of concepts
  5. Data cleansing
  6. General purpose data access layer automation
  7. Data export systems
  8. Synchronization Systems (i.e. keeping systems like CRM and AD in sync)
  9. mapping objects/tables onto UIs
  10. etc

You can see that most of these are perennial real-world problems that programmers are ALWAYS having to contend with. Having a standard language (and API?) would really help with all of these cases.

I think such an ontology would be a nice addition to OWL or RDF Schema, allowing a much richer definition of equivalence between classes (or groups or parts of classes). Right now one can define a one-to-one relationship using the owl:equivalentClass property. It’s easy to imagine that two ontology designers might approach a domain from such orthogonal directions that they find it hard to define any conceptual overlap between entities in their ontologies. A much more complex language is required to allow the reconciliation of widely divergent models.

I understand that by focusing their attentions on a single domain they increase their chances of success, but what the world needs from an organization like the W3C is the kind of abstract thinking that gave rise to RDF, not another mapping markup language!

Here’s a nice picture of how LinqToRdf interacts with Virtuoso (thanks to Kingsley’s blog).

How LINQ uses LinqToRdf to talk to SPARQL stores

How LINQ uses LinqToRdf to talk to SPARQL stores

About these ads


  1. My reasons for reversing the order are actualy quite historic. Enterprise Object Frameworks (EOF) from NeXT (now part of Apple) was one of the earliest attempts of Object and Relational DBMS realm meshing, the goal was to create a “Concrete Conceptual Model” as the focal point of the MVC pattern to which EOF was bound courtesy of its proximity to Objective-C.

    Unfortunately, as the concepts of EOF spread into the broader market, the focus on Objects and then to RDBMS storage, due to expressivity power from the Object side dominated technology evolution.

    OWL, RDFS, and RDF collectively provide technology that now enable us to step back and invert the model such that we leverage the expressivity of OWL (in particular) when constructing “Concrete Conceptual Models” from existing data that resides in RDBMS engines.

    If you are able to take a close look at Virtuoso and its SPASQL (SPARQL inside SQL) based Meta Schema Language, you will see that we provide very deep and poweful expressivity as a natural component of the Mapping language.

    We want to work with rich data objects that are inter-connected via HTTP (the Web) and by doing so we arrive back at EOF (or more recently Entity Frameworks from Microsoft) without platform lock-in at the OS, programming language, framewok, or DBMS levels.


    Note: if you get the OpenLink Data Explorer ( for Firefox and look at the presentation above (or other Web information resources) you will also see where I am coming from with additional clarity re. Web as the new “Concrete Conceptual Model” substrate for interlinked data objects (Linked Data).

    LINQ and what I am trying to unveil are one of the most potent technology combos the industry has seen in a long time (since EOF which was powerful albeit land locked. Remember the Web was invented on a NeXT black box).

Comments are closed.