我正在使用这个dbpedia 查询从以下位置获取博物馆dbpedia
:
SELECT DISTINCT ?Museum
(SAMPLE(?name) as ?name)
(SAMPLE(?abstract) as ?abstract)
(SAMPLE(?thumbnail) as ?thumbnail)
(MAX(?latitude) as ?latitude)
(MAX(?longitude) as ?longitude)
(SAMPLE(?photoCollection) as ?photoCollection)
(SAMPLE(?website) as ?website)
(SAMPLE(?homepage) as ?homepage)
(SAMPLE(?wikilink) as ?wikilink)
WHERE {
?Museum a dbpedia-owl:Museum ;
dbpprop:name ?name ;
dbpedia-owl:abstract ?abstract ;
dbpedia-owl:thumbnail ?thumbnail ;
geo:lat ?latitude ;
geo:long ?longitude ;
dbpprop:hasPhotoCollection ?photoCollection ;
dbpprop:website ?website ;
foaf:homepage ?homepage ;
foaf:isPrimaryTopicOf ?wikilink .
FILTER(langMatches(lang(?abstract),"EN"))
FILTER (langMatches(lang(?name),"EN"))
}
GROUP BY ?Museum
LIMIT 20
我的目标是包含Continent
每条返回的记录。可选地,我也喜欢拥有Country
,但这不是必需的。
每个返回的Museum
对象都有 dbpedia-owl:location 条目,但它们不一定有国家。另外,它有多个值,所以它们没有用。
有没有办法从纬度(geo:lat
)和经度(geo:long
)获取大陆值?
还是我需要另一个查询(或子查询)来获取这些数据?
更新:
我最近看到了几个选项。首先 - 如果满足国家/地区要求,大陆很容易实现 - 我可以将映射嵌入到我的客户端代码中。
其次 - 有很多(非 dbpedia,非 sparql)方法可以实现我想要的,比如this,this和this。我提到的最后两个是从本地数据库查找中获取国家/地区价值的方法。
但是查询 web 服务或拥有 3+ MB 的数据库 - 从坐标中获取大陆/国家/地区值都有点矫枉过正,并且考虑到 dbpedia 对象的巨大性质,我发现很容易相信它存在于某个地方。这就是我正在寻找的解决方案。