DBPedia 的 SPARQL:在 'dbpedia-owl' 之前未定义的命名空间前缀

SPARQL for DBPedia: Undefined namespace prefix at 'dbpedia-owl' before

尝试重新使用以前可以工作的 this script,但现在出现错误:

Virtuoso 37000 Error SP030: SPARQL compiler, line 5: Undefined namespace prefix at 'dbpedia-owl' before 'dbpedia-owl:SportsTeam'

和脚本本身:

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

有什么更新方法吗?

命名空间 dbpedia-owl 不是 prefixed namespace in DBPedia

如果您知道命名空间的 URL,则可以在 SPARQL 查询之前使用 PREFIX dbpedia-owl: <NAMESPACE_URL>。但是,如果您正在寻找 PersonSportsTeam 的 DBpedia 资源定义,那么您应该使用(也许)dbo 而不是 dbpedia-owl.

dbpedia-owl: 目前不是 predefined namespace prefix on DBPedia,尽管它曾经是。它已被替换为 dbo:

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

PREFIX  dbpedia-owl:  <http://dbpedia.org/ontology/>

推荐后者。

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