2016-04-22 102 views
0

我有一个数据库表,我正在将数据更改为RDF。D2RQ如何配置多对多关系

到目前为止,我能够做一对一的其中一排有一个主键,有一个价值,它来自一列该行中,像这样的:

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; 
    . 

这里每Artist_ID将是三倍的主题,将有一个名为hasName其价值属性来自于这位演出柱

到目前为止好,现在我有很多很多像这样的表:

艺术家(表)相册(表)ArtistAlbum(表)

的artistalbum有foriegn关键要双方专辑和艺术家

的我怎么能在r2rq做到这一点吗?

+0

从文档摘自:“如果使用的列创建文本值或对象不是来自包含ClassMap的列的数据库表,那么这些表必须使用一个或多个d2rq:join属性“ – AKSW

+0

@AKSW连接在一起”是的,我看到了,他们有一个关于一对多或者多对一的例子,或者一对一,但我不知道如何做到这一点与许多人,我怎么去如果我没有班级地图,请问他们哪张桌子? –

+0

您应该看看R2RML,它是将关系数据映射到RDF的W3C标准。 –

回答

0

我已经联系从D2RQ的人来说,这是他们的答复:

在这里看到,从两个表连接实例的例子(但它是一对多,不是很多一对多) : http://d2rq.org/d2rq-language#example-refers

在这里看到的是需要一个属性从一个不同的表的示例,并且该表是通过许多一对多关系表加入: http://d2rq.org/d2rq-language#example-join

合并两个例子来添加放置你的场景。

我没有他们所说的内容,以及与此映射

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"; 
    . 

过来了,它完美的作品