如何使用 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
以下是我在 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