我想使用http://dbpedia.org/sparql来接收所有银行大楼的地理坐标。类列表告诉我应该查询Bank
。
但是,以下代码不会产生任何结果:
SELECT DISTINCT ?label ?lat ?long
WHERE {
[]
rdf:type dbpedia-owl:Bank ;
geo:lat ?lat ;
geo:long ?long ;
rdfs:label ?label.
FILTER (LANGMATCHES(LANG(?label), 'en'))
}
相反,如果我查询到的任何同级项Bank
(例如Brewery
或LawFirm
),则至少会看到一些结果。上面的代码有什么问题?
如果你看看一个银行DBpedia的页面,你可以看到,而不是在rdf:type
银行有一个属性dbpedia-owl:industry
有dbpedia:Bank
(Refah银行)或dbpedia:Financial_services
(塞浦路斯银行)作为值。因此,如果您按照以下方式重写查询,则会得到一些结果:
SELECT DISTINCT ?label ?lat ?long
WHERE {
[] dbpedia-owl:industry dbpedia:Bank ;
geo:lat ?lat ;
geo:long ?long ;
rdfs:label ?label.
FILTER (LANGMATCHES(LANG(?label), 'en'))
}
如果您添加dbpedia:Financial_services
,其他组织(例如伦敦证券交易所)也会出现:
SELECT DISTINCT ?bank
WHERE {
?bank dbpedia-owl:industry ?place ;
geo:lat ?lat ;
geo:long ?long ;
rdfs:label ?label.
FILTER (?place in (dbpedia:Financial_services, dbpedia:Bank) &&
LANGMATCHES(LANG(?label), 'en'))
}
同样,通过检查伦敦证券交易所,您可以看到有一种将这些金融机构分开的产品属性。因此,这将为您提供银行,但可能无法覆盖所有可用的银行:
SELECT DISTINCT ?label ?lat ?long
WHERE {
[] dbpedia-owl:industry ?place ;
geo:lat ?lat ;
geo:long ?long ;
rdfs:label ?label;
dbpedia-owl:product ?product.
FILTER ( ?place in (dbpedia:Financial_services, dbpedia:Bank)
&& ?product in (dbpedia:Bank, dbpedia:Private_banking, dbpedia:Professional_Banking, dbpedia:Retail_banking, dbpedia:Investment_banking, dbpedia:Commercial_bank)
&& LANGMATCHES(LANG(?label), "en"))
} ORDER BY DESC(COUNT(DISTINCT ?product))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句