在我的三重商店中,我有一個資源類型電子郵件。該電子郵件類型的資源包含發件人和一個或多個收件人分配。
讓符號「A-> B」定義爲「A是B是其中一個收件人的電子郵件的發件人」。
現在,我想知道以下內容:人A向B發送了一封電子郵件多少次?請注意,A和B的作用很重要,即A→B不同於B-> A。
畸形SPARQL查詢
爲了回答這個問題,所有可用的配對,我寫了這個SPARQL(1.1)查詢:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX email: <http://example.com/schema/for/email/>
SELECT ?sender ?recipient (COUNT(?sender ?recipient) AS ?count)
WHERE {
?sender rdf:type foaf:Person.
?recipient rdf:type foaf:Person.
?e rdf:type email:Email.
?e email:sender ?sender.
?e email:recipient ?recipient.
}
GROUP BY ?sender ?recipient
這不起作用,AllegroGraph給我錯誤MALFORMED QUERY: Line 5, Found ?recipient (of type varname)
- 第5行是SELECT子句。我嘗試了一些其他變體,改變了SELECT和/或GROUP BY子句,但沒有成功。
我不確定是否允許在多個資源上進行聚合。在SPARQL 1.1 docs和相關的SO問題(Counting in SPARQL)中,我只找到基於一個資源的聚合。
因此,最後,這是我的問題:是否有可能聚合發件人和收件人?