Hi,

I like to apply different URI translations on the same SQL query. The  
following description should explain my intended mapping approach.

For information services that have a 3rd party linked data information  
service currently exist two mappings.

     for the original information service, i.e., usually original page  
URLs; usually related by rdfs:seeAlso
     for the linked data information service, i.e., resource URIs that  
contain descriptions that are extracted from the original pages;  
usually related by owl:sameAs

Every information service resource URI is assigned with a  
is:info_service relation that has its object a resource URI of a  
specific information service description.

However, the following query shows an unexpected result:

SELECT DISTINCT ?workURI ?ibdbURI ?infoService
WHERE { ?workURI rdf:type mo:MusicalWork ;
rdfs:seeAlso ?ibdbURI ;
mo:musicbrainz_guid "aa8b1e50-d265-301a-8bd9-3336ac4f779c"^^xsd:string .
?ibdbURI is:info_service ?infoService . }

result:

workURI    ibdbURI infoService
<http://localhost:2020/work/aa8b1e50-d265-301a-8bd9-3336ac4f779c#_>    
<http://wikipedia.org/wiki/Maria_(1956_song)>     isi:wikipedia
<http://localhost:2020/work/aa8b1e50-d265-301a-8bd9-3336ac4f779c#_>    
<http://wikipedia.org/wiki/Maria_(1956_song)>     isi:dbpedia

i.e. both information service resource URIs are the same and they are  
assigned to both information service descriptions. The expect result  
is that this resource URI should only be related to isi:wikipedia.

In the following are the related property bridges:

# wikipedia gid=b45a88d6-851e-4a6e-9ec8-9a5f4ebe76ab for works
map:work_dbpedia a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:Work;
d2rq:property owl:sameAs;
d2rq:join "musicbrainz.l_url_work.entity1 => musicbrainz.work.id";
d2rq:join "musicbrainz.l_url_work.link => musicbrainz.link.id";
d2rq:join "musicbrainz.link.link_type => musicbrainz.link_type.id";
d2rq:condition  
"musicbrainz.link_type.gid='b45a88d6-851e-4a6e-9ec8-9a5f4ebe76ab'";
d2rq:join "musicbrainz.l_url_work.entity0 => musicbrainz.url.id";
d2rq:uriColumn "musicbrainz.url.url";
d2rq:translateWith map:DBpediaTrans;
.

# wikipedia gid=b45a88d6-851e-4a6e-9ec8-9a5f4ebe76ab for works
map:work_wikipedia a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:Work;
d2rq:property rdfs:seeAlso;
d2rq:join "musicbrainz.l_url_work.entity1 => musicbrainz.work.id";
d2rq:join "musicbrainz.l_url_work.link => musicbrainz.link.id";
d2rq:join "musicbrainz.link.link_type => musicbrainz.link_type.id";
d2rq:condition  
"musicbrainz.link_type.gid='b45a88d6-851e-4a6e-9ec8-9a5f4ebe76ab'";
d2rq:join "musicbrainz.l_url_work.entity0 => musicbrainz.url.id";
d2rq:uriColumn "musicbrainz.url.url";
d2rq:translateWith map:WikipediaTrans;
.

Their only difference is their name and their related translation  
method (DBPediaTrans or WikipediaTrans).

The following mapping should produce the is:info_service relations:

# Wikipedia gid=b45a88d6-851e-4a6e-9ec8-9a5f4ebe76ab for works
map:WorkDBPediaIS a d2rq:ClassMap;
d2rq:dataStorage map:database;
d2rq:classDefinitionLabel "Work DBPedia Resources"@en;
d2rq:join "musicbrainz.l_url_work.link => musicbrainz.link.id";
d2rq:join "musicbrainz.link.link_type => musicbrainz.link_type.id";
d2rq:join "musicbrainz.l_url_work.entity0 => musicbrainz.url.id";
d2rq:condition  
"musicbrainz.link_type.gid='b45a88d6-851e-4a6e-9ec8-9a5f4ebe76ab'";
d2rq:uriColumn "musicbrainz.url.url";
d2rq:translateWith map:DBPediaTrans;
.
map:work_dbpedia_is a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:WorkDBPediaIS;
d2rq:property is:info_service;
d2rq:constantValue isi:dbpedia;
.

# Wikipedia gid=b45a88d6-851e-4a6e-9ec8-9a5f4ebe76ab for works
map:WorkWikipediaIS a d2rq:ClassMap;
d2rq:dataStorage map:database;
d2rq:classDefinitionLabel "Work Wikipedia Resources"@en;
d2rq:join "musicbrainz.l_url_work.link => musicbrainz.link.id";
d2rq:join "musicbrainz.link.link_type => musicbrainz.link_type.id";
d2rq:join "musicbrainz.l_url_work.entity0 => musicbrainz.url.id";
d2rq:condition  
"musicbrainz.link_type.gid='b45a88d6-851e-4a6e-9ec8-9a5f4ebe76ab'";
d2rq:uriColumn "musicbrainz.url.url";
d2rq:translateWith map:WikipediaTrans;
.
map:work_wikipedia_is a d2rq:PropertyBridge;
d2rq:belongsToClassMap map:WorkWikipediaIS;
d2rq:property is:info_service;
d2rq:constantValue isi:wikipedia;
.

Their only difference is their name and their related translation  
method (DBPediaTrans or WikipediaTrans) again plus the objects of the  
is:info_service are now different: is:dbpedia respective is:wikipedia.

However, there may be some issues with different translation methods  
in the same query.

Cheers,

Bob



------------------------------------------------------------------------------
10 Tips for Better Web Security
Learn 10 ways to better secure your business today. Topics covered include:
Web security, SSL, hacker attacks & Denial of Service (DoS), private keys,
security Microsoft Exchange, secure Instant Messaging, and much more.
http://www.accelacomm.com/jaw/sfnl/114/51426210/
_______________________________________________
d2rq-map-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/d2rq-map-devel

Reply via email to