gpt4 book ai didi

sparql - 如何获取近似术语的维基数据标签?

转载 作者:行者123 更新时间:2023-12-02 06:53:35 25 4
gpt4 key购买 nike

我正在使用下面提到的查询来获取给定术语的维基数据标签。

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

输出为wd:Q22673982

但是,当我将 Word2vec 拼写为 word2vec(即所有字符都是简单字母)时,我从上述查询中得到“无结果”。

因此,我想知道是否有办法获取该术语在 wikidata 中的情况并获取其标签?

即如果我输入的所有字符都是小写,如何识别等效的维基数据术语并返回其相应的标签?

最佳答案

AKSW 的评论是比已接受的答案更好的解决方案,但由于 AKSW 没有发布正确答案的习惯,所以我会为他做这件事......

我们不知道您的用例,但如果您只是尝试在 Wikidata 实体中进行简单搜索,其他服务(例如 MediaWiki API 实体搜索)可能会更有效。您甚至可以在 SPARQL 中使用它,例如:

SELECT * {
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam mwapi:search "word2vec".
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
}
ORDER BY ?num
LIMIT 20

Run this query live

此查询发生了什么?

  1. wikibase:mwapiSERVICE 调用不是标准 SPARQL,而是调用 Mediawiki API(特别是其实体搜索)的 SPARQL 扩展。更多关于in the manual 。重要的是搜索词作为 mwapi:search 的值,以及将找到的项目绑定(bind)到变量 ?item 的两行,以及它在搜索结果中的排名?num.
  2. ?item (wdt:P279|wdt:P31) ?type 将每个项目的类型绑定(bind)到变量 ?type。它考虑了属性的“子类”和“实例”。
  3. ORDER BY ?num 确保结果按排名排序,即最佳匹配排在第一位,第二最佳匹配排在第二位,依此类推。
  4. LIMIT 20 仅保留前 20 个结果,以防超过 20 个结果。
  5. SELECT * 表示返回查询中绑定(bind)的所有变量,因此在本例中它将是 ?item?type?num.

将其扩展到多个搜索词

根据评论,这可以扩展到运行多个搜索词:

SELECT * {
VALUES ?searchTerm { "word2vec" "fasttext" "natural language processing" "deep learning" "support vector machine" }
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch".
bd:serviceParam wikibase:endpoint "www.wikidata.org".
bd:serviceParam wikibase:limit 10 .
bd:serviceParam mwapi:search ?searchTerm.
bd:serviceParam mwapi:language "en".
?item wikibase:apiOutputItem mwapi:item.
?num wikibase:apiOrdinal true.
}
?item (wdt:P279|wdt:P31) ?type
}
ORDER BY ?searchTerm ?num

Run this query live

  • 搜索词在 VALUES 子句中提供,并绑定(bind)到 ?searchTerm 变量
  • 然后在服务调用中使用该变量
  • LIMIT 20 现在不再起作用,因为它会限制结果总数,而不仅仅是一个术语,因此我将其删除了
  • 相反,将 wikibase:limit 添加到服务参数
  • 更改了排序方式,首先按搜索字词排序,然后按排名排序

关于sparql - 如何获取近似术语的维基数据标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55895780/

25 4 0