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

如何用Python读取DBpedia标签JSON文件并通过SPARQL批量提取摘要

批量提取DBpedia标签对应的英文摘要(Python实现)

问题分析

你的代码存在几个关键问题:

  • 直接拼接file[1:-1]到SPARQL查询中是错误的,JSON读取的标签列表需要转换成DBpedia的标准资源URI格式,才能被SPARQL识别。
  • 函数名拼写错误:abstarctExtract应为abstractExtract。
  • 变量赋值错误:lang, value = result['abstract']['xml:lang'],result['label']['xml:lang'], result['label']['value'], result['abstract']['value']左边仅两个变量,右边有四个值,会触发赋值数量不匹配的错误。
  • 未处理标签到DBpedia URI的转换,且批量查询时使用VALUES子句比拼接多个三元组更高效、规范。

修正后的代码

from SPARQLWrapper import SPARQLWrapper, JSON
import json

# 读取JSON文件中的标签列表
with open('/content/drive/MyDrive/dbpedia_lables.json', 'r') as f:
    dbpedia_labels = json.load(f)

def abstractExtract(labels):
    # 将标签转换为DBpedia资源URI(空格替换为下划线是DBpedia的标准格式)
    resource_uris = [f"<http://dbpedia.org/resource/{label.replace(' ', '_')}>" for label in labels]
    # 构造SPARQL查询,用VALUES子句批量传入资源
    sparql_query = f'''
    SELECT ?label ?abstract
    WHERE {{
        VALUES ?resource {{ {' '.join(resource_uris)} }}
        ?resource rdfs:label ?label ;
                  dbo:abstract ?abstract .
        # 直接在查询中过滤英文的标签和摘要,减少返回数据量
        FILTER(LANG(?label) = "en" && LANG(?abstract) = "en")
    }}
    '''
    
    sparql = SPARQLWrapper('http://dbpedia.org/sparql')
    sparql.setQuery(sparql_query)
    sparql.setReturnFormat(JSON)
    
    try:
        qres = sparql.query().convert()
        # 遍历结果并输出
        for result in qres['results']['bindings']:
            label_value = result['label']['value']
            abstract_value = result['abstract']['value']
            print(f"标签: {label_value}")
            print(f"摘要: {abstract_value}\n")
    except Exception as e:
        print(f"查询出错: {str(e)}")

# 调用函数执行查询
abstractExtract(dbpedia_labels)

代码说明

  • URI转换:将标签中的空格替换为下划线,包装成DBpedia资源的标准URI格式,确保SPARQL能正确识别目标资源。
  • VALUES子句:批量传入所有资源URI,避免拼接大量重复的三元组语句,既提升查询效率,也符合SPARQL的规范写法。
  • 前置过滤:在SPARQL查询中直接过滤英文内容,减少返回的数据量,无需在Python中二次处理。
  • 异常捕获:添加try-except块处理查询过程中可能出现的网络问题、无效URI等异常情况。

内容的提问来源于stack exchange,提问作者A.gul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:35:37