我正在致电http://fr.dbpedia.org/sparql 以下SPARQL查询:
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select distinct ?lcs where {
{
?lcs ^(rdf:type/rdfs:subClassOf*) <http://fr.dbpedia.org/resource/Honoré_Daumier> ,
<http://fr.dbpedia.org/resource/Auguste_Rodin>;
a owl:Class .
filter not exists {
?llcs ^(rdf:type/rdfs:subClassOf*) <http://fr.dbpedia.org/resource/Honoré_Daumier> ,
<http://fr.dbpedia.org/resource/Auguste_Rodin>;
a owl:Class ;
rdfs:subClassOf+ ?lcs .
}
}
}
在某些通话中,我得到http://dbpedia.org/ontology/Person,在其他通话中,我得到了http://dbpedia.org/ontology/Person和http://dbpedia.org/ontology/Agent,并且与其他人一起得到了先前的答案以及http://www.w3.org/2002/07/owl#Thing
,没有任何内容知道响应未完成。如果结果是随机的,如何使用结果
答案 0 :(得分:1)
您的查询无法按预期运行的主要原因是:数据是i)拆分为单独的图,并且ii)并非所有图都已添加到默认图。
为简短起见,实例数据包含在图http://fr.dbpedia.org
中,而模式三元组只能通过http://dbpedia.org
图访问。有时,如果未提供任何图,则将某些图的并集用作默认图,它将作为查询时的数据集。不幸的是,这不适用于法语DBpedia端点,仅将使用实例数据图。
您可以通过以下方式进行检查
DESCRIBE <http://dbpedia.org/ontology/Person>
当没有显式使用图或图http://fr.dbpedia.org
时为空,而图http://dbpedia.org
则为非空。
定义默认图形的方法是使用关键字FROM
。对于您的查询,因此应为
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
select distinct ?lcs
from <http://fr.dbpedia.org>
from <http://dbpedia.org>
where {
?lcs ^(rdf:type/rdfs:subClassOf*) <http://fr.dbpedia.org/resource/Honoré_Daumier> ,
<http://fr.dbpedia.org/resource/Auguste_Rodin>;
a owl:Class .
filter not exists {
?llcs ^(rdf:type/rdfs:subClassOf*) <http://fr.dbpedia.org/resource/Honoré_Daumier> ,
<http://fr.dbpedia.org/resource/Auguste_Rodin>;
a owl:Class ;
rdfs:subClassOf+ ?lcs .
}
}
注意,虽然这似乎返回正确的结果,但您还应该考虑@TallTed关于语言章节之间可能存在差异的评论(例如,英语vs法语Wikipedia作为来源),版本转储(2016 vs 2018甚至DBpedia Live) )以及用作后端的Virtuoso版本。