Moduldiskussion:Wikidata2

Senaste kommentaren: för 8 månader sedan av Sabelöga i ämnet Formatera resultat

Antal värden redigera

Skulle det vara möjligt att skapa ett kommando som ger antalet värden för ett visst anrop, ungefär som SQL COUNT? Alltså om det finns 20 skådespelare i ett Wikidataobjekt och man anger {{#invoke:Wikidata2|räknaVärden|property=P161|rank=normal}} så blir resultatet "20" och inte en lista över skådespelare. Det skulle vara användbart i mallar, exempelvis om man vill hindra att värden hämtas om de överskrider ett visst antal eller om man vill ha olika formatering beroende på antalet värden. Väsk 25 januari 2016 kl. 15.35 (CET)Svara

@Väsk, Innocent bystander: Jag har kompletterat funktionen formatStatements med en parameter, numberofclaims, som om den ges ett värde gör att funktionen returnerar antalet värden i listan i stället för listan själv.
Några exempel
Frågeställning Kod Resultat
Antal län i Sverige {{#invoke:Wikidata2|formatStatements|entityId=Q34|property=P150|numberofclaims=ja|noref=ja}} 21
Antal barn till Gustav Vasa {{#invoke:Wikidata2|formatStatements|entityId=Q52947|property=P40|numberofclaims=ja|noref=ja}} 9
Antal skådespelare i Gudfadern {{#invoke:Wikidata2|formatStatements|entityId=Q47703|property=P161|numberofclaims=ja|noref=ja}} 39
--Larske (diskussion) 26 juni 2016 kl. 15.21 (CEST)Svara
Antal P131-påståenden i Stockholm (tätort) {{#invoke:Wikidata2|formatStatements|entityId=Q94385|property=P131|numberofclaims=ja|noref=ja|rank=all}}
Varav har "best ranking" {{#invoke:Wikidata2|formatStatements|entityId=Q94385|property=P131|numberofclaims=ja|noref=ja|rank=best}}
Lysande! -- Innocent bystander 26 juni 2016 kl. 15.33 (CEST)Svara

Wikidata2 vs Wikidata redigera

@Innocent bystander: Jag är lite förbryllad över varför det finns två så snarlika moduler, Wikidata och Wikidata2, på svwp. Vid skapandet av Wikidata2 finns en redigeringskommentar, per WP:WF, men det är lite svårt att hitta fram till rätt ställe i arkivet där svaret på min fråga möjligen finns.

Finns det någon "plan" för att dessa två moduler ska "gå ihop" eller kommer de även på sikt att finnas parallellt? --Larske (diskussion) 22 juli 2016 kl. 13.31 (CEST)Svara

Jag inbillade mig en gång i tiden att Modul:Wikidata skulle bli en modul som är mer eller mindre homogen över hela Wikigemenskapen. Det hade underlättat importer av mall/modul-lösningar mellan projekten. Därför ville jag inte "förstöra" något genom att lägga in egna funktioner i den modulen. Så Wikidata2 blev till i väntan på att vi skulle få mer hjälp utifrån. Det hände aldrig och därför har vi minst två moduler idag. Jag hade kanske hellre sett att någon med mer professionell erfarenhet av programmering hade tagit ledningen här. Som ren amatör har jag en stor förkärlek till kaloririka lösningar. -- Innocent bystander 22 juli 2016 kl. 13.46 (CEST)Svara
@Larske: Se meta:Grants:Project/Putnik/Wikidata module. -- Innocent bystander 3 augusti 2016 kl. 09.56 (CEST)Svara
Något sådant vore bra för att inte behöva uppfinna (och underhålla) hjulet/modulen för alla språkutgåvor. Ska bli spännande att se om projektet blir sponsrat. Dagliga progressrapporter låter väldigt ambitiöst. --Larske (diskussion) 3 augusti 2016 kl. 13.23 (CEST)Svara
Ryska och franska modulutvecklarna är väl de mest händiga. Att de ryska står bakom den här är därför lovvärt! -- Innocent bystander 3 augusti 2016 kl. 13.36 (CEST)Svara

geohack redigera

Är det möjligt att ge fler parametrar till geohack än bara "typen", till exempel "region" och "name"? Det smidigaste vore förstås om "region" sattes automatiskt baserat på objektets d:Property:P17, men det blir kanske svårt? /ℇsquilo 7 augusti 2017 kl. 19.08 (CEST)Svara

Parametern pagenamn kan användas och den översätts till title (som är samma som name) i anropet till geohack.
Exempel: En länk till Landsorts fyr på Geohack
Region är modulen ännu ej förberedd för men det borde gå att använda värdet på en parameter region eller, om den inte är angiven, värdet på d:Property:P297 (ISO 3166-1 alpha-2) för objektets d:Property:P17 (land).
--Larske (diskussion) 7 augusti 2017 kl. 19.39 (CEST)Svara
Det är det enklaste, är man ambitiös kan man försöka klättra i P131-hierarkin och leta P300 istället. Finns inte P131, så finns kanske P276 och därefter klättra i P131. P17 kommer därefter. Med tanke på att många "länder" som Grönland inte används (fullt ut) i P17 så är det nog att föredra. -- Innocent bystander (diskussion) 7 augusti 2017 kl. 20.33 (CEST)Svara
Det här:
{{#invoke:Sandlådan/Innocent bystander/WD|formatStatements|property=p625|entityId=Q1821451|noref=ja|pagename=Landsorts fyr|label=En länk till Landsorts fyr på Geohack|region=SE|primary=no}}
är en början. Det tillåter att man lägger in region som parameter i anropet till modulen. -- Innocent bystander (diskussion) 7 augusti 2017 kl. 21.03 (CEST)Svara
{{#invoke:Sandlådan/Innocent bystander/WD|formatStatements|property=p625|entityId=Q1821451|noref=ja|pagename=Landsorts fyr|label=En länk till Landsorts fyr på Geohack|primary=no}}
{{#invoke:Sandlådan/Innocent bystander/WD|formatStatements|property=p625|entityId=Q712299|noref=ja|pagename=Långe Jan|label=En länk till Långe Jan på Geohack|primary=no}}
{{#invoke:Sandlådan/Innocent bystander/WD|formatStatements|property=p625|entityId=Q60|noref=ja|pagename=New York|label=En länk till New York på Geohack|primary=no}}
{{#invoke:Sandlådan/Innocent bystander/WD|formatStatements|property=p625|entityId=Q4672132|noref=ja|pagename=Berg i Antarktis|label=En länk till ett berg i Antarktis på Geohack|primary=no}}
{{#invoke:Sandlådan/Innocent bystander/WD|formatStatements|property=p625|entityId=Q11804914|noref=ja|pagename=En församling i Polen|label=En församling i Polen på Geohack|primary=no}}
@Larske, Esquilo: Så! Nu tror jag att jag att sandlådeversionen av den här modulen har fixats så att region fixas automagiskt, överallt där det är möjligt. I New York blir det region:US-NY i Landsort SE-AB, i Långe Jan SE:H och PL i en församling i Polen som saknar både P131 och P279, men har P17. Antarktis är hårdkodat för de fall där longituden är söder om 65 grader S och ingen landstillhörighet eller annat är angivet. -- Innocent bystander (diskussion) 8 augusti 2017 kl. 10.12 (CEST)Svara
Latitud söder om 65 grader S kanske du menar (och använder i koden)? --MagnusA 8 augusti 2017 kl. 10.16 (CEST)Svara
Snyggt! Och ja MagnusA, det ska vara latituden och även SE-H (inte SE:H). --Larske (diskussion) 8 augusti 2017 kl. 10.22 (CEST)Svara
latitud, longitud, jag minns aldrig vilket som är var. Jag får tänka efter med våg och lodrätt också. Frugan har sedan samma problem med höger/vänster, så det kanske är något med vattnet här i Norrland. Men jag tror det blev rätt ändå. ISO-koderna hämtas med undantag för Antarktis från Wikidatas properties i vilket fall. Så är det ett kolon där det ska vara ett bindestreck, så är det fel på WD. -- Innocent bystander (diskussion) 8 augusti 2017 kl. 13.13 (CEST)Svara
Efter lite funderande kom jag fram till att den här lösningen inte var tillräcklig för att sätta region på "gravort", som i Gustaf Hultquist eller J.R.R. Tolkien. Senaste hacket i sandlådan ska dock ha löst detta.
  • Gustaf Hultquist: {{#invoke:Sandlådan/Innocent bystander/WD|formatStatements|property=P119|grav=coordonly|koordlabel=kartor|entityId=Q5816841|noref=true}}
  • J.R.R. Tolkien: {{#invoke:Sandlådan/Innocent bystander/WD|formatStatements|property=P119|grav=coordonly|koordlabel=kartor|entityId=Q892|noref=true}}
-- Innocent bystander (diskussion) 10 augusti 2017 kl. 08.17 (CEST)Svara

getLabel redigera

@Ainali: Funkar din senaste ändring? Det ser ut som den förlitar sig på funktioner som inte finns i sidan. Dessutom verkar den innehålla kod anpassad för flerspråkiga wikis.

Berätta vad du vill åstadkomma, så ska vi se om vi kan få fram det! -- Innocent bystander (diskussion) 10 augusti 2017 kl. 21.19 (CEST)Svara

Jag ville få Mall:Q (Q17280715) att fungera och nu tror jag att jag har löst mitt programvaruproblem (Q28777292). Ainali diskussionbidrag 11 augusti 2017 kl. 02.41 (CEST)Svara
Ja, men koden {{int:lang}} i {{Etikett}} funkar nog inte här som den gör på meta. Å andra sidan gör den nog heller ingen direkt skada. -- Innocent bystander (diskussion) 11 augusti 2017 kl. 07.30 (CEST)Svara

getEntityIdForCurrentPage redigera

Jag har kompletterat modulen med rubricerade funktion som returnerar det "Q-id" som Wikidataobjektet kopplat till den aktuella sidan har. Funktionen används i mallen {{Infobox TV-program}} för att skapa en "Redigera Wikidata"-länk längst ner i infoboxen. Vet inte om det finns någon "magiskt ord" som gör samma sak eller om man kan hämta "Q-id" som en "property", men i så fall kan funktionen tas bort. --Larske (diskussion) 25 januari 2018 kl. 21.20 (CET)Svara

Parti redigera

@Larske: Känner att jag inte är så hemma i den här koden längre. Vore det möjligt att få fram värdet av P102 (tillhör politiskt parti) när det ligger som qualifier till exempel P6 (regeringschef)? Och om det finns en P1813 (kort namn) så vill jag gärna ha det som label. Så i fallet P6 i Nord-Trøndelag skulle jag vilja ha ut [[Høyre|H]] i en egen parameter som jag kan stoppa in i parameter leader_party i Geoboxen! (Om jag anropar med "raw='true'" från en modul.) 62 osv (diskussion) 14 november 2019 kl. 19.04 (CET)Svara

kortnamn ser ut att kunna hjälpa till. 62 osv (diskussion) 14 november 2019 kl. 20.16 (CET)Svara
@Sextvåetc: Min spontana känsla var att tillhör politiskt parti (P102) är väl något som man klistrar på en människa (Q5) på huvudnivån och inte som qualifier, men jag kände kanske fel, samma person kanske ska kunna tillhöra olika partier i olika befattningar :/. Det finns mer än tusen sådana konstruktioner (med P102 som qualifier för P6) i Wikidata, flest i Frankrike (Q142), se detta Bubble chart med fördelning per land.
Jag tror inte att vi har någon funktion i den här modulen för att direkt läsa ut det du frågar efter.
Nedan finns en Lua funktion som returnerar en tabell med Q-id för värdet eller värdena på en valfri qualifier (till exempel tillhör politiskt parti (P102)) för det värde på en valfri property (till exempel regeringschef (P6)) som har högst rang. Om inget värde finns eller alla värden är "deprecated" returneras en tom tabell. Om flera värden har högst rang används värdet för det första/äldsta uttalandet. När du väl har dessa Q-id kan du ju plocka fram kort namn (P1813) eller andra egenskaper för dessa objekt på vanligt sätt med formatStatements(fromLua).
-- get a table with the Q-id for all qualfiers qual for the highest ranked property prop in entity with id entityId
	function propqualid(entityId,prop,qual) 
		function better_rank(rank1,rank2)
   			return rank1 == 'preferred' and rank2 ~= 'preferred' or rank1 == 'normal' and rank2 == 'deprecated'
		end
        entity = mw.wikibase.getEntityObject(entityId)
		local theparties = {}
		local claims=entity.claims
		if claims ~= nil and claims[prop] ~= nil then
        	local bestrank = 'deprecated'
        	local ifound=0
       		local propclaims = claims[prop]
			for i in ipairs(propclaims) do
				if  better_rank(propclaims[i].rank,bestrank) then
					ifound = i
					bestrank = propclaims[i].rank
				end					
			end
  				if ifound ~= 0 and propclaims[ifound].qualifiers ~= nil and propclaims[ifound].qualifiers[qual] ~= nil then
				for j in ipairs(propclaims[ifound].qualifiers[qual]) do
					table.insert(theparties,propclaims[ifound].qualifiers[qual][j].datavalue.value.id)
				end
			end		
		end
		return theparties
	end
--Larske (diskussion) 14 november 2019 kl. 21.58 (CET)Svara
Man kan som du säger vara invald för ett parti man inte är medlem av. Idag gäller det ofta i länder där man väljs in under valsamarbeten. Det är väldigt vanligt. I många länder väljs man också som person, inte som en del av ett parti. (Amerikanska lokalval som exempel.)
Det är också så att det krävs bra källor för att lägga in politiskt parti på en person. Det är lättare att ange vad någon väljs in under.
För personer som bytt parti blir det struligt. Då måste man söka igenom start- och slut-datum för att se vilken som gällde just vid det tillfället. Politiska partiers medlemsförteckningar är inte offentliga/publika handlingar, så det kan vara riktigt svårt. 62 osv (diskussion) 15 november 2019 kl. 08.45 (CET)Svara
Efter lite petande så är det nu   Fixat. Se Nord-Trøndelag fylke. 62 osv (diskussion) 15 november 2019 kl. 20.44 (CET)Svara
OK, det kanske bara finns ett värde (enbarten='true') för tillhör politiskt parti (P102) för regeringschef (P6) i Norges fylken (Q192299), men i andra länder verkar det förekomma upp till fyra olika tillhör politiskt parti (P102) för ett och samma uttalande, se den här listan över regeringschef (P6) med mer än ett tillhör politiskt parti (P102). Värst i klassen är Locquignol (Q1099000) och Saint-Saulve (Q1101167), båda med fyra tillhör politiskt parti (P102) för sina respektive regeringschef (P6).
--Larske (diskussion) 15 november 2019 kl. 22.06 (CET)Svara
Vi har någon ledamot av kommunalfullmäktige någonstans i Västergötland på 1970-talet som råkade stå på både Centerpartiets och ett lokalt partis lista. Hn blev invald för båda! Eftersom en person inte kan sitta på två stolar, fick han en plats på två partiers mandat och ett tredje parti fick en extraplats. Sedan dess har vallagarna ändrats.
Men du har nog rätt. enbarten var något jag lade in som en del av ctrl-c/v. Jag tar bort det! 62 osv (diskussion) 16 november 2019 kl. 07.34 (CET)Svara

getsimpleproperty=only redigera

Om man begär en egenskap som inte finns på det länkade objektet och väljer getsimpleproperty=only så får man namnet på det länkade objektet. Är det förväntat beteende? Jag hade trott att jag skulle få tillbaka en tom sträng i så fall. Exempel

{{#invoke:Wikidata2
 |formatStatements
 |entityId=Q1142693       <!-- Bröderna Lejonhjärta -->
 |property=P50            <!-- Författare -->
 |getsimpleproperty=only
 |getproperty=P279        <!-- Underklass till -->
 |noref=ja
}}

ger "" medan

{{#invoke:Wikidata2
 |formatStatements
 |entityId=Q1142693       <!-- Bröderna Lejonhjärta -->
 |property=P50            <!-- Författare -->
 |getsimpleproperty=only
 |getproperty=P31         <!-- Instans av -->
 |noref=ja
}}

ger "människa" som förväntat. Vet inte om jag klarar av att räkna ut human ändrar det. Belteshassar (diskussion) 23 juli 2021 kl. 15.21 (CEST)Svara

Jag tror att det var en förbisedd kombination av förutsättningar som du beskriver och har nu ändrat i koden så att en tom sträng returneras om getsimpleproperty har värdet only och objektet som pekas ut av property saknar egenskapen som pekas ut av getproperty.
-- Larske (diskussion) 23 juli 2021 kl. 16.09 (CEST)Svara
Tack! För den som eventuellt läser det här i framtiden så kan man använda kombinationer som property=Pxx/Pyy istället för getsimpleproperty=only, men om det finns mer än ett värde på Pxx så får man då bara med det första. Belteshassar (diskussion) 23 juli 2021 kl. 16.18 (CEST)Svara
Ja det stämmer att den begränsningen finns hos Pxxx/Pyyy/..., vilket illustreras av följande exempel:
  • Frågeställning: För Carl XVI Gustaf (Q45068), hämta födelsedatum för alla hans barn (P40)
    • ...property=P40|getsimpleproperty=only|getproperty=P569...14 juli 1977, 13 maj 1979 och 10 juni 1982 men
    • ...property=P40/P569...14 juli 1977 (alltså bara födelsedatum för ett av barnen (och det är inte garanterat det äldsta...)
Å andra sidan kan man klättra längre med Pxxx/Pyyy... och om det bara finns ett värde på varje nivå (utom möjligtvis den den sista) kan det vara användbart, vilket illustreras av följande exempel:
--Larske (diskussion) 23 juli 2021 kl. 17.45 (CEST)Svara

Formatera resultat redigera

Kan man på något sätt formatera resultatet? Jag skulle specifikt vilja kursivera utmatningen. Går detta på något sätt eller måste man lägga ut '' runt mallen? Sabelöga (diskussion) 7 september 2023 kl. 00.08 (CEST)Svara

Kan du ge något exempel på ett resultat som du skulle vilja kursivera. --Larske (diskussion) 7 september 2023 kl. 09.18 (CEST)Svara
Jag tänkte ange att verk som anropas via modulen i mallarna {{Faktamall film WD}} och {{Infobox TV-program WD}} ska visas kursiverade vilket väll ligger i linje med våra riktlinjer. Specifikt parametrarna |föregångare= och |uppföljare=. Sabelöga (diskussion) 7 september 2023 kl. 22.25 (CEST)Svara