【问题标题】:sparql / dbpedia regarding extracting rdf:type personsparql / dbpedia 关于提取 rdf:type person
【发布时间】:2015-02-22 01:01:39
【问题描述】:

我想提取 rdf:type person 的所有 dpbedia 条目,使用一些我几乎不理解的称为 dbpedia 和 sparql 的东西。

我在以下方面取得了大部分成功(改变偏移量)。有没有更好的办法?我想基本上从英语维基百科中获得所有人物的例子。

PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX : <http://dbpedia.org/resource/>
PREFIX dbpedia2: <http://dbpedia.org/property/>
PREFIX dbpedia: <http://dbpedia.org/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX dbo: <http://dbpedia.org/ontology/>

SELECT ?name ?birth ?description ?person WHERE {
     ?person dbo:birthDate ?birth .
     ?person foaf:name ?name .
     ?person rdfs:comment ?description .
     FILTER (LANG(?description) = 'en') .
}
ORDER BY ?name
OFFSET 100

【问题讨论】:

  • 目前还不清楚问题是什么。是的,如果您打算从 Web 服务中执行此操作,那么使用 ORDER BY 和 OFFSET(以及 LIMIT)是在此处获取结果的正确方法。您也可以只下载数据。您的查询包含比您需要的更多的前缀。您只使用 dbo:、foaf: 和 rdfs:,所以这些是您查询中唯一需要的。
  • 你在这方面有什么进展吗?

标签: rdf sparql semantic-web dbpedia linked-data


【解决方案1】:

您正在以大致正确的方式进行操作,但您应该使用 OFFSET LIMIT,以便您可以对结果进行分页(当然,要使 OFFSET 和 LIMIT 有用,您需要继续使用 ORDER BY)。不过,您使用的前缀比您需要的多。你只使用三个,所以你只需要声明这三个。最后,你可以特别要求Person类型的东西。其中有 1649645 个。

select (count(*) as ?n) where {
 ?person a dbo:Person 
}

1649645

最后,您应该使用 langMatches 而不是 = 检查字符串的语言。您可以交互使用的 Web 服务定义了一些前缀,因此我通常遵循这些前缀。您可能还想只选择英文名称,并且可能按 URI 排序,因为名称并不总是完美的:

select ?person ?name ?birth ?description where {
  ?person a dbo:Person ;
          foaf:name ?name ;
          dbo:birthDate ?birth ;
          dbo:abstract ?description
  filter langMatches(lang(?name),'en')
  filter langMatches(lang(?description),'en')
}
order by ?person
offset 100
limit 50

SPARQL results

当然,如果您需要大量数据,您可能只想下载并存储在本地。见DBpedia 2014 Downloads

【讨论】:

  • 这不再起作用,前缀 dbpedia-owl 不再存在,应该添加:PREFIX dbpedia-owl: dbpedia.org/ontology>
  • @samy 是的,DBpedia 更改了其预定义的前缀。这打破了很多旧的查询。显然向后兼容性并不是那么重要。
  • 我刚刚在另一个问题中看到新前缀是:dbpedia -> dbpedia.org/resource(现在是 dbr)dbpedia-owl -> dbpedia.org/ontology(现在是 dbo)dbpprop -> dbpedia.org/property(现在 dbp) stackoverflow.com/questions/19887558/… 也许您可以更新您的答案,这将有助于该主题的新手不要因为答案示例不起作用而感到困惑
  • @samy 我目前大约有233 answers 关于 DBpedia,而且很难通过和更新它们。不过,我当然会接受任何使用不正确前缀的建议编辑。
猜你喜欢
  • 1970-01-01
  • 2016-11-10
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多