我正在尝试使用 Sparql (通过在线端点)在维基数据中进行模糊(即部分或不区分大小写)实体标签查找。不幸的是,这些返回一个“ QueryTimeoutException:查询截止日期已过期。 ”我假设这是因为查询返回太多结果,无法在维基数据的 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)
Run Code Online (Sandbox Code Playgroud)
有没有办法在维基数据的实体标签上进行部分字符串和/或不区分大小写的标签查找,或者我需要在下载原始数据时离线执行此操作?
我希望将“Lindbergh”等标签与“Charles Lindbergh”相匹配,并在某些情况下处理不区分大小写的问题。任何关于如何做到这一点的建议,无论是通过 Sparql 还是在 Python 中离线,都值得赞赏。
您现在可以直接从 SPARQL 使用 MediaWiki API,使用此处记录的 Wikidata 魔法服务。
例子 :
SELECT * WHERE {
SERVICE wikibase:mwapi {
bd:serviceParam wikibase:api "EntitySearch" .
bd:serviceParam wikibase:endpoint "www.wikidata.org" .
bd:serviceParam mwapi:search "cheese" .
bd:serviceParam mwapi:language "en" .
?item wikibase:apiOutputItem mwapi:item .
?num wikibase:apiOrdinal true .
}
?item (wdt:P279|wdt:P31) ?type
} ORDER BY ASC(?num) LIMIT 20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2065 次 |
| 最近记录: |