首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R2RML中的动态谓词

R2RML中的动态谓词
EN

Stack Overflow用户
提问于 2016-08-21 06:44:26
回答 1查看 106关注 0票数 1

我需要建立一个涉及一个简单表的映射,但是我的谓词需要基于来自一列的值是动态的。

这是我的问题:

代码语言:javascript
复制
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字段返回要使用的谓词。

我想要生成三倍的形式

代码语言:javascript
复制
<pub:1234> dc:creator “jean francois”@en
<pub:1234> dc:docnumber 1345
<pub:1234> dc:subject “poverty”@en

所以基本上我的所有谓词都在列metadata_field_id中,值是谓词的标识符。

我不确定,但似乎R2RML应该支持这一点。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-08-31 16:05:05

是的,你可以在R2RML中做到这一点。

有两种方法:

1)使用rr:template作为谓词。

代码语言:javascript
复制
: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:

代码语言:javascript
复制
: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}" ] .
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39059349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档