如何通过单次SPARQL调用提取邮编、LSOA编码及IMD数据?
合并SPARQL查询获取邮编、LSOA与IMD关联数据
当然可以通过单次SPARQL调用直接拿到这三者的关联数据!我们只需要把两个查询的逻辑通过LSOA的URI作为连接点关联起来,就能一次性获取邮编单元、对应LSOA以及该LSOA的IMD剥夺指数数据,不用再在R里额外做匹配。
合并后的完整SPARQL代码
SELECT ?postcodeUnit ?lsoa ?value ?perioduri WHERE { # 关联邮编单元与对应LSOA ?postcodeUnit a <http://data.ordnancesurvey.co.uk/ontology/postcode/PostcodeUnit>; <http://opendatacommunities.org/def/geography#lsoa> ?lsoa . # 通过LSOA关联对应的IMD数据 ?obs <http://opendatacommunities.org/def/ontology/communities/societal_wellbeing/imd/indices> <http://opendatacommunities.org/def/concept/general-concepts/imd/combineddeprivation>; <http://opendatacommunities.org/def/ontology/geography/refArea> ?lsoa; # 用?lsoa打通两个查询块 <http://opendatacommunities.org/def/ontology/time/refPeriod> ?perioduri; <http://opendatacommunities.org/def/ontology/communities/societal_wellbeing/imd/decObs> ?value . } LIMIT 10
关键逻辑说明
- 核心是复用
?lsoa变量:第一个查询块里它是邮编单元对应的LSOA资源URI,第二个查询块里它作为IMD观测数据绑定的区域URI,这样就直接把三者的关联关系在SPARQL层面建立起来了。 - 你可以根据需求调整
SELECT子句里的变量,比如想要获取邮编的具体文本或者LSOA的名称,只需要在WHERE块里添加对应的属性声明(比如邮编的<http://data.ordnancesurvey.co.uk/ontology/postcode/postcode>属性),再把变量加入SELECT即可。 - 保留了
LIMIT 10用于快速测试,实际使用时可以根据需要移除或调整数值。
内容的提问来源于stack exchange,提问作者gofraidh
相关产品推荐
相关产品推荐

