Discussioni modulo:Wikidata


Ultimo commento: 4 anni fa, lasciato da Horcrux in merito all'argomento Ricavare un interlink in automatico

Proposta aggiunta funzione

Sarebbe interessante, per un futuro utilizzo di questo modulo nei template sinottici, la possibilità di poter richiedere solo l'n-esimo valore di ogni proprietà. Per esempio, il template {{Software}} richiede di inserire il linguaggio con cui è stato scritto il software in un parametro, se il software è stato scritto in due linugaggi bisogna usare due parametri e scrivere solo un linguaggio per parametro. Io propongo di fare una cosa tipo {{#Wikidata|nome_funzione|property=999|5}}, e mi restituisce il quinto valore della property 999.--dega180 (msg) 20:49, 26 giu 2013 (CEST)Rispondi

Navigando tra i moduli ho visto questa discussione. Posso aggiungere facilmente la funzionalità. Il termine corretto è "statement", cioè ogni proprietà può avere tanti statement (infatti attualmente la funzione l'hanno chiamata "formatStatement"). Non c'è neanche bisogno di creare una nuova funzione, posso aggiungere alla funzione "formatStatements" un nuovo parametro con nome che chiamerei "n", per simmetria con la funzione N che ritorna proprio il numero di statement. Quindi la chiamata sarebbe: {{#invoke:Wikidata|formatStatements|property=p47|n=3}} per ritornare il valore del terzo statement. Ovviamente se n > del numero di statement presenti ritornerà una stringa vuota o un errore, a scelta. --Rotpunkt (msg) 14:08, 25 ott 2013 (CEST)Rispondi
Personalmente preferisco la stringa vuota.--dega180 (msg) 16:17, 25 ott 2013 (CEST)Rispondi
  Fatto e ho aggiornato la documentazione. --Rotpunkt (msg) 16:59, 25 ott 2013 (CEST)Rispondi

Applicazioni pratiche

Segnalo che in Discussioni_template:Divisione_amministrativa#Integrazione_wikidata si parla dell'uso su larga scala di Wikidata con questo modulo, ma si è visto che ancora ha dei seri limiti --Bultro (m) 12:12, 11 ago 2013 (CEST)Rispondi

Funzionalità "pattern"

Sarebbe ora carino introdurre anche il parametro "pattern" che si trova sul modulo test, questo parametro mi permette di decidere il modo in cui dovrà essere formattato l'elemento di wikidata.--dega180 (msg) 12:41, 26 ott 2013 (CEST)Rispondi

Fatto, anche qui ho aggiornato la documentazione, con un esempio un più pratico di quello su test2. --Rotpunkt (msg) 13:43, 26 ott 2013 (CEST)Rispondi

Rank

Ciao dega180, c'è qualcosa che non va con il codice aggiunto. Ho capito cosa volevi fare però anche senza averlo provato capisco che ci sono dei problemi. Nella funzione con cui volevi integrarti con options.n, statement esce dal ciclo while valorizzato anche quando non ha trovato lo statement giusto. Posso farti vedere un modo molto più pulito di farlo e senza questo bug? --Rotpunkt (msg) 17:19, 25 gen 2014 (CET)Rispondi

Io l'avevo testato e sembrava funzionare è ovvio che se hai trovato un bug lo puoi correggere.--dega180 (msg) 17:44, 25 gen 2014 (CET)Rispondi
Scusami proprio dega, mi ero fatto ingannare dall'indentazione. Funziona, anche se continuo a trovarlo over-complicated. Mi sembra che la ricerca tra che fai tra le righe 70 e 90 circa è molto più chiara così:
local n = 1
for i = 0, #claims do
    if claims[i].rank == options.rank then
        if n == options.n then
            statement = claims[i]
            break
        end
        n = n + 1
    end
end
poi messa in una funzione (getStatementByRank) ancora meglio. Sto aggiungendola alla sandbox, appena trovo un bug che mi sono auto-introdotto si può provare. --Rotpunkt (msg) 20:07, 25 gen 2014 (CET)Rispondi
Ora Modulo:Wikidata/sandbox dovrebbe essere a posto (avevo dimenticato di convertire in numero una stringa), e con notevoli semplificazioni. Inoltre ho aggiuto il controllo n <= #entity.claims[property] così che non ci siano inutili iterazioni se options.n è superiore in partenza al numero di statement. --Rotpunkt (msg) 22:12, 25 gen 2014 (CET)Rispondi
Cosa aspetti? Se è a posto implementalo pure, non ti fare scrupoli a sostituire il mio codice, è evidente che il tuo è più elegante del mio.--dega180 (msg) 23:54, 25 gen 2014 (CET)Rispondi
  Fatto :) Provo a scrivere un po' di test. --Rotpunkt (msg) 12:10, 26 gen 2014 (CET)Rispondi

Entità senza label e sitelink in italiano

Testando il modulo, mi sono accorto di un problema che c'è quasi sicuramente da sempre e si verifica quando un elemento su Wikidata non ha label né sitelink in italiano.

Si può verificare prendendo Malmö (comune) e richiedendo la p361 ("Malmö metropolitan area") che non ha label e sitelink in italiano, e otteniamo:

  • con {{#property:p361}} => Q94298
  • con {{#invoke:Wikidata|formatStatements|property=p361}} => Tipo di dato sconosciuto

Ora, a parte fixare l'errore (il bug nel codice è evidente e già noto a chi ha sviluppato inizialmente il modulo perché ha commentato: "TODO what if no links and label + fallback language?"), volevo sapere: cosa dovrebbe ritornare esattamente il modulo per questi casi? Q94298, o altro? Magari anche ValterVB ci può aiutare. --Rotpunkt (msg) 22:06, 26 gen 2014 (CET)Rispondi

Probabilmente, basterebbe far apparire Q94298 con link, in modo da poter andare facilmente su Wikidata e aggiungere l'etichetta, se poi fosse possibile, magari creare una categoria apposta per segnalare queste proprietà sarebbe perfetto (qualcosa tipo Categoria:Proprietà Wikidata usate ma senza etichetta). --ValterVB (msg) 22:16, 26 gen 2014 (CET)Rispondi
Intendi un link così: Q94298? Scusami, faccio che chiederti un'altra cosa. Le altre tre possibilità sono: (1) solo label => ritorna la stringa della label senza link e (2) solo sitelink => ritorna il wikilink alla voce (3) sia label che sitelink => ritorna un piped wlink usando label come etichetta. Sono corretti questi tre invece giusto? --Rotpunkt (msg) 22:34, 26 gen 2014 (CET)Rispondi
Esatto pensavo così, in maniera che sia subito evidente e allo stesso tempo è facile andare a correggere il problema, inserendo l'etichetta e quindi ricadendo nella possibilità (1) o aggiungendo un link e quindi si ricade nella possibilità (2) o (3). Per i 3 punti indicati direi che mi sembra corretto, forse per il punto (1) farei apparire il link rosso, perché penso che le proprietà siano sempre enciclopediche. --ValterVB (msg) 23:01, 26 gen 2014 (CET)Rispondi
Grazie ValterVB! Ho implementato la funzionalità del link a wikidata nella sandbox, si può provare sempre in Malmö (comune) usando {{#invoke:Wikidata/sandbox|formatStatements|property=p361}} e {{#invoke:Wikidata/sandbox|formatStatements|property=p47}}. Se va bene comincerei ad aggiungere questa modifica per poter continuare nei test, per poi vedere successivamente le altre due funzionalità a cui accennavi (categoria:Proprietà Wikidata usate ma senza etichetta e wlink rosso). --Rotpunkt (msg) 00:42, 27 gen 2014 (CET)Rispondi
Certo per il lettore quel codicillo non è molto amichevole... Per chi non se ne intende si capisce poco anche dopo averlo cliccato. Non c'è modo di ottenere almeno un'etichetta in lingua straniera? --Bultro (m) 17:54, 27 gen 2014 (CET)Rispondi
A meno di funzionalità non documentate non è possibile. La documentazione di "mw.wikibase.label( id )" è "takes an item ID and returns the label in the language of the local wiki." e non ci sono altre funzioni. Le alternative sono fare come fa #property che ritorna una stringa, invece del wikilink, oppure non ritornare proprio nulla. A me va bene come dice ValterVB (il wlink), ma in alternativa mi va bene anche come fa #property, che in fondo è parte del software su cui ci basiamo. --Rotpunkt (msg) 18:42, 27 gen 2014 (CET)Rispondi

────────────────────────────────────────────────────────────────────────────────────────────────────Non dimentichiamoci che il nostro obiettivo è redarre un'enciclopedia adatta ad un qualsiasi lettore che conosca l'italiano, se un non addetto ai lavori legge "Q3809" ovviamente non capisce (e magari cerca invano di capire) cosa voglia dire quel codice, oppure in futuro potranno arrivare casi particolari (per esempio in voci riguardanti fisica o informatica) in cui quel "Q3809" potrebbe assumere un significato fraintendibile (nella wiki in inglese, ma anche in quella italiana, esistono delle voci che iniziano con Q proseguito da un numero). Io sono per lasciare uno spazio vuoto quando mancano sia il label che il wikilink in italiano.--dega180 (msg) 19:42, 27 gen 2014 (CET)Rispondi

Gli altri cosa pensano? Io avrei preferito fare come ValterVB o in seconda istanza come #property, ma comunque anche toglierlo del tutto è sempre meglio di lasciare l'errore come adesso. --Rotpunkt (msg) 14:28, 28 gen 2014 (CET)Rispondi
IMHO dato che questo modulo non dovrebbe essere usato direttamente in ns0 ma essere di appoggio a template e moduli dovrebbe "girare la patata" al livello superiore. Quindi ritornare stringa nulla normalmente, oppure (in caso sia settata un parametro di debug) ritornare lo stato di errore e lasciare al modulo/template chiamante decidere cosa fare--Moroboshi scrivimi 17:12, 28 gen 2014 (CET)Rispondi
Grazie Moroboshi, l'unico "problema" è che vedo è che così andrebbe bene quando la proprietà ha 1 singolo statement, ma quando ne ha molti? Per esempio, basta che un solo statement non abbia link e label per ottenere: Staffanstorp, Svedala, Vellinge, Tipo di dato sconosciuto, Tårnby, Dragør, Solrød, Greve e Burlöv, mentre per la stessa richiesta #property ritornerebbe: Staffanstorp, Svedala, Vellinge, Q504125, Tårnby, Dragør, Solrød, Greve e Burlöv. Poi come farebbe il template a gestire il caso? Invaliderebbe tutto il risultato perché 1 solo degli statement non ha label e sitelink? P.S. Aggiungo per dovere di cronaca che ho visto che su fr.wiki utilizzano il metodo descritto da ValterVB. Si può verificare scrivendo {{#invoke:Wikidata|formatStatements|property=p47}} in fr:Malmö (commune). --Rotpunkt (msg) 17:31, 28 gen 2014 (CET)Rispondi
Hmmm ... usare una parametro di debug. Di default la funzione ritorna la lista purgata dagli elementi in errore, con il parametro di debug attivo la funzione ritorna lista con anche i link alle proprietà Qxxxx non valorizzate in italiano. Eventualmeente si potrebbe pensare a una funzione a uso solo per i moduli lua che invece di ritornare una stringa ritorni due array, uno con i valori buoni e l'altro con quelli in errore (se ci sono.--Moroboshi scrivimi 17:42, 28 gen 2014 (CET)Rispondi
Per me va bene, però facciamolo a step successivi. Per ora togliamoci dagli impicci dell'errore che potrebbero già apparire in qualunque voce (i casi in cui non ci sono label e sitelink sono magari rari) non facendo apparire l'elemento della lista come dicono Moroboshi e Dega180 e successivamente aggiungiamo le altre feature (parametri, categorie, ...). Se va bene a tutti procedo. --Rotpunkt (msg) 17:48, 28 gen 2014 (CET)Rispondi
[ Rientro] Passaggio veloce, questa settimana sono all'estero è ho qualche problema di connessione, visto che il tipo di errore è facilmente e velocemente risolvibile, si potrebbe tranquillamente omettere il valore, se viene indicato in qualche maniera l'errore (vedi categoria). Dopotutto basta inserire almeno l'etichetta su Wikidata e il problema è risolto. --ValterVB (msg) 19:55, 28 gen 2014 (CET)Rispondi
Ho cominciato a riportare la correzione della stringa vuota. @ValterVB possiamo pensare ora alla categoria, nel frattempo mi è venuto un dubbio. Wikidata è un database per eccellenza (rispetto a itwiki intendo), e quindi sapere quali sono le voci senza label in italiano immagino sia banale (tant'è che ho trovato esiste una pagina speciale apposita d:Special:EntitiesWithoutLabel per ottenerle). Quindi mi chiedo se ha senso che su itwiki ci ricreiamo una sorta di database di queste informazioni. Ci sarebbe in più la differenza se questa pagina è veramente usata su itwiki o meno, ma a parte l'importanza o meno di questo fatto, immagino che anche per questo, se interessa, ci sarà il modo di ottenerlo. --Rotpunkt (msg) 13:05, 29 gen 2014 (CET)Rispondi
In realtà su etichette e descrizioni ci "lavoro" parecchio: vedi qui e qui per alcune statistiche. Normalmente l'aggiornamento è quotidiano. Se serve posso riportarle anche di qua. --ValterVB (msg) 14:16, 29 gen 2014 (CET)Rispondi

Ordine statements

Ho corretto in Modulo:Wikidata/sandbox un problema che ci si porta dietro dall'inizio dovuto a due fattori concomitanti:

  1. entity.claims[property] è una sequence Lua, con la peculiarità di iniziare da 0 invece che da 1, anche se mi è stato detto che è in progetto di fixarlo (ma su una nuova interfaccia per mantenere la retrocompatibilità, quindi si potrà eventualmente poi aggiornare il codice)
  2. chi ha scritto inizialmente questo codice iterava su claims con pairs() invece che con un indice

Questo fa sì che se abbiamo una lista di statement (esempio p47 per il solito Malmö (comune)) otteniamo:

  • {{#invoke:Wikidata|formatStatements|property=p47}} => Staffanstorp, Svedala, Vellinge, Copenaghen, Tårnby, Dragør, Solrød, Greve e Burlöv

Ma se poi richiediamo il primo elemento otteniamo:

  • {{#invoke:Wikidata|formatStatements|property=p47|n=1}} => Burlöv

Ho quindi rimosso in Modulo:Wikidata/sandbox l'utilizzo di pairs() ottenendo:

  • {{#invoke:Wikidata/sandbox|formatStatements|property=p47}} => Burlöv, Staffanstorp, Svedala, Vellinge, Copenaghen, Tårnby, Dragør, Solrød e Greve
  • {{#invoke:Wikidata/sandbox|formatStatements|property=p47|n=1}} => Burlöv

Tra l'altro l'ordine ottenuto è così quello degli elementi come sono visualizzati su Wikidata, se non è stato modificato attraverso l'interfaccia web. Mantenere l'ordine anche con quando questo è stato modificato attraverso l'interfaccia web lo farei in uno step successivo. Comincerei da questo che dà comunque un risultato consistente tra la lista e l'accesso al singolo elemento. Se non ci sono pareri contrari procedo tra un po' a riportarlo su Modulo:Wikidata. --Rotpunkt (msg) 14:38, 28 gen 2014 (CET)Rispondi

Questa cosa l'ho notata anche io, se sei riuscito a correggerla per me puoi sostituirla al modulo.--dega180 (msg) 12:25, 1 feb 2014 (CET)Rispondi

Bug del rank

Ho trovato un bug e penso di averlo risolto.

Io compilo il modulo nel seguente modo

{{#invoke:wikidata|formatStatements|property=p6|n=2|rank=preferred}}

io vorrei ottenere il secondo statement con rank preferred della property p6, se questo non esiste ovviamente vorrei ottenere il carattere vuoto.

Ipotizziamo che, per la voce che abbiamo scelto, la property p6 abbia un solo statement con rank preferred.

Il codice esegue il comando della riga 106:

local statement = options.rank and getStatementByRank( entity.claims[property], n, options.rank ) or entity.claims[property][n - 1]

in questo caso options.rank è compilato ma getStatementByRank( entity.claims[property], n, options.rank ) restituisce nil quindi l'and non viene eseguito e viene eseguito l'or, cioè entity.claims[property][n - 1], in altre parole mi viene ritornato il seondo statement indipendentemente dal rank. Questo funzionamento può essere testato inserendo in una sandbox il codice

return "ciao" and nil or "prova"

se lo eseguiamo ci viene restituito "prova" e non il carattere vuoto.

Penso di aver corretto il bug nella sandbox Modulo:Wikidata/sandbox2.--dega180 (msg) 13:05, 1 feb 2014 (CET)Rispondi

Giusto. Riassumendo, il problema è dovuto al fatto che Lua manca di un vero operatore ternario (come di tante altre cose), e questa mancanza è colmata dall'approssimazione di "x = a and b or c" dove però l'unico problema è quando b = false/nil (vedi qui). Si potrebbe per esempio spostare il caso nil in "c", faccio solo una prova. Ciao. --Rotpunkt (msg) 14:00, 1 feb 2014 (CET)Rispondi
Si può fare con
local statement = not options.rank
                  and entity.claims[property][n - 1]
                  or getStatementByRank( entity.claims[property], n, options.rank )
ma non è più intuitivo mettere un classico if - else come ho fatto io?--dega180 (msg) 14:14, 1 feb 2014 (CET)Rispondi
Sì è più chiaro con l'if ma c'è un problema anche più ampio. Quello che non mi piace è che chi ha scritto inizialmente il codice aveva previsto che in formatStatements arrivassero solo stringhe con i valori di ritorno o con gli errori (o al limite una stringa vuota), non nil, questa è una cosa che ho aggiunto io e adesso dà questo problema che hai ben evidenziato. Voglio solo vedere un secondo se posso ritornare a non far mai ritornare nil (come in origine) e quindi togliere alla radice il problema. --Rotpunkt (msg) 14:27, 1 feb 2014 (CET)Rispondi
Alla fine ho riportato il tuo fix senza modificare altro. Ci ho provato ma diventava una modifica troppo invasiva. Nei prossimi giorni provo un approccio simile a quello che hanno eseguito su fr.wiki (funzione getClaims) cioè di filtrare i claims prima di chiamare formatStatements (in realtà loro la chiamano proprio all'inizio di formatStatements, ma è come fosse prima). Questo perché le funzioni "format*" si dovrebbero limitare a formattare l'output non a filtrare i claims come adesso avviene, portando così a un mix di valori di ritorno tra nil, stringhe vuote ed errori che non è chiaro. Ciao. --Rotpunkt (msg) 15:39, 1 feb 2014 (CET)Rispondi

Formattazione data

Il modulo formatta la data utilizzando la funzione mw.language:formatDate() che a sua volta si basa sulla funzione parser #time. Questa funzione ha un problema: le date che si riferiscono al primo giorno del mese, per esempio 1-10-2014 vengono formattate nel seguente modo:

1 ottobre 2014

secondo le nostre convenzioni di stile però la data andrebbe formattata così

1º ottobre 2014

da notare il simbolo º dopo il numero 1.

Le cose sono due: o chiediamo agli sviluppatori di mediawiki di modificare il funzionamento della funzione mw.language.formatDate() (e dunque penso anche della funzione parser #time), oppure dobbiamo modificare il nostro modulo. Alla riga 218, dopo aver formattato la data con mw.language.formatDate(), potremmo controllare se i primi due caratteri della stringa sono un "1" seguito da uno spazio vuoto, in tal caso sostituiamo 1 con 1º. Voi cosa ne pensate?--dega180 (msg) 21:34, 4 feb 2014 (CET)Rispondi

Per me va bene la seconda, avevo fatto una funzione con scopo simile in Modulo:Bio (fixFirstOfMonth), se vuoi la riporto (parzialmente) qui, oppure integro semplicemente il date = date:gsub("^1%s", "1º "). Oppure fallo tu, io al massimo mi permetto di ricontrollare. Ciao. --Rotpunkt (msg) 22:07, 4 feb 2014 (CET)Rispondi
Beh creare una funzione apposta per utilizzarla una volta sola mi sembra esagerato, per me si può benissimo aggiungere dopo la riga 218 di questo modulo i due comandi che si trovano nella funzione fixFirstOfMonth() del Modulo:Bio. Non capisco però a cosa serva questo comando date = date:gsub("^1\194\176", "1º").--dega180 (msg) 22:52, 4 feb 2014 (CET)Rispondi
Quella funzione come documentato esegue (eventualmente) due replace, quello è il secondo... --Rotpunkt (msg) 23:19, 4 feb 2014 (CET)Rispondi
Ci sarebbero anche da aggiungere anche la altre precisioni. La funzione l'avevo importata da Modulo:Bio, dove l'avevo scritta inizialmente. --Rotpunkt (msg) 23:31, 4 feb 2014 (CET)Rispondi
È che non capisco cosa indichi la regex \194\176. Ho notato anche io che c'è questa "precision" è solo che non riesco a capire il valore 11 e 9 a cosa si riferiscono, ho capito che c'entra col fatto che la data può essere espressa in giorno-mese-anno oppure in mese-anno oppure anche in giorno-mese-anno-ora, ma non capisco il numero a cosa sia legato.--dega180 (msg) 23:46, 4 feb 2014 (CET)Rispondi
Non è una regex, è un codice carattere. Riguardo al formato dei dati di wikidata, qualunque possibile informazione la trovi ovviamente su wikidata.org, dove altro altrimenti :) --Rotpunkt (msg) 23:55, 4 feb 2014 (CET)Rispondi

────────────────────────────────────────────────────────────────────────────────────────────────────Il problema è che l'unica documentazione che ho trovato è mw:Extension:Wikibase Client/Lua e la "precision" per la data viene citata solo una volta in un esempio in cui è eguagliata ad 11 senza spiegare il perchè. Se sai dove posso trovare una documentazione migliore per piacere la puoi linkare?--dega180 (msg) 00:02, 5 feb 2014 (CET)Rispondi

No grazie ho trovato in d:Special:ListDatatypes.--dega180 (msg) 00:04, 5 feb 2014 (CET)Rispondi

Valore più recente

Sarebbe utile, nel caso di più valori con il qualificatore data (d:Property:P585, forse anche d:Property:P580), la possibilità di ottenere quello con la data più recente. Un'applicazione pratica è emersa in Discussioni_template:Divisione_amministrativa#Ritorno_a_wikidata --Bultro (m) 21:26, 16 feb 2014 (CET)Rispondi

Devo solo ristrutturare la lettura degli statement, come detto in una discussione precedente (funzione getClaims sullo stile di fr.wiki) e poi si dovrebbe implementare facilmente. Appena fatto riapro la discussione. --Rotpunkt (msg) 22:01, 16 feb 2014 (CET)Rispondi
Ma perché per questo tipo di cose non ci concentriamo sul rank che è stato creato apposta per ottenere il parametro più recente? Sarebbe utile una funzione che controlla se esistono uno o più valori con rank preffered, se questi esistono allora me li restituisce altrimenti mi restituisce gli altri valori.--dega180 (msg) 22:21, 16 feb 2014 (CET)Rispondi
Secondo me il fatto se è meglio usare il rank o un filtro su un qualificatore non è pertinenza del modulo. Cioè trovo giusto che il modulo sappia fare entrambe le cose, sta poi nelle discussioni in cui si decide come organizzare i dati su wikidata favorire un metodo o l'altro. --Rotpunkt (msg) 22:38, 16 feb 2014 (CET)Rispondi

──────────────────────────────────────────────────────────────────────────────────────────────────── Come preannunciato nella discussione "Bug del rank", ho aggiunto la funzione getClaims che semplifica decisamente il codice e permette di aggiungere facilmente qualsiasi tipo di filtro sui vari valori di una proprietà (gli "statement"). Per esempio ho aggiunto il filtro sui qualifier. Il codice è quindi diviso in due parti principali:

  • la getClaims che ritorna gli statement che soddisfano i filtri richiesti
  • la vecchia formatStatements che li legge e li formatta opportunamente

Nota: ho cambiato il senso del parametro qualifier, che intanto non era ancora stato utilizzato. Ho fatto come su fr.wiki dove, invocato con formatStatements, non serve per ritornare il qualifier ma per filtrare (eventualmente in coppia con qualifiervalue) gli statement. Per ritornare il qualifier si aggiungerà invece un nuovo metodo (getQualifier). A breve degli esempi. --Rotpunkt (msg) 22:40, 20 feb 2014 (CET)Rispondi

Ecco l'esempio della nuova implementazione. Faccio riferimento alla entity di Caprino Bergamasco, indicata da ValterVB nella discussione come più completa, e alla relativa d:property:p1082, la popolazione, che attualmente contiene:

  • 2813 - point in time(P585): 31 dicembre 2001
  • 2861 - point in time: 31 dicembre 2002
  • 2867 - point in time: 31 dicembre 2003
  • 2908 - point in time: 31 dicembre 2004
  • 2966 - point in time: 31 dicembre 2005
  • 3022 - point in time: 31 dicembre 2006
  • 3051 - point in time: 31 dicembre 2007
  • 3115 - point in time: 31 dicembre 2008
  • 3121 - point in time: 31 dicembre 2009
  • 3120 - point in time: 31 dicembre 2010
  • 3131 - point in time: 31 dicembre 2011
  • 3122 - point in time: 31 dicembre 2012, con rank preferred
  • 3127 - point in time: 9 ottobre 2011, determination method(P459): census(Q39825), questionnaire(Q747810)

Col modulo in sandbox scrivendo Caprino Bergamasco e usando Anteprima, ora si può ottenere:

  • tutti gli statement: {{#invoke:Wikidata/sandbox|formatStatements|property=p1082}} => 2813, 2861, 2867, 2908, 2966, 3022, 3051, 3115, 3121, 3120, 3131, 3122 e 3127
  • gli statement con rank preferred: {{#invoke:Wikidata/sandbox|formatStatements|property=p1082|rank=preferred}} => 3122
  • gli statement che usano il qualifier determination method(P459): {{#invoke:Wikidata/sandbox|formatStatements|property=p1082|qualifier=p459}} => 3127
  • gli statement che usano il qualifier determination method(P459) e valorizzato a census(Q39825): {{#invoke:Wikidata/sandbox|formatStatements|property=p1082|qualifier=p459|qualifiervalue=Q39825}} => 3127
  • lo statment che usa il qualifier point in time(P585) e ha la data più recente: {{#invoke:Wikidata/sandbox|formatStatements|property=p1082|qualifier=p585|qualifiertype=latest}} => 3122

--Rotpunkt (msg) 11:24, 21 feb 2014 (CET)Rispondi

Quindi se capisco bene ora posso richiedere il valore della proprietà x con qualificatore y e valore del qualificatore z? Grande. Credo che questo possa coprire quasi tutti i casi, se poi fosse possibile anche aggiungere il filtro sulla fonte sarebbe completo :) --ValterVB (msg) 11:37, 21 feb 2014 (CET)Rispondi
È come hai detto. a parte che: "con qualificatore y e valore del qualificatore y" (y non z, cioè qualifiervalue si riferisce a qualifier). Nell'esempio sopra: gli statement con qualifier determination method(P459) valorizzato a census(Q39825). (precisazione inutile perché mi sa che intendevi già questo). Riguardo al filtro sulla fonte con la nuova getClaims non c'è problema.
Ne approfitto per fare una nota a margine: in generale mi sono rifatto ai parametri usati in fr:Module:Wikidata e se il modulo coprisse perfettamente le nostre esigenze lo si potrebbe anche ricopiare qui tale e quale. Il fatto è che: (1) a questo modulo ho aggiunto alcune funzionalità (tutte testate) che mancano su fr.wiki (2) su fr.wiki ce ne sono tantissime che non usiamo e sarebbero da testare (3) wikidata è molto in evoluzione e anche quello su fr.wiki cambia anche spesso. Io preferisco sviluppare su un codice che ormai conosco abbastanza, cioè questo. Una volta che Wikidata raggiungesse una situazione stabile allora passarei a quello che si preferisce di più. --Rotpunkt (msg) 12:28, 21 feb 2014 (CET)Rispondi
[× Conflitto di modifiche] Sbaglio o sono state cambiate le regole del modulo? Attualmente un codice di questo tipo
{{#invoke:Wikidata|formatStatements|property=p1082|qualifier=p459}}
ritorna (come scritto nella documentazione) il valore del qualifier p459 apposto alla property p1082, nel caso di Caprino Bergamasco dovrebbe ritornare "censimento e questionario" (in realtà ritorna un codice errato e non so perché) non la property che ha quel qualifier.--dega180 (msg) 12:31, 21 feb 2014 (CET)Rispondi
Sì guarda è scritto poco sopra => Nota: ho cambiato il senso del parametro qualifier, che intanto non era ancora stato utilizzato. Ho fatto come su fr.wiki dove, invocato con formatStatements, non serve per ritornare il qualifier ma per filtrare (eventualmente in coppia con qualifiervalue) gli statement. Per ritornare il qualifier si aggiungerà invece un nuovo metodo (getQualifier). Ciao. --Rotpunkt (msg) 12:33, 21 feb 2014 (CET)Rispondi
Il template:Software usa il qualifier.--dega180 (msg) 12:38, 21 feb 2014 (CET)Rispondi
E va beh dai, c'è un'unica occorrenza in quel template su tutta wiki, lo sostituiamo con getQualifier. Il fatto che la formatStatements passasse a ritornare il qualifier invece del valore della proprietà me lo ero inventato a novembre, quando appena avevo iniziato a guardare Wikidata, ma in effetti è concettualmente più corretto che ci sia un altro metodo, come hanno fatto su fr.wiki. --Rotpunkt (msg) 12:49, 21 feb 2014 (CET)Rispondi
Molto bene. Attenzione solo a eventuali altri usi di qualifier nei template esistenti, non si trovano con la normale ricerca di testo.
Nel caso di "latest" servirebbe anche la possibilità di ottenere tale data --Bultro (m) 14:18, 21 feb 2014 (CET)Rispondi
Sarà possibile ottenere anch'esso tramite getQualifier, che aggiungo a breve. --Rotpunkt (msg) 19:22, 21 feb 2014 (CET)Rispondi

──────────────────────────────────────────────────────────────────────────────────────────────────── Ho implementato la getQualifier. Si comporta esattamente come la formatStatements, ma ritorna il valore dei qualifiers invece che quello degli statements. Ritornando all'esempio di prima quindi:

  • {{#invoke:Wikidata/sandbox|formatStatements|property=p1082|qualifier=p585|qualifiertype=latest}} => 3122

allora per ottenerne la data, basta usare il metodo getQualifier, gli altri parametri rimangono invariati:

  • {{#invoke:Wikidata/sandbox|getQualifier|property=p1082|qualifier=p585|qualifiertype=latest}} => 31 dicembre 2012

Così come nel template software basta solo cambiare la stringa "formatStatements" con "getQualifier", quindi:

  • {{#invoke:Wikidata|formatStatements|property=p348|qualifier=p577|value={{{DataUltimaVersione|}}}|pattern=($1)}}

diventa:

  • {{#invoke:Wikidata|getQualifier|property=p348|qualifier=p577|value={{{DataUltimaVersione|}}}|pattern=($1)}}

Se nessuno trova controindicazioni passo alla nuova versione, correggendo anche il template Software e aggiornando la documentazione. Ciao. --Rotpunkt (msg) 09:55, 26 feb 2014 (CET)Rispondi

Ho aggiunto una minima modifica, un parametro "formatting" che, come su fr.wiki, permette di leggere latitudine e longitudine separatamente e ho corretto il primo del mese con 1º. In giornata passerò alla nuova versione, correggendo anche il template Software e aggiornando la documentazione. Ciao. --Rotpunkt (msg) 08:36, 27 feb 2014 (CET)Rispondi
  Fatto Successivamente ho aggiornato la sandbox con la nuova mw.wikibase.getEntityObject che va a sostituire la mw.wikibase.getEntity divenuta quindi deprecata. Domani provvedo a riportare la modifica e ad aggiornare anche gli altri moduli. --Rotpunkt (msg) 23:24, 27 feb 2014 (CET)Rispondi
Fatte entrambe le cose e ho riordinato le funzioni (definizione prima di utilizzo). Ciao. --Rotpunkt (msg) 13:03, 28 feb 2014 (CET)Rispondi
È entrata in funzione una nuova versione di getEntityObject che ritorna delle sequence che iniziano da 1 invece che da 0, come avrebbe dovuto sempre essere per il linguaggio Lua. Ho aggiornato la sandbox per rispecchiare questa modifica, ho eseguito i test (senza errori) e a breve riporto la modifica sul modulo. --Rotpunkt (msg) 14:01, 4 mar 2014 (CET)Rispondi
Aggiornato. --Rotpunkt (msg) 20:34, 4 mar 2014 (CET)Rispondi

Richiedere il dato con il miglior rank

Come potete vedere in d:Q698 (Mozilla Firefox), il 29 aprile sono uscite due versioni del browser di cui solo una è quella importante (l'altra è solo una versione supportata più a lungo riservata alle aziende), in questo caso non è possibile utilizzare il qualifiertype=latest, perché le due versioni sono uscite la stessa data, sarebbe comodo avere un parametro del modulo che ci permetta di avere lo statement (o gli statement) con il rank più alto (nell'ordine deprecated → normal → preferred). Come possiamo fare ad ottenere ciò? Creiamo un parametro chiamato bestRank= che, se compilato, ritorna lo statement (o il qualifier) con il rank più alto?--dega180 (msg) 12:30, 1 mag 2014 (CEST)Rispondi

Va bene se facciamo come su fr.wiki (verso cui ho sempre cercato una compatibilità), ossia "rank" oltre che deprecated, normal e preferred, può valere "best" per ritornare i preferred se presenti, altrimenti i normal (il deprecated non viene ritornato), come desiderato? --Rotpunkt (msg) 12:44, 1 mag 2014 (CEST)Rispondi
Ho aggiunto il rank best nella sandbox, l'ho testato in Modulo:Wikidata/test e nella pagina Mozilla Firefox da te indicata. Ora provando in Mozilla Firefox con l'anteprima si ottiene:
  • {{#invoke:Wikidata/sandbox|formatStatements|property=p348|rank=best}} => 29.0
  • {{#invoke:Wikidata/sandbox|getQualifier|property=p348|qualifier=p577|rank=best}} => 29 aprile 2014
Più tardi riporto la modifica in Modulo:Wikidata e aggiorno la documentazione. Poi basterà aggiungere "rank=best" in Valore3 di Template:Software. --Rotpunkt (msg) 18:33, 2 mag 2014 (CEST)Rispondi
Mi sembra un ottima soluzione.--dega180 (msg) 21:53, 2 mag 2014 (CEST)Rispondi
Fatto, ciao! --Rotpunkt (msg) 00:59, 3 mag 2014 (CEST)Rispondi

Dal titolo all'ID in Wikidata

C'è una funzione da qualche parte che, preso il titolo di una pagina qui, mi dà l'ID corrispondente in Wikidata (se esistente e trascurando ritardi negli aggiornamenti)? --Nemo 18:27, 1 mag 2014 (CEST)Rispondi

In che contesto la vorresti usare? C'è l'API di Wikidata con cui potresti fare quella ricerca. Scusa per il rb mi è scappato il mouse. --Rotpunkt (msg) 18:39, 1 mag 2014 (CEST)Rispondi
Pensavo a qualcosa come una parola magica che si possa tenere tranquillamente in una pagina wiki. La documentazione dell'API l'avevo già letta, ma non c'è nulla di veramente comodo a quanto vedo. --Nemo 00:05, 2 mag 2014 (CEST)Rispondi
Ho anche chiesto dell'inverso, cioè un template per andare dall'ID al titolo. --Nemo 13:04, 5 ott 2014 (CEST)Rispondi
Anche in questo caso puoi farlo con l'API di Wikidata. Il template Q funziona solo su Wikidata al momento. Questa particolare conversione tuttavia puoi farla diversamente dal template Q su Wikidata usando mw.wikibase.label('Q41'), e questo funziona da sempre anche qui. --Rotpunkt (msg) 13:19, 5 ott 2014 (CEST)Rispondi

References

Sollecitato da Umberto NURS che ne avrebbe fatto uso, ho aggiunto il supporto alle reference nella sandbox del modulo (diff). Ho messo una prova qui. Va bene per Pentium ma non ancora per Londra. Mi servirebbe in pratica sapere ([@ ValterVB] magari ci può aiutare) se c'è qualche standard nella creazione di una reference su Wikidata, nel qual caso si potrebbero anche usare i vari template cita. PS Tuttavia anche senza cita web le note 3 e 4 di Londra posso già fare che unirle visto che fanno parte di una sola reference su Wikidata. --Rotpunkt (msg) 12:15, 10 nov 2014 (CET)Rispondi

La linea guida delle reference su Wikidata si trova in d:Help:Sources.--dega180 (msg) 12:57, 10 nov 2014 (CET)Rispondi
Ah bene grazie. Nel frattempo sono riuscito a raggruppare le sottoproprietà di una singola reference (mantenendo anche l'ordine), diff. L'esempio sempre qui. Non è proprio come usare un cita web ma è già quasi utilizzabile. --Rotpunkt (msg) 13:21, 10 nov 2014 (CET)Rispondi
Secondo me dovremmo farci aiutare da qualche esperto di wikidata per far "capire" al modulo quando ci sono i presupposti per utilizzare il template {{Cita testo}}. Per esempio il modulo potrebbe controllare se è compilata la proprietà d:Property:P357 (chiamata "titolo") e in caso affermativo utilizzare il template {{Cita testo}}.--dega180 (msg) 13:57, 10 nov 2014 (CET)Rispondi
Il problema che vedo in questo momento, è che una fonte di un dato, soprattutto in caso di fonti letterarie, è un item stesso che contiene tutti i dati e quindi ricadiamo nel problema dell'accesso arbitrario agli elementi di Wikidata. Per capirci, se la fonte è una edizione di un certo libro, troveremo come fonte semplicemente il titolo di quella edizione del libro e se volessimo i dati dell'autore o della casa editrice dovremmo andare a pescare questi dati nell'item dell'edizione. In altri casi fortunatamente è più semplice --ValterVB (msg) 22:45, 10 nov 2014 (CET)Rispondi
Come siamo rimasti qui? Perchè l'idea di poter avere un semplice modulo che evochi un {{Cita testo}} ogni volta che ci sia titolo (P1476), URL di riferimento (P854) e magari anche un consultato il (P813) sarebbe già decisamente moltissimo :) --Valerio Bozzolan (msg) 21:51, 26 mar 2017 (CEST)Rispondi

Sitelink

C'è modo di recuperare il sitelink dell'Item? --ValterVB (msg) 18:21, 10 gen 2015 (CET)Rispondi

[@ ValterVB] Sì, l'entity ha una table "sitelinks" con queste informazioni. Servono? --Rotpunkt (msg) 22:09, 11 gen 2015 (CET)Rispondi
[@ Rotpunkt] Non ne sono ancora sicuro, ma stavo cercando di immaginare come creare un wikilink da un item nel momento che sarà disponibile l'accesso arbitrario. Per esempio nel template {{Ponte}}, c'è il parametro città o attraversa, che viene mostrato come wikilink, penso che l'unico modo per creare il wikilink sia utilizzate il sitelink presente nell'Item o c'è qualche altro sistema? --ValterVB (msg) 20:32, 12 gen 2015 (CET)Rispondi
Per quello c'è la funzione mw.wikibase.sitelink, no? --Rotpunkt (msg) 21:18, 12 gen 2015 (CET)Rispondi
[@ Rotpunkt] Non conosco molto le funzioni sviluppate per Wikidata, però ho trovato il manuale, e in effetti sembra proprio quella, quindi come non detto. --ValterVB (msg) 21:34, 12 gen 2015 (CET)Rispondi

mw.wikibase.renderSnak

Nei prossimi giorni, con la versione 1.25/wmf19 di MediaWiki, arriverà una nuova funzione mw.wikibase.renderSnak (Phab:T76213) che dovrebbe facilitare le varie funzioni in formatDatavalue. Bisogna solo verificare se compatibile con quanto fin'ora ritornato dal modulo, eventualmente aggiornando i template chiamanti se possibile. --Rotpunkt (msg) 22:57, 26 feb 2015 (CET)Rispondi

Istanza di (P31)

È possibile, o qui o in Modulo:Infobox, cercare una lista di valori nelle dichiarazioni "istanza di" (P31) sul soggetto e mostrarli se presenti?

Per esempio, nella voce su un famoso gatto potrei voler mostrare se è un gatto domestico o un gatto selvatico; è improbabile che crei la proprietà "Stato di domesticazione", è piú facile che aggiunga il valore "gatto selvatico" o "gatto domestico" a P31. Quindi mi servirebbe mostrare il valore di P31, limitandomi però a questa specifica informazione. --Federico Leva (BEIC) (msg) 09:29, 19 mar 2015 (CET)Rispondi

Mi faresti un esempio concreto (nome della voce su itwiki e relativo elemento wikidata), perché ho cercato un paio di gatti ma la proprietà P31 l'ho trovata valorizzata solo a "Taxon". --Rotpunkt (msg) 10:38, 19 mar 2015 (CET)Rispondi
L'esempio era volutamente improbabile. L'esempio concreto è che per Einaudi Editore voglio aggiungere P31:"grande editore" in Wikidata e mostrare tale valore qui. L'opportunità della specifica operazione sugli editori la sottoporrò a consenso in una pagina piú opportuna, ma vorrei sapere se tecnicamente la cosa è possibile. --Federico Leva (BEIC) (msg) 11:00, 19 mar 2015 (CET)Rispondi
Riguardo al fatto dell'esempio, è che in casi in cui c'è disponibilità di dati per fare un esempio concreto, e con Wikidata possiamo stare tranquilli in questo senso, è sempre conveniente farlo, sia per chi pone un problema sia per chi cerca di risolverlo. Così si eliminano le incertezze e spesso si finisce per avere una soluzione già pronta all'uso.
Solo che l'esempio che proponi d:Q1305980, ha un solo statement per "instance of". Te ne propongo uno io: d:Q17. Tu stai chiedendo: come faccio a sapere se d:Q17 ha in "instance of" (P31) uno statement per esempio dal valore "island nation"? È corretto? è questa la domanda? --Rotpunkt (msg) 12:04, 19 mar 2015 (CET)Rispondi
Sí, è quella la domanda. --Federico Leva (BEIC) (msg) 12:11, 19 mar 2015 (CET)Rispondi
Si potrebbe fare con una ricerca, esempio se scrivi: {{#ifeq:{{str find|{{#property:P31}}|stato insulare}}|-1|non è uno stato insulare|è uno stato insulare}} in Giappone otterrai "è uno stato insulare". Tuttavia se "instance of" avesse tra i suoi valori sia "stato insulare" che "stato insulare asiatico", e tu cercassi solo "stato insulare", ti troverebbe anche "stato insulare asiatico". Sarebbe da aggiungere una nuova funzione al modulo, usabile sempre attraverso il template {{Wikidata}}. --Rotpunkt (msg) 12:46, 19 mar 2015 (CET)Rispondi
Posso aggiungere a {{Wikidata}} un parametro "indexof" da valorizzare con il valore dello statement che stai cercando. Ritornerà l'indice dello statement con quel valore o -1 se non trovato. Quindi in Giappone (o in un template in esso incluso) scriveresti: {{#ifeq:{{Wikidata|P31|indexof=stato insulare}}|-1|non è uno stato insulare|è uno stato insulare}}. --Rotpunkt (msg) 14:12, 19 mar 2015 (CET)Rispondi

monolingualtext

Bisognerebbe aggiungere il tipo dati "monolingualtext" alla funzione "formatDatavalue" (riga 106 circa). Questo servirebbe ad esempio per leggere il titolo di un'opera, vedi anche WP:Pagina delle prove di Wikidata.

	--Default formatters
	if datavalue.type == 'wikibase-entityid' then
		ret = formatEntityId(getEntityIdFromValue(datavalue.value), options, formatting)
	elseif datavalue.type == 'string' then
		ret = datavalue.value
	elseif datavalue.type == 'monolingualtext' then
		ret = datavalue.value.text

... ecc. ecc.

Grazie. --FRacco (msg) 19:17, 20 mar 2015 (CET)Rispondi

  Fatto --Rotpunkt (msg) 20:42, 20 mar 2015 (CET)Rispondi
Ottimo (e velocissimo!!!) --FRacco (msg) 11:51, 21 mar 2015 (CET)Rispondi

checkStatements

Ciao, su Wikiquote ho aggiunto al corrispondente q:Modulo:Wikidata una funzione che verifica se una data proprietà ha un dato valore. Ad esempio lo utilizziamo per categorizzare automaticamente cortometraggi o film a episodi in base ai dati disponibili su Wikidata. Se pensate possa essere utile anche qua fatemi un fischio per adattarne il codice. --FRacco (msg) 19:00, 21 mar 2015 (CET)Rispondi

Richiamo da altri moduli

Non sarebbe possibile modificare il modulo per permettere il recupero di dati anche da altri moduli ? Eventualmente anche dei dati non formattati ? sto guardando l'uso che vuole fare Andyrom75 su voyr del modulo (ha importato questo modulo da it.wiki) ma in voy:Modulo:Quickbar gli farebbe comodo ricevere una tabella di property non formattate, invece che usare Wikidata.formatStatements per ricevere una stringa e poi stare ad analizzarla per estrarre i dati compresi tra i separatori. E sospetto che potrebbe fare comodo anche a me accedere da lua al modulo da Interprogetto, piuttosto che riscrivere le funzioni--Moroboshi scrivimi 21:51, 19 apr 2015 (CEST)Rispondi

[@ Moroboshi] Fatto. Ho chiamato le funzioni _getProperty, _getQualifier e _N (hanno l'underscore iniziale rispetto a quelle chiamate dai template, secondo la consuetudine che vedo usata su en.wiki). Ne ho approfittato per rinominare formatStatements nel più chiaro e semplice getProperty (e più uniforme con il getQualifier). Ho fatto un esempio in Modulo:Sandbox/Rotpunkt/Test, per provare puoi inserire in Malmö (comune) {{#invoke:Sandbox/Rotpunkt/Test|main}} e poi fare anteprima. Se ti serve qualcosa scrivimi pure. Per la documentazione dei parametri puoi basarti su Template:Wikidata per _getProperty, Template:WikidataQ per _getQualifier e Template:WikidataN per _N. --Rotpunkt (msg) 22:53, 19 apr 2015 (CEST)Rispondi
Ottimo! grazie.--Moroboshi scrivimi 23:58, 19 apr 2015 (CEST)Rispondi

[@ Rotpunkt] Ho modificato ulteriormente il modulo su :voy:Modulo:Wikidata prova a vedere se ritieni importabili le modifiche anche qui.

Andyrom75 voleva importare la prima e ultima delle zone orarie associate a una nazione per visualizzarle come intervallo "da .. a". Dato che le funzioni del modulo restituiscono una stringa unica con tutte le proprietà si sarebbe dovuto andare nuovamente a suddividerla, subito dopo che erano state unite.
Per semplificare ho invece aggiunto il parametro rawTable alla funzione _getProperty(), se questo è true il modulo restituisce la tabella formattedStatements senza unirla in una stringa. Diventa quindi banale prendere solo il primo e l'ultimo dei valori. Dato che rawTable non viene passato all'interno della tabella args non c'è il pericolo che possa essere richiamato mediante una chiamata di template, ma possa essere richiamato solo mediante una chiamata da un modulo Lua.--Moroboshi scrivimi 07:40, 21 apr 2015 (CEST)Rispondi
Hai fatto bene, è normale che i moduli, rispetto ai template, vogliano e possano usare anche altri tipi di dato oltre alle stringhe. Aspetterei a riportare qui la modifica alla prima occasione di suo utilizzo. Ciao. --Rotpunkt (msg) 19:01, 21 apr 2015 (CEST)Rispondi

Parametro from per l'accesso arbitrario

Ho aggiunto al modulo il parametro "from" per poter utilizzare l'accesso arbitrario, attivato in it.wiki 1° giugno 2015. L'ho chiamato "from" per uniformità con #property (nel vecchio modulo di test che si era importato inizialmente nel 2013, quando ancora l'accesso arbitrario era solo in programma, il parametro era stato invece chiamato "entityId"). L'accesso arbitrario a oggi è abilitato solo su: fa.wiki, he.wiki, it.wiki, nl.wiki e poi su en.wikivoyage, wikisource, wikidata stessa e test.wiki. Ho documentato la funzionalità a Template:Wikidata. --Rotpunkt (msg) 17:51, 1 giu 2015 (CEST)Rispondi

Tra ieri e oggi ho aggiunto anche il parametro formatting=raw per ritornare l'id in caso di proprietà di tipo item e l'utilizzo di frame.preprocess col parametro pattern. Ho sperimentato queste due funzionalità insieme al parametro from in questa sandbox. Quello che succede è che con il formatting=raw viene ritornato l'id degli item, che a sua volta è usato come valore del from nel pattern. In questo modo credo che in certi casi si possano sfruttare le funzionalità offerte dall'accesso arbitrario in modo veloce, anche solo per fare dei test. Pingo [@ ValterVB] se gli interessasse. --Rotpunkt (msg) 16:34, 3 giu 2015 (CEST)Rispondi
Visto e testato. --ValterVB (msg) 22:06, 3 giu 2015 (CEST)Rispondi
[@ ValterVB] Bello. Ti informo che ho esportato dal modulo la funzione per ottenere label e sitelink dato l'id numerico di un item, vedi Template:WikidataLink (usato per esempio qui). Il modulo la usava internamente per ritornare il valore di una proprietà di tipo item, ma esportandola si integra così quell'unica funzionalità a cui serviva il modulo Wikibase. Quelle due funzioni Lua utilizzate, mw.wikibase.label e mw.wikibase.sitelink (insieme a mw.wikibase.getEntity) erano proprio le sole funzioni esistenti nella libreria ad aprile 2013, quando importasti il modulo Wikibase (vedi qui). In pratica quello che avevi trovato su test2.wikipedia.org era lo stesso identico esempio della documentazione. Il fatto di poter ottenere il titolo della pagina dall'id dell'item era comunque una funzionalità che era giusto avere, immagino che con l'accesso arbitrario possa servire (come mi è capitato in quell'esempio nella sandbox). Ciao. --Rotpunkt (msg) 00:03, 4 giu 2015 (CEST)Rispondi

Aggiunta noqualifier

Ciao a tutti. Sono piuttosto nuovo di moduli, perciò non sbranatemi! Vorrei chiedervi se è possibile aggiungere queste poche righe di codice:

-- statements filtrati per essere senza un qualifier
      if args.noqualifier then
		filteredClaims = {}
		for i, claim in pairs(claims) do
			if not (claim.qualifiers and claim.qualifiers[args.noqualifier]) then
		          		table.insert(filteredClaims, claim)
			end
		end
		claims = filteredClaims
	end

Mi servirebbe per estrapolare uno o più statement che non possiedono un dato qualificatore. Questo mi è utile per gestire gli equipaggi delle missioni spaziali. Per sapere se un astronauta ha partecipato a tutta la missione (e non solo al lancio o al rientro) vado a vedere che un esiste il qualificatore "parte coinvolta", se non c'è ha fatto tutto il volo. Ho già testato in sandbox e, in particolare, nella voce Sojuz TMA-18M. Cosa ne dite? Grazie. --Adert (msg) 12:36, 28 mag 2016 (CEST)Rispondi

Scusa Adert, solo una cosa, non ho capito perché stai usando il template Wikidata nella voce (Sojuz TMA-18M), va usato nel template (T:Infobox missione spaziale) non per valorizzare un parametro del template. Se dovessimo usare il template voce per voce, si perderebbe tutta l'utilità di Wikidata. --Rotpunkt (msg) 12:45, 28 mag 2016 (CEST)Rispondi
Era solo per fare un esempio di quello che vorrei fare, se approvato lo sposterei nel template (ma non subito, perchè ci sarebbero delle cose da rivedere). --Adert (msg) 12:54, 28 mag 2016 (CEST)Rispondi
Si fa così allora in questi casi: fai la modifica che vuoi far vedere in T:Infobox missione spaziale/Sandbox. Poi ripristina Sojuz TMA-18M e sostituisci {{Infobox missione spaziale con {{Infobox missione spaziale/Sandbox e poi vediamo il resto. --Rotpunkt (msg) 13:02, 28 mag 2016 (CEST)Rispondi
  Fatto scusa. --Adert (msg) 13:11, 28 mag 2016 (CEST)Rispondi
Ok aggiungo questo parametro noqualifier. Solo una cosa, questa proprietà "parte coinvolta" è già usata negli elementi Wikidata che riguardano questi voli? --Rotpunkt (msg) 13:33, 28 mag 2016 (CEST)Rispondi
Si, praticamente in tutti gli rquipaggi delle missioni. L'unico problema è che a volte è stato utilizzato come qualificatore per il lancio lo statement "lancio del razzo vettore" o "decollo". Dovrò uniformare il tutto --Adert (msg) 13:37, 28 mag 2016 (CEST)Rispondi
  Fatto --Rotpunkt (msg) 13:53, 28 mag 2016 (CEST)Rispondi

[ Rientro] Sempre pensando al template {{Infobox missione spaziale}}, pensavo che sarebbe utile impelmentare la funzione di conta delle dichiarazioni filtrandole per un dato qualificatore o per l'assenza di esso. Che ne dite? Se lo ritenete opportuno posso provarci (se ci riesco)... --Adert (msg) 14:03, 2 giu 2016 (CEST)Rispondi

[@ Adert] Ciao, andrebbe solo estesa la funzionalità del template {{WikidataN}}, tramite getClaims. Solo un attimo e lo aggiungo (aggiungo anche la precisione al secondo per il tipo time). --Rotpunkt (msg) 15:11, 2 giu 2016 (CEST)Rispondi
[@ Adert] Ho esteso la funzionalità di {{WikidataN}} (diff e diff), guarda se ora ti è sufficiente per quello che volevi fare.
Riguardo alla precisione in secondi per il tipo "data e ora", avevo capito che non riuscissi a leggerla, perché avevo dato per scontato che si potesse inserire anche ora/minuti/secondi invece non si può, ed è quello credo a cui tu ti riferissi.
Prima di inoltrarmi in ricerche chiederei a [@ ValterVB] se per caso sa qual è lo stato attuale di Wikidata per l'inserimento di valori di tipo "data e ora" definendo anche ore, minuti e secondi. È normale che non si possano inserire? Infatti anche il menu di scelta della precisione non va più in basso del "giorno". --Rotpunkt (msg) 16:21, 2 giu 2016 (CEST)Rispondi
Inizialmente era possibile tramite API, poi l'hanno impedito, c'è un ticket su phabricator. --ValterVB (msg) 16:36, 2 giu 2016 (CEST)Rispondi
Ah grazie! Ci stavo arrivando da d:Help:Dates, dalla cui sezione "Known issues" era risalito a phab:T87764, e poi il tuo phab:T57755. [@ Adert] a questo punto non ci rimane che continuare con la solita precisione al "giorno". --Rotpunkt (msg) 16:41, 2 giu 2016 (CEST)Rispondi
già, speriamo che lo implementino. Andando avanti con il template {{Infobox missione spaziale}} (e soprattutto quando ci sarà da mettere mano a {{Astronauta}}, avrò bisogno di qualche "prelievo" da Wikidata più complesso e realizzato ad hoc; secodo voi è una buona idea creare un modulo apposito dove inserire una collezione di script che gestiscano alcuni aspetti delle integrazioni tra wikidata e le voci di astronautica? --Adert (msg) 17:50, 2 giu 2016 (CEST)Rispondi
Oltre una certa complessità è normale fare un modulo ad hoc, vedi Modulo:Eruzione, Modulo:Infobox aeroporto, ... Certo più si riesce ad utilizzare solo il template Wikidata più avremo un sistema flessibile, ma fino a un certo limite comunque. Eventualmente scrivi qui cosa vuoi ottenere da Wikidata e ti posso dire se secondo me è ottenibile con l'attuale template Wikidata (con eventuali minime aggiunte) o se necessita sicuramente di un modulo a parte. --Rotpunkt (msg) 18:17, 2 giu 2016 (CEST)Rispondi
Beh, sicuramente gli aspetti più compelssi riguarderanno l'equipaggio. Ad esempio vorrei creare un template che illustri l'equipaggio di una missione (dunque chi sale, chi scende, la loro qualifica, se fanno parte di una expedition, l'agenzia di provenienza, la nazionalità...); sul template {{astronauta}} ci sarebbe da elencare tutte le missioni a cui hanno partecipato, ordinandole cronologicamente, aggiungendo il logo e possibilmente distinguendo tra missione ed expedition. Nel template infobox missione spaziale, potrebbe essere buona cosa che il dato di ritorno da wikidata "Space Shuttle Columbia", "Space Shuttle Discovery",... venga trasformato in [[space shuttle Columbia|Columbia]]; bisogna fare il conto del numero di membri di equipaggio di una missione, considerando chi sale e chi scende (questo si potrebbe fare anche con un po' di funzioni parser...). Tutti questi sono solo alcuni esempi che mi vengono in mente adesso. E ancora non sto considerando le missioni lunari e interplanetarie!! Già che ci sono ti chiedo una cosa: nel testo multilingua (utilizzato come qualificatore) coem faccio a ritornare solo il testo in italiano? Mi tornerebbe comodo per mettere le didascalie dei membri dell'equipaggio su Wikidata. Grazie ancora di tutta la tua disponibilità! --Adert (msg) 18:47, 2 giu 2016 (CEST)Rispondi
[@ Adert] per un'idea delle missioni che gli astronauti hanno fatto, lette da Wikidata, puoi guardare questa lista che si aggiorna automaticamente ogni 24 ore se ci sono variazioni o manualmente cliccando sul link a destra "Aggiorna manualmente". Volendo man mano che si creano le proprietà si possono aggiungere alla tabella. --ValterVB (msg) 21:33, 2 giu 2016 (CEST)Rispondi
Grazie, molto belle le tue liste! --Adert (msg) 23:16, 2 giu 2016 (CEST)Rispondi

[ Rientro] [@ Adert] Riguardo al testo multilingua finora era servita solo l'operazione di esclusione l'italiano. Ho quindi ampliato con due nuovi parametri: ora per includere solo l'italiano puoi usare includelang=it.

Riguardo agli altri esempi che hai fatto per l'utilizzo di Wikidata, guardiamoli uno per volta. Ho iniziato dal template {{Infobox missione spaziale}}. Qui mi sembra che potrebbe bastare un sottotemplate (Template:Infobox missione spaziale/Shuttle), utilizzato così. I due parametri spacecraft_name e shuttle mi paiono mutualmente esclusivi, corretto? Ho testato con le voci Sojuz 4 (parametro spacecraft_name) e STS-2 (parametro shuttle) . Ti va bene così? --Rotpunkt (msg) 11:44, 3 giu 2016 (CEST)Rispondi

Grazie mille, splendido lavoro! Non avevo pensato ad un sottotemplate. Ora mi fermerei con le nuove implementazione perché vorrei rendere effettive le varie modifiche sui template e togliere i parametri rindondati dalle pagine di Wikipedia, perlomeno dalle missioni Shuttle e Sojuz. Ci vorrà un po' di tempo. --Adert (msg) 12:22, 3 giu 2016 (CEST)Rispondi
Ok grazie! Riprenderemo allora quando sarà ora, ciao. --Rotpunkt (msg) 13:07, 3 giu 2016 (CEST)Rispondi
Scusa se ti tompo di continuo, ma non sono riuscito a fare una cosa, non so se sia ancora da implementare o io che non ci riesco. Vorrei ottenere il valore di uno statement che ha un qualificatore. Cioè, filtrare il template {{WikidataQ}} per statement. Per fare un esempio, se io cerco i qualificatori "numero d'ordine" per l'astronauta Jim Lovell con il codice {{WikidataQ|P450|P1545|from=Q111240}}, ottengo: 1, 2, 3 e 4, cioè tutti i numero cronologici delle sue missioni, ma se volessi sapere, ad esempio, che numero d'ordine ha la missione Apollo 8, come posso fare? L'altra possibilità sarebbe fare i confronti con le date di lancio, ma per semplificare con wikidata avevamo pensato di mettere i numero di ordine per avere la successione delle missioni. Ciao! --Adert (msg) 18:35, 4 giu 2016 (CEST)Rispondi
Ciao, per risponderti dovrei solo sapere il fine ultimo qual è. Ti serve sapere il numero d'ordine di una missione particolare (Apollo 8), di tutte e soprattutto per cosa? Per visualizzarle tutte nell'infobox ordinate o per altro? --Rotpunkt (msg) 19:09, 4 giu 2016 (CEST)Rispondi
E' per un futuro template che ho in mente. L'idea sarebbe che da una missione spaziale possa risalire al numero d'ordine di quella missione per il data astronauta, cioè, ad esempio in Apollo 13 devo avere 4 per quanto riguarda Lovell, 1 per Swigert e 1 per Haise (come avviene in tutte le missioni astronautche, ma non in automatico). Spero di essermi spiegato. Comunque niente di urgente! --Adert (msg) 19:14, 4 giu 2016 (CEST)Rispondi

[ Rientro] Ok, allora: sarebbe meglio aggiungere a WikidataQ un parametro di ricerca per valore della dichiarazione (attualmente ha solo gli stessi parametri del template Wikidata). Ma WikidataQ permette comunque già di specificare l'indice della dichiarazione (parametro "n"). Quindi provvisoriamente puoi fare così: con {{WikidataIdx}} ottieni l'indice della dichiarazione e poi la riutilizzi con {{WikidataQ}} nel parametro "n":

  • {{WikidataQ|P450|P1545|n={{WikidataIdx|P450|Q182252|from=Q111240}}|from=Q111240}} dove Q182252 è Apollo 13.

Con l'aggiunta del nuovo parametro (sarà qualcosa come statementval) si scriverà più brevemente:

  • {{WikidataQ|P450|P1545|statementval=Q182252|from=Q111240}}

Per ora potresti usare l'accoppiata WikidataIdx+WikidataQ, il primo esempio. --Rotpunkt (msg) 19:40, 4 giu 2016 (CEST)Rispondi

[@ Adert] Un'ultima cosa importante, il modulo ha tre funzioni _getClaims, _formatStatement e _formatQualifiers (sono le prime tre funzioni all'inizio della sezione API) che ti permettono di iterare sulle varie dichiarazioni di una stessa proprietà. A differenza delle altre funzioni esposte dal modulo non servono per implementare un template ma per facilitare l'utilizzo di Wikidata da altri moduli. Come esempio di utilizzo puoi guardare la funzione getWikidata in Modulo:Infobox_aeroporto, ora comunque le aggiungo al manuale. --Rotpunkt (msg) 19:51, 4 giu 2016 (CEST)Rispondi
Grazie mille di tutto! Con i tuoi consigli sono riuscito a buttare giù la prima bozza del modulo che vorrei creare (Modulo:Sandbox/Adert) che mi servirà per elencare tutti i partecipanti ad una missione. Mancano alcune cose (nazionalità degli astronauti quando sono diverse, agenzia dell'astronauta quando è diversa da eualla che ha operato la missione, gestione dei casi in cui vi è differenza tra astronauti che partecipano al decollo e all'atterraggio), ma un po' alla volta credp che riuscirò a fare tutto. Tuttavia, parlo in generale, mi sembra che ancora Wikidata si sottoutilizzato nei progetti Wikipedia, in particolare dove potrebbe avere una grande impatto... --Adert (msg) 15:42, 8 giu 2016 (CEST)Rispondi
Prego! Adert, però devo essere sincero, quel codice magari ti funziona, però è davvero mooooolto da sistemare. Dal punto di vista della buona programmazione ha davvero un mare di problemi, se vuoi lo guardiamo assieme. Posso farti un esempio di come si dovrebbe scrivere la stessa funzionalità. --Rotpunkt (msg) 19:23, 8 giu 2016 (CEST)Rispondi
Prima lasciami finire, così ho le idee più chiare di quello che vorrei ottenere. A tal proposito, mi è venuta in mente una opzione che potrebbe tornare utile. Ad esempio, con {{WikidataLink|Q220}}, otteniamo Roma, già formattato come wikilink. Si potrebbe ottenerela senza il link in modo che, ad esempio, possa essere così: [[{{WikidataLink|Q220}|la capitale italiana]]? --Adert (msg) 19:50, 8 giu 2016 (CEST)Rispondi
Non ho capito solo cosa intendi con "senza il link": forse vuoi dire ottenere solo il sitelink? Gli elementi Wikidata hanno i sitelink (ossia i titoli delle voci a cui sono collegate nelle varie lingue) e le label (ossia il nome che può essere impostato tramite l'interfaccia web e che si usa per creare i piped wikilink, quando non corrisponde esattamente al sitelink, per esempio per una disambiguazione con parentesi). Da Lua per ottenere questi due dati ci sono mw.wikibase.sitelink e mw.wikibase.label. Quindi basta: mw.wikibase.sitelink('Q220') che userai per creare il piped wikilink. Oppure ti serve proprio in un template? --Rotpunkt (msg) 20:12, 8 giu 2016 (CEST)Rispondi

#property

Poco inerente. Ma di preciso, dove è implementato {{#property}}? Dove sta la sua documentazione? --Valerio Bozzolan (msg) 21:47, 19 feb 2017 (CET)Rispondi

Credo sia integrato direttamente nell'estensione Wikibase, puo trovare qualcosa in questa pagina --ValterVB (msg) 22:07, 19 feb 2017 (CET)Rispondi

Istanze che non s'istanziano

Domanda. Ma perchè {{WikidataIstanza|Q341|Q1130645}} non dà 1 nella voce DotNetNuke (d:Q1251148)? E.g.: "". --Valerio Bozzolan (msg) 02:26, 28 feb 2017 (CET)Rispondi

P.S. A dirla tutta non va manco con {{WikidataIstanza|Q341}}. E.g.: "" --Valerio Bozzolan (msg) 02:29, 28 feb 2017 (CET)Rispondi
Ciao, se provi a scrivere in DotNetNuke {{#property:P31}} e fai anteprima vedrai che otterrai solo content management system (Q131093). L'altro valore di P31 software libero (Q341) è ignorato perché content management system (Q131093) è stato impostato come "preferito" (è quella freccetta posta subito alla sinistra), probabilmente inavvertitamente, o per errore non conoscendo il significato diff. Basta che la reimposti con classificazione "normale". --Rotpunkt (msg) 10:54, 28 feb 2017 (CET)Rispondi
Ho sistemato anche su Wikidata, non aveva senso avere come istanza :Sowtware libero, per questo esiste la prorprità sul tipo di licenza P275. --ValterVB (msg) 13:06, 28 feb 2017 (CET)Rispondi
Sicuro? La maggior parte dei software che incontro hanno instanceof free software. --Valerio Bozzolan (msg) 13:51, 28 feb 2017 (CET)Rispondi
Diciamo che ne sono ragionevolmente sicuro, ma per sicurezza ho preferito chiedere :) Vediamo le risposte. --ValterVB (msg) 18:05, 28 feb 2017 (CET)Rispondi
(Ho letto la risposta) Quindi per sapere se una voce è software libero meglio cercare fra i valori della licenza (P275). Detto ciò, come mi consigliereste di precedere? Con un pre-noto set di licenze libere (alla fine sono una dozzina)... o più "Wikidata-oriented" richiedendo a sua volta da ogni singola licenza trovata tipo GNU GPL v3 (Q10513445) se ha istanza di (P31) di licenza di software libero (Q3943414)? E nel secondo caso, non sarebbe richiesto il parametro from=, sconsigliato in quanto funzione dispendiosa? --Valerio Bozzolan (msg) 00:28, 2 mar 2017 (CET)Rispondi
Non so cosa devi fare ma se lo devi usare in un template riporti direttamente la licenza indicata. Puoi vedere come è attualmente utilizzato nel template {{Software}} --ValterVB (msg) 08:15, 2 mar 2017 (CET)Rispondi
XD Sono un po' spiazzato perchè stiamo parlando proprio del {{Software}} che sto (poverino) scarnificando da molti giorni (e che appunto fra l'altro non ho ancora ricevuto un solo feedback... significa che tutto funziona? asd.) sviluppando Modulo:Software per iniziare (pian piano, eh!) ad integrare i dati specificati dal template con quelli in Wikidata. Nello specifico Modulo:Software#isFreeSoftware sta già operando in molte voci che non specificano SoftwareLibero=sì/no. Ad esempio se vai in Ekiga e levi SoftwareLibero=, dall'anteprima noterai che è come se ci fosse. Anteponendo ciò, ripongo la domanda 00:28, 2 mar 2017 (CET): per fruire dei valori della licenza (P275) per sapere se è software libero o meno, è meglio conoscerne valori noti delle licenze libere e di quelle non libere hardcodandoli in una configurazione it.wiki, oppure mi suggerireste di leggere tutto da Wikidata, fruendo di funzioni probabilmente dispendiose per leggere il secondo livello? --Valerio Bozzolan (msg) 10:04, 2 mar 2017 (CET)Rispondi
Non lo so, io ho solo verificato se era una proprietà utilizzata e ho visto che è usata si ain {{software}} che in {{Linguaggio di programmazione}}, e ho pensato fossero corrette, non pensavo che stessi lavorando su un template già utilizzato. Queste prove è sempre meglio farle in una sandbox se no si rischia di fare casini. Comunque il parametro from lo puoi utilizzare. --ValterVB (msg) 13:07, 2 mar 2017 (CET)Rispondi
Comunque sìsì, ho operato prima dal Template:Software/Sandbox? diff86159988 ;) Procedo allora fruendo del from che a lungo termine è meglio, sebbene sia potenzialmente dispendioso. --Valerio Bozzolan (msg) 16:43, 2 mar 2017 (CET)Rispondi

getClaims: tutti

Non ho capito una cosa. local function getClaims() dovrebbe eventualmente filtrare per rank best / normal / preferred. Di fatto però non vedo come si possa evitare tale filtro. --Valerio Bozzolan (msg) 21:37, 3 mar 2017 (CET)Rispondi

Mi spiego meglio: mi aspetterei che getClaims() abbia la possibilità di ritornare tutti i valori, invece filtra sempre per qualche rank specificato, escludendo quindi sempre qualcosa. --Valerio Bozzolan (msg) 14:55, 5 mar 2017 (CET)Rispondi
È corretto che il default sia il rank best, esattamente come si comporta #property, altrimenti si dovrebbe aggiungere rank=best per ogni singolo utilizzo del trmplate Wikidata. --Rotpunkt (msg) 17:04, 5 mar 2017 (CET)Rispondi
Sì, ma quello che voglio dire io è: posso eventualmente evitare di filtrare per rank? Posso volerli tutti? Ora come ora no, vero? Nel caso, si può aggiungere un parametro norank o qualcosa del genere? :) --Valerio Bozzolan (msg) 17:36, 5 mar 2017 (CET)Rispondi
Il fatto è che non dovresti mai avere bisogno di leggerli tutti. L'unico caso, mai usato finora, in cui potresti volere leggere esplicitamente il solo rank normal è per conoscere, per esempio, i passati sindaci di una città o le precedenti versioni di un software (in entrambi i casi il corrente è preferred, i passati sono normal). Se proprio stai facendo una richiesta "storica", fai una richiesta per i preferred e una per i normal (pure per deprecated se ti serve). --Rotpunkt (msg) 17:47, 5 mar 2017 (CET)Rispondi

Generalizzare InstanceOf

Sempre io :) Si potrebbe creare una funzione che generalizzi _instanceOf()? Perchè oltre che istanza di (P31) c'è anche ad esempio sottoclasse di (P279). --Valerio Bozzolan (msg) 15:16, 6 mar 2017 (CET)Rispondi

Penso ad esempio a:
function p._propertyHasEntity(property, args)
	local statements = p._getProperty( {property, from = args.from, formatting = 'raw' }, true)
	if statements then
		for _, statement in ipairs(statements) do
			for _, entityId in ipairs(args) do
				if statement == entityId then
					return true
				end
			end
		end
	end

	return false
end

function p._instanceOf(args)
	return p._propertyHasEntity('P31', args)
end

function p._subclassOf(args)
	return p._propertyHasEntity('P279', args)
end

--Valerio Bozzolan (msg) 15:26, 6 mar 2017 (CET)Rispondi

[↓↑ fuori crono]   Fatto --Valerio Bozzolan (msg) 10:49, 28 mar 2017 (CEST)Rispondi
Invitando a prendere in considerazione questo problema, aggiungo un'altra domanda :) non bisognerebbe impostare args.from = nil, una volta letto? O è un don't care? --Valerio Bozzolan (msg) 20:00, 7 mar 2017 (CET)Rispondi

formatEntityIdShort

Si potrebbe aggiungere una variante di formatEntityId(entityId) che abbia la label uguale a nome in breve (P1813). --Valerio Bozzolan (msg) 01:06, 15 mar 2017 (CET)Rispondi

Problema lentezza mw.wikibase.getEntity

Lavorando sul Modulo:Collegamenti esterni mi sono accorto di un grosso problema della fondamentale funzione mw.wikibase.getEntity fornita da mw:Extension:Wikibase Client/Lua. Quando la funzione è richiamata più volte durante l'esecuzione di un modulo (esempio dal modulo:Collegamenti esterni), specificando lo stesso elemento Wikidata, è vero sì che conta come 1 sola funzione expensive ("Loading entities doesn't count as expensive if the same entity is loaded twice during a module run") ma il tempo di esecuzione è alto, e soprattutto è direttamente proporzionale a quante proprietà possiede l'elemento.

Per evidenziare il problema ho creato il modulo Modulo:Sandbox/Rotpunkt/TestEntity. Prova di utilizzo in Utente:Rotpunkt/Sandbox12: si vede che per eseguire 300 volte mw.wikibase.getEntity con lo stesso elemento Wikidata ("Q38", l'Italia) impiega ben 6,5 secondi! (dei 10 totali che abbiamo a disposizione). Se invece di Q38 si usa un elemento Wikidata più piccolo (esempio Q2352616), impiega allora 0,1 secondi invece di 6,5.

Il problema posso risolverlo facilmente creando una cache degli entityId già richiesti nel Modulo:Wikidata (soluzione vedo già adottata in frwiki), però mi chiedo perché non lo faccia già mw:Extension:Wikibase Client, che saprà benissimo che la stessa entity è già stata richiesta, e quindi non dovrebbe ricreare la table tutte le volte. Pingo per conoscenza [@ Moroboshi, Sakretsu, Valerio Bozzolan, ValterVB]. --Rotpunkt (msg) 14:27, 9 dic 2017 (CET)Rispondi

Ma ogni chiamata del modulo non è indipendente dalle precedenti anche se fatta nella stessa pagina ? --Moroboshi scrivimi 14:33, 9 dic 2017 (CET)Rispondi
Ciao, mi sto riferendo a quando si usa il modulo:Wikidata da un altro modulo. Esempio il modulo:Collegamenti esterni ha caricato il modulo:Wikidata tramite mWikidata = require('Modulo:Wikidata'). Ora esegue 300 volte una funzione mWikidata.nomeFunzione che al suo interno contiene mw.wikibase.getEntity. La funzione mw.wikibase.getEntity (quando usata con lo stesso elemento Wikidata) dovrebbe impiegare quasi lo stesso tempo che la chiami 1 o 300 volte, invece, il richiamare addirittura unicamente quella funzione 300 volte, come si vede nel modulo di test, richiede anche 6,5 secondi. --Rotpunkt (msg) 14:38, 9 dic 2017 (CET)Rispondi
Sbaglo o dice anche "However, due to restrictions in the caching, if more than 14 other entities are loaded inbetween, the entity must be fetched again, which then counts as expensive." Non è questo i lproblema? --ValterVB (msg) 14:49, 9 dic 2017 (CET)Rispondi
Non è questo il caso perché non carichiamo "other entities" ma sempre la stesso elemento Wikidata (nell'esempio Q38), infatti vedi che in Utente:Rotpunkt/Sandbox12 il numero di funzioni expensive vale sempre "1". Tutto il discorso è nato proprio sul fatto di quando mw.wikibase.getEntity si usa con lo stesso elemento Wikidata, l'ho chiarito nel primo post. --Rotpunkt (msg) 14:54, 9 dic 2017 (CET)Rispondi
Il dubbio ce lo avevo, ma mi sembrava strana quella frase subito dopo aver detto che caricare lo stesso item 2 volte non è un problema, pensavo a un errore, quel "Hower" mi ha un po' confuso. Se non ci dovrebbero essere limiti magari è il caso di segnalarlo nella pagina di discussione --ValterVB (msg) 15:10, 9 dic 2017 (CET)Rispondi
La soluzione è semplice ed è come quella che ho scritto ora in Modulo:Sandbox/Rotpunkt/TestEntityCached. Basta sostituire in Utente:Rotpunkt/Sandbox12 TestEntity con TestEntityCached e si vede che il tempo di esecuzione passa da 6,5 secondi a 0,1 secondi. Io la adotterei subito in Modulo:Wikidata, darà già da subito dei miglioramenti nel tempo di salvataggio e anteprima in alcune voci, e nel frattempo apro una segnalazione su phabricator indicando Modulo:Sandbox/Rotpunkt/TestEntity e Utente:Rotpunkt/Sandbox12 come esempi. --Rotpunkt (msg) 15:17, 9 dic 2017 (CET)Rispondi
Per me è OK, mi sembra chiaro il funzionamento. --ValterVB (msg) 15:29, 9 dic 2017 (CET)Rispondi
[× Conflitto di modifiche] Semplice per voi :-) Io l'ho capito solo ora che ho visto il codice il perché del table. La segnalazione mi pare doverosa, ma comunque ho un dubbio: quando carico il modulo con Q38, il tempo di utilizzo di Lua mi varia dai tre ai quattro secondi (mai 6.5). La differenza dipende anche dal browser o dal lato hardware del singolo utente? Mai possibile che per alcuni un modulo possa andare in timeout, mentre per altri no?--Sakretsu (炸裂) 15:32, 9 dic 2017 (CET)Rispondi
Anche a me adesso (uso l'anteprima di Utente:Rotpunkt/Sandbox12 e poi guardo la tabella al fondo), dipende solo dal carico di lavoro del server in quel momento, è indipendente dal client. Questo problema credo sia molto circoscritto, solo alle pagine che usano centinaia di mw.wikibase.getEntity, come il modulo Collegamenti esterni, e quando l'elemento Wikidata collegato è particolarmente grande. --Rotpunkt (msg) 15:52, 9 dic 2017 (CET)Rispondi
Ah ecco, mi sembrava strano. Comunque ovviamente per me puoi procedere.--Sakretsu (炸裂) 16:04, 9 dic 2017 (CET)Rispondi
Avevo dimenticato in Modulo:Sandbox/Rotpunkt/TestEntityCached la gestione di entityId = nil (significa che ci si riferisce all'elemento Wikidata collegato alla voce corrente) e del caso in cui la voce non abbia un elemento Wikidata collegato. Ho aggiunto i due casi e verificato che il tempo di esecuzione rimane sempre a 0,1 secondi (getEntityIdForCurrentPage è ininfluente). Inizio ad aggiungerlo a Modulo:Wikidata/sandbox. --Rotpunkt (msg) 16:12, 9 dic 2017 (CET)Rispondi

[ Rientro] Fatto nella sandbox del modulo (diff). Ho quindi provato subito con il template {{Collegamenti esterni}}: nella Utente:Rotpunkt/Sandbox18 si vede che il tempo di esecuzione è ora circa 0,2 secondi. Con la versione attuale (sostiture "{{Collegamenti esterni/Sandbox" con "{{Collegamenti esterni") impiega invece mediamente 4 secondi. Faccio gli ultimi test e poi riporto la sandbox del modulo Wikidata sulla versione principale. --Rotpunkt (msg) 16:59, 9 dic 2017 (CET)Rispondi

  Fatto diff. Segnalerò comunque su phabricator il problema di mw.wikibase.getEntity, che quando risolto renderà superflua la funzione getEntityCached (il risultato è comunque pressoché identico sia che la cache la teniamo noi nel modulo che la tengano loro nell'estensione). --Rotpunkt (msg) 18:05, 9 dic 2017 (CET)Rispondi
Dato lo scopo specifico, per curiosità, giusto per fare emergere altri problemi, qualcuno con niente da fare proverebbe a ripetere 300 volte getBestStatements( entityId, propertyId ) o altri amici simili? --Valerio Bozzolan (msg) 18:58, 9 dic 2017 (CET)Rispondi
Dopo provo, intanto c'è un problema, emerso con Mosella (dipartimento). Il solo salvataggio di un puntatore alla table restituita da mw.wikibase.getEntity sembra che faccia aumentare la memoria Lua che utilizziamo, non del puntatore, ma della dimensione della table, così che in certe voci come quella indicata (che ha un elemento con 800 valori per la proprietà P150) dà problemi di memoria (ma in generale l'utilizzo della memoria Lua aumenta in tutte le voci). Bisognerà che questo utilizzo di mw.wikibase.getEntityCached sia fatto solo su richiesta, tramite un parametro, non di default, altrimenti dà il problema della memoria Lua. Ritorno alla versione precedente, aggiungo un nuovo parametro (faccio anche i test con altre funzioni mw.wikibase). --Rotpunkt (msg) 19:18, 9 dic 2017 (CET)Rispondi
Non so quanto cambi, ma invece di un meccanismo di cache generico per più entity da mettere in tabella, semplicemente esportare un oggetto che legga una volta l'entity e che venga richiamato per ulteriori letture di dati diversi? Alla fine nella stragrande maggioranza dei casi le voci leggono solo l'entity di wikidata corrispondente alla voce specifica in cui si trova il richiamo del modulo (non foss'altro perchè metterci ad aggiungere letture generiche di wikidata farebbe salire rapidamente le operazioni expensive).--Moroboshi scrivimi 19:40, 9 dic 2017 (CET)Rispondi
@Moroboshi, vuoi dire che un modulo che usa il Modulo:Wikidata e che vuole usare il caching dovrebbe salvarsi (dopo averla ottenuta, non c'è attualmente la funzione) la table entity da qualche parte, per poi ripassarla al modulo per ogni chiamata successiva? Si può fare ma mi sembra più semplice passare un boolean cache=true. Con l'ultima modifica che ho fatto (diff) basta aggiungere (cache=true) se si vuole riutilizzare la stessa table entity. --Rotpunkt (msg) 20:16, 9 dic 2017 (CET)Rispondi
Provo a fare diversamente come dici, penso. Ottenere l'entity è semplice, basta fare mw.wikibase.getEntity. Posso aggiungere invece di cache un parametro "entity": un modulo che usa Modulo:Wikidata e che vuole riusare più volte la stessa entity, farà esso stesso "mw.wikibase.getEntity" e poi la passarà nel nuovo parametro "entity" nelle chiamate successivo. Così, come dici, eliminiamo il bisogno di una cache (che sarebbe stata comoda se non fosse per il problema della memoria). --Rotpunkt (msg) 20:22, 9 dic 2017 (CET)Rispondi
[@ Moroboshi] Una semplice modifica così, nei tre utilizzi di mw.wikibase.getEntity si dà la precedenza al parametro "entity" se valorizzato (che il chiamante si crea con una chiamata a mw.wikibase.getEntity), basta questo. Parametro che, ricordo nel caso qualcuno leggesse solo da qui, serve solo esclusivamente per un modulo che debba usare getProperty decine di volte con lo stesso elemento Wikidata, come fa il Modulo:Collegamenti esterni, e magari neanche più necessario in futuro se risolvessero il problema direttamente nell'estensione Wikibase client. --Rotpunkt (msg) 21:08, 9 dic 2017 (CET)Rispondi
Ho concluso allora con l'approccio semplice suggerito da Moroboshi, così, e utilizzato già dal Modulo:Collegamenti esterni. Spero comunque che in futuro non sia più necessario questo parametro. --Rotpunkt (msg) 22:58, 9 dic 2017 (CET)Rispondi

[ Rientro] @Valerio Bozzolan Ho testato le due funzioni getBestStatements e getAllStatements, e non hanno né il problema della lentezza né fanno aumentare la memoria per Lua, in quanto restituiscono solo la parte dell'entity relativa alla proprietà richiesta. Ho provato a sostituirle a mw.wikibase.getEntity nel modulo:Wikidata/sandbox (inizio della funzione getClaims) e penso che ci siamo, non c'è più bisogno del parametro entity, è veloce e diminuisce l'occupazione di memoria in modo significativo. Continuo a fare test, se non noto problemi passerò a questa versione. --Rotpunkt (msg) 14:01, 10 dic 2017 (CET)Rispondi

Lingua su proprietà monolingua

Nel loop di questo modulo ho necessità di avere la lingua, oppure filtrare direttamente solo per lingua italiana, in maniera che nell'ultima colonna di questa tabella ci siano solo le etichette in lingua italiana. Aiutino? :) --ValterVB (msg) 17:34, 6 gen 2018 (CET)Rispondi

@Valter Il modulo prevede già i parametri includelang/excludelang, li trovi descritti nel manuale template Wikidata, cerca "Per il solo tipo testo monolingua". Dovrebbe bastarti il template Wikidata quindi, senza scrivere un modulo, esempio per Gibilterra: {{Wikidata|P1549|from=Q1410|includelang=it|separator=<br>|conjunction=<br>}}. Se invece hai proprio bisogno di Lua te lo riguardo. --Rotpunkt (msg) 18:13, 6 gen 2018 (CET)Rispondi
@Rotpunkt Credo ci voglia il modulo perché ho la necessità di avere le 4 voci corrette (maschile singolare, maschile plurale, femminile singolare e femminile plurale) ai primi 4 posti + eventuali altri valori in italiano che dovrei poi eliminare. Mi serve per controllare che non ci siano errori, e alla fine vorrei ottenere da Wikidata una cosa simile a Template:AggNaz/man/Riepilogo. Comunque non c'è fretta. --ValterVB (msg) 18:21, 6 gen 2018 (CET)Rispondi
Ah ok, se devi fare controlli particolari su P518... Per filtrare sulla lingua, aggiungi "includelang = 'it'" al parametro "args" di getClaims. --Rotpunkt (msg) 18:27, 6 gen 2018 (CET)Rispondi
Risolto, grazie anche a [@ Sakretsu] che ci ha messo le mani. --ValterVB (msg) 21:10, 6 gen 2018 (CET)Rispondi
@ValterVB Sì scusa, "di _formatStatement" non di getClaims :) Comunque lo riguardo, l'ho detto senza controllare perché logicamente dovrebbe stare in getClaims, vedo se c'erano ragioni storiche perché andasse usato in una e non nell'altra funzione. --Rotpunkt (msg) 21:39, 6 gen 2018 (CET)Rispondi
Pensavo di aver sistemato con l'ultima modifica, ma non basta, perché che deve funzionare anche per filtrare i qualificatori (il cui unico utilizzo con includelang/excludelang è per la didascalia in italiano delle immagini lette da Wikidata, caso ancora poco usato ma che c'è e deve funzionare). Mi richiede ancora un po' di lavoro. Inoltre ho trovato che anche per i qualificatori c'è una selezione in base al parametro "nq" che è rimasta nella parte di formattazione, e va spostata per lo stesso motivo. Appena ho fatto ti riaggiorno il modulo, il funzionamento rimane sempre identico. --Rotpunkt (msg) 23:57, 6 gen 2018 (CET)Rispondi
Ho ritrovato l'origine del fatto per cui la selezione dei qualificatori (possibile solo con il parametro nq o con includelang/excludelang) era fatta nella parte di formattazione. I qualificatori fino ai parametri nq/includelang/excludelang non avevano la possibilità di essere filtrati, ma solo visualizzati, con la dovuta formattazione, o non visualizzati. Quindi esisteva solo la funzione formatQualifiers. Andrebbe invece aggiunta anche una getQualifiers (rimuovendo di conseguenza il parametro "claim" di formatQualifiers). È una modifica un po' lunga, che necessita l'aggiornamento di un paio di altri moduli che usano formatQualifiers, ma penso che valga la pena di farla per rendere anche più flessibile il codice a future aggiunte di parametri che agiscono sulla selezione dei qualificatori. La metto in cantiere, non so ancora esattamente quanto ci vorrà. --Rotpunkt (msg) 12:23, 7 gen 2018 (CET)Rispondi

_getClaims : Come controllare se non esiste la proprietà?

In Modulo:Sandbox/ValterVB/Tracklist uso la funzione
wdBasatoSu = mWikidata._getClaims('P144', { from = ddato })
per recuperare una proprietà e poi con
if wdBasatoSu then
controllo se la proprietà è presente oppure no. Il problema è che anche se il dato non è presente mi passa sempre il test e quindi prosegue all'interno dell'if. Se invece faccio il testo con
if next(wdBasatoSu) ~= nil then
il test funziona correttamente e rileva correttamente il nil. E' cambiato qualcosa? un po' di tempo fa il primo if era sufficiente per controllare la tabella. --ValterVB (msg) 10:02, 27 gen 2018 (CET)Rispondi

Sì vero grazie, nell'ultimo passaggio alle nuove getBestStatements/getAllStatements ho dimenticato quel controllo. Un momento e lo riaggiungo. Devo aggiungere un test in Modulo:Wikidata/test per la prossima volta. --Rotpunkt (msg) 10:32, 27 gen 2018 (CET)Rispondi
Riguardando il codice c'era in realtà un motivo per il cambiamento. Una volta diversificavo tra:
  • _getClaims che restituiva nil: perché l'elemento o la proprietà Wikidata non esistevano
  • _getClaims che restituiva un sequence Lua vuota: perché non c'erano valori della proprietà che soddisfacevano i filtri passati come argomenti
Questo portava tuttavia, dopo averla usata, a dover spesso scrivere "if claims and #claims > 0" ... Ora che il modulo non usa più getEntity non mi è più possibile fare questa differenza e getBestStatements/getAllStatements restituiscono una sequence Lua vuota anche se la proprietà non esiste. Cosa che alla fine penso sia la soluzione migliore, è giusto che il modulo segua la filosofia della libreria su cui si basa. La funzione _getClaims è richiamata centinaia di volte in una sola voce di Wikipedia, non la posso complicare ulteriormente per fare questa differenza, che neppure le funzioni di libreria fanno. Quindi sostituisci dove hai "if next(wdBasatoSu) ~= nil" con "if #wdBasatoSu > 0". --Rotpunkt (msg) 11:57, 27 gen 2018 (CET)Rispondi
Lascio ancora tuttavia il valore di ritorno nil se proprio la pagina non è collegata a un item (getBestStatements/getAllStatements ricevono come argomento l'identificativo dell'item, quindi è implicito che debba esistere). Quindi sostituisci il "if next(wdBasatoSu) ~= nil" con "if wdBasatoSu and #wdBasatoSu > 0" (a meno che avessi già controllato in precedenza che l'item esiste, per cui basta solo "if #wdBasatoSu > 0"). --Rotpunkt (msg) 12:14, 27 gen 2018 (CET)Rispondi
Tutto chiaro, funziona. --ValterVB (msg) 16:58, 27 gen 2018 (CET)Rispondi

P5061

Stavo aggiornando il modulo alla nuova proprietà simbolo unità (P5061) che sostituirà P558 in cancellazione, quando ho notato che un sistema di fallback delle lingue servirà anche per il template {{Infobox unità}} che usa P558. Aggiungerò un paramtro "fallbacklang", che si aggiungerà ai già esistenti includelang ed excludelang. --Rotpunkt (msg) 10:09, 24 apr 2018 (CEST)Rispondi

snaktype

In seguito alla discussione Discussioni template:Divisione amministrativa#Problemi con stemmi inesistenti presi da wikidata (P94) ho fatto in modo che il filtro snaktype=value ci sia di default. Quindi, di default il modulo non restituisce proprietà, né qualificatori, di tipo "nessun valore" o "valore sconosciuto". Il parametro snaktype non è mai stato usato se non qualche rara volta con appunto value. Da una ricerca che ho fatto sulle apparizioni che c'erano delle suddette scritte (qualche centinaio), non mi sono sembrate mai corrette o intenzionali (ad es. siti ufficiali in cui l'url diventava "nessun valore"). --Bultro (m) 01:49, 29 apr 2019 (CEST)Rispondi

Controllo di ereditarietà ricorsivo

Su Wikidata, l'ereditarietà delle classi è espressa tramite la proprietà sottoclasse di (P279). Per esempio, tramite Wikidata sappiamo che la Germania (Q183) è istanza di (P31) Stato sovrano (Q3624078) e, tramite la propriertà P279 (applicata a quest'ultimo elemento), anche che è un'entità territoriale artificiale (Q15642541).

Tuttavia, mentre la prima dichiarazione può essere verificata tramite {{WikidataIstanza}}, con le attuali funzioni del modulo la seconda non può essere verificata, per cui ho aggiunto qualche riga di codice in sandbox (diff) per sfruttare l'ereditarietà. Ho modificato la funzione _propertyHasEntity perché questo controllo non dovrebbe essere riservato alla proprietà istanza di (P31), ma esteso in generale a tutte le proprietà.

Altro esempio (con la proprietà occupazione (P106)): sappiamo che un'occupazione di Pablo Picasso (Q5593) è pittore (Q1028181) ma, indirettamente, anche artista (Q483501).

[@ Sakretsu, Bultro, Moroboshi], se poteste verificare che non ci sono problemi nel codice.

Qui Ho fatto qualche test.

Qui un esempio reale in cui questa funzione potrebbe essere molto utile (se ne discuteva con [@ Epìdosis]). --Horcrux (msg) 14:29, 21 lug 2019 (CEST)Rispondi

A occhio non dovresti fare una copia (usando mw.clone) di args prima dell'assegnamento:
args.recursion = recursion - 1
e usare la copia di args ? Altrimenti nel ciclo for una volta che raggiungi la massima profondità e azzeri il valore args.recursion lo azzeri anche per tutte le chiamate successive del for.--Moroboshi scrivimi 15:19, 21 lug 2019 (CEST)Rispondi
[@ Moroboshi] Non sono un esperto di Lua ma, dai test di cui sopra (che sembrano funzionare), pare che non ci sia side effect su args e che quindi questo non risulti modificato quando si torna indietro nel call stack. Sbaglio?
Ho provato a dichiarare una variabile local argsCopy = mw.clone(args), decrementarne il campo argsCopy.recursion e passarla all'invocazione ricorsiva della funzione, ma il risultato dei test è identico.
Ovviamente sei libero di modificare la mia sandbox come credi! --Horcrux (msg) 18:02, 21 lug 2019 (CEST)Rispondi
Per quello che so le tabelle sono passate come riferimento, quindi le modifiche si propagano. Facendo un test con un esempio semplice (vedi Modulo:Sandbox/moroboshi3 il valore viene decrementato a ogni chiamata: La chiamata ritorna 1 (dovrebbe ritornare 2 se non ci fossero side effect). Ma in questo momento non riesco a metterci mano (e dovrei studiarmi il modulo, non lo conosco bene).--Moroboshi scrivimi 21:43, 21 lug 2019 (CEST)Rispondi
[× Conflitto di modifiche] Moroboshi intende che così il valore di recursion si esaurisce in profondità. Per esempio, se cerchi d:Q27096213 vedrai che ti servirà impostare 31 nonostante dovrebbe bastare 6. Ogni for deve mantenere il suo numero dopo che i for interni sono terminati, anche se in generale la soluzione del clonare ogni volta args mi sa di overkill.
Comunque prima ragionerei sul limite di 400 entità uniche caricabili per voce. In termini di performance immagino serva a rendere il carico di lavoro sostenibile per Wikidata più che per noi. Ponendo caso che nell'elemento Germania non ci fosse il best rank, con ricorsività infinita già dovremmo caricare le 40 entità uniche di Stato sovrano prima di passare al secondo valore di "istanza di". D'altro canto cercare una sottoclasse piuttosto generica con ricorsività ridotta potrebbe rivelarsi infruttuoso e svilire il meccanismo. Potremmo contare le entità caricate e inserire una categoria di tracciamento oltre una soglia medio-bassa per capire quando e dove c'è il rischio che la combinazione di più template si avvicini troppo al limite--Sakretsu (炸裂) 21:52, 21 lug 2019 (CEST)Rispondi
[@ Sakretsu] Per evitare di clonare args più volte ho implementato la ricorsione in una funzione ausiliaria, ora dovrebbe essere ok. Mi piace l'idea della categoria di tracciamento, potresti pensarci tu? --Horcrux (msg) 01:08, 22 lug 2019 (CEST)Rispondi
Intanto ho semplificato così la funzione. Se riesco domani continuo--Sakretsu (炸裂) 01:03, 23 lug 2019 (CEST)Rispondi
Per la categorizzazione penso che l'opzione migliore sia restituire un booleano, in modo che nei moduli come il Collegamenti esterni si possa leggerne il valore e aggiungere la propria categoria di tracciamento. In merito al t:WikidataIstanza, al momento mi risulta che sia transcluso solo dal t:Opera d'arte. Con le funzioni parser immagino dovremmo prevedere una soluzione meno entusiasmante come uno switch, ma finché sperimentiamo con il Collegamenti esterni ci possiamo pensare con calma.--Sakretsu (炸裂) 15:42, 25 lug 2019 (CEST)Rispondi
[@ Sakretsu] Hey! Hai delle novità? Credi di poter rendere queste modifiche operative? --Horcrux (msg) 11:23, 13 ago 2019 (CEST)Rispondi
Pardon, mi ero fermato perché lato modulo Wikidata non credo ci sia altro da fare. Ho effettuato qualche modifica nella sandbox del Collegamenti esterni per renderlo compatibile. Domani cerco di fare qualche test--Sakretsu (炸裂) 02:22, 19 ago 2019 (CEST)Rispondi
A opera compiuta, segnalo che alla fine ho sostituito il booleano con la tabella contenente gli ID delle entità caricate, in modo che il Collegamenti esterni possa calcolare il numero complessivo delle entità caricate in tutte le chiamate del modulo Wikidata, duplicati esclusi. Al momento, se si supera la soglia delle 100 entità, la voce finisce in Categoria:Voci con template Collegamenti esterni e molte entità Wikidata caricate. La ricorsione ha una profondità pari a 8 che dovrebbe essere più che soddisfacente. Se tutto funziona correttamente, dovrebbe essere possibile lasciare solo i vincoli principali e verificare man mano se qualche voce supera il limite. Se non accade, possiamo aumentare la ricorsione e poi togliere il limite come pianificato.--Sakretsu (炸裂) 00:28, 26 ago 2019 (CEST)Rispondi
A questo punto lascerei per sicurezza un pinghino a [@ Epìdosis]. --Ignazio (msg) 03:04, 26 ago 2019 (CEST)Rispondi

Self-link

Segnalo questo problema. Non mi vengono in mente casi in cui i link alla voce stessa possano essere desiderabili, quindi meglio evitarli alla fonte. Se ho capito bene la fonte è questo modulo. Dovrebbe essere una modifica semplice da effettuare --Horcrux (msg) 12:25, 29 ago 2019 (CEST)Rispondi

Corretto diff107400989. Dato che dovrebbe trattarsi solo di riferimenti autobiografici, ho passato direttamente il sitelink.--Sakretsu (炸裂) 13:19, 29 ago 2019 (CEST)Rispondi

Ricavare un interlink in automatico

Segnalo --Horcrux (msg) 18:04, 29 mar 2020 (CEST)Rispondi

Ritorna alla pagina "Wikidata".