如何解决SPARQL限制特定变量的结果数
假设我要寻找柏林的一些一级邻居。我问以下查询:
select ?s ?p where {
?s ?p dbr:Berlin.
}
是否可以对返回结果进行限制,使得每个?p
的唯一值最多有5个结果?
解决方法
我对子查询的尝试都超时了...
但是,可能有用的GROUP_CONCAT
,MAX
/ MIN
或SAMPLE
作为潜在的有用的解决方案,如果不是完全完美的解决方案?
SELECT
?writer (GROUP_CONCAT(?namestring; SEPARATOR = " ") AS ?namestrings)
(MIN(?namestring) AS ?min_name)
(MAX(?namestring) AS ?max_name)
(SAMPLE(?namestring) AS ?random_name)
(SAMPLE(?namestring) AS ?another_random_name_that_may_unfortunately_be_the_same_again)
WHERE {
?writer wdt:P31 wd:Q5;
wdt:P166 wd:Q37922;
wdt:P735 ?firstname.
?firstname wdt:P1705 ?namestring.
}
GROUP BY ?writer
HAVING ((COUNT(?writer)) > 2 )
LIMIT 20
here直播。
而且,如您所见,SAMPLE
显然只被评估一次,因此重复使用它不会使您接近五个(不同的)样本。
(您可以省略HAVING
供您使用。我仅将其包括在内以将其限制为有用的示例)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。