Подходит ли R2RML для таблиц EAV?

Начинаю читать о R2RML. Интересно, подойдет ли этот язык для отображения таблиц базы данных, которые следуют модели значения атрибута сущности, в RDF и как будет выглядеть простой пример.

Обзор подходов и инструментов перевода RDB в RDF относится к функции "от 1 таблицы до n классов":

Возможность использовать значения столбца в качестве шаблона категоризации: кортежи таблицы будут преобразованы в экземпляры различных онтологических классов на основе значения этого атрибута. Эту функцию можно рассматривать как расширение функции "выбор условий", поскольку она не только отфильтровывает строки, но и помогает выбирать строки для преобразования в экземпляр того или иного класса.

1 ответ

Решение

Простое отображение может выглядеть так:

[
  rr:logicalTable [ rr:tableName "eav_table" ] ;
  rr:subjectMap [ rr:template "http://example.com/ontology.rdf#Entity/{entity_column}/" ] ;
  rr:predicateObjectMap [
    rr:predicateMap [
      rr:template "http://example.com/ontology.rdf#{attribute_column}"
    ] ;
    rr:objectMap [
      rr:template "http://example.com/ontology.rdf#Value/{value_column}/"
    ]
  ]
] .

Если требуется более сложный оператор SQL, можно использовать rr:sqlQuery вместо rr:tableName:

  rr:logicalTable [
    rr:sqlQuery "SELECT entity_column, attribute_column, value_column FROM eav_table;"
  ] ;

Для набора доступных атрибутов соответствующие предикаты могут дополнительно характеризоваться дополнительными отображениями.

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