OWLREADY 2加载使用不同命名空间的Blondie本体报错如何解决
问题根因
Blondie本体内部声明的官方命名空间URI http://www.semanticblockchain.com/Blondie.owl 所属域名已过期,当前跳转至域名交易广告页。OwlReady2默认会尝试根据本体中声明的命名空间URI拉取关联资源,拉取到的内容为HTML广告页而非符合规范的RDF文件,因此触发解析错误。
解决方案
你可以根据自己的使用场景选择以下任意一种方案解决:
方案1:配置本地本体路径映射(最通用,不修改本体也不影响依赖加载)
先把所有本地存放本体的文件夹加入OwlReady2的搜索路径,它会优先在本地路径搜索匹配的本体,不会触发联网请求:import owlready2 as owl # 添加本地本体存放目录到搜索路径,支持多个目录 owl.onto_path.append("/path/to/your/local/ontology/folder") # 直接加载本地Blondie.owl文件 onto = owl.get_ontology("file:///path/to/your/local/Blondie.owl").load()如果仍触发联网请求,可以额外手动绑定命名空间到本地文件:
owl.default_world.graph.bind("blondie", "http://www.semanticblockchain.com/Blondie.owl")方案2:全局关闭远程本体加载(适合无外部依赖的独立本体)
如果你使用的Blondie本体没有依赖其他外部本体,可以直接关闭OwlReady2的远程加载开关,彻底禁止所有联网拉取本体的行为:import owlready2 as owl # 加载本体前先关闭远程加载配置 owl.config.REMOTE_ONTOLOGY_LOADING = False # 加载本地本体文件 onto = owl.get_ontology("file:///path/to/your/local/Blondie.owl").load()注意:如果本体存在外部依赖,该方案会导致依赖加载失败
方案3:修改本体文件的命名空间声明(永久生效)
直接编辑本地的Blondie.owl源文件,找到根节点下owl:Ontology标签的rdf:about属性,将原属性值http://www.semanticblockchain.com/Blondie.owl修改为你的本地文件URI(例如file:///home/xxx/ontologies/Blondie.owl),修改后本体本身不会再触发任何远程请求。
内容的提问来源于stack exchange,提问作者Discipulos
相关产品推荐
相关产品推荐

