Discussioni modulo:Wikidata: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Annullata la modifica di 87.26.12.197 (discussione), riportata alla versione precedente di Pil56 Etichette: Rollback SWViewer [1.6] |
|||
(134 versioni intermedie di 15 utenti non mostrate) | |||
Riga 183:
== 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 <code>qualifiertype=latest</code>, 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 <code>bestRank=</code> che, se compilato, ritorna lo statement (o il qualifier) con il rank più alto?--[[Utente:Dega180|dega180]] ([[Discussioni utente:Dega180|msg]]) 12:30, 1 mag 2014 (CEST)
: 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? --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 12:44, 1 mag 2014 (CEST)
:: 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:
Riga 201:
== References ==
Sollecitato da [[Utente:Umberto NURS|Umberto NURS]] che ne avrebbe fatto uso, ho aggiunto il supporto alle reference nella sandbox del modulo ([//it.wikipedia.org/w/index.php?title=Modulo%3AWikidata%2Fsandbox&diff=69090580&oldid=65722962 diff]). Ho messo una prova [[Speciale:LinkPermanente/69090770|qui]]. Va bene per Pentium ma non ancora per Londra. Mi servirebbe in pratica sapere ({{ping|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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 12:15, 10 nov 2014 (CET)
:La linea guida delle reference su Wikidata si trova in [[d:Help:Sources]].--[[Utente:Dega180|dega180]] ([[Discussioni utente:Dega180|msg]]) 12:57, 10 nov 2014 (CET)
Riga 207 ⟶ 206:
:::Secondo me dovremmo farci aiutare da qualche esperto di wikidata per far "capire" al modulo quando ci sono i presupposti per utilizzare il template {{tl|Cita testo}}. Per esempio il modulo potrebbe controllare se è compilata la proprietà [[d:Property:P357]] (chiamata "titolo") e in caso affermativo utilizzare il template {{tl|Cita testo}}.--[[Utente:Dega180|dega180]] ([[Discussioni utente:Dega180|msg]]) 13:57, 10 nov 2014 (CET)
::: 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 --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 22:45, 10 nov 2014 (CET)
:::: Come siamo rimasti qui? Perchè l'idea di poter avere un semplice modulo che evochi un {{Tl|Cita testo}} ogni volta che ci sia {{WikidataProp|P1476}}, {{WikidataProp|P854}} e magari anche un {{WikidataProp|P813}} sarebbe già decisamente moltissimo :) --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 21:51, 26 mar 2017 (CEST)
:::::{{ping|Moroboshi|Sakretsu}} Dato che di recente è stata aperta una discussione analoga in [[DP:Coordinamento/Wikidata#Rendere visibili le fonti]], vi pingo per un parere tecnico. --[[User:Horcrux|Horcrux]] ([[User talk:Horcrux|msg]]) 16:47, 4 mar 2021 (CET)
:::::: {{Ping|Horcrux}}, la discussione dove è unificata? Altrimenti discutiamo su 3 posti diversi. -- '''[[User:Blackcat|<span style="font-family:Bookman Old Style,Palatino Linotype,Times New Roman;color:#000">Blackcat</span>]]''' <sup><small>[[File:Ar Icon Contact.svg|15px|link=discussioni utente:blackcat]]</small></sup> 21:09, 4 mar 2021 (CET)
== Sitelink ==
Riga 290 ⟶ 292:
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. --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 12:36, 28 mag 2016 (CEST)
: Scusa Adert, solo una cosa, non ho capito perché stai usando il template Wikidata nella voce ([[Sojuz TMA-18M]]), va usato nel template ([[T:
:: 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). --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 12:54, 28 mag 2016 (CEST)
::: Si fa così allora in questi casi: fai la modifica che vuoi far vedere in [[T:
:::: {{Fatto}} scusa. --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 13:11, 28 mag 2016 (CEST)
::::: Ok aggiungo questo parametro noqualifier. Solo una cosa, questa proprietà "parte coinvolta" è già usata negli elementi Wikidata che riguardano questi voli? --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 13:33, 28 mag 2016 (CEST)
:::::: 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 --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 13:37, 28 mag 2016 (CEST)
::::::: {{fatto}} --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 13:53, 28 mag 2016 (CEST)
{{rientro}} Sempre pensando al template {{tl|
: {{ping|Adert}} Ciao, andrebbe solo estesa la funzionalità del template {{tl|WikidataN}}, tramite getClaims. Solo un attimo e lo aggiungo (aggiungo anche la precisione al secondo per il tipo time). --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 15:11, 2 giu 2016 (CEST)
:: {{ping|Adert}} Ho esteso la funzionalità di {{tl|WikidataN}} ([//it.wikipedia.org/w/index.php?title=Modulo:Wikidata&curid=4503178&diff=81226355&oldid=81185028 diff] e [//it.wikipedia.org/w/index.php?title=Template:WikidataN/man&curid=5209512&diff=81226581&oldid=77336201 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 {{ping|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". --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 16:21, 2 giu 2016 (CEST)
::: Inizialmente era possibile tramite API, poi l'hanno impedito, c'è un [https://phabricator.wikimedia.org/T57755 ticket su phabricator]. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 16:36, 2 giu 2016 (CEST)
:::: 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]]. {{ping|Adert}} a questo punto non ci rimane che continuare con la solita precisione al "giorno". --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 16:41, 2 giu 2016 (CEST)
::::: già, speriamo che lo implementino. Andando avanti con il template {{tl|missione spaziale}} (e soprattutto quando ci sarà da mettere mano a {{Tl|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? --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 17:50, 2 giu 2016 (CEST)
:::::: 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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 18:17, 2 giu 2016 (CEST)
::::::: 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 {{tl|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 <nowiki>[[space shuttle Columbia|Columbia]]</nowiki>; 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à! --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 18:47, 2 giu 2016 (CEST)
:::::::: {{ping|Adert}} per un'idea delle missioni che gli astronauti hanno fatto, lette da Wikidata, puoi guardare [[Utente:ValterVB/Sandbox/Liste/Astronauti|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. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 21:33, 2 giu 2016 (CEST)
:::::::::: Grazie, molto belle le tue liste! --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 23:16, 2 giu 2016 (CEST)
{{rientro}} {{ping|Adert}} Riguardo al testo multilingua finora era servita solo l'operazione di esclusione l'italiano. Ho quindi ampliato con [//it.wikipedia.org/w/index.php?title=Template:Wikidata/man&diff=prev&oldid=81238328 due nuovi parametri]: ora per includere solo l'italiano puoi usare <code>includelang=it</code>.
Riguardo agli altri esempi che hai fatto per l'utilizzo di Wikidata, guardiamoli uno per volta. Ho iniziato dal template {{tl|missione spaziale}}. Qui mi sembra che potrebbe bastare un sottotemplate ([[Template:missione spaziale/Shuttle]]), utilizzato [//it.wikipedia.org/w/index.php?title=Template%3AInfobox_missione_spaziale%2FSandbox&type=revision&diff=81238414&oldid=81235143 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ì? --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 11:44, 3 giu 2016 (CEST)
:: 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. --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 12:22, 3 giu 2016 (CEST)
::: Ok grazie! Riprenderemo allora quando sarà ora, ciao. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 13:07, 3 giu 2016 (CEST)
:::: 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 {{tl|WikidataQ}} per statement. Per fare un esempio, se io cerco i qualificatori "numero d'ordine" per l'astronauta [[Jim Lovell]] con il codice <nowiki>{{WikidataQ|P450|P1545|from=Q111240}}</nowiki>, ottengo: {{WikidataQ|P450|P1545|from=Q111240}}, 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! --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 18:35, 4 giu 2016 (CEST)
::::: 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? --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 19:09, 4 giu 2016 (CEST)
:::::: 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! --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 19:14, 4 giu 2016 (CEST)
{{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 {{tl|WikidataIdx}} ottieni l'indice della dichiarazione e poi la riutilizzi con {{tl|WikidataQ}} nel parametro "n":
* <code><nowiki>{{WikidataQ|P450|P1545|n={{WikidataIdx|P450|Q182252|from=Q111240}}|from=Q111240}}</nowiki></code> dove Q182252 è [[Apollo 13]].
Con l'aggiunta del nuovo parametro (sarà qualcosa come statementval) si scriverà più brevemente:
* <code><nowiki>{{WikidataQ|P450|P1545|statementval=Q182252|from=Q111240}}</nowiki></code>
Per ora potresti usare l'accoppiata WikidataIdx+WikidataQ, il primo esempio. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 19:40, 4 giu 2016 (CEST)
: {{ping|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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 19:51, 4 giu 2016 (CEST)
::: 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... --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 15:42, 8 giu 2016 (CEST)
:::: 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à. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 19:23, 8 giu 2016 (CEST)
::::: 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 <nowiki>{{WikidataLink|Q220}}</nowiki>, otteniamo {{WikidataLink|Q220}}, già formattato come wikilink. Si potrebbe ottenerela senza il link in modo che, ad esempio, possa essere così: <nowiki>[[{{WikidataLink|Q220}|la capitale italiana]]</nowiki>? --[[Utente:Adert|Adert]] ([[Discussioni utente:Adert|msg]]) 19:50, 8 giu 2016 (CEST)
:::::: 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: <code>mw.wikibase.sitelink('Q220')</code> che userai per creare il piped wikilink. Oppure ti serve proprio in un template? --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 20:12, 8 giu 2016 (CEST)
== #property ==
Poco inerente. Ma di preciso, dove è implementato <nowiki>{{#property}}</nowiki>? Dove sta la sua documentazione? --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 21:47, 19 feb 2017 (CET)
: Credo sia integrato direttamente nell'estensione Wikibase, puo trovare qualcosa in [https://www.mediawiki.org/wiki/Extension:Wikibase_Client#Data_transclusion questa pagina] --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 22:07, 19 feb 2017 (CET)
== Istanze che non s'istanziano ==
Domanda. Ma perchè {{Tl|WikidataIstanza|[[d:Q341|Q341]]|[[d:Q1130645|Q1130645]]}} non dà <code>1</code> nella voce [[DotNetNuke]] ([[d:Q1251148]])? E.g.: "{{WikidataIstanza|Q341|Q1130645|from=Q1251148}}". --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 02:26, 28 feb 2017 (CET)
: P.S. A dirla tutta non va manco con {{Tl|WikidataIstanza|[[d:Q341|Q341]]}}. E.g.: "{{WikidataIstanza|Q341|from=Q1251148}}" --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 02:29, 28 feb 2017 (CET)
:: Ciao, se provi a scrivere in [[DotNetNuke]] <nowiki>{{#property:P31}}</nowiki> e fai anteprima vedrai che otterrai solo {{WikidataEl|Q131093}}. L'altro valore di P31 {{WikidataEl|Q341}} è ignorato perché {{WikidataEl|Q131093}} è stato impostato come "preferito" (è quella freccetta posta subito alla sinistra), probabilmente inavvertitamente, o per errore non conoscendo il significato [//www.wikidata.org/w/index.php?title=Q1251148&diff=354601493&oldid=277233553 diff]. Basta che la reimposti con classificazione "normale". --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 10:54, 28 feb 2017 (CET)
::: Ho sistemato anche su Wikidata, non aveva senso avere come istanza :Sowtware libero, per questo esiste la prorprità sul tipo di licenza [[:D:property:P275|P275]]. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 13:06, 28 feb 2017 (CET)
:::: Sicuro? La maggior parte dei software che incontro hanno instanceof free software. --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 13:51, 28 feb 2017 (CET)
::::: Diciamo che ne sono ragionevolmente sicuro, ma per sicurezza [[:D:Wikidata:Project_chat#It's correct instance of (P31)=free software AND license (P275)?|ho preferito chiedere]] :) Vediamo le risposte. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 18:05, 28 feb 2017 (CET)
:::::: (Ho letto la risposta) Quindi per sapere se una voce è software libero meglio cercare fra i valori della {{WikidataProp|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 {{WikidataEl|Q10513445}} se ha {{WikidataProp|P31}} di {{WikidataEl|Q3943414}}? E nel secondo caso, non sarebbe richiesto il parametro <code>from=</code>, sconsigliato in quanto funzione dispendiosa? --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 00:28, 2 mar 2017 (CET)
::::::: 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 {{tl|Software}} --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 08:15, 2 mar 2017 (CET)
:::::::: <small>XD Sono un po' spiazzato perchè stiamo parlando proprio del {{Tl|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 <code>SoftwareLibero=sì/no</code>. Ad esempio se vai in [[Ekiga]] e levi <code>SoftwareLibero=</code>, dall'anteprima noterai che è come se ci fosse.</small> Anteponendo ciò, ripongo la domanda <code>00:28, 2 mar 2017 (CET)</code>: per fruire dei valori della {{WikidataProp|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? --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 10:04, 2 mar 2017 (CET)
::::::::: Non lo so, io ho solo verificato se era una proprietà utilizzata e ho visto che è usata si ain {{tl|software}} che in {{tl|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. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 13:07, 2 mar 2017 (CET)
:::::::::: <small>Comunque sìsì, ho operato prima dal [[Template:Software/Sandbox]]? {{Diff|86159988}} ;)</small> Procedo allora fruendo del <code>from</code> che a lungo termine è meglio, sebbene sia potenzialmente dispendioso. --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 16:43, 2 mar 2017 (CET)
== getClaims: tutti ==
Non ho capito una cosa. <code>local function getClaims()</code> dovrebbe ''eventualmente'' filtrare per rank <code>best</code> / <code>normal</code> / <code>preferred</code>. Di fatto però non vedo come si possa evitare tale filtro. --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 21:37, 3 mar 2017 (CET)
: Mi spiego meglio: mi aspetterei che <code>getClaims()</code> abbia la possibilità di ritornare ''tutti'' i valori, invece filtra sempre per qualche ''rank'' specificato, escludendo quindi sempre qualcosa. --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 14:55, 5 mar 2017 (CET)
:: È 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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 17:04, 5 mar 2017 (CET)
::: 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 <code>norank</code> o qualcosa del genere? :) --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 17:36, 5 mar 2017 (CET)
:::: 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). --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 17:47, 5 mar 2017 (CET)
== Generalizzare InstanceOf ==
Sempre io :) Si potrebbe creare una funzione che generalizzi <code>_instanceOf()</code>? Perchè oltre che {{WikidataProp|P31}} c'è anche ad esempio {{WikidataProp|P279}}. --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 15:16, 6 mar 2017 (CET)
: Penso ad esempio a:
<source lang="lua">
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
</source> --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 15:26, 6 mar 2017 (CET)
: {{Fuori crono}} {{Fatto}} --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 10:49, 28 mar 2017 (CEST)
:: Invitando a prendere in considerazione questo problema, aggiungo un'altra domanda :) non bisognerebbe impostare <code>args.from = nil</code>, una volta letto? O è un ''don't care''? --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 20:00, 7 mar 2017 (CET)
== formatEntityIdShort ==
Si potrebbe aggiungere una variante di <code>formatEntityId(entityId)</code> che abbia la label uguale a {{WikidataProp|P1813}}. --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 01:06, 15 mar 2017 (CET)
== 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 {{ping|Moroboshi|Sakretsu|Valerio Bozzolan|ValterVB}}. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 14:27, 9 dic 2017 (CET)
:Ma ogni chiamata del modulo non è indipendente dalle precedenti anche se fatta nella stessa pagina ? --[[Utente:Moroboshi|<span style="color:#800000;font-weight: bold;">Moroboshi</span>]]<sup> [[Discussioni utente:Moroboshi|scrivimi]]</sup> 14:33, 9 dic 2017 (CET)
::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 <code>mWikidata = require('Modulo:Wikidata')</code>. 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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 14:38, 9 dic 2017 (CET)
::: 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? --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 14:49, 9 dic 2017 (CET)
:::: 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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 14:54, 9 dic 2017 (CET)
::::: 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 [[:mw:Extension_talk:Wikibase_Client/Lua|pagina di discussione]] --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 15:10, 9 dic 2017 (CET)
:::::: 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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 15:17, 9 dic 2017 (CET)
::::::: Per me è OK, mi sembra chiaro il funzionamento. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 15:29, 9 dic 2017 (CET)
::::::::{{conflittato}} 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?--[[Utente:Sakretsu|Sakretsu]] ([[Discussioni utente:Sakretsu|炸裂]]) 15:32, 9 dic 2017 (CET)
::::::::: 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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 15:52, 9 dic 2017 (CET)
::::::::::Ah ecco, mi sembrava strano. Comunque ovviamente per me puoi procedere.--[[Utente:Sakretsu|Sakretsu]] ([[Discussioni utente:Sakretsu|炸裂]]) 16:04, 9 dic 2017 (CET)
:::::::::::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]]. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 16:12, 9 dic 2017 (CET)
{{rientro}} Fatto nella sandbox del modulo ([//it.wikipedia.org/w/index.php?title=Modulo:Wikidata/sandbox&diff=prev&oldid=93093960 diff]). Ho quindi provato subito con il template {{tl|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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 16:59, 9 dic 2017 (CET)
: {{Fatto}} [//it.wikipedia.org/w/index.php?title=Modulo:Wikidata&diff=prev&oldid=93094948 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). --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 18:05, 9 dic 2017 (CET)
:: Dato lo scopo specifico, per curiosità, giusto per fare emergere altri problemi, qualcuno con niente da fare proverebbe a ripetere 300 volte <code>getBestStatements( entityId, propertyId )</code> o altri amici simili? --[[Utente:Valerio Bozzolan|Valerio Bozzolan]] ([[Discussioni utente:Valerio Bozzolan|msg]]) 18:58, 9 dic 2017 (CET)
::: 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). --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 19:18, 9 dic 2017 (CET)
::::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).--[[Utente:Moroboshi|<span style="color:#800000;font-weight: bold;">Moroboshi</span>]]<sup> [[Discussioni utente:Moroboshi|scrivimi]]</sup> 19:40, 9 dic 2017 (CET)
:::::@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 ([//it.wikipedia.org/w/index.php?title=Modulo%3AWikidata%2Fsandbox&type=revision&diff=93096928&oldid=93094688 diff]) basta aggiungere (cache=true) se si vuole riutilizzare la stessa table entity. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 20:16, 9 dic 2017 (CET)
::::::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). --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 20:22, 9 dic 2017 (CET)
:::::::{{ping|Moroboshi}} Una semplice modifica [//it.wikipedia.org/w/index.php?title=Modulo:Wikidata/sandbox&curid=4657599&diff=93097722&oldid=93097595 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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 21:08, 9 dic 2017 (CET)
::::::::Ho concluso allora con l'approccio semplice suggerito da Moroboshi, [//it.wikipedia.org/w/index.php?title=Modulo:Wikidata&diff=prev&oldid=93098731 così], e utilizzato già dal [[Modulo:Collegamenti esterni]]. Spero comunque che in futuro non sia più necessario questo parametro. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 22:58, 9 dic 2017 (CET)
{{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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 14:01, 10 dic 2017 (CET)
== Lingua su proprietà monolingua ==
Nel loop di [[Modulo:Sandbox/ValterVB/AggettiviNaz|questo modulo]] ho necessità di avere la lingua, oppure filtrare direttamente solo per lingua italiana, in maniera che nell'ultima colonna di [[Utente:ValterVB/Sandbox/AggettiviNazioni|questa tabella]] ci siano solo le etichette in lingua italiana. Aiutino? :) --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 17:34, 6 gen 2018 (CET)
: @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: <code><nowiki>{{Wikidata|P1549|from=Q1410|includelang=it|separator=<br>|conjunction=<br>}}</nowiki></code>. Se invece hai proprio bisogno di Lua te lo riguardo. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 18:13, 6 gen 2018 (CET)
:: @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. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 18:21, 6 gen 2018 (CET)
::: Ah ok, se devi fare controlli particolari su P518... Per filtrare sulla lingua, aggiungi "includelang = 'it'" al parametro "args" di getClaims. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 18:27, 6 gen 2018 (CET)
:::: Risolto, grazie anche a {{ping|Sakretsu}} che ci ha messo le mani. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 21:10, 6 gen 2018 (CET)
::::: @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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 21:39, 6 gen 2018 (CET)
:::::: 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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 23:57, 6 gen 2018 (CET)
::::::: 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à. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 12:23, 7 gen 2018 (CET)
== _getClaims : Come controllare se non esiste la proprietà? ==
In [[Modulo:Sandbox/ValterVB/Tracklist]] uso la funzione </br>
<code>wdBasatoSu = mWikidata._getClaims('P144', { from = ddato })</code> </br>
per recuperare una proprietà e poi con </br>
<code>if wdBasatoSu then</code> </br>
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 </br>
<code>if next(wdBasatoSu) ~= nil then </code> </br>
il test funziona correttamente e rileva correttamente il <code>nil</code>. E' cambiato qualcosa? un po' di tempo fa il primo if era sufficiente per controllare la tabella. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 10:02, 27 gen 2018 (CET)
: 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. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 10:32, 27 gen 2018 (CET)
:: 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". --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 11:57, 27 gen 2018 (CET)
::: 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"). --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 12:14, 27 gen 2018 (CET)
:::: Tutto chiaro, funziona. --[[Utente:ValterVB|ValterVB]] ([[Discussioni utente:ValterVB|msg]]) 16:58, 27 gen 2018 (CET)
== P5061 ==
Stavo aggiornando il modulo alla nuova proprietà {{WikidataProp|P5061}} che sostituirà P558 in cancellazione, quando ho notato che un sistema di fallback delle lingue servirà anche per il template {{tl|unità}} che usa P558. Aggiungerò un paramtro "fallbacklang", che si aggiungerà ai già esistenti includelang ed excludelang. --[[Utente:Rotpunkt|Rotpunkt]] ([[Discussioni utente:Rotpunkt|msg]]) 10:09, 24 apr 2018 (CEST)
== 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"). --[[Utente:Bultro|Bultro]] ([[Discussioni utente:Bultro|m]]) 01:49, 29 apr 2019 (CEST)
== Controllo di ereditarietà ricorsivo ==
Su Wikidata, l'ereditarietà delle classi è espressa tramite la proprietà {{WikidataEl|P279}}. Per esempio, tramite Wikidata sappiamo che la {{WikidataEl|Q183}} è {{WikidataEl|P31}} {{WikidataEl|Q3624078}} e, tramite la propriertà P279 (applicata a quest'ultimo elemento), anche che è un'{{WikidataEl|Q15642541}}.
Tuttavia, mentre la prima dichiarazione può essere verificata tramite {{tl|WikidataIstanza}}, con le attuali funzioni del modulo la seconda non può essere verificata, per cui ho aggiunto qualche riga di codice in sandbox ('''[[Special:Diff/106687558/106688882|diff]]''') per sfruttare l'ereditarietà. Ho modificato la funzione {{code|_propertyHasEntity}} perché questo controllo non dovrebbe essere riservato alla proprietà {{WikidataEl|P31}}, ma esteso in generale a tutte le proprietà.
Altro esempio (con la proprietà {{WikidataEl|P106}}): sappiamo che un'occupazione di {{WikidataEl|Q5593}} è {{WikidataEl|Q1028181}} ma, indirettamente, anche {{WikidataEl|Q483501}}.
{{ping|Sakretsu|Bultro|Moroboshi}}, se poteste verificare che non ci sono problemi nel codice.
[[Special:Permalink/106689478|Qui]] Ho fatto qualche test.
[[Discussioni template:Collegamenti esterni#Discogs e MusicBrainz|Qui]] un esempio reale in cui questa funzione potrebbe essere molto utile (se ne discuteva con {{ping|Epìdosis}}). --[[User:Horcrux|Horcrux]] ([[User talk:Horcrux|msg]]) 14:29, 21 lug 2019 (CEST)
:A occhio non dovresti fare una copia (usando mw.clone) di <code>args</code> prima dell'assegnamento:
::<code>args.recursion = recursion - 1</code>
: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.--[[Utente:Moroboshi|<span style="color:#800000;font-weight: bold;">Moroboshi</span>]]<sup> [[Discussioni utente:Moroboshi|scrivimi]]</sup> 15:19, 21 lug 2019 (CEST)
::{{ping|Moroboshi}} Non sono un esperto di Lua ma, dai test di cui sopra (che sembrano funzionare), pare che non ci sia side effect su {{code|args}} e che quindi questo non risulti modificato quando si torna indietro nel call stack. Sbaglio?
::Ho provato a dichiarare una variabile {{code|1=local argsCopy = mw.clone(args)}}, decrementarne il campo {{code|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! --[[User:Horcrux|Horcrux]] ([[User talk:Horcrux|msg]]) 18:02, 21 lug 2019 (CEST)
:::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 {{#Invoke:Sandbox/moroboshi3|test}} (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).--[[Utente:Moroboshi|<span style="color:#800000;font-weight: bold;">Moroboshi</span>]]<sup> [[Discussioni utente:Moroboshi|scrivimi]]</sup> 21:43, 21 lug 2019 (CEST)
::::{{conflittato}} 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.<br />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--[[Utente:Sakretsu|Sakretsu]] ([[Discussioni utente:Sakretsu|炸裂]]) 21:52, 21 lug 2019 (CEST)
:::::{{ping|Sakretsu}} Per evitare di clonare {{code|args}} più volte ho implementato la ricorsione in una funzione ausiliaria, ora [[Special:Diff/106689478/106698966|dovrebbe essere ok]]. Mi piace l'idea della categoria di tracciamento, potresti pensarci tu? --[[User:Horcrux|Horcrux]] ([[User talk:Horcrux|msg]]) 01:08, 22 lug 2019 (CEST)
::::::Intanto ho semplificato [[Speciale:Diff/106719229|così]] la funzione. Se riesco domani continuo--[[Utente:Sakretsu|Sakretsu]] ([[Discussioni utente:Sakretsu|炸裂]]) 01:03, 23 lug 2019 (CEST)
:::::::Per la categorizzazione penso che l'opzione migliore sia [https://it.wikipedia.org/w/index.php?title=Modulo%3ASandbox%2FHorcrux%2FWikidata&type=revision&diff=106755807&oldid=106719229 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.--[[Utente:Sakretsu|Sakretsu]] ([[Discussioni utente:Sakretsu|炸裂]]) 15:42, 25 lug 2019 (CEST)
::::::::{{ping|Sakretsu}} Hey! Hai delle novità? Credi di poter rendere queste modifiche operative? --[[User:Horcrux|Horcrux]] ([[User talk:Horcrux|msg]]) 11:23, 13 ago 2019 (CEST)
:::::::::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--[[Utente:Sakretsu|Sakretsu]] ([[Discussioni utente:Sakretsu|炸裂]]) 02:22, 19 ago 2019 (CEST)
::::::::::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.--[[Utente:Sakretsu|Sakretsu]] ([[Discussioni utente:Sakretsu|炸裂]]) 00:28, 26 ago 2019 (CEST)
:::::::::::A questo punto lascerei per sicurezza un pinghino a {{ping|Epìdosis}}. --[[Utente:Ignazio Cannata|Ignazio]] ([[Discussioni utente:Ignazio Cannata|msg]]) 03:04, 26 ago 2019 (CEST)
== Self-link ==
Segnalo [[Discussioni_template:Collegamenti_esterni#Self-link|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 --[[User:Horcrux|Horcrux]] ([[User talk:Horcrux|msg]]) 12:25, 29 ago 2019 (CEST)
:Corretto {{diff|107400989}}. Dato che dovrebbe trattarsi solo di riferimenti autobiografici, ho passato direttamente il sitelink.--[[Utente:Sakretsu|Sakretsu]] ([[Discussioni utente:Sakretsu|炸裂]]) 13:19, 29 ago 2019 (CEST)
== Ricavare un interlink in automatico ==
[[Discussioni progetto:Coordinamento/Wikidata#Ricavare un interlink in automatico|Segnalo]] --[[User:Horcrux|Horcrux]] ([[User talk:Horcrux|msg]]) 18:04, 29 mar 2020 (CEST)
== Errore formatnum ==
Non capisco come non ce ne siamo accorti prima, ma il parametro ''formatnum'' non funziona quando il dato è passato in locale, funziona solo col dato da Wikidata
*<nowiki>{{Wikidata|P1082|formatnum=sì|from=Q3776464}}</nowiki> = {{Wikidata|P1082|formatnum=sì|from=Q3776464}}
*<nowiki>{{Wikidata|P1082|123456|formatnum=sì}}</nowiki> = {{Wikidata|P1082|123456|formatnum=sì}}
--[[Utente:Bultro|Bultro]] ([[Discussioni utente:Bultro|m]]) 14:36, 31 lug 2021 (CEST)
:In effetti a giudicare dal manuale del [[template:Wikidata]] il modulo non è del tutto coerente. Ci sono parametri che funzionano anche col parametro locale e altri come formatnum e rounding che non lo fanno nonostante sarebbe possibile. La domanda è cosa ne facciamo dei valori inseriti che non corrispondono a un numero?--[[Utente:Sakretsu|Sakretsu]] ([[Discussioni utente:Sakretsu|炸裂]]) 15:57, 31 lug 2021 (CEST)
::Li passiamo al formatnum e poi se la vede lui. Attualmente dovrebbe dare una categoria di errore ma in realtà nessun problema visibile ([[Discussioni_template:Divisione_amministrativa#Altitudine_e_formatnum_(again)|discussione correlata]]) --[[Utente:Bultro|Bultro]] ([[Discussioni utente:Bultro|m]]) 20:19, 2 ago 2021 (CEST)
|