2

我已经忘记了关于 DBpedia 的所有新知识,SPARQL并且当我用 Google 搜索这些示例时,我发现所有示例都太复杂且难以理解。

我希望做的是传入两个或三个维基百科页面,并取回所有页面都属于的维基百科类别集。

这似乎应该非常简单,SPARQL所以我希望有一个非常简单的例子来帮助我开始。

4

2 回答 2

4

这实际上是您之前关于获取属于两个类别的所有页面的问题的变体。唯一的区别是这一次,您需要两个/三个subject而不是objects,因此您不能使用逗号分隔的值枚举,而是必须写出您想要匹配的三元组模式。

例如,要获取西班牙和葡萄牙都属于的所有类别,您可以简单地执行如下查询:

SELECT ?cat   
WHERE { 
 <http://dbpedia.org/resource/Spain> dcterms:subject ?cat .
 <http://dbpedia.org/resource/Portugal> dcterms:subject ?cat .
} 

这个查询的作用是为主题“西班牙”和“葡萄牙”选择所有具有相同值的三元组?cat模式dcterms:subject。换句话说,它准确地检索两种资源都属于的那些类别。

诀窍是用图形来思考,或者用连接的主题和对象来思考三元组。这是一种精神上的转变,但一旦你有了它,查询编写就会变得容易得多。

于 2012-07-03T21:43:10.830 回答
1

wikipedia 和 dbpedia URI 之间的映射如下:

为了

http://en.wikipedia.org/wiki/Spain

DBPedia uri 是:

http://dbpedia.org/resource/Spain

所以要找出上面的类别

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/Spain> dcterms:subject ?categoryUri.
  ?categoryUri rdfs:label ?categoryName.
  FILTER (lang(?categoryName) = "en")
}
于 2012-07-03T11:25:47.683 回答