我有一个 SPARQL 查询,它返回两个资源的最具体的常见类。
当我尝试运行它时https://dbpedia.org/sparql https://dbpedia.org/sparql,有时它什么也不返回,有时它返回我想要的类。
我注意到它与查询中语句的顺序有关。
这不是理想的行为,因为当我执行查询时,我希望无论输入资源 URI 的顺序如何,它都会得到相同的结果。
有没有人遇到过这个问题并找到解决方案?
Queries
以下查询工作正常,返回http://dbpedia.org/ontology/Film http://dbpedia.org/ontology/Film and http://dbpedia.org/ontology/Wikidata:Q11424 http://dbpedia.org/ontology/Wikidata:Q11424结果:
SELECT ?lcs
WHERE
{
<http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class1 .
?class1 rdfs:subClassOf* ?lcs .
<http://dbpedia.org/resource/Finding_Nemo> a ?class2 .
?class2 rdfs:subClassOf* ?lcs .
FILTER NOT EXISTS {
<http://dbpedia.org/resource/Finding_Nemo> a ?class3 .
?class3 rdfs:subClassOf* ?sublcs .
<http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class4 .
?class4 rdfs:subClassOf* ?sublcs .
?sublcs rdfs:subClassOf ?lcs
}
FILTER strstarts(str(?lcs), "http://dbpedia.org/ontology")
}
但是,以下查询不返回任何内容:
SELECT ?lcs
WHERE
{
<http://dbpedia.org/resource/Finding_Nemo> a ?class1 .
?class1 rdfs:subClassOf* ?lcs .
<http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class2 .
?class2 rdfs:subClassOf* ?lcs .
FILTER NOT EXISTS {
<http://dbpedia.org/resource/Finding_Nemo> a ?class3 .
?class3 rdfs:subClassOf* ?sublcs .
<http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class4 .
?class4 rdfs:subClassOf* ?sublcs .
?sublcs rdfs:subClassOf ?lcs
}
FILTER strstarts(str(?lcs), "http://dbpedia.org/ontology")
}
您在公共端点上运行查询,该端点具有多种自我保护设置。这意味着昂贵的查询可能会产生部分结果或不产生结果,而廉价的查询可能会产生完整的结果。您可以设置自己的镜像端点(在 Amazon EC2 上快速轻松 https://aws.amazon.com/marketplace/pp/B012DSCFEK)没有这样的保护,并且您应该从等效查询中看到等效结果。
-
@AKSW 对您的查询进行了调整,可以快速生成完整的结果 -
add FILTER strstarts(str(?sublcs), "http://dbpedia.org/ontology")
to the NOT EXISTS
part
(参见 and )
SELECT ?lcs
WHERE
{
<http://dbpedia.org/resource/Finding_Nemo> a ?class1 .
?class1 rdfs:subClassOf* ?lcs .
<http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class2 .
?class2 rdfs:subClassOf* ?lcs .
FILTER NOT EXISTS {
<http://dbpedia.org/resource/Finding_Nemo> a ?class3 .
?class3 rdfs:subClassOf* ?sublcs .
<http://dbpedia.org/resource/Ice_Age_(2002_film)> a ?class4 .
?class4 rdfs:subClassOf* ?sublcs .
?sublcs rdfs:subClassOf ?lcs
FILTER strstarts( str(?sublcs), "http://dbpedia.org/ontology" )
}
FILTER strstarts( str(?lcs), "http://dbpedia.org/ontology" )
}
(观察免责声明:开放链接软件 https://www.openlinksw.com/产生Virtuoso https://virtuoso.openlinksw.com/,它为 DBpedia 端点提供支持,并且上面提到的 AMI https://aws.amazon.com/marketplace/pp/B012DSCFEK。他们也雇用我。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)