D2RQ, как настроить отношения многие ко многим

У меня есть таблицы базы данных, и я меняю данные на 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

пока все хорошо, теперь у меня есть таблица многие ко многим, как это:

Artist (таблица) Альбом (Table) ArtistAlbum(таблица)

Artistalbum имеет загадочный ключ как для альбома, так и для исполнителя.

как я могу сделать это в r2rq, пожалуйста?

1 ответ

Решение

Я связался с людьми из D2RQ, и это их ответ:

Смотрите здесь пример, который соединяет экземпляры из двух таблиц (но это один ко многим, а не ко многим): http://d2rq.org/d2rq-language

Смотрите здесь пример, который берет свойство из другой таблицы, и эта таблица соединяется через таблицу отношений "многие ко многим": http://d2rq.org/d2rq-language

Объедините два примера для решения вашего сценария.

Я сделал то, что они сказали, и придумал это отображение

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

и работает отлично

Другие вопросы по тегам