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

如何通过SPARQL查询指定Wiki-ID的作者属性信息并结合Python脚本批量处理表格数据

针对特定Wiki-ID的SPARQL查询方案

嘿,我来帮你搞定这个问题!针对指定Wiki-ID(比如Almudena Grandes的Q274348)获取性别、出生地和出生日期的SPARQL查询其实很直观,核心是绑定目标实体,然后匹配对应的维基数据属性。

首先,先给你针对Q274348的具体查询语句:

SELECT ?item ?itemLabel ?gender ?genderLabel ?birthDate ?birthPlace ?birthPlaceLabel
WHERE {
  BIND(wd:Q274348 AS ?item)
  
  # 匹配性别(属性ID:P21)
  OPTIONAL { ?item wdt:P21 ?gender }
  # 匹配出生日期(属性ID:P569)
  OPTIONAL { ?item wdt:P569 ?birthDate }
  # 匹配出生地(属性ID:P19)
  OPTIONAL { ?item wdt:P19 ?birthPlace }
  
  # 获取多语言标签(这里指定西班牙语和英语,可按需调整)
  SERVICE wikibase:label { bd:serviceParam wikibase:language "es,en". }
}

代码解释:

  • BIND(wd:Q274348 AS ?item):明确指定要查询的实体是Q274348,替换成其他Wiki-ID就能查询对应作者。
  • OPTIONAL:用这个关键字包裹每个属性查询,避免因为某属性缺失(比如有些作者没标注出生地)导致整个查询返回空结果。
  • SERVICE wikibase:label:自动获取实体的可读标签(比如把wd:Q6581072(女性)转换成“female”或“mujer”),不用手动处理Q值对应的名称。

批量/脚本集成建议:

如果要在Python脚本里遍历表格逐个查询,你可以把查询语句中的wd:Q274348替换成变量,比如用字符串格式化实现:

import requests
import pandas as pd

# 假设你的表格是pandas DataFrame,列名为'wiki_id'
df = pd.read_csv('your_authors_table.csv')

# 维基数据SPARQL端点
sparql_endpoint = "https://query.wikidata.org/sparql"

# 基础查询模板
query_template = """
SELECT ?genderLabel ?birthDate ?birthPlaceLabel
WHERE {{
  BIND(wd:{wiki_id} AS ?item)
  OPTIONAL {{ ?item wdt:P21 ?gender }}
  OPTIONAL {{ ?item wdt:P569 ?birthDate }}
  OPTIONAL {{ ?item wdt:P19 ?birthPlace }}
  SERVICE wikibase:label {{ bd:serviceParam wikibase:language "es,en". }}
}}
"""

# 遍历每行查询并补充数据
for index, row in df.iterrows():
    wiki_id = row['wiki_id']
    query = query_template.format(wiki_id=wiki_id)
    response = requests.get(sparql_endpoint, params={'query': query, 'format': 'json'})
    data = response.json()
    
    # 提取结果并更新表格
    if data['results']['bindings']:
        bindings = data['results']['bindings'][0]
        df.at[index, 'gender'] = bindings.get('genderLabel', {}).get('value')
        df.at[index, 'birth_date'] = bindings.get('birthDate', {}).get('value')
        df.at[index, 'birth_place'] = bindings.get('birthPlaceLabel', {}).get('value')

# 保存更新后的表格
df.to_csv('updated_authors_table.csv', index=False)

这个脚本会自动遍历你的作者表格,为每个Wiki-ID执行查询,把获取到的性别、出生日期、出生地信息补充到对应的列里。

内容的提问来源于stack exchange,提问作者José

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:17:39