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

如何在Python RDFLib中用g.triples过滤英文SKOS标签并生成字典?

过滤SKOS英文prefLabel生成字典的方法

你之前尝试给triples()方法加lang参数的思路不对,因为该方法本身不支持这个参数。正确的做法是在字典推导式里添加语言判断条件,或者用SPARQL查询实现过滤。

方法一:字典推导式添加语言过滤

修改代码,遍历三元组时直接检查宾语(Literal对象)的language属性是否为"en":

from rdflib import SKOS

d = {s: o for s, p, o in g.triples((None, SKOS.prefLabel, None)) if o.language == "en"}

如果担心部分Literal没有语言标签引发报错,可以额外增加属性存在的判断:

d = {s: o for s, p, o in g.triples((None, SKOS.prefLabel, None)) if hasattr(o, 'language') and o.language == "en"}

方法二:使用SPARQL查询

对于复杂过滤场景,SPARQL语法会更直观:

query = """
SELECT ?s ?o
WHERE {
    ?s skos:prefLabel ?o .
    FILTER(lang(?o) = "en")
}
"""
results = g.query(query)
d = {row.s: row.o for row in results}

内容的提问来源于stack exchange,提问作者Margherita Martorana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 13:45:27