Sin*_*ina 1 database semantic-web 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))
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,它不会返回我的预期输出.它从一个州返回一所以上的学校.任何人都可以指导我吗?
您不需要内部SELECT(它可以放在外部块中).
FILTER(bound(?Capital))
Run Code Online (Sandbox Code Playgroud)
- ?资本必须受到约束.
那你需要
GROUP BY ?State
Run Code Online (Sandbox Code Playgroud)
把它放在一个内部的SELECT中,并使用外部的SELECT来查找具有该大小状态的实际大小(-ies).
您的查询目前在技术上是非法的:
SELECT ?University ?State (MAX(?nu) AS ?size)
Run Code Online (Sandbox Code Playgroud)
没有GROUP BY是错误的.您只能选择GROUP BY变量和聚合