[英]GROUP BY in SPARQL?
假设我使用FOAF本体。 我想为每个人返回name
和mbox
。 我使用以下查询:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?name ?email
WHERE {
?person foaf:name ?name.
?person foaf:mbox ?email.
}
连接的结果是一组行: ?person
, ?name
, ?email
。 此查询返回?name
和?email
。 请注意,在某些?person
可能有多个邮箱,因此在返回的集中, ?name
行可能会多次出现,每个邮箱一次。
是否有解决方案来制作GROUP BY person ?name
?
您可以按人分组,但是您需要聚合?name
和?email
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT (sample(?name) AS ?name2) (sample(?email) as ?email2)
WHERE {
?person foaf:name ?name.
?person foaf:mbox ?email.
} GROUP BY ?person
SAMPLE
为每个?person
选择一个可能的组。
或者可能
SELECT (group_concat(?name) AS ?names)
(除了那是一个字符串)。
它可能更容易使用
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?email
WHERE {
?person foaf:name ?name.
?person foaf:mbox ?email.
}
ORDER BY ?person ?name ?email
并在您的应用程序中处理结果,您知道传入的结果包含一个人的所有条目是结果的单个部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.