作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我使用 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
并在您的应用程序中处理结果,您知道传入的结果包含一个人的所有条目,是结果的一个部分。
关于sparql - SPARQL 中的 GROUP BY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22268261/
我是一名优秀的程序员,十分优秀!