在 DBpedia 中查询银行

Query for banks in DBpedia

使用 http://dbpedia.org/sparql, I want to receive the geographic coordinates of all bank buildings. The list of classes 告诉我应该查询 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 的任何同级(例如 BreweryLawFirm),我至少会看到一些结果。上面的代码有什么问题?

如果您查看银行的 dbpedia 页面,您会发现在 rdf:type 上,银行有 属性 dbpedia-owl:industry dbpedia:BankRefah bank) or dbpedia:Financial_services (Cyprus bank) 作为一个值。因此,如果您按如下方式重写查询,您将得到一些结果:

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,其他组织如London stock exchange也会出现:

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))