簡體   English   中英

SPARQL中的GROUP BY?

[英]GROUP BY in SPARQL?

假設我使用FOAF本體。 我想為每個人返回namembox 我使用以下查詢:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM