DBpedia使用sparql获取页面类别

时间:2016-09-10 18:26:39

标签: r sparql dbpedia

我使用DBpedia在R中使用SPARQL获取页面类别。但是,它有一些问题。我正在使用的源代码:

PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>  
SELECT ?categoryUri ?categoryName WHERE {
    <http://dbpedia.org/resource/xxx> dcterms:subject ?categoryUri.
         ## xxx are random words (e.g. Agree, Film, Work, Plan...)
    ?categoryUri rdfs:label ?categoryName.
    FILTER (lang(?categoryName) = "en")
}

问题是:

  1. 如果需要重定向的话,则无法检索类别(例如,同意 - >协议)

  2. 无法从上述源代码中使用消歧页面,因为在单词类别中有很多子页面(例如工作)

  3. 那么,我该如何解决上述问题呢?如果有人能提供你的帮助,我真的很感激!

1 个答案:

答案 0 :(得分:1)

SPARQL只做你写的东西,所以没有任何魔力。如果某个资源:s可能通过属性:p连接到其他资源,请添加三元模式:s :p ?o . - 有时您甚至可以考虑在传递解析时使用属性路径关闭:p,即:s :p* ?o .

重定向已解决:

PREFIX  dbo:  <http://dbpedia.org/ontology/>
PREFIX  dcterms: <http://purl.org/dc/terms/>

SELECT * WHERE
  { <http://dbpedia.org/resource/Agree> (dbo:wikiPageRedirects)* ?page
    OPTIONAL
      { ?page dcterms:subject ?categoryUri}
  }

请注意OPTIONAL子句,这是必需的,因为并非DBpedia中的所有资源都属于某个类别。

包括消歧页面:

PREFIX  dbo:  <http://dbpedia.org/ontology/>
PREFIX  dcterms: <http://purl.org/dc/terms/>

SELECT * WHERE
  { <http://dbpedia.org/resource/Agree> (dbo:wikiPageRedirects)*/(dbo:wikiPageDisambiguates)* ?page
    OPTIONAL
      { ?page dcterms:subject ?categoryUri}
  }