2015-07-10 37 views
0

我使用官方的DBpedia端點做了SPARQL查詢。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種語言一堆摘要:英文俄語。 俄羅斯文摘僅在可用時才存在,因爲我使用「可選」。 顯然我得到了很多空的屬性。

我會用英文摘要替換空白屬性(始終存在)。

閱讀W3C SPARQL頁面,我發現有一個特殊的測試值,這是真的,當一個變量被設置:綁定

我想編寫這樣的事:

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

- - >如果RussianAbstract存在,保持它;否則,把EnglishAbstract而不是它。

有誰知道我該如何使它工作?要做到這一點

+0

您可能會發現[空屬性生成值(http://stackoverflow.com/q/19723721/1281433)是有用的,以及[SPARQL:如何使類標籤顯示爲類的列名稱?](http://stackoverflow.com/q/26114572/1281433),如果其他地址不可用,則實際使用一個值進行地址解析。 –

回答

2

一種方法是使用COALESCE

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

謝謝,聚結是正確的解決方案! – cataciandevil81