Spesso capita di farsi domande insolite e divertenti a cui non è semplice fornire una risposta semplicemente cercando su un motore di ricerca, ma interrogare Wikidata, database di conoscenza libero e collaborativo, con il linguaggio SPARQL può essere la soluzione.
Con lo scopo di festeggiare l’ottavo compleanno di Wikidata, vi proponiamo alcuni esempi pensati da Alessio Melandri, CTO di Synapta e socio WMI, e Davide Allavena, data scientist di Synapta e socio WMI, per l’intervento all’ItWikiCon 2020 di Wikimedia Italia il cui obiettivo era rispondere a domande particolari, conoscere il potenziale della piattaforma e capire divertendosi come funziona il linguaggio SPARQL.
Il 24-25 Ottobre si è tenuta la conferenza italiana dell’associazione Wikimedia Italia che nella prima giornata ha dedicato vari interventi per raccontare Wikidata, le sue funzionalità, contenuti culturali e potenzialità.
1001 domande che non vi siete mai fatti, ma di cui vi daremo risposta con SPARQL era il titolo dell’intervento, ma cominciamo da una query semplice.
Ipotizzando una conversazione con un computer, il dialogo potrebbe essere il seguente:
“Quali sono i nomi di persona più frequenti per città?”
“Dimmi dove sei nato e ti dirò come potresti chiamarti”.
Infatti, per ottenere una risposta è necessario trasformare la nostra domanda in un linguaggio specifico comprensibile dalle macchine (SPARQL) e strutturarla come segue:
#defaultView:BubbleChart SELECT ?firstname (COUNT(*) AS ?count) WHERE { ?q wdt:P19 wd:Q2044 . ?q wdt:P735 ?nameid. OPTIONAL { ?nameid rdfs:label ?firstname FILTER((LANG(?firstname)) = "en") } } GROUP BY ?firstname ORDER BY DESC(?count) ?firstname LIMIT 50
La query seleziona il nome proprio, individuato tramite la property “given name”, in base alla città impostata tramite la property “luogo di nascita”.
I risultati sono raggruppati attraverso la funzione “group by”.
La query restituisce tutti i nomi di persona nati nella città indicata (wd:Q2044 che corrisponde a Firenze) in un bubble chart che rappresenta le occorrenze dei nomi attraverso la dimensione variabile di diversi cerchi colorati.
E se fossimo curiosi di conoscere i discepoli di Leonardo da Vinci e dove sono nati?
Possiamo scoprirlo grazie alla proprietà “student of”, impostando come oggetto l’identificativo di Leonardo da Vinci e questa struttura va ripetuta per scoprire tutti gli anelli successivi della catena: gli studenti degli studenti. Poi, per tutti gli studenti va richiesto il luogo di nascita, il paese e va impostato un raggruppamento per luogo.
Per ricreare la catena delle relazioni va impostata la query con la seguente struttura:
SELECT ?paese ?paeseLabel (count(*) as ?n) WHERE { ?student1 wdt:P1066* wd:Q762 . ?student2 wdt:P1066 ?student1 . ?student2 wdt:P19 ?luogoNascita . ?luogoNascita wdt:P17 ?paese . SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } } GROUP BY ?paese ?paeseLabel
Visti i buoni risultati ottenuti, vogliamo esplorare anche la parte del database dedicata ai lessemi interrogando Wikidata per scoprire in quali lingue sa dire “acqua”:
SELECT ?l ?sense ?lemma ?languageLabel WHERE { ?l a ontolex:LexicalEntry ; # get from the special LexicalEntry ontolex:sense ?sense ; # the sense dct:language ?language ; # the language wikibase:lemma ?lemma. # and the lemma ?sense wdt:P5137 wd:Q29053744 . # change Q29053744 to anything you want SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } } ORDER BY (LCASE(?languageLabel))
Conosce 714 lessemi che significano “acqua”.
Si tratta di una query più complessa, ma ordinando i lemmi in ordine alfabetico è interessante che è possibile vedere quali lingue mostrano una similarità linguistica.
Soddisfatti delle risposte ottenute non ci resta che brindare, ma la domanda sorge spontanea: “cosa vogliamo bere?”.
Wikidata è preparatissima sui cocktails, possiamo impostare una query che filtra i risultati in base alla presenza di ingredienti preferiti o possiamo chiedere un elenco complessivo con la ricetta per preparare il nostro bicchiere!
Ecco la tabella con alcuni risultati:
Vi abbiamo incuriosito? Wikidata è ricca di dati, ma ha ancora bisogno di crescere: la base di conoscenza libera oggi conta 90 408 994 elementi e tutti possono contribuire alla sua crescita aggiungendone di nuovi, modificando e inserendo nuove informazioni poi da provare a interrogare.
Se siete curiosi di scoprire di più sull’evento, ecco alcuni video sugli interventi della conferenza: