SPARQL SELECT查询无法处理多个匹配的Protege

时间:2017-02-24 18:05:01

标签: sparql protege

我正在尝试运行选择查询:

SELECT ?subject WHERE { 
    ?subject uni4:friendof uni4:t3 .                                  
}

上面的查询给出'd3'作为结果。

SELECT ?subject WHERE { 
  ?subject uni4:friendof uni4:t4 .                                 
}

此查询以“d4”作为结果。

但是当我运行以下查询时,我得不到任何结果。

SELECT ?subject WHERE {     
    ?subject uni4:friendof uni4:t3 .                                  
    ?subject uni4:friendof uni4:t4
}

为什么这样?这有什么不对?

1 个答案:

答案 0 :(得分:1)

因为上次查询要求同时为t3 t4的朋友的主题。

如果您想要返回两个结果,UNION是可行的方法:

SELECT DISTINCT ?subject WHERE { 
 { ?subject uni4:friendof uni4:t3 }
UNION                                
 { ?subject uni4:friendof uni4:t4 }
}

或者在SPARQL 1.1中,您可以使用VALUES作为更紧凑的替代方案:

SELECT DISTINCT ?subject WHERE { 
   ?subject uni4:friendof ?friend
   VALUES ?friend { uni4:t3 uni4:t4 }
}