Sparql恢复DBpedia资源的类型

时间:2014-03-19 14:05:26

标签: sparql dbpedia

我需要一个Sparql查询来恢复特定DBpedia资源的类型。例如:

pt.DBpedia资源:http:// pt .dbpedia.org / resource / Argentina

预期类型:国家(可在http://pt.dbpedia.org/page/Argentina看到)

使用 pt .DBpedia Sparql Virtuoso界面(http://pt.dbpedia.org/sparql)我有以下查询:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>

select ?l ?t where {
 ?l rdfs:label "Argentina"@pt .
 ?l rdf:type ?t .
}

但它没有恢复任何东西,只需打印变量名称。 The virtuoso answer

实际上我也不需要恢复标签(?l)。

任何人都可以修复它,或者帮我定义正确的查询?

1 个答案:

答案 0 :(得分:3)

图表名称中的

http

我不确定您是如何生成查询字符串的,但是当我将查询复制并粘贴到端点并运行它时,我会得到结果,结果网址如下所示:

http://pt.dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fpt.dbpedia.org&sho...

但是,您问题中的链接是:

http://pt.dbpedia.org/sparql?default-graph-uri=pt.dbpedia.org%2F&should-sponge...

如果仔细查看,您会发现default-graph-uri参数不同:

yours: pt.dbpedia.org%2F
mine:  http%3A%2F%2Fpt.dbpedia.org

我不确定你是如何得到一个像你那样的网址,但它不对; default-graph-uri needs to be http://pt.dbpedia.org,而不是pt.dbpedia.org/

查询正常

当我运行您已链接到的终端提供的查询时,我会得到我期望的结果。值得注意的是,此处的标签是文字"Argentina"@pt,您所谓的?l是个人,而不是标签。个人?l 标签为"Argentina"@pt

我们可以使用?i代替?l(建议i ndividual)来简化您的查询:

select ?i ?type where {
  ?i rdfs:label "Argentina"@pt ;
     a ?type .
}

当我在Portuguese endpoint处运行时,我得到了以下结果:

query results

如果您不希望结果中有个人,则不必select

select ?type where {
  ?i rdfs:label "Argentina"@pt ;
     a ?type .
}

甚至:

select ?type where {
  [ rdfs:label "Argentina"@pt ; a ?type ]
}

如果您知道资源的标识符,并且不需要使用其标签来检索它,您甚至可以这样做:

select ?type where {
  dbpedia-pt:Argentina a ?type
}
type
==========================================
http://www.w3.org/2002/07/owl#Thing
http://www.opengis.net/gml/_Feature
http://dbpedia.org/ontology/Place
http://dbpedia.org/ontology/PopulatedPlace
http://dbpedia.org/ontology/Country
http://schema.org/Place
http://schema.org/Country