SPARQL将空属性替换为其他

时间:2015-07-10 13:07:37

标签: sparql dbpedia

我使用官方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)都有两种语言的抽象:英语和俄语。 俄语摘要仅在可用时才存在,因为我使用“可选”。 显然我得到了很多空洞的属性。

我会用英文摘要(总是存在)替换空白属性。

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

我想写这样的东西:

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

- >如果RussianAbstract存在,请保留;否则,请将EnglishAbstract代替它。

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

1 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是使用COALESCE

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