我已经忘记了所有关于DBpedia和SPARQL的新知识,当我在谷歌上搜索它们的时候,我发现所有的例子都太复杂和难以理解。
我希望做的是传入两到三个Wikipedia页面,并返回所有页面都是其成员的Wikipedia类别集。
这看起来在SPARQL中应该是非常简单的,所以我希望通过一个非常简单的例子来开始。
发布于 2012-07-04 05:43:11
这实际上是您之前关于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 .
} 此查询的作用是选择所有三元组模式,这些模式对于主题‘西班牙’和‘葡萄牙’的dcterms:subject关系具有相同的?cat值。换句话说,它精确地检索这两个资源都是其成员的那些类别。
诀窍是用图的形式来思考,或者用三元组的方式将主体和对象联系起来。这是一种思想上的转变,但一旦你掌握了这一点,查询编写就会变得容易得多。
发布于 2012-07-03 19:25:48
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")
}https://stackoverflow.com/questions/11292212
复制相似问题