2015-12-24 76 views
0

我不明白爲什麼Virtuoso SPARQL從相同的資源返回不同的浮點值(特別是經度和緯度)。Virtuoso從相同的資源返回不同的浮點值

這是我的查詢(link

PREFIX dcterms: <http://purl.org/dc/terms/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 

SELECT ?resource ?lon ?lat WHERE { 
    ?subcat skos:broader* dbc:Airports_in_Libya. 
    ?resource dcterms:subject ?subcat. 
    ?resource geo:lat ?lat. 
    ?resource geo:long ?lon. 
} 
GROUP BY ?resource 

返回他們的地理座標機場的列表。然而,很少有機場多次上市。原因是(可能)lonlat有時會返回與同一DBpedia頁面略有不同的值。

例如,

http://dbpedia.org/resource/RAF_Gambut 23.9094 31.9095 
http://dbpedia.org/resource/RAF_Gambut 23.9095 31.9095 
http://dbpedia.org/resource/RAF_Gambut 21.8272 21.7061 

我不明白爲什麼,因爲page實際上只報告只有一對座標......

geo:lat 31.951111 (xsd:float) 
geo:long 24.503889 (xsd:float) 

不中我的結果出現在任何地方。這與浮動四捨五入有關嗎?

回答

0

一個簡單的技巧顯示你看到的頁面上的數字是欺騙性的。

PREFIX dcterms: <http://purl.org/dc/terms/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 

SELECT ?resource (str(?lon) as ?long) (str(?lat) as ?latt) 
WHERE { 
    ?subcat skos:broader* dbc:Airports_in_Libya. 
    ?resource dcterms:subject ?subcat. 
    ?resource geo:lat ?lat. 
    ?resource geo:long ?lon. 
} 
GROUP BY ?resource 

enter image description here

通常,當你看到一些看起來完全一樣,但它不是,它需要一些進一步的調查。如果您嘗試爲http://dbpedia.org/resource/RAF_Gambut資源篩選出的第一行,你可以看到,你只能得到一個結果:

PREFIX dcterms: <http://purl.org/dc/terms/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 

SELECT distinct ?subcat ?resource ?lon ?lat 
WHERE { 
    #?subcat skos:broader* dbc:Airports_in_Libya. 
    ?resource dcterms:subject ?subcat. 
    ?resource geo:lat ?lat. 
    ?resource geo:long ?lon. 
filter(?resource=<http://dbpedia.org/resource/RAF_Gambut>) 
} 
GROUP BY ?resource 

enter image description here

正如你看到的,你仍然只有一個?lon?lat。如果仔細觀察,沒有?subcat與您正在提取的內容相匹配,並且您要求SKOS詞彙表爲您提供broader選項。在這一點上,如果你深入挖掘,你可以看到一些數字是用科學計數法表示的。

enter image description here

得到消除和協調輸出的方式是消除科學記數法。

PREFIX dcterms: <http://purl.org/dc/terms/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> 

SELECT distinct ?resource ?lonf ?latf 

WHERE { 
    ?subcat skos:broader* dbc:Airports_in_Libya. 
    ?resource dcterms:subject ?subcat. 
    ?resource geo:lat ?lat. 
    ?resource geo:long ?lon. 

bind(xsd:float(?lat) as ?latf) 
bind(xsd:float(?lon) as ?lonf) 

} 
GROUP BY ?resource 

還有一對夫婦的資源與一個以上的經度和緯度(例如http://dbpedia.org/page/Gamal_Abdul_El_Nasser_Air_Base),但他們有一個以上的在DBpedia中頁爲好。

+0

從http://dbpedia.org/resource/RAF_Gambut未列出來自if的信息在哪裏? – CptNemo

+0

我編輯了我的答案。它回答你的問題嗎? – Artemis

相關問題