在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
相关产品推荐
相关产品推荐

