Virtuoso新建图FCT147调用HTTP端点返回500错误求助
问题根因
报错核心原因是你传入的图标识FCT147属于相对URI,不符合SPARQL 1.1 Graph Store协议的接口规则:
- 针对图的GET、DELETE类读取、删除操作,接口强制要求传入绝对格式的URI作为图标识
- 仅PUT、POST类新建写入图的操作,才允许临时传入相对URI
你测试可正常访问的请求中传入的http://localhost:8890/sparql就是标准绝对URI,因此可以正常返回结果。
解决步骤
- 先查询实例内所有已存图的完整URI,确认FCT147对应的完整绝对地址。直接在SPARQL查询端点执行以下查询语句即可:
SELECT DISTINCT ?g WHERE { GRAPH ?g { ?s ?p ?o } }
查询结果里会列出所有已创建图的完整标识,如果你建图时只传了短名FCT147,Virtuoso会自动拼接默认前缀生成绝对URI,常见格式为http://localhost:8890/FCT147这类形式。
- 替换GET请求中的
graph-uri参数为查询到的完整绝对URI,再发起请求即可正常获取图内数据,正确请求格式示例:http://localhost:8890/sparql-graph-crud-auth?graph-uri=<替换为FCT147对应的完整绝对URI> - 后续操作提示:新建图时建议直接传入完整绝对URI作为图名,避免后续读写、删除操作时因为相对URI匹配失败报错。
内容的提问来源于stack exchange,提问作者Naman Sharma
相关产品推荐
相关产品推荐

