[英]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.