2016-04-22 7 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 с его значением происходит от колонки ARTIST_NAME

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

Исполнитель (таблица) Альбом (Таблица) ArtistAlbum (таблица)

artistalbum имеет foriegn ключ к обоим альбома и артиста

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

+0

Взятые из документации: «Если столбцы используются для создания буквального значения или объект не из таблицы (таблиц) базы данных, содержащей столбцы ClassMap, тогда таблицы должны быть объединены вместе с использованием одного или нескольких свойств d2rq: join « – AKSW

+0

@AKSW да, я видел это, и у них есть пример от одного до многих или один к одному, но я не мог знать, как это сделать со многими для многих, как я собираюсь ll, какая таблица, если у меня нет карты классов? –

+0

Вы должны взглянуть на R2RML, который является стандартом W3C для отображения реляционных данных в RDF. –

ответ

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

и она прекрасно работает