2016-04-22 2 views
0

J'ai une base de données et je change les données en RDF.D2RQ comment configurer une relation plusieurs à plusieurs

Jusqu'à présent, je suis en mesure de faire une à une dans laquelle une ligne qui a une clé primaire, a une valeur, qui vient d'une colonne dans cette ligne, comme ceci:

map:Artist a d2rq:ClassMap; 
    d2rq:dataStorage map:database; 
    d2rq:class to:Artist; 
    d2rq:uriPattern "to:Artist/@@[email protected]@"; 
    . 

map:ArtistName a d2rq:PropertyBridge; 
    d2rq:belongsToClassMap map:Artist; 
    d2rq:property to:hasName; 
    d2rq:column "M3.ARTIST.ARTIST_NAME"; 
    d2rq:datatype xsd:string; 
    . 

ici chaque Artist_ID sera l'objet du triple et il y aura une propriété appelée hasName avec sa valeur provient de la colonne ARTIST_NAME

jusqu'à présent si bon, maintenant j'ai une table beaucoup à beaucoup comme ceci:

Artiste (table) Album (Table) ArtistAlbum (table)

la artistalbum a une clé foriegn à la fois de l'album et l'artiste

comment puis-je faire en r2rq s'il vous plaît?

+0

Tiré de la documentation: « Si les colonnes utilisées pour créer la valeur littérale ou objet ne proviennent pas de la ou des tables de base de données contenant les colonnes ClassMap, puis les tables doivent être jointes en utilisant une ou plusieurs propriétés de jointure d2rq: " – AKSW

+0

@AKSW oui j'ai vu cela et ils ont un exemple d'un à plusieurs ou un à un, mais je ne pouvais pas savoir comment faire cela avec beaucoup à plusieurs, comment vais-je te ll eux quelle table si je n'ai pas une carte de classe pour cela? –

+0

Vous devriez jeter un oeil à R2RML, qui est la norme W3C pour le mappage des données relationnelles à RDF. –

Répondre

0

J'ai contacté les gens de D2RQ, ce qui est leur réponse:

Voir ici pour un exemple qui relie les cas de deux tables (mais il est un à plusieurs, pas beaucoup à beaucoup) : http://d2rq.org/d2rq-language#example-refers

Voir ici pour un exemple qui prend une propriété d'une autre table, et la table est jointe par un grand nombre à plusieurs table de relation: http://d2rq.org/d2rq-language#example-join

combinons les deux exemples pour ajouter ressez votre scénario.

Je l'ai fait ce qu'ils ont dit, et est venu avec cette cartographie

map:ArtistAlbum a d2rq:PropertyBridge; 
    d2rq:property to:hasArtist; 
    d2rq:belongsToClassMap map:Album; 
    d2rq:refersToClassMap map:Artist; 
    d2rq:join "blabla.ARTIST.ARTIST_ID = blabla.ARTISTALBUM.ARTIST_ID"; 
    d2rq:join "blabla.ARTISTALBUM.ALBUM_ID = blabla.ALBUM.ALBUM_ID"; 
    . 

et il fonctionne parfaitement