You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SPARQL查询Wikidata法国市镇:无法获取省、大区代码的问题求助

问题分析与修正方案

你的查询返回0条结果的核心原因是对Wikidata的属性陈述结构理解有误:

  • ?adminEntitiesStmt是P131(行政隶属)的陈述对象,它的主属性值(ps:P131)是行政区实体(比如省、大区),而不是INSEE代码。
  • P2586(INSEE代码)是行政区实体自身的属性,不是P131陈述的附加属性,不能直接用ps:P2586从?adminEntitiesStmt取值。

修正后的SPARQL查询

下面的查询会正确获取市镇对应的省、大区等行政区的INSEE代码,还可以区分行政区类型:

SELECT ?inseeCode ?commune ?nom ?dateFinNom ?dateFinCodeInsee ?adminEntity ?adminEntityInseeCode ?adminEntityTypeLabel
WHERE {
    # 市镇的INSEE代码及有效期
    ?commune p:P374 ?inseeStmt . 
    ?inseeStmt ps:P374 ?inseeCode . 
    OPTIONAL {?inseeStmt pq:P582 ?dateFinCodeInsee .}

    # 限定为法国市镇(Q484170)
    ?commune wdt:P31 wd:Q484170 .

    # 市镇的名称及有效期
    ?commune p:P1448 ?nomStmt .
    ?nomStmt ps:P1448 ?nom .
    OPTIONAL {?nomStmt pq:P582 ?dateFinNom .}

    # 关联行政区实体,并获取其INSEE代码
    ?commune wdt:P131 ?adminEntity .
    ?adminEntity wdt:P2586 ?adminEntityInseeCode .

    # 可选:获取行政区的类型(比如省、大区),方便区分层级
    ?adminEntity wdt:P31 ?adminEntityType .
    SERVICE wikibase:label { bd:serviceParam wikibase:language "fr" . }
}
LIMIT 100

额外优化说明

  • 如果只想获取省的代码,可以加上过滤条件:?adminEntity wdt:P31 wd:Q6465(Q6465是法国省的Wikidata ID)
  • 如果只想获取大区的代码,加上:?adminEntity wdt:P31 wd:Q36744(Q36744是法国大区的Wikidata ID)
  • 用wdt:P131代替p:P131是因为我们不需要处理行政隶属的历史变更,直接取当前有效的隶属关系;如果需要历史数据,再改用陈述结构p:P131并附加时间属性。

内容的提问来源于stack exchange,提问作者fabien-michel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 04:31:05