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

在Google Colab用RDFlib解析OWL本体遇qur命名空间错误求助

解决RDFlib查询Quran本体时的"Unknown namespace prefix : qur"错误

问题背景

在Google Colab中使用RDFlib查询存储于Google Drive的quran_data_full.owl本体文件时,触发错误:

Exception: Unknown namespace prefix : qur

错误原因

代码中错误地将本地文件路径作为命名空间绑定,而本体文件里定义的qur前缀对应的是远程命名空间http://quranontology.com/Resource/,两者不匹配导致查询无法识别qur:前缀。

修正方案

将代码中的命名空间绑定替换为本体中定义的qur命名空间,并绑定qur前缀(与查询语句中使用的前缀一致)。

完整修正代码

import logging
import rdflib
import time

logging.basicConfig()
logger = logging.getLogger('logger')
logger.warning('The system may break down')

start_time = time.time()

g = rdflib.Graph()
# 加载本体文件
g.parse('/gdrive/MyDrive/Quran Corpus/quran_data_full.owl', format='application/rdf+xml')
# 绑定本体中定义的qur命名空间
qur_namespace = rdflib.Namespace('http://quranontology.com/Resource/')
g.bind('qur', qur_namespace)

query = """
SELECT Distinct ?verse ?text  ?word1 ?wordText1 
WHERE { 
?verse rdf:type qur:Verse.
?verse rdfs:label ?textSimple.
?verse qur:DisplayText ?text.
?word1 qur:IsPartOf ?verse.
?word1 rdfs:label ?wordText1.
?word1 qur:WordLemma ?wordLema1.
?word1 qur:WordRoot ?wordRoot1.
FILTER(?wordText1 = "الوصية"@ar || ?wordLema1 = "الوصية"@ar || ?wordRoot1 = "الوصية"@ar)
}
LIMIT 25
"""
result = g.query(query)
print(result.serialize(format='csv'))

print("--- %s seconds ---" % (time.time() - start_time)) 

关键修改说明

  • 替换了命名空间定义:将原代码中的本地路径/gdrive/MyDrive/Quran Corpus/替换为本体文件中明确的http://quranontology.com/Resource/
  • 绑定前缀为qur:确保与SPARQL查询语句中使用的qur:前缀完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:25:28