如何使用特定语言的标签+其他过滤条件查询维基数据?

How to query Wikidata using labels in a specific language + other filtering criteria?

提问人:aethelfirth 提问时间:10/26/2023 更新时间:10/26/2023 访问量:27

问:

我的目标是查询维基数据并获取标签包含特定字符串的在世人员列表。

例如,我用这个代码搜索了西尔维奥·贝卢斯科尼,结果得到了皮尔·西尔维奥·贝卢斯科尼,因为西尔维奥已经死了,而皮尔·西尔维奥还在离开。

SELECT DISTINCT ?item ?itemLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE]". }
  {
    SELECT DISTINCT ?item WHERE {
      ?item p:P31 ?statement0.
      ?statement0 (ps:P31/(wdt:P279*)) wd:Q5.
      MINUS {
        ?item p:P570 ?statement_1.
        ?statement_1 psv:P570 ?statementValue_1.
        ?statementValue_1 wikibase:timeValue ?P570_1.
      }
      ?item p:P735 ?statement2.
      ?statement2 (ps:P735/(wdt:P279*)) wd:Q539504.
      ?item p:P734 ?statement3.
      ?statement3 (ps:P734/(wdt:P279*)) wd:Q24073854.
    }
    LIMIT 10
  }
}

结果很好,但问题是我为人名使用了单独的属性(P735 = 名字,P734 = 姓氏),并将它们中的每一个都设置为特定值(Q539504 = Silvio,Q24073854 = Berlusconi)。我只需要搜索带有项目标签的字符串(例如“西尔维奥·贝卢斯科尼”),而无需将字符串分成多个值(名字 = Silvio,姓氏 = 贝卢斯科尼)。

SPARQL 维基数据

评论

0赞 UninformedUser 10/26/2023
要么你使用a)每个节点(名字和姓氏)中的字符串值,并希望字符串完全匹配,要么b)你通过SPARQL使用维基数据实体搜索,它确实利用了ElasticSearch支持的全文索引,因此效率更高。重新定义语言,这些必须是 a) 附加到字面上,例如 或者对于 b) 您可以在实体搜索中配置语言。rdfs:label"Silvio"@en

答: 暂无答案