[WIP] Progetto Dynamic FPIP

Dopo 17 ore avrai già scoperto tutto, comunque i concetti fondamentali di wikidata sono instances e properties, una volta capito questo il gioco è fatto. Ad esempio, la “Expedition 57” è la 57° expedition, in wikidata si dice che Q26216449 (Expedition 57) è un’instance di Q18201623 (expedition to the International Space Station) con la proprietà P1545 (series ordinal)=57.

Questo forse potrebbe farti comodo (mi pare che in ESA usiate tutti phyton): https://github.com/dahlia/wikidata

Mentre ti scrivo sto notando che su qualche expedition manca la property vessel che è quella che ti farebbe più comodo secondo me. Se reputi fattibile questa strada completo i dati mancanti su wikidata, ho un po’ di pratica. Wikidata è stato un grosso cambiamento per la wikimedia foundation, molti dei vecchi editori assidui hanno avuto un po’ di neofobia e il nuovo strumento non ha avuto il successo che meritava (ma già così funziona benissimo).

2 Mi Piace

Grazie per le dritte @Vespiacic. Ho cominciato a giocarci ieri sera e mi sembra tutto molto intuitivo e… potente.
Ci sono un paio di dubbi amletici la cui risposta sarà sicuramente sotto il naso ma non trovo, per ora.
Il concetto di instances e properties mi è chiaro, ma devo capire come:

  • trovare l’instance id di una risorsa arbitraria
  • nel caso specifico delle expeditions sulla ISS, come trovare e iterare la lista partendo dalla pagina Q18201623

Ma mi do alcuni giorni per venirne a capo :wink:

La prima domanda non l’ho capita bene, vuoi sapere qual’è l’ID di “veicolo spaziale” ad esempio? Lo metti nel campo di ricerca e lo scopri…
Per la seconda, da Q18201623 non ci arrivi, ma se parti da una qualunque expedition specifica basta usare la property followed by (P156) e le ottieni iterando.

Tecnicamente Q18201623 ha una lista che trovi dalla property has list (P2354), e arrivi proprio a list of International Space Station expeditions (Q460051), ma non ci fai niente, perché hai la lista in quanto oggetto, senza gli elementi della lista. E sinceramente non so nemmeno se questa cosa sia voluta!

Complice un sabato piovoso ho completato la prima, ma che dico, primissima implementazione della FPIP.
Ci sono alcune situazioni ancora non gestite correttamente su cui devo continuare a lavorare.
Sono però stati risolti i vari problemi di interfacciamento con WikiData e ora sono in grado di generare la lista di equipaggi ed expedition in formato JSON per popolare la timeline, anche se in maniera non sempre precisa (la gestione degli Increment fa venire il mal di testa e richiede ancora tempo e debug).

Ecco una preview dal mio ambiente di sviluppo.

Problemi aperti

1) Le date di inizio e fine delle Expedition in corso e future

Con WikiData è relativamente facile generare automaticamente informazioni di eventi passati, mentre i dati della Expedition corrente e soprattutto di quelle future andranno costruite a mano.
Questo perché la libreria che uso per generare la timeline, giustamente necessita che ogni Expedition e la permanenza di ogni membro dell’equipaggio sia caratterizzata da una data di inizio e di fine.
Per la Expedition in corso, abbiamo la prima ma non la seconda, e quindi ho calcolato artificiosamente una data di fine che sia esattamente 6 mesi dopo la data di inizio.
Per gli eventi futuri, WikiData conosce sì i nomi degli astronauti e cosmonauti che voleranno, ma non essendo ancora state dichiarate da fonte ufficiale (o essendo Wikipedia in attesa di aggiornamento con fonte referenziata) i campi “inizio” e “fine” non sono proprio esistenti. Quindi non posso generare alcuna informazione automatica.

2) I dati di WikiData non sono sempre coerenti

Come mi ha aiutato a capire @vespiacic WikiData espone i dati grezzi che ci sono dietro ad ogni pagina Wikipedia con una struttura dati ben precisa. Ma siccome credo che il data entry sia frutto del lavoro manuale di tanti volontari, in alcuni rari casi vi sono delle inconsistenze che sono state risolte con dei workaround che non dovrebbero essere necessari.

  • Il logo di missione viene a volte registrato nella proprietà P154, altre volte (la maggioranza) nella P94.
  • La nazionalità dei cosmonauti (ora) russi va gestita (es. Oleg Kononenko). Alcuni di questi infatti sono attribuiti della cittadinanza russa (RUS), a volte anche di quella dell’URSS (SUN) e a volte anche di quella di uno degli altri paesi ora indipendenti una volta parte dell’URSS (Turkmenistan, TKM). Non eiste un modo che io sia riuscito a trovare per conoscere la cittadinanza attuale/principale, e quindi forzo artificiosamente SUN e TKM a RUS. Questo in futuro potrebbe portare a errori di attribuzione.
  • La data di inizio e fine della Expedition 50 sono diverse in WikiData (sbagliate) e nella pagina Wikipedia (corrette)

Wikidata

Wikipedia

3) Problemi aperti

  • incongruenza Expedition 50
  • gestione degli increments (data di arrivo e partenza astronauti/cosmonauti ≠ data ufficiale di inzio/fine Expedition)
  • gli incrementi, che sono ben visibili nelle pagine Wikipedia, in realtà non sono resi allo stesso modo nella pagina WikiData. In particolare, laddove la Expedition è divisa in due “parti” in Wikipedia (con tanto di navette relative), questa divisione non è derivabile in alcun modo in WikiData (nemmeno inseguendo il coniglio nella pagina del singolo astronauta/cosmonauta, che ha si un elenco di missioni cui ha partecipato ma è impossibile sapere se è salito con la navicella X o Y)
6 Mi Piace

@Vespiacic mi sono registrato su wikidata e ho sistemato personalmente le date di inzio/fine expedition 50 usando come riferimenti le cerimonie di cambio del comando, che segnano la fine di una expedition e la successiva.
Devo capire come inserire una referenza (linkerei i comunicati stampa di NASA) ma almeno questa è a posto.

Per gestire i dati mancanti/futuri si potrebbe usare due JSON separati (per ognuno di quelli previsti) da compilare manualmente uno con una priorità minore rispetto a quelli ottenuti da WikiData e l’altro con priorità maggiore. In questo modo si potrebbero inserire le informazioni che su Wiki non sono ancora disponibili o forzare quelle che non si possono correggere.

1 Mi Piace

Sì è un ottimo compromesso.

Ho corretto i dati di Expedition 50 su Wikidata (yay!) e per Expedition 60 e 61 ho arrangiato rendendole tutte lunghe 6 mesi e facendo in modo che la fine dell’Expedition n sia anche l’inizio della n+1.

Ma concordo che la soluzione migliore è adottare la strategia dei due file (con relativa gestione dell’eventuale conflitto)

2 Mi Piace

Non parlando il jsonese o il wikidatese posso solo dire: ammazza che lavoraccio! :flushed::grin:

2 Mi Piace

Benvenuto nell’universo Wiki :slight_smile:
Adottare i due file è una soluzione comune, ad esempio anche it.wikipedia e wikidata lo fanno, come hai notato tu per la expedition 50: se c’è scritto a mano qualcosa su it.wiki sovrascrive quello di wikidata. Quando i dati sono uguali (c’è un log), solitamente un utente o un bot cancella il dato che sovrascrive. L’idea è che una comunità più ampia aggiorna più facilmente un dato a meno che nella comunità più piccola non ci sia un gruppo di utenti esperti in un settore di nicchia.

Un altro problema che mi sono dimenticato di menzionare è che essendo wikipedia un enciclopedia, le date future su wikidata sono proibite (non è un fatto enciclopedico ma una programmazione). Lo sarebbero anche su it.wiki, ma ci sono meno controlli in quanto la comunità è più piccola, e di solito dopo un anno il fatto diventa enciclopedico.

Se non vuoi fare molta manutenzione manuale in futuro, suggerisco di aggiornare FPIP con le date da wikidata delle missioni in corso se sono “recenti”, cioè se la differenza tra la data inserita e la data odierna rientrano in 7-10, vuol dire che qualche utente ha letto dell’evento e registrato il dato su wikidata.

Se tutte le sojuz fossero documentate come la Sojuz TMA-9, ti aiuterebbe a inseguire il coniglio? C’è in particolare l’evento significante docking con location ISS e pure il modulo dove docka. Se questo aiuta, mi cimento ad aggiornare (nel corso dei prossimi mesi :smiley:) le missioni Sojuz.

1 Mi Piace

Coincide con il piano dei “due file” che avevo in mente.
Se una Expedition manca della data di inizio e/o di fine, allora non userò il dato di WikiData ma quello di un eventuale file secondario che in teoria dovremmo creare e manutenere qui :slight_smile:

Queste informazioni sono tutte righe aggiuntive nell’FPIP, che intendo implementare pian piano.
Se qualcuno aggiorna il lato WikiData, sarà un piacere usare quei dati. :wink:

@Vespiacic, se non sbaglio la versione “wikidata” di questa pagina non eisiste, giusto?

Esiste in quanto oggetto: https://www.wikidata.org/wiki/Q500571
ma immagino cercassi le singole EVA, quello no, una singola EVA non è un oggetto enciclopedico

Sì. cercavo qualcosa che mi consentisse di fare da EVA a EVA iterando.
Posso naturalmente grabbare la pagina wikipedia, con qualche sforzo extra :wink:

Compitino della domenica completato, web scrubber scritto, abbiamo le EVA in beta, con extra info incluse…

7 Mi Piace

Wow, la creatura cresce! :grin:
Quindi, dopo tutto questo mega-lavoro non ci sarà più bisogno di inserimento manuale dei dati? A quel punto basterà tenere d’occhio le pagine Wiki perché abbiano i dati corretti?

Ni: l’idea è di usare Wikidata o Wikipedia per i dati del passato, mentre per i dati del futuro, quelli che raccoglieremo dalle fonti fidate, andranno preparati i famosi file json.
Wikidata e Wikipedia, come spiegava @vespiacic, normalmente non contengono dati futuri (anche se ho visto alcune eccezioni) per cui il contributo di questa community saranno proprio quelli.

2 Mi Piace

Grazie all’aiuto di @Mike abbiamo una preview funzionante.

Attenzione: è una versione alfa e quindi è atteso che vi siano omissioni, imprecisioni e piccoli bachi. La pagina fa uso di javascript (quindi, non funzoiona se lo avete disattivato) ed è compatibile su Google Chrome e Mozilla Firefox. Altri browser non sono ufficialmente supportati e il loro supporto sarà best effort.

https://fpiptest.isaa.it/index.html

4 Mi Piace

Serve l’intero url per ora https://fpiptest.isaa.it/index.html

3 Mi Piace

Ehm


Io vedo solo questo (chrome mobile), non ho disattivato Javascript.

Tranquillo @Vespiacic anche a me era capitato vedendolo dal telefono. Prova a scorrere verso sinistra giocando anche con lo zoom e l’orientazione del telefono e tutto si sistema. Presumo che il “difetto” sia dovuto ad una mancanza di dati perché le Expedition precedenti si vedono correttamente.