参加我在高级建模中的考试,并对SPARQL问题方法提出疑问。这是去年考试的考题:
问题:编写一个SPARQL查询,列出巴黎附近所有酒店的纬度和经度均在0.006以内 酒店的经度为0.01度,经度为“Hotel Saint-Germain-des-Pres”。
假设您有一个RDF图,它对所有资源标题使用dc:title谓词。某些 资源代表酒店。他们有rdf:type schema:Hotel。
RDF图还使用schema:address谓词来描述每家酒店的地址。一个 地址资源有rdf:type schema:PostalAddress。我们会假装每个邮政地址都有 schema:city谓词,将酒店的城市作为字符串文字。
图表中的每个酒店都有纬度和经度的地理坐标。
到目前为止,我已提出:
SELECT ?hotelName WHERE {
?hotel rdf:type schema:Hotel;
dc:title "Hotel Saint-Germain-des-Pres"^^xsd:string
geo:latitude ?targLat;
geo:longitude ?targLong .
?hotel rdf:type schema:Hotel;
schema:city "Paris"^^xsd:string;
dc:title ?hotelName;
geo:latitude ?lat
geo:longtitude ?long .
FILTER((geo:long <= targLong + 0.006 && geo:long >= targLong - 0.006) && (geo:lat <= targLat + 0.01 && geo:lat >= targLat - 0.01))
}
Pseudo: ?hotelName long & lat within long(0.006)/lat(0.01) of"Hotel Saint-Germain-des-Pres"
但是,当涉及到纬度和纬度时,碰到了一堵墙。经度必须在另一个资源的位置。
如何在SPARQL中显示此限制?
提前感谢您的任何答案。