【问题标题】:Using DBpedia to find which Wikipedia categories are common to several given pages?使用 DBpedia 查找几个给定页面共有的 Wikipedia 类别?
【发布时间】:2012-07-02 10:53:19
【问题描述】:

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

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

这似乎在SPARQL 中应该非常简单,所以我希望有一个非常简单的示例来帮助我入门。

【问题讨论】:

    标签: sparql wikipedia dbpedia


    【解决方案1】:

    这实际上是您之前关于getting all pages belonging to two categories 的问题的变体。唯一的区别是这一次,您需要两个/三个 subjects 而不是 objects,因此您不能使用逗号分隔的值枚举,而是必须写出您要匹配的三元组模式。

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

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

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

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

    【讨论】:

    • 啊哈,这两个看起来都比威廉的回答简单,而且你的解释也很清楚,所以你得到了 cookie - 谢谢 (-:
    【解决方案2】:

    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")
    }
    

    【讨论】:

    • 这很有帮助,但我仍然不知道如何从这个到“所有页面中都有哪些类别:页面 ABC、页面 DEF 和页面 XYZ。也许我的问题是”不太清楚?
    • 实际上,似乎只是将&lt;http://dbpedia.org/resource/Spain&gt; dcterms:subject ?categoryUri. 行与其他东西代替Spain 复制了我想要的,尽管我并不真正理解语法以及它为什么起作用(-:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2016-11-15
    • 2012-11-02
    • 2019-10-23
    • 2019-05-14
    相关资源
    最近更新 更多