09 novembre 2020

WikiData e Label

WikiData è il database RDF che ormai da qualche anno agisce come deposito per i dati "universali" di Wikipedia. 

Ad esempio, è ragionevole che ci sia una unica fonte interna che fornisca il dato sulla popolazione di Parigi, invece di affidarsi alle capacità dei volenterosi volontari che dovrebbero riportarla come numero in cento traduzioni diverse dell'articolo sulla capitale della Francia.

Recentemente mi sono avvicinato a questo mondo, e ho provato a creare qualche domanda o 'query' come si dice in gergo. Per questo c'è uno spazio apposito, chiamato Wikidata Query Service.

Sono rimasto affascinato dalle potenzialità di questo sistema e in generale dal paradigma RDF, ma mi hanno sorpreso subito alcune stranezze, che mi segno qui per motivi di cronaca.

Se voglio sapere quante città si chiamano 'Pavia' nel mondo (nel mondo Wikidata, inteso), devo cercare l'etichetta (o 'label') 'Pavia'. Questo non è intuitivo come si potrebbe pensare.

Query trovata su StackOverflow, in risposta alla domanda di un utente perplesso:

SELECT distinct ?item ?itemLabel ?itemDescription
WHERE{  
  ?item ?label "Pavia"@en.  
  ?article schema:about ?item .
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }    
}

 Ma cos'è 

SERVICE wikibase:label 

? Mistero. Nel tutorial di SPARQL per WikiData, ci viene spiegato che si tratta di una 'magia'.

Senza questa magia, bisogna scrivere:

SELECT DISTINCT ?item
WHERE
{
  ?item  wdt:P31/wdt:P279* wd:Q486972 .
  ?item rdfs:label "Pavia"@en .
}

... dove

wdt:P31/wdt:P279* wd:Q486972

significa: un "insediamento umano" o sua sottoclasse più specializzata.

Non sono l'unico che si chiede in cosa consista la 'magia' dei label, come potete leggere in quest'altra domanda su StackOverflow

A quanto pare si tratta di una questione di ottimizzazioni e di efficienza.

Se troverò risposte, sarete i primi a saperlo ...



Nessun commento:

Posta un commento