SPARQL -筛选对象显式匹配模式的结果



对于给定的SPARQL查询,我想知道如何显式地将对象匹配到模式,即它应该有一组给定的属性值,并且只有这些值。考虑下面的查询:'

SELECT DISTINCT ?person ?personLabel     
WHERE {
#P735 given name , wd:Q4844560 Sebastian ,wd:Q11122389 Johann
?person wdt:P735  wd:Q4844560,wd:Q11122389 .  
SERVICE wikibase:label {bd:serviceParam wikibase:language "en"}
}

'该查询匹配任何给定名字为Johann和给定名字为Sebastian的主题,这也匹配具有更多给定名字的主题,例如Johann Sebastian Gottfried。我想知道如何过滤查询,以返回那些显式具有给定名称Johann和Sebastian而没有其他名称的查询。

我已经尝试使用各种子查询和过滤器,但不占上风。

您可以使用FILTER NOT EXISTS来排除除指定的两个名字之外具有任何其他给定名称的人员:

?person wdt:P735 wd:Q4844560 , wd:Q11122389 .
FILTER NOT EXISTS { 
?person wdt:P735 ?givenName .
FILTER( ?givenName != wd:Q4844560 && ?givenName != wd:Q11122389 ) .
}

最新更新