如何在SPARQL查询Wikidata时从输出中排除值?
我正在尝试使用wikidata查询服务编写一个SPARQL查询,以检索1970年以来的所有荷兰首相。然而,我想通过检查首相是否为大学工作来过滤输出。如果一位部长为一所大学工作,就不应该在产出中 我想我必须使用过滤器不存在的表达式,但不知道如何正确地写这行。有人能帮我吗 有关我的查询和输出,请参见下文:如何在SPARQL查询Wikidata时从输出中排除值?,sparql,wikidata,Sparql,Wikidata,我正在尝试使用wikidata查询服务编写一个SPARQL查询,以检索1970年以来的所有荷兰首相。然而,我想通过检查首相是否为大学工作来过滤输出。如果一位部长为一所大学工作,就不应该在产出中 我想我必须使用过滤器不存在的表达式,但不知道如何正确地写这行。有人能帮我吗 有关我的查询和输出,请参见下文: SELECT ?pmLabel ?start ?companyLabel WHERE { ?pm wdt:P39 wd:Q3058109. ?pm p:P39 ?posHeld.
SELECT ?pmLabel ?start ?companyLabel
WHERE
{
?pm wdt:P39 wd:Q3058109.
?pm p:P39 ?posHeld.
?pm wdt:P108 ?company.
?posHeld ps:P39 wd:Q3058109.
?posHeld pq:P580 ?start.
FILTER(year(?start) > 1970)
# FILTER NOT EXISTS(?company (something) "Universit")
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". } # labels
}
ORDER BY DESC(?start)
+----------------------+------------------+------------------------------+
| primeMinisterLabel | start | companyLabel |
+----------------------+------------------+------------------------------+
| Mark Rutte | 14 October 2010 | Unilever |
| Mark Rutte | 14 October 2010 | Calvé |
| Jan Peter Balkenende | 22 July 2002 | Erasmus University Rotterdam |
| Jan Peter Balkenende | 22 July 2002 | Vrije Universiteit Amsterdam |
| Ruud Lubbers | 4 November 1982 | United Nations |
| Ruud Lubbers | 4 November 1982 | Harvard University |
| Ruud Lubbers | 4 November 1982 | Tilburg University |
| Ruud Lubbers | 4 November 1982 | Hollandia |
| Dries van Agt | 19 December 1977 | Kyoto University |
| Dries van Agt | 19 December 1977 | Radboud University Nijmegen |
| Dries van Agt | 19 December 1977 | Kwansei Gakuin University |
| Dries van Agt | 19 December 1977 | Ritsumeikan University |
+----------------------+------------------+------------------------------+
筛选器不存在{公司wdt:P31 wd:Q3918}
是否有方法检查值中是否有单词“University”?并非此输出中的每一所大学都是大学(Q3918)的实例。请尝试添加筛选器(!CONTAINS(LCASE(?companyLabel),“universit”)
。正确的筛选器应该遵循类层次结构:筛选器不存在{公司wdt:P31/wdt:P279*wd:Q3918}
有效!非常感谢你!