首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBpedia的Sparql查询

DBpedia的Sparql查询
EN

Stack Overflow用户
提问于 2014-09-13 00:09:16
回答 1查看 267关注 0票数 0

我们可以使用SPARQL查询从DBpedia获得美国的位置列表吗?我试过以下的查询,但它(从设计上)只给出英文摘要。我要美国地方的名字。我怎样才能做到这一点?

代码语言:javascript
复制
SELECT ?abstract
FROM NAMED <http://dbpedia.org>
WHERE { <http://dbpedia.org/resource/Lists_of_populated_places_in_the_United_States> <http://dbpedia.org/ontology/abstract> ?abstract.
FILTER langMatches( lang(?abstract), 'en') }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-13 03:37:05

通常情况下,迭代地编写这些查询是最简单的,您可以一边浏览数据一边浏览这些查询。例如,在本例中,您可以从以下几个方面开始:

代码语言:javascript
复制
select ?place where {
  ?place a dbpedia-owl:PopulatedPlace
}
limit 100

SPARQL结果

这不仅是在美国的地方,但你可以浏览结果,直到你找到一个是。然后你可以检查它,看看你如何识别这样的地方。在本例中,您可能会找到西弗吉尼亚dbpedia-owl:country.的,并注意到它是属性dbpedia-owl:country.的值因此,我们可以细化查询:

代码语言:javascript
复制
select ?place where {
  ?place a dbpedia-owl:PopulatedPlace ;
         dbpedia-owl:country dbpedia:United_States 
}
limit 100

SPARQL结果

这看起来好多了,但你说过你想要这些地方的名字,而不是识别它们的真正的虹膜。根据你的过滤器,看起来你只想要英文名字。然后,我们进一步完善:

代码语言:javascript
复制
select ?label where {
  ?place a dbpedia-owl:PopulatedPlace ;
         dbpedia-owl:country dbpedia:United_States ;
         rdfs:label ?label
  filter langMatches( lang(?label), 'en' )
}
limit 100

SPARQL结果

这些名字都是带有标签的文字。如果只想要字符串部分,可以在变量投影中这样做:

代码语言:javascript
复制
select (str(?label) as ?strLabel) where {
  ?place a dbpedia-owl:PopulatedPlace ;
         dbpedia-owl:country dbpedia:United_States ;
         rdfs:label ?label
  filter langMatches( lang(?label), 'en' )
}
limit 100

SPARQL结果

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25818583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档