我忘了所有关于DBpedia和SPARQL
的新篇章,并且发现当我为他们谷歌时,所有的例子都太复杂且难以理解。
我希望做的是传入两个或三个维基百科页面,并获取所有页面所属的维基百科类别集。
这似乎在SPARQL
中应该非常简单,所以我很感激一个非常小的例子让我开始。
答案 0 :(得分:4)
这实际上是您之前关于getting all pages belonging to two categories的问题的变体。唯一的区别是,这次,您需要两个/三个主题而不是对象,因此您不能使用以逗号分隔的值枚举,而是必须写出来你要匹配的三重模式。
例如,要获取西班牙和葡萄牙所属的所有类别,您只需执行以下查询:
SELECT ?cat
WHERE {
<http://dbpedia.org/resource/Spain> dcterms:subject ?cat .
<http://dbpedia.org/resource/Portugal> dcterms:subject ?cat .
}
此查询的作用是为主题&#39;西班牙&#39;选择具有相同?cat
值dcterms:subject
的所有三重模式。和葡萄牙&#39;。换句话说,它精确地检索两个资源都是其成员的那些类别。
诀窍是用图表来思考,或者用连接的主题和对象进行三元组。这有点心理转变但是一旦你掌握了这一点,查询编写就变得容易多了。
答案 1 :(得分:1)
维基百科和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")
}