SPARQL SELECT 查询不适用于 Protege 的多个匹配项

SPARQL SELECT query not working on Protege for multiple matches

我正在尝试 运行 select 门徒查询:

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
}

为什么会这样?这里有什么问题?

因为最后一个查询询问的主题都是 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 }
}