Hi David Causse, Curious why https://www.wikidata.org/wiki/Q24033349 is not being returned in the below SPARQL?
https://w.wiki/YwL SELECT ?item ?itemLabel WHERE { ?item wdt:P31 ?instance . FILTER(?instance != wd:Q13442814). SERVICE wikibase:mwapi { bd:serviceParam wikibase:endpoint "www.wikidata.org"; wikibase:api "EntitySearch"; mwapi:search "front matter"; mwapi:language "en". ?item wikibase:apiOutputItem mwapi:item. } SERVICE wikibase:label {bd:serviceParam wikibase:language "en".} } LIMIT 100 Thad https://www.linkedin.com/in/thadguidry/ On Fri, Jul 17, 2020 at 12:37 PM Thad Guidry <[email protected]> wrote: > Thank you so much David! > > This was such a great example that I had to add this to our SPARQL > Examples page in a new section "Mediawiki API": > *https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/queries/examples#Mediawiki_API > <https://www.wikidata.org/wiki/Wikidata:SPARQL_query_service/queries/examples#Mediawiki_API>* > > The community thanks you sincerely! > > Thad > https://www.linkedin.com/in/thadguidry/ > > > On Mon, Jul 13, 2020 at 2:26 AM David Causse <[email protected]> > wrote: > >> On Sat, Jul 11, 2020 at 7:12 PM Thad Guidry <[email protected]> wrote: >> >>> This query times out: >>> >>> SELECT ?item ?label >>> WHERE >>> { >>> ?item wdt:P31 ?instance ; >>> rdfs:label ?label ; >>> rdfs:label ?enLabel . >>> FILTER(CONTAINS(lcase(?label), "Soriano")). >>> FILTER(?instance != wd:Q5). >>> SERVICE wikibase:label {bd:serviceParam wikibase:language "en".} >>> } >>> LIMIT 100 >>> >>> I have this feeling that it's not actually using an index or even asking >>> the right question and so is slow and times out? >>> >>> >> Indeed, none of the criteria in your query allows the triple store to >> determine an index to follow to extract the results in a timely manner. >> The sole non negative criterion would be FILTER(CONTAINS(lcase(?label), >> "Soriano")) but being in a FILTER and moreover a function it cannot be used >> to determine an index to work on. >> The only way to speed-up your query would be to introduce a discriminant >> "matching" criterion. >> >> However the MediaWiki wbsearchentities API does seem to use an index and >>> is performant for label searching: >>> >>> https://www.wikidata.org/w/api.php?action=wbsearchentities&search=soriano&language=en >>> >>> >> wbsearchentitiies is backed by elasticsearch which is optimized for such >> lookups. >> >> How can I get my SPARQL query to be more performant or asking the right >>> question? >>> >>> >> Unfortunate I don't see an obvious way to adapt your sparql query and >> keep exactly the same semantic but to illustrate the problem: >> >> SELECT ?item ?label WHERE { >> ?item wdt:P31 ?instance ; >> rdfs:label "Soriano"@en . >> FILTER(?instance != wd:Q5). >> } >> LIMIT 100 >> >> will return results in a timely manner, only because we helped the graph >> traversal with an initial path on ?item rdfs:label "Soriano"@en. >> >> But by combining the query service and the wikidata API[0] baked by >> elasticsearch I think you can extract what you want: >> >> SELECT ?item ?itemLabel WHERE { >> ?item wdt:P31 ?instance . >> FILTER(?instance != wd:Q5). >> SERVICE wikibase:mwapi { >> bd:serviceParam wikibase:endpoint "www.wikidata.org"; >> wikibase:api "EntitySearch"; >> mwapi:search "soriano"; >> mwapi:language "en". >> ?item wikibase:apiOutputItem mwapi:item. >> } >> SERVICE wikibase:label {bd:serviceParam wikibase:language "en".} >> } >> LIMIT 100 >> >> This query will first contact EntitySearch (an alias to wbsearchentities) >> which will pass the items it found to the triple store which in turn can >> now query the graph in a timely manner. Obviously this solution only works >> if the number of items returned by wbsearchentities remains reasonable. >> >> 0: >> https://www.mediawiki.org/wiki/Wikidata_Query_Service/User_Manual/MWAPI >> -- >> David C. >> _______________________________________________ >> Wikidata mailing list >> [email protected] >> https://lists.wikimedia.org/mailman/listinfo/wikidata >> >
_______________________________________________ Wikidata mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/wikidata
