如何在使用DBpedia SPARQL端点时排除一组概念?我正在使用以下基本查询来获取概念列表:
SELECT DISTINCT ?concept
WHERE {
?x a ?concept
}
LIMIT 100
Run Code Online (Sandbox Code Playgroud)
这给了我一个100个概念的列表.我想排除属于YAGO类/组的所有概念(即,其IRI开头http://dbpedia.org/class/yago/).我可以过滤掉这样的个别概念:
SELECT DISTINCT ?concept
WHERE {
?x a ?concept
FILTER (?concept != <http://dbpedia.org/class/yago/1950sScienceFictionFilms>)
}
LIMIT 100
Run Code Online (Sandbox Code Playgroud)
但我似乎无法理解的是如何从我的结果中排除所有YAGO子类?我试过用*这样的东西,但这没有达到任何目的:
FILTER (?concept != <http://dbpedia.org/class/yago/*>)
Run Code Online (Sandbox Code Playgroud)
这个查询regex似乎可以解决问题,但它确实非常非常缓慢和丑陋.我真的很期待更好的选择.
SELECT DISTINCT ?type WHERE {
[] a ?type
FILTER( regex(str(?type), "^(?!http://dbpedia.org/class/yago/).+"))
}
ORDER BY ASC(?type)
LIMIT 10
Run Code Online (Sandbox Code Playgroud)