首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R2RML中属性的条件创建

R2RML中属性的条件创建
EN

Stack Overflow用户
提问于 2016-03-09 15:30:10
回答 2查看 422关注 0票数 1

我在玩R2RML,我想知道是否可以根据RDB表单元格的内容创建一个属性。

D2RQ映射语言有能够处理这个问题的d2rq:condition

例如:

如果列/表单元格'name‘中的值为'abc’,则创建属性'abc‘

代码语言:javascript
复制
rr:predicateObjectMap [
    rr:predicate ex:abc
    rr:objectMap [ 
        rr:column "name"; 
        rr:datatype xsd:string; 
        # equivalent for d2rq:condition "name='abc'"
    ];
]

如果列/表单元格“name”中的值为“xyz”,则创建属性“xyz”

代码语言:javascript
复制
rr:predicateObjectMap [
    rr:predicate ex:xyz
    rr:objectMap [ 
        rr:column "name"; 
        rr:datatype xsd:decimal; 
        # equivalent for d2rq:condition "name='xyz'"
    ];
];

我在W3C的R2RML推荐中找不到任何建议。

有什么想法吗?:-)

更新:

我有使用rr:sqlQuery的想法。

代码语言:javascript
复制
rr:SQLQuery """
   select (case TABLENAME.COLUMNNAME
      when 'this' then 'propertyOne'
      when 'that' then 'propertyTwo'
      end) as VARIABLE_PREDICATE
   from TABLENAME """;

并将其应用于rr:predicaterr:predicateMap

代码语言:javascript
复制
rr:predicateObjectMap [
        rr:predicateMap [ rr:template "ex:{VARIABLE_PREDICATE}" ];
        rr:objectMap [ rr:column "COLUMNNAME"; ];
];

但那不管用。我想predicateMaps只能是rr:constant的,而不是rr:template的:至少W3C建议只显示了predicateMap中的常量。

还在寻找解决办法..。:/

我感到失望的是,像d2rq这样的专有语言似乎更强大(在这一点上)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-15 15:58:48

R2RML没有条件属性(如D2RQ中的)。为了不使语言复杂化,设计是有目的的。任何类型的“复杂”映射都需要SQL。

解决办法如下:

代码语言:javascript
复制
@prefix rr: <http://www.w3.org/ns/r2rml#>.

<#Mapping> a rr:TriplesMap;
    rr:logicalTable [ rr:SQLQuery """
        select id, COLUMNNAME, (case TABLENAME.COLUMNNAME
        when 'this' then 'http://ex.com/propertyOne'
        when 'that' then 'http://ex.com/propertyTwo'
        end) as VARIABLE_PREDICATE
        from TABLENAME """; ];
    rr:subjectMap [
       rr:template "http://ex.com/foo/{id}";
   ];

   rr:predicateObjectMap [
      rr:predicateMap [ rr:column "VARIABLE_PREDICATE" ];
      rr:objectMap [ rr:column "COLUMNNAME" ];
   ].
票数 1
EN

Stack Overflow用户

发布于 2016-03-28 19:45:31

在映射Getty语音时,我们通常会这样做,用于依赖键值(标志)的道具。例如

代码语言:javascript
复制
<#ContribTermRelPreferred>
    a rr:TriplesMap;
    rr:logicalTable [ rr:sqlQuery """
    SELECT ...
        UDF_LOD_LOOKUP_PROPERTY('contrib_rels_term','preferred',CRT.PREFERRED) CONTRIBPREF
    """ ];
rr:predicateObjectMap [
    rr:predicateMap [ rr:column "CONTRIBPREF" ];
    rr:objectMap [ rr:template "http://vocab.getty.edu/aat/contrib/{CONTRIB_ID}" ];
].
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35895851

复制
相关文章

相似问题

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