Merge pull request #1311 from dalf/wikidata-optmization

Wikidata optmizations
This commit is contained in:
Alexandre Flament 2022-06-11 18:36:26 +02:00 committed by GitHub
commit a029ebff01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 1 deletions

View File

@ -65,6 +65,7 @@ WHERE
mwapi:language "%LANGUAGE%". mwapi:language "%LANGUAGE%".
?item wikibase:apiOutputItem mwapi:item. ?item wikibase:apiOutputItem mwapi:item.
} }
hint:Prior hint:runFirst "true".
%WHERE% %WHERE%
@ -93,6 +94,12 @@ WHERE {
} }
""" """
# see the property "dummy value" of https://www.wikidata.org/wiki/Q2013 (Wikidata)
# hard coded here to avoid to an additional SPARQL request when the server starts
DUMMY_ENTITY_URLS = set(
"http://www.wikidata.org/entity/" + wid for wid in ("Q4115189", "Q13406268", "Q15397819", "Q17339402")
)
# https://www.w3.org/TR/sparql11-query/#rSTRING_LITERAL1 # https://www.w3.org/TR/sparql11-query/#rSTRING_LITERAL1
# https://lists.w3.org/Archives/Public/public-rdf-dawg/2011OctDec/0175.html # https://lists.w3.org/Archives/Public/public-rdf-dawg/2011OctDec/0175.html
@ -177,7 +184,7 @@ def response(resp):
for result in jsonresponse.get('results', {}).get('bindings', []): for result in jsonresponse.get('results', {}).get('bindings', []):
attribute_result = {key: value['value'] for key, value in result.items()} attribute_result = {key: value['value'] for key, value in result.items()}
entity_url = attribute_result['item'] entity_url = attribute_result['item']
if entity_url not in seen_entities: if entity_url not in seen_entities and entity_url not in DUMMY_ENTITY_URLS:
seen_entities.add(entity_url) seen_entities.add(entity_url)
results += get_results(attribute_result, attributes, language) results += get_results(attribute_result, attributes, language)
else: else: