Подходит ли 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;"
] ;
Для набора доступных атрибутов соответствующие предикаты могут дополнительно характеризоваться дополнительными отображениями.