【问题标题】:cannot search wikipedia page with dbpedia using sparql无法使用 sparql 使用 dbpedia 搜索维基百科页面
【发布时间】:2019-08-18 05:58:35
【问题描述】:

我正在尝试在 Wikipedia 页面上的 DBpedia 中进行 SPARQL 查询,但诸如 Random_forest 之类的查询在 Wikipedia 中是可用的页面,但在搜索查询期间未正确显示。

    SELECT ?d WHERE
{{
?a rdfs:label "Random_forest"@en.
?a <http://dbpedia.org/ontology/wikiPageRedirects> ?b.
?b rdfs:label ?c FILTER (lang(?c)="en").
?d <http://purl.org/dc/terms/subject> ?e.
?e rdfs:label ?c.
   }
      UNION
  {
?e <http://purl.org/dc/terms/subject> ?d.
?e rdfs:label "Random_forest"@en.
   }
}

输出是:

{ "head": { "link": [], "vars": ["d"] },
  "results": { "distinct": false, "ordered": true, "bindings": [ ] } }

【问题讨论】:

  • 您查询的目的是什么?我没有得到第一个 UNION 部分。随机森林资源重定向到属于某个类别的东西是您当前正在做的事情。
  • 顺便说一下,它通常不起作用,因为标签是"Random forest"@en",即没有下划线_ char - 标签应该是人类可读的形式,你只需要这个URI - 如果您查看 DBpedia 页面,您会很容易看到这一点。 select * {?a rdfs:label "Random forest"@en. }。并且资源 http://dbpedia.org/resource/Random_forest 重定向到任何内容,因此您的第一个 UNION 部分的结果无论如何都是空的,只是对于第二部分,它将返回 3 个 dct:subjects 相关类别

标签: sparql dbpedia virtuoso


【解决方案1】:

您可以尝试以下方法,其中 OPTIONALS 迎合了在解决方案生产方面标签可能并不总是以语言标记形式存在的事实:

SELECT distinct ?d 
WHERE
{
    {
        OPTIONAL {?a rdfs:label "Random_forest"@en.}
        ?a <http://dbpedia.org/ontology/wikiPageRedirects> ?b.
        ?b rdfs:label ?c FILTER (lang(?c)="en").
        ?d <http://purl.org/dc/terms/subject> ?e.
        OPTIONAL {?e rdfs:label ?c.}
   }
      UNION
  {
        ?e <http://purl.org/dc/terms/subject> ?d.
        OPTIONAL {?e rdfs:label "Random_forest"@en.}
   }
}

Live Results Page(DBpedia 快照版)。

Live Results Page(DBpedia 直播版)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-12
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-13
    • 2013-12-26
    • 1970-01-01
    相关资源
    最近更新 更多