2015-06-20 51 views
0

使用http://dbpedia.org/sparql,我想要接收所有銀行大樓的地理座標。 The list of classes告訴我,我應該查詢Bank查詢DBpedia中的銀行

然而,下面的代碼產生什麼:

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),我看到至少一些結果。上面的代碼有什麼問題?

回答

0

如果你看看一個銀行DBpedia的頁面,你可以看到,而不是在rdf:type,銀行作爲一個值,具有dbpedia:BankRefah bank)或dbpedia:Financial_servicesCyprus bank)屬性dbpedia-owl:industry。所以,如果你重寫查詢,如下,你會得到一些結果:

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

我只是試圖合作再次運行quries但我不斷收到錯誤'炫技37000錯誤SP030:SPARQL編譯器,第5行: dbpedia:Bank''前的'dbpedia-owl'中未定義的名稱空間前綴(用於第一個查詢)。 – MERose

+0

他們更改了標準名稱空間http://dbpedia.org/sparql?nsdecl。我將編輯帖子。 – Artemis

+0

他們也從我出來的幾個答案中刪除了lat和long。你可以得到'location',但就是這樣。 – Artemis