d2rq/d2rq — Issue #111: d2rq:propertyMap, a full-featured alternative to d2rq:dynamicProperty
Author: cygri
Created: 2012-03-06 23:50:46+00:00
State: open
Labels: expressivity, priority, R2RML

`d2rq:dynamicProperty` is a URI pattern that specifies how to construct the property of a property bridge. It can be highly useful, but is limited by the fact that it doesn't support `d2rq:translateWith`, `d2rq:uriSqlEpression`, and other goodies that can be found on full-featured resource maps.

`d2rq:propertyMap` would be a property whose value is a full-blown resource map:

map:MyBridge a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:MyMap;
d2rq:propertyMap [
d2rq:uriColumn "RELATIONSHIP.TYPE";
d2rq:translateWith map:MyTranslationTable;
];
d2rq:column "RELATIONSHIP.VALUE".

The old `d2rq:dynamicProperty` would be a special case, a `d2rq:propertyMap` whose only property is a `d2rq:uriPattern`. A property bridge could have multiple property maps, just as it can have multiple `d2rq:property` or `d2rq:dynamicProperty` values.

To implement this, the `PropertyBridge` class needs a collection of `ResourceMaps` (or some subtype) that is initialized by the `MapParser` and used for the property `NodeMaker` when building the `TripleRelations`. Some of this is already in place thanks to `d2rq:dynamicProperty`.