DBPedia SPARQL查询报错求助:缺失命名空间URI及语法错误
解决DBPedia SPARQL查询中的命名空间缺失与语法错误问题
1. 补全正确的命名空间声明
SPARQL查询必须在开头用PREFIX声明所有用到的命名空间,dbr、dbp、dbo对应的标准URI如下,直接放在查询最顶部:
PREFIX dbr: <http://dbpedia.org/resource/> PREFIX dbp: <http://dbpedia.org/property/> PREFIX dbo: <http://dbpedia.org/ontology/>
缺失这些声明就会触发「Missing
2. 修正语法错误
提示「syntax error at 'dbo:birthDate' before '?birthDate'」,大概率是三元组格式问题——SPARQL的三元组要求主语、谓语、宾语之间必须有空格分隔,或是你把三元组顺序写反了。
下面是能实现需求的完整查询示例:
PREFIX dbr: <http://dbpedia.org/resource/> PREFIX dbo: <http://dbpedia.org/ontology/> SELECT ?veteran (YEAR(?birthDate) AS ?birthYear) WHERE { ?veteran dbo:occupation dbr:Veteran ; dbo:birthDate ?birthDate . FILTER (datatype(?birthDate) = xsd:date) } ORDER BY ?birthYear
关键注意点
- 三元组末尾标点:最后一个三元组用句号
.,前面的用分号;,不要写错 - 优先使用
dbo:开头的本体属性(比如dbo:birthDate),比dbp:的页面属性更稳定规范 YEAR()函数可直接从日期类型的?birthDate中提取年份,避免手动处理字符串
内容的提问来源于stack exchange,提问作者Trendcutter
相关产品推荐
相关产品推荐

