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

How to query coordinates of companies from wikipedia using SPARQL?

以下是我在 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

此查询正在按照我的要求执行,但现在我还想获取这些公司中每一个的坐标 (latitude/longtiude)。我应该如何构造查询以获取每个公司的坐标?

要找到我们是否有这个 属性 我已经使用了这个请求:

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