【问题标题】:D2RQ how to configue many to many relationshipD2RQ如何配置多对多关系
【发布时间】:2016-04-22 16:25:02
【问题描述】:

我有一个数据库表,我正在将数据更改为 RDF。

到目前为止,我能够做到一对一,其中具有主键的行具有来自该行中的列的值,如下所示:

map:Artist a d2rq:ClassMap;
    d2rq:dataStorage map:database;
    d2rq:class to:Artist;
    d2rq:uriPattern "to:Artist/@@M3.ARTIST.ARTIST_ID@@";
    .

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 的属性,其值来自 ARTIST_NAME 列

到目前为止一切都很好,现在我有一张很多像这样的桌子:

艺术家(表)专辑(表)艺术家专辑(表)

artistalbum 对 Album 和 Artist 都有一个外键

请问如何在 r2rq 中做到这一点?

【问题讨论】:

  • 取自文档:“如果用于创建文字值或对象的列不是来自包含 ClassMap 列的数据库表,则必须使用一个将表连接在一起或更多 d2rq:join 属性"
  • @AKSW 是的,我看到了,他们有一个关于一对多或一对一的例子,但我不知道如何用多对多做到这一点,我该如何告诉他们如果我没有类映射表是哪个表?
  • 您应该看看 R2RML,它是用于将关系数据映射到 RDF 的 W3C 标准。
  • @JuanSequeda 问题是关于如何使用 D2RQ 来实现(实现)R2RML 映射,所以我的问题是技术问题

标签: sparql semantic-web owl ontology r2rml


【解决方案1】:

我已经联系了 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";
    .

而且效果很好

【讨论】:

    猜你喜欢
    • 2014-10-25
    • 2019-06-18
    • 2010-12-17
    • 1970-01-01
    • 2015-07-23
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多