SPARQL:确切的rdfs:标签查询产生不一致的结果

问题描述:

我试图通过使用SPARQL进行显式搜索来从特定城市获取诸如人口,纬度,经度等数据。以下代码适用于像巴塞罗那这样的城市,但对于像毕尔巴鄂这样的城市没有效果。因此,以下内容:SPARQL:确切的rdfs:标签查询产生不一致的结果

SELECT Distinct ?city, ?country, ?lat, ?lon, ?population, ?area, ?elevation WHERE { 
    ?city rdf:type <http://dbpedia.org/ontology/City> . 
    ?city <http://dbpedia.org/ontology/country> ?country . 
    ?city <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat . 
    ?city <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?lon . 
    ?city <http://dbpedia.org/ontology/populationTotal> ?population . 
    ?city <http://dbpedia.org/ontology/PopulatedPlace/areaTotal> ?area . 
    ?city <http://dbpedia.org/ontology/elevation> ?elevation; 
rdfs:label "Barcelona"@en . 
} 

回报

:Barcelona :Spain 41.3833 2.18333 1604555 "101.4"^^dbpedia:datatype/squareKilometre 12.0 

但与行相同的块:

rdfs:label "Bilbao"@en . 

回来空。如瓦伦西亚,波哥大,比纳斯科等城市的失败......我想在没有过滤器的情况下进行搜索,如果可能的话。我已经得到混合结果与以下筛选查询:

SELECT ?city, ?country, ?lat, ?lon, ?population, ?area, ?elevation, ?label WHERE { 
    ?city rdf:type <http://dbpedia.org/ontology/City> . 
    ?city <http://dbpedia.org/ontology/country> ?country . 
    ?city <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat . 
    ?city <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?lon . 
    ?city <http://dbpedia.org/ontology/populationTotal> ?population . 
    ?city <http://dbpedia.org/ontology/PopulatedPlace/areaTotal> ?area . 
    ?city <http://dbpedia.org/ontology/elevation> ?elevation; 
rdfs:label ?label . 
FILTER contains (?label, "Bilbao") 
FILTER langMatches(lang(?label),'en') 
} 
LIMIT 100 

任何想法将不胜感激。

Dbpedia数据远离同质性,因此,您必须确保您的查询确实符合数据。例如,毕尔巴鄂的DBpedia中的资源不属于类dbo:City

SELECT * { dbr:Bilbao a ?cls } 

其中,它属于类

+------------------------------------------------------------+ 
|       cls        | 
+------------------------------------------------------------+ 
| http://www.wikidata.org/entity/Q486972      | 
| http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing  | 
| http://www.w3.org/2002/07/owl#Thing      | 
| http://umbel.org/umbel/rc/Village       | 
| http://umbel.org/umbel/rc/PopulatedPlace     | 
| http://umbel.org/umbel/rc/Location_Underspecified   | 
| http://schema.org/Place         | 
| http://dbpedia.org/ontology/Settlement      | 
| http://dbpedia.org/ontology/PopulatedPlace     | 
| http://dbpedia.org/ontology/Place       | 
| http://dbpedia.org/ontology/Location      | 
| http://dbpedia.org/class/yago/YagoPermanentlyLocatedEntity | 
| http://dbpedia.org/class/yago/YagoLegalActorGeo   | 
| http://dbpedia.org/class/yago/YagoGeoEntity    | 
| ...              | 
+------------------------------------------------------------+ 

这同样适用于属性,你有确保资源的所有属性都存在。如果您不能这样做,请将三重模式包装到OPTIONAL子句中。请注意,由于左连接执行,此查询可能会更加昂贵。

+0

谢谢@aksw。卓越的见解。我会更深入地观察dbo:城市/地点/位置问题。 – Plutovman