【问题标题】:How to query Wikidata using SPARQL using entity names and also check alternative labels?如何使用实体名称使用 SPARQL 查询 Wikidata 并检查替代标签?
【发布时间】:2021-03-01 05:23:48
【问题描述】:

我正在尝试使用实体名称查询 Wikidata。我的目标是获取实体的 Wikidata ID。现在我有类似的东西:

SELECT ?item
WHERE {
    ?item rdfs:label "name_of_thing"@en
}

虽然这通常可以完成工作,但我还想检查标签是否包含在 Wikidata 上的替代名称中。

例如,如果我将"name_of_thing" 替换为"Philippines AirAsia",那么我不会得到任何结果,但原因是因为"AirAsia Philippines" 是条目的正确名称,而"Philippines AirAsia" 包含在“也称为 Wikidata 页面中的“列”。

我想查询页面,如果第一次获取失败,则检查名称是否包含在“也称为”列中。我该怎么做呢?谢谢。

【问题讨论】:

  • 没有优先级,它只是SELECT ?item WHERE { ?item rdfs:label|skos:altLabel "Philippines AirAsia"@en } - 有优先级,事情变得越来越复杂,可能类似于SELECT (COALESCE(?item1, ?item2) as ?item) WHERE { {?item1 rdfs:label "Philippines AirAsia"@en } UNION {?item2 skos:altLabel "Philippines AirAsia"@en} } - 我没有检查它是否真的适用于多个匹配项。
  • 也许something like this 就足够了:SELECT ?item ?prefLabel ?altLabel WHERE { values ?prefLabel {"AirAsia Philippines"@en} ?item rdfs:label ?prefLabel ; skos:altLabel ?altLabel . }

标签: sparql wikidata


【解决方案1】:

管道运算符为我工作:

Query

SELECT ?item ?prefLabel WHERE {
        VALUES ?prefLabel { "AirAsia Philippines"@en }
        ?item rdfs:label|skos:altLabel ?prefLabel 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多