如何修改SPARQL查询从英国土地登记处数据库获取全英国汇总房价指数数据
调整SPARQL查询以返回全英国范围的房价指数数据
没问题,我来帮你修改这个SPARQL查询,让它输出全英国范围的房价指数,而不是按区域拆分的结果。先拆解下原查询的问题:原查询里的?region变量会遍历所有区域资源,所以结果会按每个区域单独返回数据。要得到全英国的整体数据,有两种常用的解决方式,你可以根据实际数据情况选择:
方法1:直接查询代表全英国的区域条目
英国土地登记处的数据库里,通常会有一个专门代表整个英格兰和威尔士(或全英国)的区域资源。你可以先通过下面的查询找到对应的区域标签和URI:
prefix skos: <http://www.w3.org/2004/02/skos/core#> prefix ukhpi: <http://landregistry.data.gov.uk/def/ukhpi/> SELECT ?region ?label WHERE { ?region a ukhpi:Region ; skos:prefLabel ?label . }
执行后,你会看到所有区域的标签,比如"England and Wales"@en就是常见的全范围区域标签。
找到对应标签后,修改原查询,只匹配这个全区域的资源即可:
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix owl: <http://www.w3.org/2002/07/owl#> prefix xsd: <http://www.w3.org/2001/XMLSchema#> prefix sr: <http://data.ordnancesurvey.co.uk/ontology/spatialrelations/> prefix ukhpi: <http://landregistry.data.gov.uk/def/ukhpi/> prefix lrppi: <http://landregistry.data.gov.uk/def/ppi/> prefix skos: <http://www.w3.org/2004/02/skos/core#> prefix lrcommon: <http://landregistry.data.gov.uk/def/common/> # 全英国(英格兰和威尔士)指定日期范围内的房价指数 SELECT ?date ?hpi { ?ukRegion skos:prefLabel "England and Wales"@en ; ukhpi:refPeriodStart ?date ; ukhpi:housePriceIndex ?hpi . FILTER ( ?date > "2008-12-31"^^xsd:date && ?date < "2009-03-01"^^xsd:date ) }
如果已经知道全区域的URI(比如http://landregistry.data.gov.uk/id/region/england-and-wales),也可以直接替换?ukRegion为这个URI,查询会更高效。
方法2:聚合区域数据计算全英国平均指数
如果数据库里没有单独的全英国指数条目,你可以用SPARQL的聚合函数,按日期分组计算所有区域指数的平均值:
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix owl: <http://www.w3.org/2002/07/owl#> prefix xsd: <http://www.w3.org/2001/XMLSchema#> prefix sr: <http://data.ordnancesurvey.co.uk/ontology/spatialrelations/> prefix ukhpi: <http://landregistry.data.gov.uk/def/ukhpi/> prefix lrppi: <http://landregistry.data.gov.uk/def/ppi/> prefix skos: <http://www.w3.org/2004/02/skos/core#> prefix lrcommon: <http://landregistry.data.gov.uk/def/common/> # 聚合计算全英国指定日期范围内的平均房价指数 SELECT ?date (AVG(?hpi) AS ?ukAvgHpi) { ?region ukhpi:refPeriodStart ?date ; ukhpi:housePriceIndex ?hpi . FILTER ( ?date > "2008-12-31"^^xsd:date && ?date < "2009-03-01"^^xsd:date ) } GROUP BY ?date
这个查询会把同一日期下所有区域的房价指数取平均值,得到全英国的整体指数数据。
内容的提问来源于stack exchange,提问作者local-optimum
相关产品推荐
相关产品推荐

