如何使用SPARQL从维基百科查询公司的坐标?

时间:2015-10-22 17:03:08

标签: rdf sparql wikipedia dbpedia

以下是我在SPARQL Endpoint执行的查询:

SELECT DISTINCT ?name  ?location  ?products WHERE{
    ?name  rdf:type   <http://dbpedia.org/class/yago/Company108058098>.
    ?name  dbpedia:locationCity ?location.
    ?name  dbpedia:product          ?products.
} LIMIT  20

此查询正在按照我的要求执行,但现在我还想获得每个公司的坐标(纬度/长度)。我应该如何构建查询以获取每个公司的坐标?

1 个答案:

答案 0 :(得分:4)

要查找我们是否拥有此属性,我已使用此请求:

SELECT DISTINCT *
WHERE{
    ?name  rdf:type   <http://dbpedia.org/class/yago/Company108058098>.
    ?name ?p ?o .
} LIMIT 2000

然后我可以向下滚动(在第2页)以检查他们是否有长期属性。我不知道它们的前缀,所以我使用了完整的属性名称(从url解码)

这是请求:

SELECT DISTINCT 
?name ?lat ?long
WHERE{
    ?name  rdf:type   <http://dbpedia.org/class/yago/Company108058098>.
    ?name  <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat.
    ?name  <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?long.
} LIMIT 20

如果你想要那个产品:

SELECT DISTINCT 
?name ?lat ?long
(GROUP_CONCAT(?product; separator = ",") as ?products)
WHERE{
    ?name  rdf:type   <http://dbpedia.org/class/yago/Company108058098>.
    ?name  dbpedia:product      ?product.
    ?name  <http://www.w3.org/2003/01/geo/wgs84_pos#lat> ?lat.
    ?name  <http://www.w3.org/2003/01/geo/wgs84_pos#long> ?long.
} GROUP BY ?name ?lat ?long LIMIT 20