0

我需要使用来自其他 skos:Concept 的 skos:prefLabel (literal) 找到 skos:Concept 的 URI。这是我的查询:

SELECT ?variableURI ?variablePref ?entityPrefRegex ?entityURI ?entityPref WHERE {
    ?variableURI skos:prefLabel ?variablePref .
    FILTER(REGEX(?variablePref,"^Dissolved .* in surface water"))
    BIND(REPLACE(?variablePref,"^Dissolved (.*) concentration in surface water", "$1") AS ?entityPrefRegex).
    ?entityURI skos:prefLabel ?entityPref .
    FILTER(REGEX(?entityPref,?entityPrefRegex,"i")) 
}

我的问题是过滤部分没有返回结果,我不明白为什么。

这是我试图链接我的实体的示例变量

变量URI 变量首选项 entityPrefRegex
<:c_7e508e0e> "地表水中的溶解铝浓度"@zh “铝”@zh
<:c_b5dec35c> "地表水中溶解的砷浓度"@zh “砷”@zh
<:c_bc765ffd> "地表水中溶解的硼浓度"@zh “硼”@zh
<:c_4ce4d2c7> "地表水中溶解的铯浓度"@zh “铯”@zh

以及相应的实体。正如您所看到的,除了大写字母外,文字是相同的。

实体URI 实体首选项
<:c_d57d0742> "铝"@zh
<:c_d57d077> “砷”@zh
<:c_d57d0728> “硼”@zh
<:c_d57d0745> "铯"@zh
4

1 回答 1

1

的模式(第二个)参数REGEX是“简单文字”(文字“没有语言标记或数据类型 IRI”)。在这种情况下,看起来您正在使用?entityPref具有@en语言标签的值:

FILTER(REGEX(?entityPrefRegex,?entityPref,"i"))

尝试将模式转换为纯字符串:

FILTER(REGEX(?entityPrefRegex,STR(?entityPref),"i"))
于 2022-01-24T17:59:39.370 回答