SPARQL for DBPedia:之前在“dbpedia-owl”处未定义命名空间前缀

Dan*_*iel 1 sparql dbpedia

尝试重新使用这个以前可以工作的脚本,但现在出现错误:

Virtuoso 37000 Error SP030: SPARQL compiler, line 5: Undefined namespace prefix at 'dbpedia-owl' before 'dbpedia-owl:SportsTeam'
Run Code Online (Sandbox Code Playgroud)

以及脚本本身:

select ?a ?b ?super (?aLength + ?bLength as ?length)
{
  values (?a ?b) { (dbpedia-owl:Person dbpedia-owl:SportsTeam) }

  { select ?a ?super (count(?mid) as ?aLength) { 
      ?a rdfs:subClassOf* ?mid .
      ?mid rdfs:subClassOf+ ?super .
    }
    group by ?a ?super
  }
  { select ?b ?super (count(?mid) as ?bLength) { 
      ?b rdfs:subClassOf* ?mid .
      ?mid rdfs:subClassOf+ ?super .
    }
    group by ?b ?super
  }
}
order by ?length
limit 1
Run Code Online (Sandbox Code Playgroud)

有什么想法如何更新吗?

Tal*_*Ted 5

dbpedia-owl:目前不是DBPedia 上的预定义命名空间前缀,尽管它曾经是。它已被替换为dbo:.

就目前情况而言,您可以将dbpedia-owl:查询中的所有实例更改为dbo:,或将其添加到查询的开头 -

PREFIX  dbpedia-owl:  <http://dbpedia.org/ontology/>
Run Code Online (Sandbox Code Playgroud)

推荐后者。

为了获得最佳结果,您应该始终在 SPARQL 中包含PREFIX声明,而不是依赖此类服务器端预定义。如果删除命名空间预定义(如本例所示)或更改为新 URL,这可以避免出现任何问题,这可能会对查询结果产生不可预测的影响。