尝试重复使用以前曾经工作的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
任何想法如何更新?
答案 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>
。但是,如果您正在寻找Person
和SportsTeam
的DBpedia资源定义,那么您应该使用(可能)dbo
代替dbpedia-owl
。