我需要建立一个涉及一个简单表的映射,但是我的谓词需要基于来自一列的值是动态的。
这是我的问题:
SELECT
item_id,
Concat_WS('@', metadatavalue.text_value, cast(metadatavalue.text_lang as text)) AS textValue,
(CASE metadata_field_id
WHEN '3' THEN 'creator'
WHEN '79' THEN 'docnumber'
END) AS Field
FROM
metadatavalue
ORDER BY
item_id, Field, textValue;values from字段返回要使用的谓词。
我想要生成三倍的形式
<pub:1234> dc:creator “jean francois”@en
<pub:1234> dc:docnumber 1345
<pub:1234> dc:subject “poverty”@en所以基本上我的所有谓词都在列metadata_field_id中,值是谓词的标识符。
我不确定,但似乎R2RML应该支持这一点。
谢谢。
发布于 2016-08-31 16:05:05
是的,你可以在R2RML中做到这一点。
有两种方法:
1)使用rr:template作为谓词。
:Map1
a rr:TriplesMap ;
rr:logicalTable [ rr:sqlQuery "SELECT ..... " ] ;
rr:predicateObjectMap [
rr:objectMap [ rr:column "COLUMNNAME" ] ;
rr:predicateMap [ rr:template "http://purl.org/dc/elements/1.1/{Field}" ] ;
] ;
rr:subjectMap [ rr:template "http://www.example.com/data/{id}" ] .2)使用rr:column作为谓词。在这种情况下,在SQL查询中创建实际的URI:
:Map1
a rr:TriplesMap ;
rr:logicalTable [ rr:sqlQuery "SELECT ..... " ] ;
rr:predicateObjectMap [
rr:objectMap [ rr:column "COLUMNNAME" ] ;
rr:predicateMap [ rr:column "Field" ] ;
] ;
rr:subjectMap [ rr:template "http://www.example.com/data/{id}" ] .https://stackoverflow.com/questions/39059349
复制相似问题