以下是我在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
此查询正在按照我的要求执行,但现在我还想获得每个公司的坐标(纬度/长度)。我应该如何构建查询以获取每个公司的坐标?
答案 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