【问题标题】:Dynamic Predicate in R2RMLR2RML 中的动态谓词
【发布时间】:2016-12-27 19:31:28
【问题描述】:

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

这是我的查询:

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;

字段中的值返回要使用的谓词。

我想产生三倍的形式

<pub:1234> dc:creator “jean francois”@en
<pub:1234> dc:docnumber 1345
<pub:1234> dc:subject “poverty”@en

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

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

谢谢。

【问题讨论】:

    标签: rdf semantic-web semantics r2rml


    【解决方案1】:

    是的,您可以在 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}" ] .
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      相关资源
      最近更新 更多