SPARQL 将空属性替换为其他属性

SPARQL replace empty attributes with others

我使用官方 DBpedia 端点进行了 SPARQL 查询。

我就以主题为例:

SELECT  ?museum ?EnglishAbstract   ?RussianAbstract 
WHERE { 

?museum dbpedia-owl:abstract ?EnglishAbstract. 
?museum a dbpedia-owl:Museum.
filter(lang(?EnglishAbstract)='en')

optional{
    ?museum dbpedia-owl:abstract ?RussianAbstract.
    ?museum a dbpedia-owl:Museum.
filter(lang(?RussianAbstract)='ru')
}}
GROUP BY ?museum

通过这个查询(效果很好),我为每一行 (museum) 找到了一堆 2 种语言的摘要:英语和俄语。 俄语摘要仅在可用时出现,因为我使用 "OPTIONAL"。 显然我得到了很多空属性。

我会将空白属性替换为英文摘要(始终存在)。

阅读 W3C SPARQL 页面,我发现有一个特定的测试值在设置变量时为真:Bound

我想这样写:

If Bound (?RussianAbstract), "?RussianAbstract", "?EnglishAbstract"

-->如果RussianAbstract存在,持有它;否则,用 EnglishAbstract 代替它。

有谁知道我怎样才能让它发挥作用?

一种方法是使用 COALESCE:

SELECT  ?museum (COALESCE(?RussianAbstract, ?EnglishAbstract) as ?Abstract)