我的SPARQL查询有什么问题,如何修复?

我的SPARQL查询有什么问题,如何修复?,sparql,Sparql,我正在学习如何创建SPARQL查询。目前,我正在使用Dbpedia数据集 我试图通过以下查询查询“加拿大有哪些机场”: PREFIX owl: <http://www.w3.org/2002/07/owl#> PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX rdf: <http://www

我正在学习如何创建SPARQL查询。目前,我正在使用Dbpedia数据集

我试图通过以下查询查询“加拿大有哪些机场”:

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>

SELECT ?name ?country WHERE {
?name rdf:type <http://dbpedia.org/ontology/Airport>;
?name rdf:type <http://dbpedia.org/ontology/Country>
}
LIMIT 20
前缀owl:
前缀xsd:
前缀rdfs:
前缀rdf:
前缀foaf:
前缀dc:
前缀:
前缀db2:
前缀dbpedia:
前缀skos:
选择?名称?所在国家/地区{
?名称rdf:类型;
?名称rdf:类型
}
限制20
我仍然对构建SPARQL查询感到困惑,尤其是使用资源和RDF图

我需要的是上面的查询有什么错误


谢谢

您要查找的查询类似于:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?airport ?label WHERE {
?airport rdf:type <http://dbpedia.org/ontology/Airport>;
         rdfs:label ?label;
         dbpedia-owl:location <http://dbpedia.org/resource/Canada> .
}
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?airport ?label WHERE {
?airport rdf:type <http://dbpedia.org/class/yago/AirportsInOntario> ;
rdfs:label ?label .
}
前缀rdfs:
前缀rdf:
前缀dbpedia owl:
选择不同的“机场”标签{
?机场rdf:类型;
rdfs:标签?标签;
dbpediaowl:位置。
}
但是,此查询不会返回太多结果,您最好使用以下内容:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?airport ?label WHERE {
?airport rdf:type <http://dbpedia.org/ontology/Airport>;
         rdfs:label ?label;
         dbpedia-owl:location <http://dbpedia.org/resource/Canada> .
}
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?airport ?label WHERE {
?airport rdf:type <http://dbpedia.org/class/yago/AirportsInOntario> ;
rdfs:label ?label .
}
前缀rdfs:
前缀rdf:
前缀dbpedia owl:
选择不同的“机场”标签{
?机场rdf:类型;
标签?标签。
}
初始查询中存在各种错误,这意味着您应该更好地理解SPARQL。您需要修改构建三重模式的方式。我建议您阅读以下教程:

此外,您还会发现探索性SPARQL查询非常有用:


您要查找的查询类似于:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?airport ?label WHERE {
?airport rdf:type <http://dbpedia.org/ontology/Airport>;
         rdfs:label ?label;
         dbpedia-owl:location <http://dbpedia.org/resource/Canada> .
}
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?airport ?label WHERE {
?airport rdf:type <http://dbpedia.org/class/yago/AirportsInOntario> ;
rdfs:label ?label .
}
前缀rdfs:
前缀rdf:
前缀dbpedia owl:
选择不同的“机场”标签{
?机场rdf:类型;
rdfs:标签?标签;
dbpediaowl:位置。
}
但是,此查询不会返回太多结果,您最好使用以下内容:

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?airport ?label WHERE {
?airport rdf:type <http://dbpedia.org/ontology/Airport>;
         rdfs:label ?label;
         dbpedia-owl:location <http://dbpedia.org/resource/Canada> .
}
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>

SELECT DISTINCT ?airport ?label WHERE {
?airport rdf:type <http://dbpedia.org/class/yago/AirportsInOntario> ;
rdfs:label ?label .
}
前缀rdfs:
前缀rdf:
前缀dbpedia owl:
选择不同的“机场”标签{
?机场rdf:类型;
标签?标签。
}
初始查询中存在各种错误,这意味着您应该更好地理解SPARQL。您需要修改构建三重模式的方式。我建议您阅读以下教程:

此外,您还会发现探索性SPARQL查询非常有用:


您的查询当前正在请求类型为Airport和类型为Country的对象(资源)。不用说,没有结果

您的查询也要求?国家,这是完全未定义的


有关正确的示例,请参见msalvadores的回答…

您的查询当前要求的对象(资源)的类型为Airport和Country。不用说,没有结果

您的查询也要求?国家,这是完全未定义的

有关正确的示例,请参见msalvadores的答案