Vés al contingut

Tema de Usuari Discussió:Vriullop/Fitxer de Discussions Estructurades 1

Paucabot (discussiócontribucions)

Arran de Plantilla Discussió:Tipus infotaula WD, he estat fent proves a {{Infotaula automàtica}} amb aquesta funció de Mòdul:Wikidata per tal de fer (amb un switch) que seleccioni la infotaula adequada basant-se en el P31 (o que vagi pujant amb un P279) Wikidata i l'apliqui. Em funciona si el P31 ja coincideix (ésser humà i tàxon, per exemple) però no si ha d'anar més amunt com als articles de geografia.

M'ensum que he fet unes quantes coses malament: la recursivitat crec que no em funciona (ara ho tenc a upto=1), no sé com dir-li que agafi el P279 després del P31, etc. Te pareix que em podries tirar un cable? Gràcies, Pau.

Vriullop (discussiócontribucions)

getParentValues està pensat per treure una taula. El processament d'una taula via plantilles és gairebé impossible, caldria fer-ho amb Lua. Per upto=1 i rowformat=$0 funciona igual que la bàsica claim.

La recursivitat és possible amb dues plantilles que es cridin una a l'altre amb un paràmetre canviant. El problema és que no hi ha control dels nivells de recursivitat i és molt possible que acabi donant error o que salti alguna limitació de protecció.

Ho he provat cridant una subplantilla que consulta la P279 amb l'item obtingut. Es podria ampliar amb una segona o tercera subplantilla fins el nivell de recursivitat que necessitis.

Paucabot (discussiócontribucions)

La idea era implementar el mateix que vaig fer per saber si un ésser viu era un animal:

{{#ifeq:{{#invoke:Delink|delink|{{#invoke:Wikidata | getParentValues | property=P171 | label=P105 | upto=Regne | labelshow=Regne | item=Q2704353 | rowformat=$1 }} }} | animal | És un animal | No és un animal }}

però veig que no és tan fàcil. En el cas dels animals, vaig aconseguir pujar més amunt, però amb P31 no aconseguesc moure'm del primer escaló. Fins i tot he provat de fer dos invokes encadenats i no m'ha funcionat.

Vriullop (discussiócontribucions)

És que la P171 té una estructura controlable però la P31 és massa oberta sense saber què et pots trobar. Possa'm un exemple d'on vols que funcioni.

Paucabot (discussiócontribucions)
Vriullop (discussiócontribucions)

Ok. Provo amb Palma (Q8826). La consulta de P31 em dóna Municipi d'Espanya (Q2074737) que no és cap de les instàncies controlades. Cal fer una segona consulta sobre Q2074737 amb P279. Primer provo de veure tota la llista {{#invoke:Wikidata|getParentValues|item=Q2074737|property=P279|label=P279}}. Al 8è bucle ja troba "element geogràfic". Ja només falta afegir-li labelshow perquè el tregui, o no.

A {{infotaula automàtica}} hi he deixat només la primera consulta. És una forma d'obtenir un paràmetre i no haver de repetir-ho. La subplantilla fa el mateix switch anterior sobre la instància. Si no el troba fa la segona consulta recursiva sobre P279 però a partir de l'item obtingut, no el de la pàgina.

Amadalvarez (discussiócontribucions)

Perdó que em fiqui.

La pregunta és: hi ha alguna funció que retorni si un ítem pertany a una determinada classe ?. Aigües amunt, és clar. no la Subclasse de (P279). Quan a WD entres un valor que no acompleix una constrain d'aquest tipus, ho detecta immediatament, o sigui que probablement deu haver una funció de WD.

Vriullop (discussiócontribucions)

Que sigui accessible a l'usuari no hi és. Segurament hi deu haver alguna petició a phabricator perquè s'inclogui al paquet wikibase. No ho havíem comentat?

Amadalvarez (discussiócontribucions)

No em sona, però tot pot ser.

Amadalvarez (discussiócontribucions)

Si això funciona, és el principi del fi dels paràmetres manuals. En sou conscients, oi ?

Vriullop (discussiócontribucions)

És una ajuda d'edició. Jo crec que hauria d'actuar fent substitució per a no dependre de tantes consultes prèvies. Llavors ja s'hi podrien afegir paràmetres. Però cada vegada que m'hi he posat amb plantilles complexes, el subst acaba sent un misteri per mi.

Resposta a «getParentValues»