导入自定义谓词语汇到GraphDB后URI访问报错缺失步骤求助
问题核心原因&解决步骤
你遇到的访问URI报错问题,核心是没有配置GraphDB的URI解引用规则,加上初始本体命名空间设置不合理,按以下步骤修正即可:
1. 先修正本体命名空间配置
你当前代码里的本体基址直接用了GraphDB的服务根地址http://localhost:7200,会和GraphDB自身的服务路由冲突,需要调整为专属的本体命名空间,修改代码如下:
from owlready2 import * # 替换为你要发布的词汇表专属命名空间,末尾加#或/分隔资源路径 onto = get_ontology("http://localhost:7200/vocab/nov22#") with onto: class x(Thing): pass class y(Thing): pass with onto: class z(ObjectProperty): domain = [x] range = [y] # 注意原代码这里range写了z(属性),不符合OWL规范,改为类,示例用y class t(ObjectProperty): domain = [y] range = [y] # 可以直接用owlready2生成ttl,不需要转nt再转ttl,简化代码 onto.save(file = "nov22_vocabulary.ttl", format = "turtle")
重新生成TTL文件后再导入GraphDB对应仓库。
2. 开启GraphDB的URI解引用功能
进入GraphDB的管理界面,按以下路径配置:
- 打开你导入词汇表的仓库的「设置」页面
- 找到「URI解引用(URI Dereferencing)」配置板块
- 开启解引用功能,新增规则:
- 命名空间前缀填写你刚才设置的本体基址:
http://localhost:7200/vocab/nov22# - 关联仓库选择你导入词汇表的仓库
- 配置返回格式优先级,按需求勾选
turtle、RDF/XML、HTML等常用格式
- 命名空间前缀填写你刚才设置的本体基址:
- 保存配置后重启对应仓库生效
3. 测试访问
可以用curl工具测试访问是否正常,示例命令:
# 请求返回谓词z的turtle格式描述 curl -H "Accept: text/turtle" http://localhost:7200/vocab/nov22#z
如果需要浏览器直接访问返回HTML页面,直接在浏览器输入对应URI即可,GraphDB会自动根据请求头返回对应格式的资源描述。
内容的提问来源于stack exchange,提问作者newbie
相关产品推荐
相关产品推荐

