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

时间:2016-12-26 06:42:34

标签: sparql dbpedia

尝试重复使用以前曾经工作的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

任何想法如何更新?

2 个答案:

答案 0 :(得分:3)

dbpedia-owl:目前不是predefined namespace prefix on DBPedia,虽然曾经是{{3}}。它已被dbo:取代。

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

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

建议使用后者。

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

答案 1 :(得分:1)

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

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