- From: Chris Bizer <chris@bizer.de>
- Date: Tue, 22 Jun 2004 21:58:18 +0200
- To: "Stephane Fellah" <fellah@pcigeomatics.com>, <www-rdf-interest@w3.org>, "Richard Cyganiak" <richard@cyganiak.de>
- Message-ID: <000b01c45893$441dffb0$83ec2da0@chrisch4uuoi65>
Hi Stephane,
yes, conditional mappings are definitively a useful feature for D2RQ and using SQL syntax for these conditions seems adequate and straight forward.
We were planning to have a d2rq:additionalWhereClause property on class map level. But you are right, this would also be useful on property bridge level. Maybe we should have a general d2rq:condition, which could be used on class maps or property bridges or both.
>
>Good job ! I was looking forward seeing such tool. I have developed my own branch of
>mapping tool based on the former D2RM in order to map a complex database. During
>my development, I have came out with the need to add a precondition to perform a
>mapping to a property. For example, a property P1 (column) which does not have the
>information, it may use a conventional null value (for example 0).
>In this case, the mapping of the property is preconditioned by the fact that P1!=0. You
>may more complex precondition based on Boolean expression using comparator and
>Boolean operator AND/OR/NOT. Using SQL syntax for this adequate.
>
>The following example show how an ellipsoid mapping can be described.
>An ellipsoid can be described in 3 ways:
>
>1) (Semi-major axis, semi-minor axis)
>
>The Precondition of mapping to use this case is:
>
>@@SEMI_MINOR_AXIS@@!=0 AND @@ELLIPSOID_SHAPE@@=true
>
>The mapping is the following
>
> <rdf:Property rdf:about="http://www.isotc211.org/iso19111#semiMinorAxis">
> <d2r:propertyBridge>
> <d2r:ObjectPropertyBridge >rdf:about="http://www.pcigeomatics.com/d2r/epsgMapping/ellipsoidSemiMinorPB">
> <d2r:preCondition>@@SEMI_MINOR_AXIS@@!=0 AND @@ELLIPSOID_SHAPE@@=true</d2r:preCondition>
> <d2r:belongsToClassMap >rdf:resource="http://www.pcigeomatics.com/d2r/epsgMapping/secondDefiningParameterCM"/>
> <d2r:refersToClassMap >rdf:resource="http://www.pcigeomatics.com/d2r/epsgMapping/semiMinorLengthMap"/>
> </d2r:ObjectPropertyBridge>
> </d2r:propertyBridge>
> </rdf:Property>
>
> ....
>
Why do you escape @@SEMI_MINOR_AXIS@@ with deliminators? D2RQ doesn't have to parse the conditions, but (as I see it) can include them directly into the created SQL query. This should also work for reversing values. For example, if I have a find(spo) query like
S: ANY
P: ex:privateTelephoneNumber
O: 13456543
and a map like
:Person rdf:type rdfs:Class;
d2rq:classMap db1:PersonsClassMap.
db1:PersonsClassMap rdf:type d2rq:ClassMap;
d2rq:uriColumn "Persons.URI";
d2rq:dataStorage db1:Database1 .
:privateTelephoneNumber rdf:type rdf:Property ;
d2rq:propertyBridge db1:PersonsprivateTelephoneNumber
.
db1:PersonsprivateTelephoneNumber rdf:type d2rq:DatatypePropertyBridge ;
d2rq:column "Persons.PrivateTel" ;
d2rq:condition "Persons.PublishPrivateTel = true" ;
d2rq:belongsToClassMap db1:PersonsClassMap
.
then the pattern would only fit if there is a PrivateTel 13456543 and the PublishPrivateTel property would be true in the same database record.
Leading us to
SELECT Persons.URI
FROM Persons
WHERE Persons.PrivateTel = '13456543' AND Persons.PublishPrivateTel = true
>I think it would be very useful to get this capability in D2RQ. I would like to align my
>internal implementation to this implementation provided I get this important capability in the framework.
>
I think we should definitively have conditions in D2RQ V0.2, which is planned to be released in about 4-6 weeks. Richard is still working on the performance test suite which is an seperate package and I think he will not start implementing the D2RQ translation tables before next week.
So, you could start immediately.
Chris
>Your comments are welcome.
>
>Best regards
>
>Stephane Fellah
>Web Chief Architect
>
>PCI Geomatics
>490, Boulevard St Joseph
>Hull, Quebec
>Canada J8Y 3Y7
>Tel: 1 819 770 0022 Ext. 223
>Fax 1 819 770 0098
>Visit our web site: www.pcigeomatics.com
>
Received on Tuesday, 22 June 2004 15:48:40 UTC