2013-08-23 46 views
3

我正在使用來自Maven存儲庫的Jena(TDB 0.10.1,CORE/ARQ 2.10.1)。我今年進口file奇怪的Apache Jena可選行爲

tdbloader --graph=http://linkedgeodata.org --loc=$bsdStore $lgdData"supermarkets.ttl" 

我現在試圖查詢這個模型,像這樣:

PREFIX lgd: <http://linkedgeodata.org/ontology/> 
PREFIX wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#> 
PREFIX geo: <http://geovocab.org/geometry#> 
PREFIX gis:  <http://www.opengis.net/ont/geosparql#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 

SELECT DISTINCT ?supermarket ?label ?latitude ?longitude ?points 
FROM <http://linkedgeodata.org> 
WHERE { 
    ?supermarket a lgd:Supermarket . 
    ?supermarket ?p ?o . 
    OPTIONAL { 
     ?supermarket rdfs:label ?label . 
     ?supermarket geo:geometry ?geo . 
     ?geo gis:asWKT ?points . 
     ?supermarket wgs:lat ?latitude . 
     ?supermarket wgs:long ?longitude . 
    } 
} 

Unfortunatley這個回報是空的結果集。如果我現在將wgs模式移動到 單獨可選我得到正確的結果。

SELECT DISTINCT ?supermarket ?label ?latitude ?longitude ?points 
FROM <http://linkedgeodata.org> 
WHERE { 
    ?supermarket a lgd:Supermarket . 
    ?supermarket ?p ?o . 
    OPTIONAL { 
     ?supermarket rdfs:label ?label . 
     ?supermarket geo:geometry ?geo . 
     ?geo gis:asWKT ?points . 
    } 
    OPTIONAL { 
     ?supermarket wgs:lat ?latitude . 
     ?supermarket wgs:long ?longitude . 
    } 
}  

這是在耶拿的錯誤還是我的查詢錯誤? 乾杯,丹尼爾

+0

這將有助於顯示您從第二個查詢獲得的答案。這個問題似乎是關於查詢如何匹配數據。 – AndyS

+0

_entire_可選模式匹配或不匹配;它不會使塊中的每個子模式都是獨立可選的。這出現在最近的一個問題中,那裏的答案解決了你的問題。可能的[使用可選屬性獲取dbpedia結果]的副本(http://stackoverflow.com/questions/18190648/getting-dbpedia-results-with-optional-properties) –

回答

3

整個可選塊必須匹配;它不會使每個三重模式獨立可選。這將是:

WHERE { 
    ?supermarket a lgd:Supermarket . 
    ?supermarket ?p ?o . 
    OPTIONAL { ?supermarket rdfs:label ?label . } 
    OPTIONAL { ?supermarket geo:geometry ?geo . } 
    OPTIONAL { ?geo gis:asWKT ?points . } 
    OPTIONAL { ?supermarket wgs:lat ?latitude . } 
    OPTIONAL { ?supermarket wgs:long ?longitude . } 
    } 
} 

因此,如果第二個有一定的效果,想必對於任何一個超市,自選的一個匹配,另一個不?。

+0

omg。謝謝你!對我感到羞恥:/ –