我想在SPARQL中查詢查找各州和大多數本科生在各州的大學。如何編寫一個在SPARQL中返回最大值的查詢?
我嘗試這樣做:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dbpr: <http://dbpedia.org/resource/>
PREFIX dbpo: <http://dbpedia.org/ontology/>
PREFIX dbpprop: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/resource/>
SELECT ?University ?State (MAX(?nu) AS ?size)
WHERE{
?University dbpo:numberOfUndergraduateStudents ?nu.
?University a dbpo:University.
?University dbpo:state ?State.
{
SELECT ?State
WHERE{
?State a dbpo:PopulatedPlace.
?State a dbpo:AdministrativeRegion.
?State dbpo:country dbpedia:United_States.
?State dbpo:capital ?Capital.
FILTER(bound(?Capital))
}
}
}
但是,它不會返回我的預期的輸出。它會從一個州返回多個學校。 任何人都可以指導我嗎?
感謝您的答案。我做了你所提到的,但我仍然不止一次地在各州讀大學。這意味着它不會使每個州都有最大規模的大學。 你知道問題出在哪裏嗎? – Sina 2013-03-18 01:17:49
[SPARQL 1.1 spec,§11.2](http://www.w3.org/TR/sparql11-query/#groupby)包含:「如果在SELECT,HAVING或ORDER BY的查詢級別中使用聚合,但GROUP BY術語不被使用,那麼這被認爲是一個隱含的組合,所有的解決方案都屬於這個組合。「因此,儘管給定的查詢沒有回答原始問題,但它似乎是合法的。 (爲什麼DBpedia會返回多個答案,我不明白。) – 2013-03-19 17:12:38