gpt4 book ai didi

sparql - 使用 Sparql 的 Wikidata 中的模糊实体查询超时

转载 作者:行者123 更新时间:2023-12-05 00:40:59 25 4
gpt4 key购买 nike

我正在尝试使用 Sparql(通过在线端点)在 Wikidata 中进行模糊(即部分或不区分大小写)实体标签查找。不幸的是,这些返回“QueryTimeoutException:查询截止日期已过期。”我假设这是因为查询返回的结果太多,无法在 Wikidata 的 1 分钟超时时间内通过过滤器。

具体查询如下:

def findByFuzzyLabel(self, item_label):
qstring = '''
SELECT ?item WHERE {
?item rdfs:label ?label .
FILTER( lcase(str(?label)) = "%s")
}
LIMIT 20
''' % (item_label)
results = self.query(qstring)

有没有办法在 Wikidata 的实体标签上进行部分字符串和/或不区分大小写的标签查找,或者我是否需要在下载原始数据时离线执行此操作?

我希望将“Lindbergh”等标签与“Charles Lindbergh”相匹配,并在某些情况下处理不区分大小写的问题。任何关于如何做到这一点的建议,无论是通过 Sparql 还是在 Python 中离线。

最佳答案

更具体。 Triplestores 处理事物,而不是字符串。例如,以下查询可以正常工作:

SELECT ?item WHERE {
?item wdt:P735 wd:Q2958359 .
?item rdfs:label ?label .
FILTER (CONTAINS(LCASE(STR(?label)), "lindbergh"))
}

如果无法足够具体,则需要全文搜索功能。

  • 事实上,Blazegraph supports使用魔术 bds:search 谓词进行全文搜索,但此功能在 Wikidata 上未启用。
  • 此外,Blazegraph supports使用魔术 fts:search 谓词进行外部全文搜索。当前实现仅支持 Apache Solr。或许支持 ElasticSearch 相对容易,在 Wikidata 中使用它,但无论如何,这个工具并没有启用。

有一个task以另一种 Wikidata 魔术服务的形式提供全文搜索,但该功能在公共(public)端点上仍然不可用。

作为一种解决方法,可以在 Quarry 上使用 SQL 查询。 . This是我对采石场的查询:

USE wikidatawiki_p; 
DESCRIBE wb_terms;

SELECT CONCAT("Q", term_entity_id) AS wikidata_id, term_language, term_text, term_search_key
FROM wb_terms
WHERE term_type = 'label' AND
term_search_key IN (LOWER('Lindbergh'), LOWER('Charles Lindbergh'));

Quarry 的查询时间限制为 30 分钟

关于sparql - 使用 Sparql 的 Wikidata 中的模糊实体查询超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44999328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com